diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..bfd93ef3 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,7 @@ +playground/go.sum linguist-generated +playground/internal/cmd/precompile/go.sum linguist-generated + +**/*.a.js linguist-generated +playground/playground.js linguist-generated + +playground/internal/imports/zstdlib.go linguist-generated diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 00000000..db639126 --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,96 @@ +name: CI + +on: + push: + branches: [ "*" ] + pull_request: + branches: [ "*" ] + +permissions: + contents: read + pull-requests: read + +concurrency: + group: ci-${{ github.ref }} + cancel-in-progress: true + +env: + GO_VERSION: 1.19.13 + NODE_VERSION: 18 + GOLANGCI_VERSION: v1.53.3 + SOURCE_MAP_SUPPORT: true + GOPATH: ${{ github.workspace }}/go + GOPHERJS_PATH: ${{ github.workspace }}/go/src/github.com/${{ github.repository }} + +jobs: + lint: + name: Lint Checks + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + path: ${{ env.GOPHERJS_PATH }} + - uses: actions/setup-go@v5 + with: + go-version: ${{ env.GO_VERSION }} + - name: Install golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + working-directory: ${{ env.GOPHERJS_PATH }} + version: ${{ env.GOLANGCI_VERSION }} + only-new-issues: true + - name: Check go.mod + working-directory: ${{ env.GOPHERJS_PATH }} + run: go mod tidy && git diff --exit-code + - name: Check natives build tags + working-directory: ${{ env.GOPHERJS_PATH }} + run: | + echo "Any following packages have at least one file that is missing //go:build js" + diff -u <(echo -n) <(go list ./compiler/natives/src/...) + + go_tests: + name: Go Tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + path: ${{ env.GOPHERJS_PATH }} + - name: Copy Actions + run: cp -r ${{ env.GOPHERJS_PATH }}/.github . + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: ${{ env.GO_VERSION }} + - name: Setup Go Environment + working-directory: ${{ env.GOPHERJS_PATH }} + shell: bash + run: echo "GOROOT=$(go env GOROOT)" >> $GITHUB_ENV + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Install Node.js for Linux + working-directory: ${{ env.GOPHERJS_PATH }} + shell: bash + # Install required Node.js packages including optional (node-syscall). + run: | + npm install --include=optional --no-package-lock + - name: Setup Node.js Environment + working-directory: ${{ env.GOPHERJS_PATH }} + shell: bash + # Make nodejs able to require installed modules from any working path. + run: echo "NODE_PATH=$(npm root)" >> $GITHUB_ENV + - name: Install GopherJS + working-directory: ${{ env.GOPHERJS_PATH }} + shell: bash + run: go install -v + - name: Setup information + shell: bash + run: | + echo ::notice::go version: $(go version) + echo ::notice::node version: $(node -v) + echo ::notice::npm version: $(npm -v) + echo ::notice::gopherjs version: $(gopherjs version) + - name: Run Tests + working-directory: ${{ env.GOPHERJS_PATH }} + run: go test -v -race ./... diff --git a/.gitignore b/.gitignore index 13bde762..ff9d42ad 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /playground/playground.js.map +/playground/compile.js.map +.DS_Store diff --git a/go.work b/go.work new file mode 100644 index 00000000..bd088338 --- /dev/null +++ b/go.work @@ -0,0 +1,7 @@ +go 1.20 + +use ( + ./playground + ./playground/internal/cmd/compile + ./playground/internal/cmd/precompile +) diff --git a/go.work.sum b/go.work.sum new file mode 100644 index 00000000..c8541949 --- /dev/null +++ b/go.work.sum @@ -0,0 +1,610 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanw/esbuild v0.18.0/go.mod h1:iINY06rn799hi48UqEnaQvVfZWe6W9bET78LbvN8VWk= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/go v0.0.0-20200502201357-93f07166e636/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v1.2.1/go.mod h1:ExllRjgxM/piMAM+3tAZvg8fsklGAf3tPfi+i8t68Nk= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/visualfc/goembed v0.3.3 h1:pOL02L715tHKsLQVMcZz06tTzRDAHkJKJLRnCA22G9Q= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= +go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp/typeparams v0.0.0-20240119083558-1b970713d09a h1:8qmSSA8Gz/1kTrCe0nqR0R3Gb/NDhykzWw2q2mWZydM= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220411215600-e5f449aeb171 h1:EH1Deb8WZJ0xc0WK//leUHXcX9aLE5SymusoTmMZye8= +golang.org/x/term v0.0.0-20220411215600-e5f449aeb171/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/js/dom/v2 v2.0.0-20250304181735-b5e52f05e89d/go.mod h1:+JtEcbinwR4znM12aluJ3WjKgvhDPKPQ8hnP4YM+4jI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/playground/compile.js b/playground/compile.js new file mode 100644 index 00000000..1b9b5863 --- /dev/null +++ b/playground/compile.js @@ -0,0 +1,345546 @@ +"use strict"; +(function() { + +var $goVersion = "go1.20.14"; +Error.stackTraceLimit = Infinity; +var $NaN = NaN; +var $global, $module; +if (typeof window !== "undefined") { + $global = window; +} else if (typeof self !== "undefined") { + $global = self; +} else if (typeof global !== "undefined") { + $global = global; + $global.require = require; +} else { + $global = this; +} +if ($global === void 0 || $global.Array === void 0) { + throw new Error("no global object found"); +} +if (typeof module !== "undefined") { + $module = module; +} +if (!$global.fs && $global.require) { + try { + var fs = $global.require("fs"); + if (typeof fs === "object" && fs !== null && Object.keys(fs).length !== 0) { + $global.fs = fs; + } + } catch (e) { + } +} +if (!$global.fs) { + var outputBuf = ""; + var decoder = new TextDecoder("utf-8"); + $global.fs = { + constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 }, + // unused + writeSync: function writeSync(fd, buf) { + if ($global.gopherjsWriteSyncHook) { + outputBuf += decoder.decode(buf); + $global.gopherjsWriteSyncHook(fd, outputBuf); + outputBuf = ""; + return buf.length; + } + outputBuf += decoder.decode(buf); + var nl = outputBuf.lastIndexOf("\n"); + if (nl != -1) { + console.log(outputBuf.substring(0, nl)); + outputBuf = outputBuf.substring(nl + 1); + } + return buf.length; + }, + write: function write(fd, buf, offset, length, position, callback) { + if (offset !== 0 || length !== buf.length || position !== null) { + callback(enosys()); + return; + } + var n = this.writeSync(fd, buf); + callback(null, n); + } + }; +} +var $linknames = {}; +var $packages = {}, $idCounter = 0; +var $keys = (m) => { + return m ? Object.keys(m) : []; +}; +var $flushConsole = () => { +}; +var $throwRuntimeError; +var $throwNilPointerError = () => { + $throwRuntimeError("invalid memory address or nil pointer dereference"); +}; +var $call = (fn, rcvr, args) => { + return fn.apply(rcvr, args); +}; +var $makeFunc = (fn) => { + return function(...args) { + return $externalize(fn(this, new ($sliceType($jsObjectPtr))($global.Array.prototype.slice.call(args, []))), $emptyInterface); + }; +}; +var $unused = (v) => { +}; +var $print = console.log; +if ($global.process !== void 0 && $global.require) { + try { + var util = $global.require("util"); + $print = function(...args) { + $global.process.stderr.write(util.format.apply(this, args)); + }; + } catch (e) { + } +} +var $println = console.log; +var $callForAllPackages = (methodName) => { + var names = $keys($packages); + for (var i = 0; i < names.length; i++) { + var f = $packages[names[i]][methodName]; + if (typeof f == "function") { + f(); + } + } +}; +var $mapArray = (array, f) => { + var newArray = new array.constructor(array.length); + for (var i = 0; i < array.length; i++) { + newArray[i] = f(array[i]); + } + return newArray; +}; +var $mapIndex = (m, key) => { + return typeof m.get === "function" ? m.get(key) : void 0; +}; +var $mapDelete = (m, key) => { + typeof m.delete === "function" && m.delete(key); +}; +var $methodVal = (recv, name) => { + var vals = recv.$methodVals || {}; + if (Object.isExtensible(recv)) { + recv.$methodVals = vals; + } + var f = vals[name]; + if (f !== void 0) { + return f; + } + var method = recv[name]; + f = method.bind(recv); + vals[name] = f; + return f; +}; +var $methodExpr = (typ, name) => { + var method = typ.prototype[name]; + if (method.$expr === void 0) { + method.$expr = (...args) => { + $stackDepthOffset--; + try { + if (typ.wrapped) { + args[0] = new typ(args[0]); + } + return Function.call.apply(method, args); + } finally { + $stackDepthOffset++; + } + }; + } + return method.$expr; +}; +var $ifaceMethodExprs = {}; +var $ifaceMethodExpr = (name) => { + var expr = $ifaceMethodExprs["$" + name]; + if (expr === void 0) { + expr = $ifaceMethodExprs["$" + name] = (...args) => { + $stackDepthOffset--; + try { + return Function.call.apply(args[0][name], args); + } finally { + $stackDepthOffset++; + } + }; + } + return expr; +}; +var $subslice = (slice, low, high, max) => { + if (high === void 0) { + high = slice.$length; + } + if (max === void 0) { + max = slice.$capacity; + } + if (low < 0 || high < low || max < high || high > slice.$capacity || max > slice.$capacity) { + $throwRuntimeError("slice bounds out of range"); + } + if (slice === slice.constructor.nil) { + return slice; + } + var s = new slice.constructor(slice.$array); + s.$offset = slice.$offset + low; + s.$length = high - low; + s.$capacity = max - low; + return s; +}; +var $substring = (str, low, high) => { + if (low < 0 || high < low || high > str.length) { + $throwRuntimeError("slice bounds out of range"); + } + return str.substring(low, high); +}; +var $sliceToNativeArray = (slice) => { + if (slice.$array.constructor !== Array) { + return slice.$array.subarray(slice.$offset, slice.$offset + slice.$length); + } + return slice.$array.slice(slice.$offset, slice.$offset + slice.$length); +}; +var $sliceToGoArray = (slice, arrayPtrType) => { + var arrayType = arrayPtrType.elem; + if (arrayType !== void 0 && slice.$length < arrayType.len) { + $throwRuntimeError("cannot convert slice with length " + slice.$length + " to pointer to array with length " + arrayType.len); + } + if (slice == slice.constructor.nil) { + return arrayPtrType.nil; + } + if (slice.$array.constructor !== Array) { + return slice.$array.subarray(slice.$offset, slice.$offset + arrayType.len); + } + if (slice.$offset == 0 && slice.$length == slice.$capacity && slice.$length == arrayType.len) { + return slice.$array; + } + if (arrayType.len == 0) { + return new arrayType([]); + } + $throwRuntimeError("gopherjs: non-numeric slice to underlying array conversion is not supported for subslices"); +}; +var $convertSliceType = (slice, desiredType) => { + if (slice == slice.constructor.nil) { + return desiredType.nil; + } + return $subslice(new desiredType(slice.$array), slice.$offset, slice.$offset + slice.$length); +}; +var $decodeRune = (str, pos) => { + var c0 = str.charCodeAt(pos); + if (c0 < 128) { + return [c0, 1]; + } + if (c0 !== c0 || c0 < 192) { + return [65533, 1]; + } + var c1 = str.charCodeAt(pos + 1); + if (c1 !== c1 || c1 < 128 || 192 <= c1) { + return [65533, 1]; + } + if (c0 < 224) { + var r = (c0 & 31) << 6 | c1 & 63; + if (r <= 127) { + return [65533, 1]; + } + return [r, 2]; + } + var c2 = str.charCodeAt(pos + 2); + if (c2 !== c2 || c2 < 128 || 192 <= c2) { + return [65533, 1]; + } + if (c0 < 240) { + var r = (c0 & 15) << 12 | (c1 & 63) << 6 | c2 & 63; + if (r <= 2047) { + return [65533, 1]; + } + if (55296 <= r && r <= 57343) { + return [65533, 1]; + } + return [r, 3]; + } + var c3 = str.charCodeAt(pos + 3); + if (c3 !== c3 || c3 < 128 || 192 <= c3) { + return [65533, 1]; + } + if (c0 < 248) { + var r = (c0 & 7) << 18 | (c1 & 63) << 12 | (c2 & 63) << 6 | c3 & 63; + if (r <= 65535 || 1114111 < r) { + return [65533, 1]; + } + return [r, 4]; + } + return [65533, 1]; +}; +var $encodeRune = (r) => { + if (r < 0 || r > 1114111 || 55296 <= r && r <= 57343) { + r = 65533; + } + if (r <= 127) { + return String.fromCharCode(r); + } + if (r <= 2047) { + return String.fromCharCode(192 | r >> 6, 128 | r & 63); + } + if (r <= 65535) { + return String.fromCharCode(224 | r >> 12, 128 | r >> 6 & 63, 128 | r & 63); + } + return String.fromCharCode(240 | r >> 18, 128 | r >> 12 & 63, 128 | r >> 6 & 63, 128 | r & 63); +}; +var $stringToBytes = (str) => { + var array = new Uint8Array(str.length); + for (var i = 0; i < str.length; i++) { + array[i] = str.charCodeAt(i); + } + return array; +}; +var $bytesToString = (slice) => { + if (slice.$length === 0) { + return ""; + } + var str = ""; + for (var i = 0; i < slice.$length; i += 1e4) { + str += String.fromCharCode.apply(void 0, slice.$array.subarray(slice.$offset + i, slice.$offset + Math.min(slice.$length, i + 1e4))); + } + return str; +}; +var $stringToRunes = (str) => { + var array = new Int32Array(str.length); + var rune, j = 0; + for (var i = 0; i < str.length; i += rune[1], j++) { + rune = $decodeRune(str, i); + array[j] = rune[0]; + } + return array.subarray(0, j); +}; +var $runesToString = (slice) => { + if (slice.$length === 0) { + return ""; + } + var str = ""; + for (var i = 0; i < slice.$length; i++) { + str += $encodeRune(slice.$array[slice.$offset + i]); + } + return str; +}; +var $copyString = (dst, src) => { + var n = Math.min(src.length, dst.$length); + for (var i = 0; i < n; i++) { + dst.$array[dst.$offset + i] = src.charCodeAt(i); + } + return n; +}; +var $copySlice = (dst, src) => { + var n = Math.min(src.$length, dst.$length); + $copyArray(dst.$array, src.$array, dst.$offset, src.$offset, n, dst.constructor.elem); + return n; +}; +var $copyArray = (dst, src, dstOffset, srcOffset, n, elem) => { + if (n === 0 || dst === src && dstOffset === srcOffset) { + return; + } + if (src.subarray) { + dst.set(src.subarray(srcOffset, srcOffset + n), dstOffset); + return; + } + switch (elem.kind) { + case $kindArray: + case $kindStruct: + if (dst === src && dstOffset > srcOffset) { + for (var i = n - 1; i >= 0; i--) { + elem.copy(dst[dstOffset + i], src[srcOffset + i]); + } + return; + } + for (var i = 0; i < n; i++) { + elem.copy(dst[dstOffset + i], src[srcOffset + i]); + } + return; + } + if (dst === src && dstOffset > srcOffset) { + for (var i = n - 1; i >= 0; i--) { + dst[dstOffset + i] = src[srcOffset + i]; + } + return; + } + for (var i = 0; i < n; i++) { + dst[dstOffset + i] = src[srcOffset + i]; + } +}; +var $clone = (src, type) => { + var clone = type.zero(); + type.copy(clone, src); + return clone; +}; +var $pointerOfStructConversion = (obj, type) => { + if (obj.$proxies === void 0) { + obj.$proxies = {}; + obj.$proxies[obj.constructor.string] = obj; + } + var proxy = obj.$proxies[type.string]; + if (proxy === void 0) { + var properties = {}; + for (var i = 0; i < type.elem.fields.length; i++) { + ((fieldProp) => { + properties[fieldProp] = { + get() { + return obj[fieldProp]; + }, + set(value) { + obj[fieldProp] = value; + } + }; + })(type.elem.fields[i].prop); + } + proxy = Object.create(type.prototype, properties); + proxy.$val = proxy; + obj.$proxies[type.string] = proxy; + proxy.$proxies = obj.$proxies; + } + return proxy; +}; +var $append = function(slice) { + return $internalAppend(slice, arguments, 1, arguments.length - 1); +}; +var $appendSlice = (slice, toAppend) => { + if (toAppend.constructor === String) { + var bytes = $stringToBytes(toAppend); + return $internalAppend(slice, bytes, 0, bytes.length); + } + return $internalAppend(slice, toAppend.$array, toAppend.$offset, toAppend.$length); +}; +var $internalAppend = (slice, array, offset, length) => { + if (length === 0) { + return slice; + } + let newLength = slice.$length + length; + let newSlice = $growSlice(slice, newLength); + let newArray = newSlice.$array; + $copyArray(newArray, array, newSlice.$offset + newSlice.$length, offset, length, newSlice.constructor.elem); + newSlice.$length = newLength; + return newSlice; +}; +const $calculateNewCapacity = (minCapacity, oldCapacity) => { + return Math.max(minCapacity, oldCapacity < 1024 ? oldCapacity * 2 : Math.floor(oldCapacity * 5 / 4)); +}; +var $growSlice = (slice, minCapacity) => { + let array = slice.$array; + let offset = slice.$offset; + const length = slice.$length; + let capacity = slice.$capacity; + if (minCapacity > capacity) { + capacity = $calculateNewCapacity(minCapacity, capacity); + let newArray; + if (array.constructor === Array) { + newArray = array.slice(offset, offset + length); + newArray.length = capacity; + const zero = slice.constructor.elem.zero; + for (let i = slice.$length; i < capacity; i++) { + newArray[i] = zero(); + } + } else { + newArray = new array.constructor(capacity); + newArray.set(array.subarray(offset, offset + length)); + } + array = newArray; + offset = 0; + } + let newSlice = new slice.constructor(array); + newSlice.$offset = offset; + newSlice.$length = length; + newSlice.$capacity = capacity; + return newSlice; +}; +var $equal = (a, b, type) => { + if (type === $jsObjectPtr) { + return a === b; + } + switch (type.kind) { + case $kindComplex64: + case $kindComplex128: + return a.$real === b.$real && a.$imag === b.$imag; + case $kindInt64: + case $kindUint64: + return a.$high === b.$high && a.$low === b.$low; + case $kindArray: + if (a.length !== b.length) { + return false; + } + for (var i = 0; i < a.length; i++) { + if (!$equal(a[i], b[i], type.elem)) { + return false; + } + } + return true; + case $kindStruct: + for (var i = 0; i < type.fields.length; i++) { + var f = type.fields[i]; + if (!$equal(a[f.prop], b[f.prop], f.typ)) { + return false; + } + } + return true; + case $kindInterface: + return $interfaceIsEqual(a, b); + default: + return a === b; + } +}; +var $interfaceIsEqual = (a, b) => { + if (a === $ifaceNil || b === $ifaceNil) { + return a === b; + } + if (a.constructor !== b.constructor) { + return false; + } + if (a.constructor === $jsObjectPtr) { + return a.object === b.object; + } + if (!a.constructor.comparable) { + $throwRuntimeError("comparing uncomparable type " + a.constructor.string); + } + return $equal(a.$val, b.$val, a.constructor); +}; +var $unsafeMethodToFunction = (typ, name, isPtr) => { + if (isPtr) { + return (r, ...args) => { + var ptrType = $ptrType(typ); + if (r.constructor != ptrType) { + switch (typ.kind) { + case $kindStruct: + r = $pointerOfStructConversion(r, ptrType); + break; + case $kindArray: + r = new ptrType(r); + break; + default: + r = new ptrType(r.$get, r.$set, r.$target); + } + } + return r[name](...args); + }; + } else { + return (r, ...args) => { + var ptrType = $ptrType(typ); + if (r.constructor != ptrType) { + switch (typ.kind) { + case $kindStruct: + r = $clone(r, typ); + break; + case $kindSlice: + r = $convertSliceType(r, typ); + break; + case $kindComplex64: + case $kindComplex128: + r = new typ(r.$real, r.$imag); + break; + default: + r = new typ(r); + } + } + return r[name](...args); + }; + } +}; +var $id = (x) => { + return x; +}; +var $instanceOf = (x, y) => { + return x instanceof y; +}; +var $typeOf = (x) => { + return typeof x; +}; +var $sliceData = (slice, typ) => { + if (slice === typ.nil) { + return $ptrType(typ.elem).nil; + } + return $indexPtr(slice.$array, slice.$offset, typ.elem); +}; +var $min = Math.min; +var $mod = (x, y) => { + return x % y; +}; +var $parseInt = parseInt; +var $parseFloat = (f) => { + if (f !== void 0 && f !== null && f.constructor === Number) { + return f; + } + return parseFloat(f); +}; +var $froundBuf = new Float32Array(1); +var $fround = Math.fround || ((f) => { + $froundBuf[0] = f; + return $froundBuf[0]; +}); +var $imul = Math.imul || ((a, b) => { + var ah = a >>> 16 & 65535; + var al = a & 65535; + var bh = b >>> 16 & 65535; + var bl = b & 65535; + return al * bl + (ah * bl + al * bh << 16 >>> 0) >> 0; +}); +var $floatKey = (f) => { + if (f !== f) { + $idCounter++; + return "NaN$" + $idCounter; + } + return String(f); +}; +var $flatten64 = (x) => { + return x.$high * 4294967296 + x.$low; +}; +var $shiftLeft64 = (x, y) => { + if (y === 0) { + return x; + } + if (y < 32) { + return new x.constructor(x.$high << y | x.$low >>> 32 - y, x.$low << y >>> 0); + } + if (y < 64) { + return new x.constructor(x.$low << y - 32, 0); + } + return new x.constructor(0, 0); +}; +var $shiftRightInt64 = (x, y) => { + if (y === 0) { + return x; + } + if (y < 32) { + return new x.constructor(x.$high >> y, (x.$low >>> y | x.$high << 32 - y) >>> 0); + } + if (y < 64) { + return new x.constructor(x.$high >> 31, x.$high >> y - 32 >>> 0); + } + if (x.$high < 0) { + return new x.constructor(-1, 4294967295); + } + return new x.constructor(0, 0); +}; +var $shiftRightUint64 = (x, y) => { + if (y === 0) { + return x; + } + if (y < 32) { + return new x.constructor(x.$high >>> y, (x.$low >>> y | x.$high << 32 - y) >>> 0); + } + if (y < 64) { + return new x.constructor(0, x.$high >>> y - 32); + } + return new x.constructor(0, 0); +}; +var $mul64 = (x, y) => { + var x48 = x.$high >>> 16; + var x32 = x.$high & 65535; + var x16 = x.$low >>> 16; + var x00 = x.$low & 65535; + var y48 = y.$high >>> 16; + var y32 = y.$high & 65535; + var y16 = y.$low >>> 16; + var y00 = y.$low & 65535; + var z48 = 0, z32 = 0, z16 = 0, z00 = 0; + z00 += x00 * y00; + z16 += z00 >>> 16; + z00 &= 65535; + z16 += x16 * y00; + z32 += z16 >>> 16; + z16 &= 65535; + z16 += x00 * y16; + z32 += z16 >>> 16; + z16 &= 65535; + z32 += x32 * y00; + z48 += z32 >>> 16; + z32 &= 65535; + z32 += x16 * y16; + z48 += z32 >>> 16; + z32 &= 65535; + z32 += x00 * y32; + z48 += z32 >>> 16; + z32 &= 65535; + z48 += x48 * y00 + x32 * y16 + x16 * y32 + x00 * y48; + z48 &= 65535; + var hi = (z48 << 16 | z32) >>> 0; + var lo = (z16 << 16 | z00) >>> 0; + var r = new x.constructor(hi, lo); + return r; +}; +var $div64 = (x, y, returnRemainder) => { + if (y.$high === 0 && y.$low === 0) { + $throwRuntimeError("integer divide by zero"); + } + var s = 1; + var rs = 1; + var xHigh = x.$high; + var xLow = x.$low; + if (xHigh < 0) { + s = -1; + rs = -1; + xHigh = -xHigh; + if (xLow !== 0) { + xHigh--; + xLow = 4294967296 - xLow; + } + } + var yHigh = y.$high; + var yLow = y.$low; + if (y.$high < 0) { + s *= -1; + yHigh = -yHigh; + if (yLow !== 0) { + yHigh--; + yLow = 4294967296 - yLow; + } + } + var high = 0, low = 0, n = 0; + while (yHigh < 2147483648 && (xHigh > yHigh || xHigh === yHigh && xLow > yLow)) { + yHigh = (yHigh << 1 | yLow >>> 31) >>> 0; + yLow = yLow << 1 >>> 0; + n++; + } + for (var i = 0; i <= n; i++) { + high = high << 1 | low >>> 31; + low = low << 1 >>> 0; + if (xHigh > yHigh || xHigh === yHigh && xLow >= yLow) { + xHigh = xHigh - yHigh; + xLow = xLow - yLow; + if (xLow < 0) { + xHigh--; + xLow += 4294967296; + } + low++; + if (low === 4294967296) { + high++; + low = 0; + } + } + yLow = (yLow >>> 1 | yHigh << 32 - 1) >>> 0; + yHigh = yHigh >>> 1; + } + if (returnRemainder) { + return new x.constructor(xHigh * rs, xLow * rs); + } + return new x.constructor(high * s, low * s); +}; +var $divComplex = (n, d) => { + var ninf = n.$real === Infinity || n.$real === -Infinity || n.$imag === Infinity || n.$imag === -Infinity; + var dinf = d.$real === Infinity || d.$real === -Infinity || d.$imag === Infinity || d.$imag === -Infinity; + var nnan = !ninf && (n.$real !== n.$real || n.$imag !== n.$imag); + var dnan = !dinf && (d.$real !== d.$real || d.$imag !== d.$imag); + if (nnan || dnan) { + return new n.constructor(NaN, NaN); + } + if (ninf && !dinf) { + return new n.constructor(Infinity, Infinity); + } + if (!ninf && dinf) { + return new n.constructor(0, 0); + } + if (d.$real === 0 && d.$imag === 0) { + if (n.$real === 0 && n.$imag === 0) { + return new n.constructor(NaN, NaN); + } + return new n.constructor(Infinity, Infinity); + } + var a = Math.abs(d.$real); + var b = Math.abs(d.$imag); + if (a <= b) { + var ratio = d.$real / d.$imag; + var denom = d.$real * ratio + d.$imag; + return new n.constructor((n.$real * ratio + n.$imag) / denom, (n.$imag * ratio - n.$real) / denom); + } + var ratio = d.$imag / d.$real; + var denom = d.$imag * ratio + d.$real; + return new n.constructor((n.$imag * ratio + n.$real) / denom, (n.$imag - n.$real * ratio) / denom); +}; +var $kindBool = 1; +var $kindInt = 2; +var $kindInt8 = 3; +var $kindInt16 = 4; +var $kindInt32 = 5; +var $kindInt64 = 6; +var $kindUint = 7; +var $kindUint8 = 8; +var $kindUint16 = 9; +var $kindUint32 = 10; +var $kindUint64 = 11; +var $kindUintptr = 12; +var $kindFloat32 = 13; +var $kindFloat64 = 14; +var $kindComplex64 = 15; +var $kindComplex128 = 16; +var $kindArray = 17; +var $kindChan = 18; +var $kindFunc = 19; +var $kindInterface = 20; +var $kindMap = 21; +var $kindPtr = 22; +var $kindSlice = 23; +var $kindString = 24; +var $kindStruct = 25; +var $kindUnsafePointer = 26; +var $methodSynthesizers = []; +var $addMethodSynthesizer = (f) => { + if ($methodSynthesizers === null) { + f(); + return; + } + $methodSynthesizers.push(f); +}; +var $synthesizeMethods = () => { + $methodSynthesizers.forEach((f) => { + f(); + }); + $methodSynthesizers = null; +}; +var $ifaceKeyFor = (x) => { + if (x === $ifaceNil) { + return "nil"; + } + var c = x.constructor; + return c.string + "$" + c.keyFor(x.$val); +}; +var $identity = (x) => { + return x; +}; +var $typeIDCounter = 0; +var $idKey = (x) => { + if (x.$id === void 0) { + $idCounter++; + x.$id = $idCounter; + } + return String(x.$id); +}; +var $arrayPtrCtor = () => { + return function(array) { + this.$get = () => { + return array; + }; + this.$set = function(v) { + typ.copy(this, v); + }; + this.$val = array; + }; +}; +var $newType = (size, kind, string, named, pkg, exported, constructor) => { + var typ2; + switch (kind) { + case $kindBool: + case $kindInt: + case $kindInt8: + case $kindInt16: + case $kindInt32: + case $kindUint: + case $kindUint8: + case $kindUint16: + case $kindUint32: + case $kindUintptr: + case $kindUnsafePointer: + typ2 = function(v) { + this.$val = v; + }; + typ2.wrapped = true; + typ2.keyFor = $identity; + break; + case $kindString: + typ2 = function(v) { + this.$val = v; + }; + typ2.wrapped = true; + typ2.keyFor = (x) => { + return "$" + x; + }; + break; + case $kindFloat32: + case $kindFloat64: + typ2 = function(v) { + this.$val = v; + }; + typ2.wrapped = true; + typ2.keyFor = (x) => { + return $floatKey(x); + }; + break; + case $kindInt64: + typ2 = function(high, low) { + this.$high = high + Math.floor(Math.ceil(low) / 4294967296) >> 0; + this.$low = low >>> 0; + this.$val = this; + }; + typ2.keyFor = (x) => { + return x.$high + "$" + x.$low; + }; + break; + case $kindUint64: + typ2 = function(high, low) { + this.$high = high + Math.floor(Math.ceil(low) / 4294967296) >>> 0; + this.$low = low >>> 0; + this.$val = this; + }; + typ2.keyFor = (x) => { + return x.$high + "$" + x.$low; + }; + break; + case $kindComplex64: + typ2 = function(real, imag) { + this.$real = $fround(real); + this.$imag = $fround(imag); + this.$val = this; + }; + typ2.keyFor = (x) => { + return x.$real + "$" + x.$imag; + }; + break; + case $kindComplex128: + typ2 = function(real, imag) { + this.$real = real; + this.$imag = imag; + this.$val = this; + }; + typ2.keyFor = (x) => { + return x.$real + "$" + x.$imag; + }; + break; + case $kindArray: + typ2 = function(v) { + this.$val = v; + }; + typ2.wrapped = true; + typ2.ptr = $newType(4, $kindPtr, "*" + string, false, "", false, $arrayPtrCtor()); + typ2.init = (elem, len) => { + typ2.elem = elem; + typ2.len = len; + typ2.comparable = elem.comparable; + typ2.keyFor = (x) => { + return Array.prototype.join.call($mapArray(x, (e) => { + return String(elem.keyFor(e)).replace(/\\/g, "\\\\").replace(/\$/g, "\\$"); + }), "$"); + }; + typ2.copy = (dst, src) => { + if (src.length === void 0) { + if (src.$length < dst.length) { + $throwRuntimeError("cannot convert slice with length " + src.$length + " to array or pointer to array with length " + dst.length); + } + $copyArray(dst, src.$array, 0, 0, dst.length, elem); + } else { + $copyArray(dst, src, 0, 0, src.length, elem); + } + }; + typ2.ptr.init(typ2); + Object.defineProperty(typ2.ptr.nil, "nilCheck", { get: $throwNilPointerError }); + }; + break; + case $kindChan: + typ2 = function(v) { + this.$val = v; + }; + typ2.wrapped = true; + typ2.keyFor = $idKey; + typ2.init = (elem, sendOnly, recvOnly) => { + typ2.elem = elem; + typ2.sendOnly = sendOnly; + typ2.recvOnly = recvOnly; + }; + break; + case $kindFunc: + typ2 = function(v) { + this.$val = v; + }; + typ2.wrapped = true; + typ2.init = (params, results, variadic) => { + typ2.params = params; + typ2.results = results; + typ2.variadic = variadic; + typ2.comparable = false; + }; + break; + case $kindInterface: + typ2 = { implementedBy: {}, missingMethodFor: {} }; + typ2.keyFor = $ifaceKeyFor; + typ2.init = (methods) => { + typ2.methods = methods; + methods.forEach((m) => { + $ifaceNil[m.prop] = $throwNilPointerError; + }); + }; + break; + case $kindMap: + typ2 = function(v) { + this.$val = v; + }; + typ2.wrapped = true; + typ2.init = (key, elem) => { + typ2.key = key; + typ2.elem = elem; + typ2.comparable = false; + }; + break; + case $kindPtr: + typ2 = constructor || function(getter, setter, target) { + this.$get = getter; + this.$set = setter; + this.$target = target; + this.$val = this; + }; + typ2.keyFor = $idKey; + typ2.init = (elem) => { + typ2.elem = elem; + typ2.wrapped = elem.kind === $kindArray; + typ2.nil = new typ2($throwNilPointerError, $throwNilPointerError); + }; + break; + case $kindSlice: + typ2 = function(array) { + if (array.constructor !== typ2.nativeArray) { + array = new typ2.nativeArray(array); + } + this.$array = array; + this.$offset = 0; + this.$length = array.length; + this.$capacity = array.length; + this.$val = this; + }; + typ2.init = (elem) => { + typ2.elem = elem; + typ2.comparable = false; + typ2.nativeArray = $nativeArray(elem.kind); + typ2.nil = new typ2([]); + Object.freeze(typ2.nil); + }; + break; + case $kindStruct: + typ2 = function(v) { + this.$val = v; + }; + typ2.wrapped = true; + typ2.ptr = $newType(4, $kindPtr, "*" + string, false, pkg, exported, constructor); + typ2.ptr.elem = typ2; + typ2.ptr.prototype.$get = function() { + return this; + }; + typ2.ptr.prototype.$set = function(v) { + typ2.copy(this, v); + }; + typ2.init = (pkgPath, fields) => { + typ2.pkgPath = pkgPath; + typ2.fields = fields; + fields.forEach((f) => { + if (!f.typ.comparable) { + typ2.comparable = false; + } + }); + typ2.keyFor = (x) => { + var val = x.$val; + return $mapArray(fields, (f) => { + return String(f.typ.keyFor(val[f.prop])).replace(/\\/g, "\\\\").replace(/\$/g, "\\$"); + }).join("$"); + }; + typ2.copy = (dst, src) => { + for (var i = 0; i < fields.length; i++) { + var f = fields[i]; + switch (f.typ.kind) { + case $kindArray: + case $kindStruct: + f.typ.copy(dst[f.prop], src[f.prop]); + continue; + default: + dst[f.prop] = src[f.prop]; + continue; + } + } + }; + var properties = {}; + fields.forEach((f) => { + properties[f.prop] = { get: $throwNilPointerError, set: $throwNilPointerError }; + }); + typ2.ptr.nil = Object.create(constructor.prototype, properties); + typ2.ptr.nil.$val = typ2.ptr.nil; + $addMethodSynthesizer(() => { + var synthesizeMethod = (target, m, f) => { + if (target.prototype[m.prop] !== void 0) { + return; + } + target.prototype[m.prop] = function(...args) { + var v = this.$val[f.prop]; + if (f.typ === $jsObjectPtr) { + v = new $jsObjectPtr(v); + } + if (v.$val === void 0) { + v = new f.typ(v); + } + return v[m.prop](...args); + }; + }; + fields.forEach((f) => { + if (f.embedded) { + $methodSet(f.typ).forEach((m) => { + synthesizeMethod(typ2, m, f); + synthesizeMethod(typ2.ptr, m, f); + }); + $methodSet($ptrType(f.typ)).forEach((m) => { + synthesizeMethod(typ2.ptr, m, f); + }); + } + }); + }); + }; + break; + default: + $panic(new $String("invalid kind: " + kind)); + } + switch (kind) { + case $kindBool: + case $kindMap: + typ2.zero = () => { + return false; + }; + break; + case $kindInt: + case $kindInt8: + case $kindInt16: + case $kindInt32: + case $kindUint: + case $kindUint8: + case $kindUint16: + case $kindUint32: + case $kindUintptr: + case $kindUnsafePointer: + case $kindFloat32: + case $kindFloat64: + typ2.zero = () => { + return 0; + }; + break; + case $kindString: + typ2.zero = () => { + return ""; + }; + break; + case $kindInt64: + case $kindUint64: + case $kindComplex64: + case $kindComplex128: + var zero = new typ2(0, 0); + typ2.zero = () => { + return zero; + }; + break; + case $kindPtr: + case $kindSlice: + typ2.zero = () => { + return typ2.nil; + }; + break; + case $kindChan: + typ2.zero = () => { + return $chanNil; + }; + break; + case $kindFunc: + typ2.zero = () => { + return $throwNilPointerError; + }; + break; + case $kindInterface: + typ2.zero = () => { + return $ifaceNil; + }; + break; + case $kindArray: + typ2.zero = () => { + var arrayClass = $nativeArray(typ2.elem.kind); + if (arrayClass !== Array) { + return new arrayClass(typ2.len); + } + var array = new Array(typ2.len); + for (var i = 0; i < typ2.len; i++) { + array[i] = typ2.elem.zero(); + } + return array; + }; + break; + case $kindStruct: + typ2.zero = () => { + return new typ2.ptr(); + }; + break; + default: + $panic(new $String("invalid kind: " + kind)); + } + typ2.id = $typeIDCounter; + $typeIDCounter++; + typ2.size = size; + typ2.kind = kind; + typ2.string = string; + typ2.named = named; + typ2.pkg = pkg; + typ2.exported = exported; + typ2.methods = []; + typ2.methodSetCache = null; + typ2.comparable = true; + return typ2; +}; +var $methodSet = (typ2) => { + if (typ2.methodSetCache !== null) { + return typ2.methodSetCache; + } + var base = {}; + var isPtr = typ2.kind === $kindPtr; + if (isPtr && typ2.elem.kind === $kindInterface) { + typ2.methodSetCache = []; + return []; + } + var current = [{ typ: isPtr ? typ2.elem : typ2, indirect: isPtr }]; + var seen = {}; + while (current.length > 0) { + var next = []; + var mset = []; + current.forEach((e) => { + if (seen[e.typ.string]) { + return; + } + seen[e.typ.string] = true; + if (e.typ.named) { + mset = mset.concat(e.typ.methods); + if (e.indirect) { + mset = mset.concat($ptrType(e.typ).methods); + } + } + switch (e.typ.kind) { + case $kindStruct: + e.typ.fields.forEach((f) => { + if (f.embedded) { + var fTyp = f.typ; + var fIsPtr = fTyp.kind === $kindPtr; + next.push({ typ: fIsPtr ? fTyp.elem : fTyp, indirect: e.indirect || fIsPtr }); + } + }); + break; + case $kindInterface: + mset = mset.concat(e.typ.methods); + break; + } + }); + mset.forEach((m) => { + if (base[m.name] === void 0) { + base[m.name] = m; + } + }); + current = next; + } + typ2.methodSetCache = []; + Object.keys(base).sort().forEach((name) => { + typ2.methodSetCache.push(base[name]); + }); + return typ2.methodSetCache; +}; +var $Bool = $newType(1, $kindBool, "bool", true, "", false, null); +var $Int = $newType(4, $kindInt, "int", true, "", false, null); +var $Int8 = $newType(1, $kindInt8, "int8", true, "", false, null); +var $Int16 = $newType(2, $kindInt16, "int16", true, "", false, null); +var $Int32 = $newType(4, $kindInt32, "int32", true, "", false, null); +var $Int64 = $newType(8, $kindInt64, "int64", true, "", false, null); +var $Uint = $newType(4, $kindUint, "uint", true, "", false, null); +var $Uint8 = $newType(1, $kindUint8, "uint8", true, "", false, null); +var $Uint16 = $newType(2, $kindUint16, "uint16", true, "", false, null); +var $Uint32 = $newType(4, $kindUint32, "uint32", true, "", false, null); +var $Uint64 = $newType(8, $kindUint64, "uint64", true, "", false, null); +var $Uintptr = $newType(4, $kindUintptr, "uintptr", true, "", false, null); +var $Float32 = $newType(4, $kindFloat32, "float32", true, "", false, null); +var $Float64 = $newType(8, $kindFloat64, "float64", true, "", false, null); +var $Complex64 = $newType(8, $kindComplex64, "complex64", true, "", false, null); +var $Complex128 = $newType(16, $kindComplex128, "complex128", true, "", false, null); +var $String = $newType(8, $kindString, "string", true, "", false, null); +var $UnsafePointer = $newType(4, $kindUnsafePointer, "unsafe.Pointer", true, "unsafe", false, null); +var $nativeArray = (elemKind) => { + switch (elemKind) { + case $kindInt: + return Int32Array; + case $kindInt8: + return Int8Array; + case $kindInt16: + return Int16Array; + case $kindInt32: + return Int32Array; + case $kindUint: + return Uint32Array; + case $kindUint8: + return Uint8Array; + case $kindUint16: + return Uint16Array; + case $kindUint32: + return Uint32Array; + case $kindUintptr: + return Uint32Array; + case $kindFloat32: + return Float32Array; + case $kindFloat64: + return Float64Array; + default: + return Array; + } +}; +var $toNativeArray = (elemKind, array) => { + var nativeArray = $nativeArray(elemKind); + if (nativeArray === Array) { + return array; + } + return new nativeArray(array); +}; +var $arrayTypes = {}; +var $arrayType = (elem, len) => { + var typeKey = elem.id + "$" + len; + var typ2 = $arrayTypes[typeKey]; + if (typ2 === void 0) { + typ2 = $newType(elem.size * len, $kindArray, "[" + len + "]" + elem.string, false, "", false, null); + $arrayTypes[typeKey] = typ2; + typ2.init(elem, len); + } + return typ2; +}; +var $chanType = (elem, sendOnly, recvOnly) => { + var string = (recvOnly ? "<-" : "") + "chan" + (sendOnly ? "<- " : " "); + if (!sendOnly && !recvOnly && elem.string[0] == "<") { + string += "(" + elem.string + ")"; + } else { + string += elem.string; + } + var field = sendOnly ? "SendChan" : recvOnly ? "RecvChan" : "Chan"; + var typ2 = elem[field]; + if (typ2 === void 0) { + typ2 = $newType(4, $kindChan, string, false, "", false, null); + elem[field] = typ2; + typ2.init(elem, sendOnly, recvOnly); + } + return typ2; +}; +var $Chan = function(elem, capacity) { + if (capacity < 0 || capacity > 2147483647) { + $throwRuntimeError("makechan: size out of range"); + } + this.$elem = elem; + this.$capacity = capacity; + this.$buffer = []; + this.$sendQueue = []; + this.$recvQueue = []; + this.$closed = false; +}; +var $chanNil = new $Chan(null, 0); +$chanNil.$sendQueue = $chanNil.$recvQueue = { length: 0, push() { +}, shift() { + return void 0; +}, indexOf() { + return -1; +} }; +var $funcTypes = {}; +var $funcType = (params, results, variadic) => { + var typeKey = $mapArray(params, (p) => { + return p.id; + }).join(",") + "$" + $mapArray(results, (r) => { + return r.id; + }).join(",") + "$" + variadic; + var typ2 = $funcTypes[typeKey]; + if (typ2 === void 0) { + var paramTypes = $mapArray(params, (p) => { + return p.string; + }); + if (variadic) { + paramTypes[paramTypes.length - 1] = "..." + paramTypes[paramTypes.length - 1].substring(2); + } + var string = "func(" + paramTypes.join(", ") + ")"; + if (results.length === 1) { + string += " " + results[0].string; + } else if (results.length > 1) { + string += " (" + $mapArray(results, (r) => { + return r.string; + }).join(", ") + ")"; + } + typ2 = $newType(4, $kindFunc, string, false, "", false, null); + $funcTypes[typeKey] = typ2; + typ2.init(params, results, variadic); + } + return typ2; +}; +var $interfaceTypes = {}; +var $interfaceType = (methods) => { + var typeKey = $mapArray(methods, (m) => { + return m.pkg + "," + m.name + "," + m.typ.id; + }).join("$"); + var typ2 = $interfaceTypes[typeKey]; + if (typ2 === void 0) { + var string = "interface {}"; + if (methods.length !== 0) { + string = "interface { " + $mapArray(methods, (m) => { + return (m.pkg !== "" ? m.pkg + "." : "") + m.name + m.typ.string.substring(4); + }).join("; ") + " }"; + } + typ2 = $newType(8, $kindInterface, string, false, "", false, null); + $interfaceTypes[typeKey] = typ2; + typ2.init(methods); + } + return typ2; +}; +var $emptyInterface = $interfaceType([]); +var $ifaceNil = {}; +var $error = $newType(8, $kindInterface, "error", true, "", false, null); +$error.init([{ prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false) }]); +var $mapTypes = {}; +var $mapType = (key, elem) => { + var typeKey = key.id + "$" + elem.id; + var typ2 = $mapTypes[typeKey]; + if (typ2 === void 0) { + typ2 = $newType(4, $kindMap, "map[" + key.string + "]" + elem.string, false, "", false, null); + $mapTypes[typeKey] = typ2; + typ2.init(key, elem); + } + return typ2; +}; +var $makeMap = (keyForFunc, entries) => { + var m = /* @__PURE__ */ new Map(); + for (var i = 0; i < entries.length; i++) { + var e = entries[i]; + m.set(keyForFunc(e.k), e); + } + return m; +}; +var $ptrType = (elem) => { + var typ2 = elem.ptr; + if (typ2 === void 0) { + typ2 = $newType(4, $kindPtr, "*" + elem.string, false, "", elem.exported, null); + elem.ptr = typ2; + typ2.init(elem); + } + return typ2; +}; +var $newDataPointer = (data, constructor) => { + if (constructor.elem.kind === $kindStruct) { + return data; + } + return new constructor(() => { + return data; + }, (v) => { + data = v; + }); +}; +var $indexPtr = (array, index, constructor) => { + if (array.buffer) { + var cache = array.buffer.$ptr = array.buffer.$ptr || {}; + var typeCache = cache[array.name] = cache[array.name] || {}; + var cacheIdx = array.BYTES_PER_ELEMENT * index + array.byteOffset; + return typeCache[cacheIdx] || (typeCache[cacheIdx] = new constructor(() => { + return array[index]; + }, (v) => { + array[index] = v; + })); + } else { + array.$ptr = array.$ptr || {}; + return array.$ptr[index] || (array.$ptr[index] = new constructor(() => { + return array[index]; + }, (v) => { + array[index] = v; + })); + } +}; +var $sliceType = (elem) => { + var typ2 = elem.slice; + if (typ2 === void 0) { + typ2 = $newType(12, $kindSlice, "[]" + elem.string, false, "", false, null); + elem.slice = typ2; + typ2.init(elem); + } + return typ2; +}; +var $makeSlice = (typ2, length, capacity = length) => { + if (length < 0 || length > 2147483647) { + $throwRuntimeError("makeslice: len out of range"); + } + if (capacity < 0 || capacity < length || capacity > 2147483647) { + $throwRuntimeError("makeslice: cap out of range"); + } + var array = new typ2.nativeArray(capacity); + if (typ2.nativeArray === Array) { + for (var i = 0; i < capacity; i++) { + array[i] = typ2.elem.zero(); + } + } + var slice = new typ2(array); + slice.$length = length; + return slice; +}; +var $structTypes = {}; +var $structType = (pkgPath, fields) => { + var typeKey = $mapArray(fields, (f) => { + return f.name + "," + f.typ.id + "," + f.tag; + }).join("$"); + var typ2 = $structTypes[typeKey]; + if (typ2 === void 0) { + var string = "struct { " + $mapArray(fields, (f) => { + var str = f.typ.string + (f.tag !== "" ? ' "' + f.tag.replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '"' : ""); + if (f.embedded) { + return str; + } + return f.name + " " + str; + }).join("; ") + " }"; + if (fields.length === 0) { + string = "struct {}"; + } + typ2 = $newType(0, $kindStruct, string, false, "", false, function(...args) { + this.$val = this; + for (var i = 0; i < fields.length; i++) { + var f = fields[i]; + if (f.name == "_") { + continue; + } + var arg = args[i]; + this[f.prop] = arg !== void 0 ? arg : f.typ.zero(); + } + }); + $structTypes[typeKey] = typ2; + typ2.init(pkgPath, fields); + } + return typ2; +}; +var $assertType = (value, type, returnTuple) => { + var isInterface = type.kind === $kindInterface, ok, missingMethod = ""; + if (value === $ifaceNil) { + ok = false; + } else if (!isInterface) { + ok = value.constructor === type; + } else { + var valueTypeString = value.constructor.string; + ok = type.implementedBy[valueTypeString]; + if (ok === void 0) { + ok = true; + var valueMethodSet = $methodSet(value.constructor); + var interfaceMethods = type.methods; + for (var i = 0; i < interfaceMethods.length; i++) { + var tm = interfaceMethods[i]; + var found = false; + for (var j = 0; j < valueMethodSet.length; j++) { + var vm = valueMethodSet[j]; + if (vm.name === tm.name && vm.pkg === tm.pkg && vm.typ === tm.typ) { + found = true; + break; + } + } + if (!found) { + ok = false; + type.missingMethodFor[valueTypeString] = tm.name; + break; + } + } + type.implementedBy[valueTypeString] = ok; + } + if (!ok) { + missingMethod = type.missingMethodFor[valueTypeString]; + } + } + if (!ok) { + if (returnTuple) { + return [type.zero(), false]; + } + $panic(new $packages["runtime"].TypeAssertionError.ptr( + $packages["runtime"]._type.ptr.nil, + value === $ifaceNil ? $packages["runtime"]._type.ptr.nil : new $packages["runtime"]._type.ptr(value.constructor.string), + new $packages["runtime"]._type.ptr(type.string), + missingMethod + )); + } + if (!isInterface) { + value = value.$val; + } + if (type === $jsObjectPtr) { + value = value.object; + } + return returnTuple ? [value, true] : value; +}; +var $stackDepthOffset = 0; +var $getStackDepth = () => { + var err = new Error(); + if (err.stack === void 0) { + return void 0; + } + return $stackDepthOffset + err.stack.split("\n").length; +}; +var $panicStackDepth = null, $panicValue; +var $callDeferred = (deferred, jsErr, fromPanic) => { + if (!fromPanic && deferred !== null && $curGoroutine.deferStack.indexOf(deferred) == -1) { + throw jsErr; + } + if (jsErr !== null) { + var newErr = null; + try { + $panic(new $jsErrorPtr(jsErr)); + } catch (err) { + newErr = err; + } + $callDeferred(deferred, newErr); + return; + } + if ($curGoroutine.asleep) { + return; + } + $stackDepthOffset--; + var outerPanicStackDepth = $panicStackDepth; + var outerPanicValue = $panicValue; + var localPanicValue = $curGoroutine.panicStack.pop(); + if (localPanicValue !== void 0) { + $panicStackDepth = $getStackDepth(); + $panicValue = localPanicValue; + } + try { + while (true) { + if (deferred === null) { + deferred = $curGoroutine.deferStack[$curGoroutine.deferStack.length - 1]; + if (deferred === void 0) { + $panicStackDepth = null; + if (localPanicValue.Object instanceof Error) { + throw localPanicValue.Object; + } + var msg; + if (localPanicValue.constructor === $String) { + msg = localPanicValue.$val; + } else if (localPanicValue.Error !== void 0) { + msg = localPanicValue.Error(); + } else if (localPanicValue.String !== void 0) { + msg = localPanicValue.String(); + } else { + msg = localPanicValue; + } + throw new Error(msg); + } + } + var call = deferred.pop(); + if (call === void 0) { + $curGoroutine.deferStack.pop(); + if (localPanicValue !== void 0) { + deferred = null; + continue; + } + return; + } + var r = call[0].apply(call[2], call[1]); + if (r && r.$blk !== void 0) { + deferred.push([r.$blk, [], r]); + if (fromPanic) { + throw null; + } + return; + } + if (localPanicValue !== void 0 && $panicStackDepth === null) { + if (fromPanic) { + throw null; + } + return; + } + } + } catch (e) { + if (fromPanic) { + throw e; + } + $callDeferred(deferred, e, fromPanic); + } finally { + if (localPanicValue !== void 0) { + if ($panicStackDepth !== null) { + $curGoroutine.panicStack.push(localPanicValue); + } + $panicStackDepth = outerPanicStackDepth; + $panicValue = outerPanicValue; + } + $stackDepthOffset++; + } +}; +var $panic = (value) => { + $curGoroutine.panicStack.push(value); + $callDeferred(null, null, true); +}; +var $recover = () => { + if ($panicStackDepth === null || $panicStackDepth !== void 0 && $panicStackDepth !== $getStackDepth() - 2) { + return $ifaceNil; + } + $panicStackDepth = null; + return $panicValue; +}; +var $throw = (err) => { + throw err; +}; +var $noGoroutine = { asleep: false, exit: false, deferStack: [], panicStack: [] }; +var $curGoroutine = $noGoroutine, $totalGoroutines = 0, $awakeGoroutines = 0, $checkForDeadlock = true, $exportedFunctions = 0; +var $mainFinished = false; +var $go = (fun, args) => { + $totalGoroutines++; + $awakeGoroutines++; + var $goroutine = () => { + try { + $curGoroutine = $goroutine; + var r = fun(...args); + if (r && r.$blk !== void 0) { + fun = () => { + return r.$blk(); + }; + args = []; + return; + } + $goroutine.exit = true; + } catch (err) { + if (!$goroutine.exit) { + throw err; + } + } finally { + $curGoroutine = $noGoroutine; + if ($goroutine.exit) { + $totalGoroutines--; + $goroutine.asleep = true; + } + if ($goroutine.asleep) { + $awakeGoroutines--; + if (!$mainFinished && $awakeGoroutines === 0 && $checkForDeadlock && $exportedFunctions === 0) { + console.error("fatal error: all goroutines are asleep - deadlock!"); + if ($global.process !== void 0) { + $global.process.exit(2); + } + } + } + } + }; + $goroutine.asleep = false; + $goroutine.exit = false; + $goroutine.deferStack = []; + $goroutine.panicStack = []; + $schedule($goroutine); +}; +var $scheduled = []; +var $runScheduled = () => { + var nextRun = setTimeout($runScheduled); + try { + var start = Date.now(); + var r; + while ((r = $scheduled.shift()) !== void 0) { + r(); + var elapsed = Date.now() - start; + if (elapsed > 4 || elapsed < 0) { + break; + } + } + } finally { + if ($scheduled.length == 0) { + clearTimeout(nextRun); + } + } +}; +var $schedule = (goroutine) => { + if (goroutine.asleep) { + goroutine.asleep = false; + $awakeGoroutines++; + } + $scheduled.push(goroutine); + if ($curGoroutine === $noGoroutine) { + $runScheduled(); + } +}; +var $setTimeout = (f, t) => { + $awakeGoroutines++; + return setTimeout(() => { + $awakeGoroutines--; + f(); + }, t); +}; +var $block = () => { + if ($curGoroutine === $noGoroutine) { + $throwRuntimeError("cannot block in JavaScript callback, fix by wrapping code in goroutine"); + } + $curGoroutine.asleep = true; +}; +var $restore = (context, params) => { + if (context !== void 0 && context.$blk !== void 0) { + return context; + } + return params; +}; +var $send = (chan, value) => { + if (chan.$closed) { + $throwRuntimeError("send on closed channel"); + } + var queuedRecv = chan.$recvQueue.shift(); + if (queuedRecv !== void 0) { + queuedRecv([value, true]); + return; + } + if (chan.$buffer.length < chan.$capacity) { + chan.$buffer.push(value); + return; + } + var thisGoroutine = $curGoroutine; + var closedDuringSend; + chan.$sendQueue.push((closed) => { + closedDuringSend = closed; + $schedule(thisGoroutine); + return value; + }); + $block(); + return { + $blk() { + if (closedDuringSend) { + $throwRuntimeError("send on closed channel"); + } + } + }; +}; +var $recv = (chan) => { + var queuedSend = chan.$sendQueue.shift(); + if (queuedSend !== void 0) { + chan.$buffer.push(queuedSend(false)); + } + var bufferedValue = chan.$buffer.shift(); + if (bufferedValue !== void 0) { + return [bufferedValue, true]; + } + if (chan.$closed) { + return [chan.$elem.zero(), false]; + } + var thisGoroutine = $curGoroutine; + var f = { $blk() { + return this.value; + } }; + var queueEntry = (v) => { + f.value = v; + $schedule(thisGoroutine); + }; + chan.$recvQueue.push(queueEntry); + $block(); + return f; +}; +var $close = (chan) => { + if (chan.$closed) { + $throwRuntimeError("close of closed channel"); + } + chan.$closed = true; + while (true) { + var queuedSend = chan.$sendQueue.shift(); + if (queuedSend === void 0) { + break; + } + queuedSend(true); + } + while (true) { + var queuedRecv = chan.$recvQueue.shift(); + if (queuedRecv === void 0) { + break; + } + queuedRecv([chan.$elem.zero(), false]); + } +}; +var $select = (comms) => { + var ready = []; + var selection = -1; + for (var i = 0; i < comms.length; i++) { + var comm = comms[i]; + var chan = comm[0]; + switch (comm.length) { + case 0: + selection = i; + break; + case 1: + if (chan.$sendQueue.length !== 0 || chan.$buffer.length !== 0 || chan.$closed) { + ready.push(i); + } + break; + case 2: + if (chan.$closed) { + $throwRuntimeError("send on closed channel"); + } + if (chan.$recvQueue.length !== 0 || chan.$buffer.length < chan.$capacity) { + ready.push(i); + } + break; + } + } + if (ready.length !== 0) { + selection = ready[Math.floor(Math.random() * ready.length)]; + } + if (selection !== -1) { + var comm = comms[selection]; + switch (comm.length) { + case 0: + return [selection]; + case 1: + return [selection, $recv(comm[0])]; + case 2: + $send(comm[0], comm[1]); + return [selection]; + } + } + var entries = []; + var thisGoroutine = $curGoroutine; + var f = { $blk() { + return this.selection; + } }; + var removeFromQueues = () => { + for (var i2 = 0; i2 < entries.length; i2++) { + var entry = entries[i2]; + var queue = entry[0]; + var index = queue.indexOf(entry[1]); + if (index !== -1) { + queue.splice(index, 1); + } + } + }; + for (var i = 0; i < comms.length; i++) { + ((i2) => { + var comm2 = comms[i2]; + switch (comm2.length) { + case 1: + var queueEntry = (value) => { + f.selection = [i2, value]; + removeFromQueues(); + $schedule(thisGoroutine); + }; + entries.push([comm2[0].$recvQueue, queueEntry]); + comm2[0].$recvQueue.push(queueEntry); + break; + case 2: + var queueEntry = () => { + if (comm2[0].$closed) { + $throwRuntimeError("send on closed channel"); + } + f.selection = [i2]; + removeFromQueues(); + $schedule(thisGoroutine); + return comm2[1]; + }; + entries.push([comm2[0].$sendQueue, queueEntry]); + comm2[0].$sendQueue.push(queueEntry); + break; + } + })(i); + } + $block(); + return f; +}; +var $jsObjectPtr, $jsErrorPtr; +var $needsExternalization = (t) => { + switch (t.kind) { + case $kindBool: + case $kindInt: + case $kindInt8: + case $kindInt16: + case $kindInt32: + case $kindUint: + case $kindUint8: + case $kindUint16: + case $kindUint32: + case $kindUintptr: + case $kindFloat32: + case $kindFloat64: + return false; + default: + return t !== $jsObjectPtr; + } +}; +var $externalize = (v, t, makeWrapper) => { + if (t === $jsObjectPtr) { + return v; + } + switch (t.kind) { + case $kindBool: + case $kindInt: + case $kindInt8: + case $kindInt16: + case $kindInt32: + case $kindUint: + case $kindUint8: + case $kindUint16: + case $kindUint32: + case $kindUintptr: + case $kindFloat32: + case $kindFloat64: + return v; + case $kindInt64: + case $kindUint64: + return $flatten64(v); + case $kindArray: + if ($needsExternalization(t.elem)) { + return $mapArray(v, (e) => { + return $externalize(e, t.elem, makeWrapper); + }); + } + return v; + case $kindFunc: + return $externalizeFunction(v, t, false, makeWrapper); + case $kindInterface: + if (v === $ifaceNil) { + return null; + } + if (v.constructor === $jsObjectPtr) { + return v.$val.object; + } + return $externalize(v.$val, v.constructor, makeWrapper); + case $kindMap: + if (v.keys === void 0) { + return null; + } + var m = {}; + var keys = Array.from(v.keys()); + for (var i = 0; i < keys.length; i++) { + var entry = v.get(keys[i]); + m[$externalize(entry.k, t.key, makeWrapper)] = $externalize(entry.v, t.elem, makeWrapper); + } + return m; + case $kindPtr: + if (v === t.nil) { + return null; + } + return $externalize(v.$get(), t.elem, makeWrapper); + case $kindSlice: + if (v === v.constructor.nil) { + return null; + } + if ($needsExternalization(t.elem)) { + return $mapArray($sliceToNativeArray(v), (e) => { + return $externalize(e, t.elem, makeWrapper); + }); + } + return $sliceToNativeArray(v); + case $kindString: + if ($isASCII(v)) { + return v; + } + var s = "", r; + for (var i = 0; i < v.length; i += r[1]) { + r = $decodeRune(v, i); + var c = r[0]; + if (c > 65535) { + var h = Math.floor((c - 65536) / 1024) + 55296; + var l = (c - 65536) % 1024 + 56320; + s += String.fromCharCode(h, l); + continue; + } + s += String.fromCharCode(c); + } + return s; + case $kindStruct: + var timePkg = $packages["time"]; + if (timePkg !== void 0 && v.constructor === timePkg.Time.ptr) { + var milli = $div64(v.UnixNano(), new $Int64(0, 1e6)); + return new Date($flatten64(milli)); + } + var noJsObject = {}; + var searchJsObject = (v2, t2) => { + if (t2 === $jsObjectPtr) { + return v2; + } + switch (t2.kind) { + case $kindPtr: + if (v2 === t2.nil) { + return noJsObject; + } + return searchJsObject(v2.$get(), t2.elem); + case $kindStruct: + if (t2.fields.length === 0) { + return noJsObject; + } + var f2 = t2.fields[0]; + return searchJsObject(v2[f2.prop], f2.typ); + case $kindInterface: + return searchJsObject(v2.$val, v2.constructor); + default: + return noJsObject; + } + }; + var o = searchJsObject(v, t); + if (o !== noJsObject) { + return o; + } + if (makeWrapper !== void 0) { + return makeWrapper(v); + } + o = {}; + for (var i = 0; i < t.fields.length; i++) { + var f = t.fields[i]; + if (!f.exported) { + continue; + } + o[f.name] = $externalize(v[f.prop], f.typ, makeWrapper); + } + return o; + } + $throwRuntimeError("cannot externalize " + t.string); +}; +var $externalizeFunction = (v, t, passThis, makeWrapper) => { + if (v === $throwNilPointerError) { + return null; + } + if (v.$externalizeWrapper === void 0) { + $checkForDeadlock = false; + v.$externalizeWrapper = function() { + var args = []; + for (var i = 0; i < t.params.length; i++) { + if (t.variadic && i === t.params.length - 1) { + var vt = t.params[i].elem, varargs = []; + for (var j = i; j < arguments.length; j++) { + varargs.push($internalize(arguments[j], vt, makeWrapper)); + } + args.push(new t.params[i](varargs)); + break; + } + args.push($internalize(arguments[i], t.params[i], makeWrapper)); + } + var result = v.apply(passThis ? this : void 0, args); + switch (t.results.length) { + case 0: + return; + case 1: + return $externalize($copyIfRequired(result, t.results[0]), t.results[0], makeWrapper); + default: + for (var i = 0; i < t.results.length; i++) { + result[i] = $externalize($copyIfRequired(result[i], t.results[i]), t.results[i], makeWrapper); + } + return result; + } + }; + } + return v.$externalizeWrapper; +}; +var $internalize = (v, t, recv, seen, makeWrapper) => { + if (t === $jsObjectPtr) { + return v; + } + if (t === $jsObjectPtr.elem) { + $throwRuntimeError("cannot internalize js.Object, use *js.Object instead"); + } + if (v && v.__internal_object__ !== void 0) { + return $assertType(v.__internal_object__, t, false); + } + var timePkg = $packages["time"]; + if (timePkg !== void 0 && t === timePkg.Time) { + if (!(v !== null && v !== void 0 && v.constructor === Date)) { + $throwRuntimeError("cannot internalize time.Time from " + typeof v + ", must be Date"); + } + return timePkg.Unix(new $Int64(0, 0), new $Int64(0, v.getTime() * 1e6)); + } + if (seen === void 0) { + seen = /* @__PURE__ */ new Map(); + } + if (!seen.has(t)) { + seen.set(t, /* @__PURE__ */ new Map()); + } + if (seen.get(t).has(v)) { + return seen.get(t).get(v); + } + switch (t.kind) { + case $kindBool: + return !!v; + case $kindInt: + return parseInt(v); + case $kindInt8: + return parseInt(v) << 24 >> 24; + case $kindInt16: + return parseInt(v) << 16 >> 16; + case $kindInt32: + return parseInt(v) >> 0; + case $kindUint: + return parseInt(v); + case $kindUint8: + return parseInt(v) << 24 >>> 24; + case $kindUint16: + return parseInt(v) << 16 >>> 16; + case $kindUint32: + case $kindUintptr: + return parseInt(v) >>> 0; + case $kindInt64: + case $kindUint64: + return new t(0, v); + case $kindFloat32: + case $kindFloat64: + return parseFloat(v); + case $kindArray: + if (v === null || v === void 0) { + $throwRuntimeError("cannot internalize " + v + " as a " + t.string); + } + if (v.length !== t.len) { + $throwRuntimeError("got array with wrong size from JavaScript native"); + } + return $mapArray(v, (e) => { + return $internalize(e, t.elem, makeWrapper); + }); + case $kindFunc: + return function() { + var args = []; + for (var i2 = 0; i2 < t.params.length; i2++) { + if (t.variadic && i2 === t.params.length - 1) { + var vt = t.params[i2].elem, varargs = arguments[i2]; + for (var j = 0; j < varargs.$length; j++) { + args.push($externalize(varargs.$array[varargs.$offset + j], vt, makeWrapper)); + } + break; + } + args.push($externalize(arguments[i2], t.params[i2], makeWrapper)); + } + var result = v.apply(recv, args); + switch (t.results.length) { + case 0: + return; + case 1: + return $internalize(result, t.results[0], makeWrapper); + default: + for (var i2 = 0; i2 < t.results.length; i2++) { + result[i2] = $internalize(result[i2], t.results[i2], makeWrapper); + } + return result; + } + }; + case $kindInterface: + if (t.methods.length !== 0) { + $throwRuntimeError("cannot internalize " + t.string); + } + if (v === null) { + return $ifaceNil; + } + if (v === void 0) { + return new $jsObjectPtr(void 0); + } + switch (v.constructor) { + case Int8Array: + return new ($sliceType($Int8))(v); + case Int16Array: + return new ($sliceType($Int16))(v); + case Int32Array: + return new ($sliceType($Int))(v); + case Uint8Array: + return new ($sliceType($Uint8))(v); + case Uint16Array: + return new ($sliceType($Uint16))(v); + case Uint32Array: + return new ($sliceType($Uint))(v); + case Float32Array: + return new ($sliceType($Float32))(v); + case Float64Array: + return new ($sliceType($Float64))(v); + case Array: + return $internalize(v, $sliceType($emptyInterface), makeWrapper); + case Boolean: + return new $Bool(!!v); + case Date: + if (timePkg === void 0) { + return new $jsObjectPtr(v); + } + return new timePkg.Time($internalize(v, timePkg.Time, makeWrapper)); + case (() => { + }).constructor: + var funcType = $funcType([$sliceType($emptyInterface)], [$jsObjectPtr], true); + return new funcType($internalize(v, funcType, makeWrapper)); + case Number: + return new $Float64(parseFloat(v)); + case String: + return new $String($internalize(v, $String, makeWrapper)); + default: + if ($global.Node && v instanceof $global.Node) { + return new $jsObjectPtr(v); + } + var mapType = $mapType($String, $emptyInterface); + return new mapType($internalize(v, mapType, recv, seen, makeWrapper)); + } + case $kindMap: + var m = /* @__PURE__ */ new Map(); + seen.get(t).set(v, m); + var keys = $keys(v); + for (var i = 0; i < keys.length; i++) { + var k = $internalize(keys[i], t.key, recv, seen, makeWrapper); + m.set(t.key.keyFor(k), { k, v: $internalize(v[keys[i]], t.elem, recv, seen, makeWrapper) }); + } + return m; + case $kindPtr: + if (t.elem.kind === $kindStruct) { + return $internalize(v, t.elem, makeWrapper); + } + case $kindSlice: + if (v == null) { + return t.zero(); + } + return new t($mapArray(v, (e) => { + return $internalize(e, t.elem, makeWrapper); + })); + case $kindString: + v = String(v); + if ($isASCII(v)) { + return v; + } + var s = ""; + var i = 0; + while (i < v.length) { + var h = v.charCodeAt(i); + if (55296 <= h && h <= 56319) { + var l = v.charCodeAt(i + 1); + var c = (h - 55296) * 1024 + l - 56320 + 65536; + s += $encodeRune(c); + i += 2; + continue; + } + s += $encodeRune(h); + i++; + } + return s; + case $kindStruct: + var noJsObject = {}; + var searchJsObject = (t2) => { + if (t2 === $jsObjectPtr) { + return v; + } + if (t2 === $jsObjectPtr.elem) { + $throwRuntimeError("cannot internalize js.Object, use *js.Object instead"); + } + switch (t2.kind) { + case $kindPtr: + return searchJsObject(t2.elem); + case $kindStruct: + if (t2.fields.length === 0) { + return noJsObject; + } + var f2 = t2.fields[0]; + var o2 = searchJsObject(f2.typ); + if (o2 !== noJsObject) { + var n2 = new t2.ptr(); + n2[f2.prop] = o2; + return n2; + } + return noJsObject; + default: + return noJsObject; + } + }; + var o = searchJsObject(t); + if (o !== noJsObject) { + return o; + } + var n = new t.ptr(); + for (var i = 0; i < t.fields.length; i++) { + var f = t.fields[i]; + if (!f.exported) { + continue; + } + var jsProp = v[f.name]; + n[f.prop] = $internalize(jsProp, f.typ, recv, seen, makeWrapper); + } + return n; + } + $throwRuntimeError("cannot internalize " + t.string); +}; +var $copyIfRequired = (v, typ) => { + if (v && v.constructor && v.constructor.copy) { + return new v.constructor($clone(v.$val, v.constructor)); + } + if (typ.copy) { + var clone = typ.zero(); + typ.copy(clone, v); + return clone; + } + return v; +}; +var $isASCII = (s) => { + for (var i = 0; i < s.length; i++) { + if (s.charCodeAt(i) >= 128) { + return false; + } + } + return true; +}; + +$packages["github.com/gopherjs/gopherjs/js"] = (function() { + var $pkg = {}, $init, Object, Error, sliceType, ptrType, ptrType$1, MakeFunc, init; + Object = $newType(0, $kindStruct, "js.Object", true, "github.com/gopherjs/gopherjs/js", true, function(object_) { + this.$val = this; + if (arguments.length === 0) { + this.object = null; + return; + } + this.object = object_; + }); + Error = $newType(0, $kindStruct, "js.Error", true, "github.com/gopherjs/gopherjs/js", true, function(Object_) { + this.$val = this; + if (arguments.length === 0) { + this.Object = null; + return; + } + this.Object = Object_; + }); + $pkg.Object = Object; + $pkg.Error = Error; + $pkg.$finishSetup = function() { + sliceType = $sliceType($emptyInterface); + ptrType = $ptrType(Object); + ptrType$1 = $ptrType(Error); + $ptrType(Object).prototype.Get = function Get(key) { + var key, o; + o = this; + return o.object[$externalize(key, $String)]; + }; + $ptrType(Object).prototype.Set = function Set(key, value) { + var key, o, value; + o = this; + o.object[$externalize(key, $String)] = $externalize(value, $emptyInterface); + }; + $ptrType(Object).prototype.Delete = function Delete(key) { + var key, o; + o = this; + delete o.object[$externalize(key, $String)]; + }; + $ptrType(Object).prototype.Length = function Length() { + var o; + o = this; + return $parseInt(o.object.length); + }; + $ptrType(Object).prototype.Index = function Index(i) { + var i, o; + o = this; + return o.object[i]; + }; + $ptrType(Object).prototype.SetIndex = function SetIndex(i, value) { + var i, o, value; + o = this; + o.object[i] = $externalize(value, $emptyInterface); + }; + $ptrType(Object).prototype.Call = function Call(name, args) { + var args, name, o, obj; + o = this; + return (obj = o.object, obj[$externalize(name, $String)].apply(obj, $externalize(args, sliceType))); + }; + $ptrType(Object).prototype.Invoke = function Invoke(args) { + var args, o; + o = this; + return o.object.apply(undefined, $externalize(args, sliceType)); + }; + $ptrType(Object).prototype.New = function New(args) { + var args, o; + o = this; + return new ($global.Function.prototype.bind.apply(o.object, [undefined].concat($externalize(args, sliceType)))); + }; + $ptrType(Object).prototype.Bool = function Bool() { + var o; + o = this; + return !!(o.object); + }; + $ptrType(Object).prototype.String = function String() { + var o; + o = this; + return $internalize(o.object, $String); + }; + $ptrType(Object).prototype.Int = function Int() { + var o; + o = this; + return $parseInt(o.object) >> 0; + }; + $ptrType(Object).prototype.Int64 = function Int64() { + var o; + o = this; + return $internalize(o.object, $Int64); + }; + $ptrType(Object).prototype.Uint64 = function Uint64() { + var o; + o = this; + return $internalize(o.object, $Uint64); + }; + $ptrType(Object).prototype.Float = function Float() { + var o; + o = this; + return $parseFloat(o.object); + }; + $ptrType(Object).prototype.Interface = function Interface() { + var o; + o = this; + return $internalize(o.object, $emptyInterface); + }; + $ptrType(Object).prototype.Unsafe = function Unsafe() { + var o; + o = this; + return o.object; + }; + $ptrType(Error).prototype.Error = function Error$1() { + var err; + err = this; + return "JavaScript error: " + $internalize(err.Object.message, $String); + }; + $ptrType(Error).prototype.Stack = function Stack() { + var err; + err = this; + return $internalize(err.Object.stack, $String); + }; + MakeFunc = function MakeFunc$1(fn) { + var fn; + return $makeFunc(fn); + }; + $pkg.MakeFunc = MakeFunc; + init = function init$1() { + var e; + e = new Error.ptr(null); + $unused(e); + }; + ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $emptyInterface], [], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Length", name: "Length", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [ptrType], false)}, {prop: "SetIndex", name: "SetIndex", pkg: "", typ: $funcType([$Int, $emptyInterface], [], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([$String, sliceType], [ptrType], true)}, {prop: "Invoke", name: "Invoke", pkg: "", typ: $funcType([sliceType], [ptrType], true)}, {prop: "New", name: "New", pkg: "", typ: $funcType([sliceType], [ptrType], true)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Float", name: "Float", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Interface", name: "Interface", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Unsafe", name: "Unsafe", pkg: "", typ: $funcType([], [$Uintptr], false)}]; + ptrType$1.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Stack", name: "Stack", pkg: "", typ: $funcType([], [$String], false)}]; + Object.init("github.com/gopherjs/gopherjs/js", [{prop: "object", name: "object", embedded: false, exported: false, typ: ptrType, tag: ""}]); + Error.init("", [{prop: "Object", name: "Object", embedded: true, exported: true, typ: ptrType, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["runtime"] = (function() { + var $pkg = {}, $init, js, _type, TypeAssertionError, basicFrame, Frames, Frame, Func, errorString, ptrType, sliceType, ptrType$1, structType, sliceType$1, sliceType$2, ptrType$2, ptrType$3, buildVersion, godebugUpdate, knownPositions, positionCounters, hiddenFrames, knownFrames, init, GOROOT, registerPosition, itoa, callstack, parseCallstack, ParseCallFrame, Caller, Callers, CallersFrames, SetFinalizer, FuncForPC, Stack, Version, KeepAlive, throw$1, nanotime, godebug_setUpdate, getEnvString, godebug_notify, fastrand, fastrand64, fastrandu; + js = $packages["github.com/gopherjs/gopherjs/js"]; + _type = $newType(0, $kindStruct, "runtime._type", true, "runtime", false, function(str_) { + this.$val = this; + if (arguments.length === 0) { + this.str = ""; + return; + } + this.str = str_; + }); + TypeAssertionError = $newType(0, $kindStruct, "runtime.TypeAssertionError", true, "runtime", true, function(_interface_, concrete_, asserted_, missingMethod_) { + this.$val = this; + if (arguments.length === 0) { + this._interface = ptrType$1.nil; + this.concrete = ptrType$1.nil; + this.asserted = ptrType$1.nil; + this.missingMethod = ""; + return; + } + this._interface = _interface_; + this.concrete = concrete_; + this.asserted = asserted_; + this.missingMethod = missingMethod_; + }); + basicFrame = $newType(0, $kindStruct, "runtime.basicFrame", true, "runtime", false, function(FuncName_, File_, Line_, Col_) { + this.$val = this; + if (arguments.length === 0) { + this.FuncName = ""; + this.File = ""; + this.Line = 0; + this.Col = 0; + return; + } + this.FuncName = FuncName_; + this.File = File_; + this.Line = Line_; + this.Col = Col_; + }); + Frames = $newType(0, $kindStruct, "runtime.Frames", true, "runtime", true, function(frames_, current_) { + this.$val = this; + if (arguments.length === 0) { + this.frames = sliceType$2.nil; + this.current = 0; + return; + } + this.frames = frames_; + this.current = current_; + }); + Frame = $newType(0, $kindStruct, "runtime.Frame", true, "runtime", true, function(PC_, Func_, Function_, File_, Line_, Entry_) { + this.$val = this; + if (arguments.length === 0) { + this.PC = 0; + this.Func = ptrType.nil; + this.Function = ""; + this.File = ""; + this.Line = 0; + this.Entry = 0; + return; + } + this.PC = PC_; + this.Func = Func_; + this.Function = Function_; + this.File = File_; + this.Line = Line_; + this.Entry = Entry_; + }); + Func = $newType(0, $kindStruct, "runtime.Func", true, "runtime", true, function(name_, file_, line_, opaque_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.file = ""; + this.line = 0; + this.opaque = new structType.ptr(); + return; + } + this.name = name_; + this.file = file_; + this.line = line_; + this.opaque = opaque_; + }); + errorString = $newType(8, $kindString, "runtime.errorString", true, "runtime", false, null); + $pkg._type = _type; + $pkg.TypeAssertionError = TypeAssertionError; + $pkg.basicFrame = basicFrame; + $pkg.Frames = Frames; + $pkg.Frame = Frame; + $pkg.Func = Func; + $pkg.errorString = errorString; + $pkg.$finishSetup = function() { + ptrType = $ptrType(Func); + sliceType = $sliceType(ptrType); + ptrType$1 = $ptrType(_type); + structType = $structType("", []); + sliceType$1 = $sliceType(basicFrame); + sliceType$2 = $sliceType(Frame); + ptrType$2 = $ptrType(TypeAssertionError); + ptrType$3 = $ptrType(Frames); + $ptrType(_type).prototype.string = function string() { + var t; + t = this; + return t.str; + }; + $ptrType(_type).prototype.pkgpath = function pkgpath() { + var t; + t = this; + return ""; + }; + $ptrType(TypeAssertionError).prototype.RuntimeError = function RuntimeError() { + }; + $ptrType(TypeAssertionError).prototype.Error = function Error$1() { + var as, cs, e, inter, msg; + e = this; + inter = "interface"; + if (!(e._interface === ptrType$1.nil)) { + inter = e._interface.string(); + } + as = e.asserted.string(); + if (e.concrete === ptrType$1.nil) { + return "interface conversion: " + inter + " is nil, not " + as; + } + cs = e.concrete.string(); + if (e.missingMethod === "") { + msg = "interface conversion: " + inter + " is " + cs + ", not " + as; + if (cs === as) { + if (!(e.concrete.pkgpath() === e.asserted.pkgpath())) { + msg = msg + (" (types from different packages)"); + } else { + msg = msg + (" (types from different scopes)"); + } + } + return msg; + } + return "interface conversion: " + cs + " is not " + as + ": missing method " + e.missingMethod; + }; + init = function init$1() { + var e, jsPkg; + jsPkg = $packages[$externalize("github.com/gopherjs/gopherjs/js", $String)]; + $jsObjectPtr = jsPkg.Object.ptr; + $jsErrorPtr = jsPkg.Error.ptr; + $throwRuntimeError = throw$1; + buildVersion = $internalize($goVersion, $String); + e = $ifaceNil; + e = new TypeAssertionError.ptr(ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ""); + $unused(e); + }; + GOROOT = function GOROOT$1() { + var process, v, v$1; + process = $global.process; + if (process === undefined || process.env === undefined) { + return "/"; + } + v = process.env.GOPHERJS_GOROOT; + if (!(v === undefined) && !($internalize(v, $String) === "")) { + return $internalize(v, $String); + } else { + v$1 = process.env.GOROOT; + if (!(v$1 === undefined) && !($internalize(v$1, $String) === "")) { + return $internalize(v$1, $String); + } + } + return "/usr/local/go"; + }; + $pkg.GOROOT = GOROOT; + registerPosition = function registerPosition$1(funcName, file, line, col) { + var _entry, _key, _tuple, col, f, file, found, funcName, key, line, pc, pc$1; + key = file + ":" + itoa(line) + ":" + itoa(col); + _tuple = (_entry = $mapIndex(knownPositions,$String.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [0, false]); + pc = _tuple[0]; + found = _tuple[1]; + if (found) { + return pc; + } + f = new Func.ptr(funcName, file, line, new structType.ptr()); + pc$1 = ((positionCounters.$length >>> 0)); + positionCounters = $append(positionCounters, f); + _key = key; (knownPositions || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: pc$1 }); + return pc$1; + }; + itoa = function itoa$1(i) { + var i; + return $internalize(new ($global.String)(i), $String); + }; + callstack = function callstack$1(skip, limit) { + var limit, lines, skip; + skip = (skip + 1 >> 0) + 1 >> 0; + lines = new ($global.Error)().stack.split($externalize("\n", $String)).slice(skip, skip + limit >> 0); + return parseCallstack(lines); + }; + parseCallstack = function parseCallstack$1(lines) { + var _entry, _entry$1, _tuple, alias, frame, frames, i, l, lines, ok; + frames = new sliceType$1([]); + l = $parseInt(lines.length); + i = 0; + while (true) { + if (!(i < l)) { break; } + frame = $clone(ParseCallFrame(lines[i]), basicFrame); + if ((_entry = $mapIndex(hiddenFrames,$String.keyFor(frame.FuncName)), _entry !== undefined ? _entry.v : false)) { + i = i + (1) >> 0; + continue; + } + _tuple = (_entry$1 = $mapIndex(knownFrames,$String.keyFor(frame.FuncName)), _entry$1 !== undefined ? [_entry$1.v, true] : ["", false]); + alias = _tuple[0]; + ok = _tuple[1]; + if (ok) { + frame.FuncName = alias; + } + frames = $append(frames, frame); + if (frame.FuncName === "runtime.goexit") { + break; + } + i = i + (1) >> 0; + } + return frames; + }; + ParseCallFrame = function ParseCallFrame$1(info) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, col, file, fn, funcName, idx, info, line, openIdx, parts, parts$1, parts$2, pos, split; + if (($parseInt(info.indexOf($externalize("@", $String))) >> 0) >= 0) { + split = new ($global.RegExp)($externalize("[@:]", $String)); + parts = info.split(split); + return new basicFrame.ptr($internalize(parts[0], $String), $internalize(parts.slice(1, $parseInt(parts.length) - 2 >> 0).join($externalize(":", $String)), $String), $parseInt(parts[($parseInt(parts.length) - 2 >> 0)]) >> 0, $parseInt(parts[($parseInt(parts.length) - 1 >> 0)]) >> 0); + } + openIdx = $parseInt(info.lastIndexOf($externalize("(", $String))) >> 0; + if (openIdx === -1) { + parts$1 = info.split($externalize(":", $String)); + return new basicFrame.ptr("", $internalize(parts$1.slice(0, $parseInt(parts$1.length) - 2 >> 0).join($externalize(":", $String)).replace(new ($global.RegExp)($externalize("^\\s*at ", $String)), $externalize("", $String)), $String), $parseInt(parts$1[($parseInt(parts$1.length) - 2 >> 0)]) >> 0, $parseInt(parts$1[($parseInt(parts$1.length) - 1 >> 0)]) >> 0); + } + _tmp = ""; + _tmp$1 = ""; + file = _tmp; + funcName = _tmp$1; + _tmp$2 = 0; + _tmp$3 = 0; + line = _tmp$2; + col = _tmp$3; + pos = info.substring(openIdx + 1 >> 0, $parseInt(info.indexOf($externalize(")", $String))) >> 0); + parts$2 = pos.split($externalize(":", $String)); + if ($internalize(pos, $String) === "") { + file = ""; + } else { + file = $internalize(parts$2.slice(0, $parseInt(parts$2.length) - 2 >> 0).join($externalize(":", $String)), $String); + line = $parseInt(parts$2[($parseInt(parts$2.length) - 2 >> 0)]) >> 0; + col = $parseInt(parts$2[($parseInt(parts$2.length) - 1 >> 0)]) >> 0; + } + fn = info.substring(($parseInt(info.indexOf($externalize("at ", $String))) >> 0) + 3 >> 0, $parseInt(info.indexOf($externalize(" (", $String))) >> 0); + idx = $parseInt(fn.indexOf($externalize("[as ", $String))) >> 0; + if (idx > 0) { + fn = fn.substring(idx + 4 >> 0, fn.indexOf($externalize("]", $String))); + } + funcName = $internalize(fn, $String); + return new basicFrame.ptr(funcName, file, line, col); + }; + $pkg.ParseCallFrame = ParseCallFrame; + Caller = function Caller$1(skip) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, file, frames, line, ok, pc, skip; + pc = 0; + file = ""; + line = 0; + ok = false; + skip = skip + 1 >> 0; + frames = callstack(skip, 1); + if (!((frames.$length === 1))) { + _tmp = 0; + _tmp$1 = ""; + _tmp$2 = 0; + _tmp$3 = false; + pc = _tmp; + file = _tmp$1; + line = _tmp$2; + ok = _tmp$3; + return [pc, file, line, ok]; + } + pc = registerPosition((0 >= frames.$length ? ($throwRuntimeError("index out of range"), undefined) : frames.$array[frames.$offset + 0]).FuncName, (0 >= frames.$length ? ($throwRuntimeError("index out of range"), undefined) : frames.$array[frames.$offset + 0]).File, (0 >= frames.$length ? ($throwRuntimeError("index out of range"), undefined) : frames.$array[frames.$offset + 0]).Line, (0 >= frames.$length ? ($throwRuntimeError("index out of range"), undefined) : frames.$array[frames.$offset + 0]).Col); + _tmp$4 = pc; + _tmp$5 = (0 >= frames.$length ? ($throwRuntimeError("index out of range"), undefined) : frames.$array[frames.$offset + 0]).File; + _tmp$6 = (0 >= frames.$length ? ($throwRuntimeError("index out of range"), undefined) : frames.$array[frames.$offset + 0]).Line; + _tmp$7 = true; + pc = _tmp$4; + file = _tmp$5; + line = _tmp$6; + ok = _tmp$7; + return [pc, file, line, ok]; + }; + $pkg.Caller = Caller; + Callers = function Callers$1(skip, pc) { + var _i, _ref, frame, frames, i, pc, skip; + frames = callstack(skip, pc.$length); + _ref = frames; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + frame = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), basicFrame); + ((i < 0 || i >= pc.$length) ? ($throwRuntimeError("index out of range"), undefined) : pc.$array[pc.$offset + i] = registerPosition(frame.FuncName, frame.File, frame.Line, frame.Col)); + _i++; + } + return frames.$length; + }; + $pkg.Callers = Callers; + CallersFrames = function CallersFrames$1(callers) { + var _i, _ref, callers, fun, pc, result; + result = new Frames.ptr(sliceType$2.nil, 0); + _ref = callers; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + pc = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + fun = FuncForPC(pc); + result.frames = $append(result.frames, new Frame.ptr(pc, fun, fun.name, fun.file, fun.line, fun.Entry())); + _i++; + } + return result; + }; + $pkg.CallersFrames = CallersFrames; + $ptrType(Frames).prototype.Next = function Next() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, ci, f, frame, more, x, x$1; + frame = new Frame.ptr(0, ptrType.nil, "", "", 0, 0); + more = false; + ci = this; + if (ci.current >= ci.frames.$length) { + _tmp = new Frame.ptr(0, ptrType.nil, "", "", 0, 0); + _tmp$1 = false; + Frame.copy(frame, _tmp); + more = _tmp$1; + return [frame, more]; + } + f = $clone((x = ci.frames, x$1 = ci.current, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])), Frame); + ci.current = ci.current + (1) >> 0; + _tmp$2 = $clone(f, Frame); + _tmp$3 = ci.current < ci.frames.$length; + Frame.copy(frame, _tmp$2); + more = _tmp$3; + return [frame, more]; + }; + SetFinalizer = function SetFinalizer$1(x, f) { + var f, x; + }; + $pkg.SetFinalizer = SetFinalizer; + $ptrType(Func).prototype.Entry = function Entry() { + return 0; + }; + $ptrType(Func).prototype.FileLine = function FileLine(pc) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, f, file, line, pc; + file = ""; + line = 0; + f = this; + if (f === ptrType.nil) { + _tmp = ""; + _tmp$1 = 0; + file = _tmp; + line = _tmp$1; + return [file, line]; + } + _tmp$2 = f.file; + _tmp$3 = f.line; + file = _tmp$2; + line = _tmp$3; + return [file, line]; + }; + $ptrType(Func).prototype.Name = function Name() { + var f; + f = this; + if (f === ptrType.nil || f.name === "") { + return ""; + } + return f.name; + }; + FuncForPC = function FuncForPC$1(pc) { + var ipc, pc; + ipc = ((pc >> 0)); + if (ipc >= positionCounters.$length) { + $panic(new $String("GopherJS: pc=" + itoa(ipc) + " is out of range of known position counters")); + } + return ((ipc < 0 || ipc >= positionCounters.$length) ? ($throwRuntimeError("index out of range"), undefined) : positionCounters.$array[positionCounters.$offset + ipc]); + }; + $pkg.FuncForPC = FuncForPC; + Stack = function Stack$1(buf, all) { + var all, buf, s; + s = new ($global.Error)().stack; + if (s === undefined) { + return 0; + } + return $copyString(buf, $internalize(s.substring(($parseInt(s.indexOf($externalize("\n", $String))) >> 0) + 1 >> 0), $String)); + }; + $pkg.Stack = Stack; + Version = function Version$1() { + return buildVersion; + }; + $pkg.Version = Version; + KeepAlive = function KeepAlive$1(param) { + var param; + }; + $pkg.KeepAlive = KeepAlive; + errorString.prototype.RuntimeError = function RuntimeError$1() { + var e; + e = this.$val; + }; + $ptrType(errorString).prototype.RuntimeError = function(...$args) { return new errorString(this.$get()).RuntimeError(...$args); }; + errorString.prototype.Error = function Error$2() { + var e; + e = this.$val; + return "runtime error: " + (e); + }; + $ptrType(errorString).prototype.Error = function(...$args) { return new errorString(this.$get()).Error(...$args); }; + throw$1 = function throw$2(s) { + var s; + $panic(new errorString((s))); + }; + nanotime = function nanotime$1() { + return $mul64($internalize(new ($global.Date)().getTime(), $Int64), new $Int64(0, 1000000)); + }; + godebug_setUpdate = function godebug_setUpdate$1(update) { + var {godebugEnv, update, $s, $r, $c} = $restore(this, {update}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + godebugUpdate = update; + godebugEnv = getEnvString("GODEBUG"); + $r = godebug_notify("GODEBUG", godebugEnv); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: godebug_setUpdate$1, $c: true, $r, godebugEnv, update, $s};return $f; + }; + getEnvString = function getEnvString$1(key) { + var env, key, process, value; + process = $global.process; + if (process === undefined) { + return ""; + } + env = process.env; + if (env === undefined) { + return ""; + } + value = env[$externalize(key, $String)]; + if (value === undefined) { + return ""; + } + return $internalize(value, $String); + }; + godebug_notify = function godebug_notify$1(key, value) { + var {godebugDefault, key, update, value, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + update = godebugUpdate; + if (update === $throwNilPointerError || !(key === "GODEBUG")) { + $s = -1; return; + } + godebugDefault = ""; + $r = update(godebugDefault, value); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: godebug_notify$1, $c: true, $r, godebugDefault, key, update, value, $s};return $f; + }; + fastrand = function fastrand$1() { + return (($parseFloat($global.Math.random()) * 4.294967295e+09 >>> 0)); + }; + fastrand64 = function fastrand64$1() { + var x, x$1; + return (x = $shiftLeft64((new $Uint64(0, fastrand())), 32), x$1 = (new $Uint64(0, fastrand())), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)); + }; + fastrandu = function fastrandu$1() { + return ((fastrand() >>> 0)); + }; + ptrType$1.methods = [{prop: "string", name: "string", pkg: "runtime", typ: $funcType([], [$String], false)}, {prop: "pkgpath", name: "pkgpath", pkg: "runtime", typ: $funcType([], [$String], false)}]; + ptrType$2.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$3.methods = [{prop: "Next", name: "Next", pkg: "", typ: $funcType([], [Frame, $Bool], false)}]; + ptrType.methods = [{prop: "Entry", name: "Entry", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "FileLine", name: "FileLine", pkg: "", typ: $funcType([$Uintptr], [$String, $Int], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}]; + errorString.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + _type.init("runtime", [{prop: "str", name: "str", embedded: false, exported: false, typ: $String, tag: ""}]); + TypeAssertionError.init("runtime", [{prop: "_interface", name: "_interface", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "concrete", name: "concrete", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "asserted", name: "asserted", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "missingMethod", name: "missingMethod", embedded: false, exported: false, typ: $String, tag: ""}]); + basicFrame.init("", [{prop: "FuncName", name: "FuncName", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "File", name: "File", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Line", name: "Line", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Col", name: "Col", embedded: false, exported: true, typ: $Int, tag: ""}]); + Frames.init("runtime", [{prop: "frames", name: "frames", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "current", name: "current", embedded: false, exported: false, typ: $Int, tag: ""}]); + Frame.init("", [{prop: "PC", name: "PC", embedded: false, exported: true, typ: $Uintptr, tag: ""}, {prop: "Func", name: "Func", embedded: false, exported: true, typ: ptrType, tag: ""}, {prop: "Function", name: "Function", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "File", name: "File", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Line", name: "Line", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Entry", name: "Entry", embedded: false, exported: true, typ: $Uintptr, tag: ""}]); + Func.init("runtime", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "file", name: "file", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "line", name: "line", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "opaque", name: "opaque", embedded: false, exported: false, typ: structType, tag: ""}]); + $linknames["runtime.nanotime"] = nanotime; + $linknames["runtime.godebug_setUpdate"] = godebug_setUpdate; + $linknames["runtime.godebug_notify"] = godebug_notify; + $linknames["runtime.fastrand"] = fastrand; + $linknames["runtime.fastrand64"] = fastrand64; + $linknames["runtime.fastrandu"] = fastrandu; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buildVersion = ""; + godebugUpdate = $throwNilPointerError; + knownPositions = $makeMap($String.keyFor, []); + positionCounters = new sliceType([]); + hiddenFrames = $makeMap($String.keyFor, [{ k: "$callDeferred", v: true }]); + knownFrames = $makeMap($String.keyFor, [{ k: "$panic", v: "runtime.gopanic" }, { k: "$goroutine", v: "runtime.goexit" }]); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/goarch"] = (function() { + var $pkg = {}, $init; + $pkg.$finishSetup = function() { + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/reflectlite"] = (function() { + var $pkg = {}, $init, js, goarch, Value, flag, ValueError, Type, Kind, tflag, rtype, method, chanDir, arrayType, chanType, imethod, interfaceType, mapType, ptrType, sliceType, structField, structType, nameOff, typeOff, textOff, errorString, Method, uncommonType, funcType, name, nameData, mapIter, TypeEx, ptrType$1, sliceType$1, sliceType$2, sliceType$3, sliceType$4, ptrType$2, funcType$1, ptrType$4, sliceType$5, ptrType$5, sliceType$6, ptrType$6, ptrType$7, sliceType$7, sliceType$8, sliceType$9, sliceType$10, ptrType$8, structType$2, ptrType$9, arrayType$2, sliceType$13, ptrType$10, funcType$2, ptrType$11, funcType$3, ptrType$12, ptrType$13, uint8Type, nameOffList, typeOffList, kindNames, callHelper, initialized, idJsType, idReflectType, idKindType, idRtype, uncommonTypeMap, nameMap, jsObjectPtr, selectHelper, implements$1, directlyAssignable, haveIdenticalType, haveIdenticalUnderlyingType, toType, ifaceIndir, unquote, Swapper, init, jsType, reflectType, setKindType, newName, newNameOff, newTypeOff, internalStr, isWrapped, copyStruct, makeValue, TypeOf, ValueOf, FuncOf, SliceOf, unsafe_New, typedmemmove, keyFor, mapaccess, mapiterinit, mapiterkey, mapiternext, maplen, methodReceiver, valueInterface, ifaceE2I, methodName, makeMethodValue, wrapJsObject, unwrapJsObject, getJsTag, PtrTo, copyVal; + js = $packages["github.com/gopherjs/gopherjs/js"]; + goarch = $packages["internal/goarch"]; + Value = $newType(0, $kindStruct, "reflectlite.Value", true, "internal/reflectlite", true, function(typ_, ptr_, flag_) { + this.$val = this; + if (arguments.length === 0) { + this.typ = ptrType$1.nil; + this.ptr = 0; + this.flag = 0; + return; + } + this.typ = typ_; + this.ptr = ptr_; + this.flag = flag_; + }); + flag = $newType(4, $kindUintptr, "reflectlite.flag", true, "internal/reflectlite", false, null); + ValueError = $newType(0, $kindStruct, "reflectlite.ValueError", true, "internal/reflectlite", true, function(Method_, Kind_) { + this.$val = this; + if (arguments.length === 0) { + this.Method = ""; + this.Kind = 0; + return; + } + this.Method = Method_; + this.Kind = Kind_; + }); + Type = $newType(8, $kindInterface, "reflectlite.Type", true, "internal/reflectlite", true, null); + Kind = $newType(4, $kindUint, "reflectlite.Kind", true, "internal/reflectlite", true, null); + tflag = $newType(1, $kindUint8, "reflectlite.tflag", true, "internal/reflectlite", false, null); + rtype = $newType(0, $kindStruct, "reflectlite.rtype", true, "internal/reflectlite", false, function(size_, ptrdata_, hash_, tflag_, align_, fieldAlign_, kind_, equal_, gcdata_, str_, ptrToThis_) { + this.$val = this; + if (arguments.length === 0) { + this.size = 0; + this.ptrdata = 0; + this.hash = 0; + this.tflag = 0; + this.align = 0; + this.fieldAlign = 0; + this.kind = 0; + this.equal = $throwNilPointerError; + this.gcdata = ptrType$6.nil; + this.str = 0; + this.ptrToThis = 0; + return; + } + this.size = size_; + this.ptrdata = ptrdata_; + this.hash = hash_; + this.tflag = tflag_; + this.align = align_; + this.fieldAlign = fieldAlign_; + this.kind = kind_; + this.equal = equal_; + this.gcdata = gcdata_; + this.str = str_; + this.ptrToThis = ptrToThis_; + }); + method = $newType(0, $kindStruct, "reflectlite.method", true, "internal/reflectlite", false, function(name_, mtyp_, ifn_, tfn_) { + this.$val = this; + if (arguments.length === 0) { + this.name = 0; + this.mtyp = 0; + this.ifn = 0; + this.tfn = 0; + return; + } + this.name = name_; + this.mtyp = mtyp_; + this.ifn = ifn_; + this.tfn = tfn_; + }); + chanDir = $newType(4, $kindInt, "reflectlite.chanDir", true, "internal/reflectlite", false, null); + arrayType = $newType(0, $kindStruct, "reflectlite.arrayType", true, "internal/reflectlite", false, function(rtype_, elem_, slice_, len_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0); + this.elem = ptrType$1.nil; + this.slice = ptrType$1.nil; + this.len = 0; + return; + } + this.rtype = rtype_; + this.elem = elem_; + this.slice = slice_; + this.len = len_; + }); + chanType = $newType(0, $kindStruct, "reflectlite.chanType", true, "internal/reflectlite", false, function(rtype_, elem_, dir_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0); + this.elem = ptrType$1.nil; + this.dir = 0; + return; + } + this.rtype = rtype_; + this.elem = elem_; + this.dir = dir_; + }); + imethod = $newType(0, $kindStruct, "reflectlite.imethod", true, "internal/reflectlite", false, function(name_, typ_) { + this.$val = this; + if (arguments.length === 0) { + this.name = 0; + this.typ = 0; + return; + } + this.name = name_; + this.typ = typ_; + }); + interfaceType = $newType(0, $kindStruct, "reflectlite.interfaceType", true, "internal/reflectlite", false, function(rtype_, pkgPath_, methods_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0); + this.pkgPath = new name.ptr(ptrType$6.nil); + this.methods = sliceType$9.nil; + return; + } + this.rtype = rtype_; + this.pkgPath = pkgPath_; + this.methods = methods_; + }); + mapType = $newType(0, $kindStruct, "reflectlite.mapType", true, "internal/reflectlite", false, function(rtype_, key_, elem_, bucket_, hasher_, keysize_, valuesize_, bucketsize_, flags_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0); + this.key = ptrType$1.nil; + this.elem = ptrType$1.nil; + this.bucket = ptrType$1.nil; + this.hasher = $throwNilPointerError; + this.keysize = 0; + this.valuesize = 0; + this.bucketsize = 0; + this.flags = 0; + return; + } + this.rtype = rtype_; + this.key = key_; + this.elem = elem_; + this.bucket = bucket_; + this.hasher = hasher_; + this.keysize = keysize_; + this.valuesize = valuesize_; + this.bucketsize = bucketsize_; + this.flags = flags_; + }); + ptrType = $newType(0, $kindStruct, "reflectlite.ptrType", true, "internal/reflectlite", false, function(rtype_, elem_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0); + this.elem = ptrType$1.nil; + return; + } + this.rtype = rtype_; + this.elem = elem_; + }); + sliceType = $newType(0, $kindStruct, "reflectlite.sliceType", true, "internal/reflectlite", false, function(rtype_, elem_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0); + this.elem = ptrType$1.nil; + return; + } + this.rtype = rtype_; + this.elem = elem_; + }); + structField = $newType(0, $kindStruct, "reflectlite.structField", true, "internal/reflectlite", false, function(name_, typ_, offset_) { + this.$val = this; + if (arguments.length === 0) { + this.name = new name.ptr(ptrType$6.nil); + this.typ = ptrType$1.nil; + this.offset = 0; + return; + } + this.name = name_; + this.typ = typ_; + this.offset = offset_; + }); + structType = $newType(0, $kindStruct, "reflectlite.structType", true, "internal/reflectlite", false, function(rtype_, pkgPath_, fields_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0); + this.pkgPath = new name.ptr(ptrType$6.nil); + this.fields = sliceType$10.nil; + return; + } + this.rtype = rtype_; + this.pkgPath = pkgPath_; + this.fields = fields_; + }); + nameOff = $newType(4, $kindInt32, "reflectlite.nameOff", true, "internal/reflectlite", false, null); + typeOff = $newType(4, $kindInt32, "reflectlite.typeOff", true, "internal/reflectlite", false, null); + textOff = $newType(4, $kindInt32, "reflectlite.textOff", true, "internal/reflectlite", false, null); + errorString = $newType(0, $kindStruct, "reflectlite.errorString", true, "internal/reflectlite", false, function(s_) { + this.$val = this; + if (arguments.length === 0) { + this.s = ""; + return; + } + this.s = s_; + }); + Method = $newType(0, $kindStruct, "reflectlite.Method", true, "internal/reflectlite", true, function(Name_, PkgPath_, Type_, Func_, Index_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.PkgPath = ""; + this.Type = $ifaceNil; + this.Func = new Value.ptr(ptrType$1.nil, 0, 0); + this.Index = 0; + return; + } + this.Name = Name_; + this.PkgPath = PkgPath_; + this.Type = Type_; + this.Func = Func_; + this.Index = Index_; + }); + uncommonType = $newType(0, $kindStruct, "reflectlite.uncommonType", true, "internal/reflectlite", false, function(pkgPath_, mcount_, xcount_, moff_, _methods_) { + this.$val = this; + if (arguments.length === 0) { + this.pkgPath = 0; + this.mcount = 0; + this.xcount = 0; + this.moff = 0; + this._methods = sliceType$5.nil; + return; + } + this.pkgPath = pkgPath_; + this.mcount = mcount_; + this.xcount = xcount_; + this.moff = moff_; + this._methods = _methods_; + }); + funcType = $newType(0, $kindStruct, "reflectlite.funcType", true, "internal/reflectlite", false, function(rtype_, inCount_, outCount_, _in_, _out_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0); + this.inCount = 0; + this.outCount = 0; + this._in = sliceType$2.nil; + this._out = sliceType$2.nil; + return; + } + this.rtype = rtype_; + this.inCount = inCount_; + this.outCount = outCount_; + this._in = _in_; + this._out = _out_; + }); + name = $newType(0, $kindStruct, "reflectlite.name", true, "internal/reflectlite", false, function(bytes_) { + this.$val = this; + if (arguments.length === 0) { + this.bytes = ptrType$6.nil; + return; + } + this.bytes = bytes_; + }); + nameData = $newType(0, $kindStruct, "reflectlite.nameData", true, "internal/reflectlite", false, function(name_, tag_, exported_, embedded_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.tag = ""; + this.exported = false; + this.embedded = false; + return; + } + this.name = name_; + this.tag = tag_; + this.exported = exported_; + this.embedded = embedded_; + }); + mapIter = $newType(0, $kindStruct, "reflectlite.mapIter", true, "internal/reflectlite", false, function(t_, m_, keys_, i_, last_) { + this.$val = this; + if (arguments.length === 0) { + this.t = $ifaceNil; + this.m = null; + this.keys = null; + this.i = 0; + this.last = null; + return; + } + this.t = t_; + this.m = m_; + this.keys = keys_; + this.i = i_; + this.last = last_; + }); + TypeEx = $newType(8, $kindInterface, "reflectlite.TypeEx", true, "internal/reflectlite", true, null); + $pkg.Value = Value; + $pkg.flag = flag; + $pkg.ValueError = ValueError; + $pkg.Type = Type; + $pkg.Kind = Kind; + $pkg.tflag = tflag; + $pkg.rtype = rtype; + $pkg.method = method; + $pkg.chanDir = chanDir; + $pkg.arrayType = arrayType; + $pkg.chanType = chanType; + $pkg.imethod = imethod; + $pkg.interfaceType = interfaceType; + $pkg.mapType = mapType; + $pkg.ptrType = ptrType; + $pkg.sliceType = sliceType; + $pkg.structField = structField; + $pkg.structType = structType; + $pkg.nameOff = nameOff; + $pkg.typeOff = typeOff; + $pkg.textOff = textOff; + $pkg.errorString = errorString; + $pkg.Method = Method; + $pkg.uncommonType = uncommonType; + $pkg.funcType = funcType; + $pkg.name = name; + $pkg.nameData = nameData; + $pkg.mapIter = mapIter; + $pkg.TypeEx = TypeEx; + $pkg.$finishSetup = function() { + ptrType$1 = $ptrType(rtype); + sliceType$1 = $sliceType(name); + sliceType$2 = $sliceType(ptrType$1); + sliceType$3 = $sliceType($String); + sliceType$4 = $sliceType($emptyInterface); + ptrType$2 = $ptrType(js.Object); + funcType$1 = $funcType([sliceType$4], [ptrType$2], true); + ptrType$4 = $ptrType(uncommonType); + sliceType$5 = $sliceType(method); + ptrType$5 = $ptrType(funcType); + sliceType$6 = $sliceType(Value); + ptrType$6 = $ptrType($Uint8); + ptrType$7 = $ptrType($UnsafePointer); + sliceType$7 = $sliceType(Type); + sliceType$8 = $sliceType(ptrType$2); + sliceType$9 = $sliceType(imethod); + sliceType$10 = $sliceType(structField); + ptrType$8 = $ptrType(nameData); + structType$2 = $structType("internal/reflectlite", [{prop: "str", name: "str", embedded: false, exported: false, typ: $String, tag: ""}]); + ptrType$9 = $ptrType(mapIter); + arrayType$2 = $arrayType($Uintptr, 2); + sliceType$13 = $sliceType($Uint8); + ptrType$10 = $ptrType(ValueError); + funcType$2 = $funcType([$UnsafePointer, $UnsafePointer], [$Bool], false); + ptrType$11 = $ptrType(interfaceType); + funcType$3 = $funcType([$UnsafePointer, $Uintptr], [$Uintptr], false); + ptrType$12 = $ptrType(structField); + ptrType$13 = $ptrType(errorString); + flag.prototype.kind = function kind() { + var f; + f = this.$val; + return ((((f & 31) >>> 0) >>> 0)); + }; + $ptrType(flag).prototype.kind = function(...$args) { return new flag(this.$get()).kind(...$args); }; + flag.prototype.ro = function ro() { + var f; + f = this.$val; + if (!((((f & 96) >>> 0) === 0))) { + return 32; + } + return 0; + }; + $ptrType(flag).prototype.ro = function(...$args) { return new flag(this.$get()).ro(...$args); }; + $ptrType(Value).prototype.pointer = function pointer() { + var v; + v = this; + if (!((v.typ.size === 4)) || !v.typ.pointers()) { + $panic(new $String("can't call pointer on a non-pointer Value")); + } + if (!((((v.flag & 128) >>> 0) === 0))) { + return (v.ptr).$get(); + } + return v.ptr; + }; + Value.prototype.pointer = function(...$args) { return this.$val.pointer(...$args); }; + $ptrType(ValueError).prototype.Error = function Error() { + var e; + e = this; + if (e.Kind === 0) { + return "reflect: call of " + e.Method + " on zero Value"; + } + return "reflect: call of " + e.Method + " on " + new Kind(e.Kind).String() + " Value"; + }; + flag.prototype.mustBeExported = function mustBeExported() { + var f; + f = this.$val; + if (f === 0) { + $panic(new ValueError.ptr(methodName(), 0)); + } + if (!((((f & 96) >>> 0) === 0))) { + $panic(new $String("reflect: " + methodName() + " using value obtained using unexported field")); + } + }; + $ptrType(flag).prototype.mustBeExported = function(...$args) { return new flag(this.$get()).mustBeExported(...$args); }; + flag.prototype.mustBeAssignable = function mustBeAssignable() { + var f; + f = this.$val; + if (f === 0) { + $panic(new ValueError.ptr(methodName(), 0)); + } + if (!((((f & 96) >>> 0) === 0))) { + $panic(new $String("reflect: " + methodName() + " using value obtained using unexported field")); + } + if (((f & 256) >>> 0) === 0) { + $panic(new $String("reflect: " + methodName() + " using unaddressable value")); + } + }; + $ptrType(flag).prototype.mustBeAssignable = function(...$args) { return new flag(this.$get()).mustBeAssignable(...$args); }; + $ptrType(Value).prototype.CanSet = function CanSet() { + var v; + v = this; + return ((v.flag & 352) >>> 0) === 256; + }; + Value.prototype.CanSet = function(...$args) { return this.$val.CanSet(...$args); }; + $ptrType(Value).prototype.IsValid = function IsValid() { + var v; + v = this; + return !((v.flag === 0)); + }; + Value.prototype.IsValid = function(...$args) { return this.$val.IsValid(...$args); }; + $ptrType(Value).prototype.Kind = function Kind$1() { + var v; + v = this; + return new flag(v.flag).kind(); + }; + Value.prototype.Kind = function(...$args) { return this.$val.Kind(...$args); }; + $ptrType(Value).prototype.Type = function Type$1() { + var f, v; + v = this; + f = v.flag; + if (f === 0) { + $panic(new ValueError.ptr("reflectlite.Value.Type", 0)); + } + return v.typ; + }; + Value.prototype.Type = function(...$args) { return this.$val.Type(...$args); }; + $ptrType(structField).prototype.embedded = function embedded() { + var f; + f = this; + return $clone(f.name, name).embedded(); + }; + Kind.prototype.String = function String() { + var k; + k = this.$val; + if (((k >> 0)) < kindNames.$length) { + return ((k < 0 || k >= kindNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : kindNames.$array[kindNames.$offset + k]); + } + return (0 >= kindNames.$length ? ($throwRuntimeError("index out of range"), undefined) : kindNames.$array[kindNames.$offset + 0]); + }; + $ptrType(Kind).prototype.String = function(...$args) { return new Kind(this.$get()).String(...$args); }; + $ptrType(rtype).prototype.String = function String$1() { + var s, t; + t = this; + s = $clone(t.nameOff(t.str), name).name(); + if (!((((t.tflag & 2) >>> 0) === 0))) { + return $substring(s, 1); + } + return s; + }; + $ptrType(rtype).prototype.Size = function Size() { + var t; + t = this; + return t.size; + }; + $ptrType(rtype).prototype.Kind = function Kind$2() { + var t; + t = this; + return ((((t.kind & 31) >>> 0) >>> 0)); + }; + $ptrType(rtype).prototype.pointers = function pointers() { + var t; + t = this; + return !((t.ptrdata === 0)); + }; + $ptrType(rtype).prototype.common = function common() { + var t; + t = this; + return t; + }; + $ptrType(rtype).prototype.exportedMethods = function exportedMethods() { + var t, ut; + t = this; + ut = t.uncommon(); + if (ut === ptrType$4.nil) { + return sliceType$5.nil; + } + return ut.exportedMethods(); + }; + $ptrType(rtype).prototype.NumMethod = function NumMethod() { + var t, tt; + t = this; + if (t.Kind() === 20) { + tt = (t.kindType); + return tt.NumMethod(); + } + return t.exportedMethods().$length; + }; + $ptrType(rtype).prototype.PkgPath = function PkgPath() { + var t, ut; + t = this; + if (((t.tflag & 4) >>> 0) === 0) { + return ""; + } + ut = t.uncommon(); + if (ut === ptrType$4.nil) { + return ""; + } + return $clone(t.nameOff(ut.pkgPath), name).name(); + }; + $ptrType(rtype).prototype.hasName = function hasName() { + var t; + t = this; + return !((((t.tflag & 4) >>> 0) === 0)); + }; + $ptrType(rtype).prototype.Name = function Name() { + var _1, i, s, sqBrackets, t; + t = this; + if (!t.hasName()) { + return ""; + } + s = t.String(); + i = s.length - 1 >> 0; + sqBrackets = 0; + while (true) { + if (!(i >= 0 && (!((s.charCodeAt(i) === 46)) || !((sqBrackets === 0))))) { break; } + _1 = s.charCodeAt(i); + if (_1 === (93)) { + sqBrackets = sqBrackets + (1) >> 0; + } else if (_1 === (91)) { + sqBrackets = sqBrackets - (1) >> 0; + } + i = i - (1) >> 0; + } + return $substring(s, (i + 1 >> 0)); + }; + $ptrType(rtype).prototype.chanDir = function chanDir$1() { + var t, tt; + t = this; + if (!((t.Kind() === 18))) { + $panic(new $String("reflect: chanDir of non-chan type")); + } + tt = (t.kindType); + return ((tt.dir >> 0)); + }; + $ptrType(rtype).prototype.Elem = function Elem() { + var _1, t, tt, tt$1, tt$2, tt$3, tt$4; + t = this; + _1 = t.Kind(); + if (_1 === (17)) { + tt = (t.kindType); + return toType(tt.elem); + } else if (_1 === (18)) { + tt$1 = (t.kindType); + return toType(tt$1.elem); + } else if (_1 === (21)) { + tt$2 = (t.kindType); + return toType(tt$2.elem); + } else if (_1 === (22)) { + tt$3 = (t.kindType); + return toType(tt$3.elem); + } else if (_1 === (23)) { + tt$4 = (t.kindType); + return toType(tt$4.elem); + } + $panic(new $String("reflect: Elem of invalid type")); + }; + $ptrType(rtype).prototype.In = function In(i) { + var i, t, tt, x; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: In of non-func type")); + } + tt = (t.kindType); + return toType((x = tt.in$(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))); + }; + $ptrType(rtype).prototype.Len = function Len() { + var t, tt; + t = this; + if (!((t.Kind() === 17))) { + $panic(new $String("reflect: Len of non-array type")); + } + tt = (t.kindType); + return ((tt.len >> 0)); + }; + $ptrType(rtype).prototype.NumIn = function NumIn() { + var t, tt; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: NumIn of non-func type")); + } + tt = (t.kindType); + return ((tt.inCount >> 0)); + }; + $ptrType(rtype).prototype.NumOut = function NumOut() { + var t, tt; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: NumOut of non-func type")); + } + tt = (t.kindType); + return tt.out().$length; + }; + $ptrType(rtype).prototype.Out = function Out(i) { + var i, t, tt, x; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: Out of non-func type")); + } + tt = (t.kindType); + return toType((x = tt.out(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))); + }; + $ptrType(interfaceType).prototype.NumMethod = function NumMethod$1() { + var t; + t = this; + return t.methods.$length; + }; + $ptrType(rtype).prototype.Implements = function Implements(u) { + var {_r, t, u, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if ($interfaceIsEqual(u, $ifaceNil)) { + $panic(new $String("reflect: nil type passed to Type.Implements")); + } + _r = u.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 20))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 20))) { */ case 1: + $panic(new $String("reflect: non-interface type passed to Type.Implements")); + /* } */ case 2: + $s = -1; return implements$1($assertType(u, ptrType$1), t); + /* */ } return; } var $f = {$blk: Implements, $c: true, $r, _r, t, u, $s};return $f; + }; + $ptrType(rtype).prototype.AssignableTo = function AssignableTo(u) { + var {$24r, _r, t, u, uu, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if ($interfaceIsEqual(u, $ifaceNil)) { + $panic(new $String("reflect: nil type passed to Type.AssignableTo")); + } + uu = $assertType(u, ptrType$1); + _r = directlyAssignable(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r || implements$1(uu, t); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: AssignableTo, $c: true, $r, $24r, _r, t, u, uu, $s};return $f; + }; + implements$1 = function implements$2(T, V) { + var T, V, i, i$1, j, j$1, t, tm, tm$1, tmName, tmName$1, tmPkgPath, tmPkgPath$1, v, v$1, vm, vm$1, vmName, vmName$1, vmPkgPath, vmPkgPath$1, vmethods, x, x$1, x$2; + if (!((T.Kind() === 20))) { + return false; + } + t = (T.kindType); + if (t.methods.$length === 0) { + return true; + } + if (V.Kind() === 20) { + v = (V.kindType); + i = 0; + j = 0; + while (true) { + if (!(j < v.methods.$length)) { break; } + tm = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + tmName = $clone(t.rtype.nameOff(tm.name), name); + vm = (x$1 = v.methods, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j])); + vmName = $clone(V.nameOff(vm.name), name); + if ($clone(vmName, name).name() === $clone(tmName, name).name() && V.typeOff(vm.typ) === t.rtype.typeOff(tm.typ)) { + if (!$clone(tmName, name).isExported()) { + tmPkgPath = $clone(tmName, name).pkgPath(); + if (tmPkgPath === "") { + tmPkgPath = $clone(t.pkgPath, name).name(); + } + vmPkgPath = $clone(vmName, name).pkgPath(); + if (vmPkgPath === "") { + vmPkgPath = $clone(v.pkgPath, name).name(); + } + if (!(tmPkgPath === vmPkgPath)) { + j = j + (1) >> 0; + continue; + } + } + i = i + (1) >> 0; + if (i >= t.methods.$length) { + return true; + } + } + j = j + (1) >> 0; + } + return false; + } + v$1 = V.uncommon(); + if (v$1 === ptrType$4.nil) { + return false; + } + i$1 = 0; + vmethods = v$1.methods(); + j$1 = 0; + while (true) { + if (!(j$1 < ((v$1.mcount >> 0)))) { break; } + tm$1 = (x$2 = t.methods, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1])); + tmName$1 = $clone(t.rtype.nameOff(tm$1.name), name); + vm$1 = $clone(((j$1 < 0 || j$1 >= vmethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : vmethods.$array[vmethods.$offset + j$1]), method); + vmName$1 = $clone(V.nameOff(vm$1.name), name); + if ($clone(vmName$1, name).name() === $clone(tmName$1, name).name() && V.typeOff(vm$1.mtyp) === t.rtype.typeOff(tm$1.typ)) { + if (!$clone(tmName$1, name).isExported()) { + tmPkgPath$1 = $clone(tmName$1, name).pkgPath(); + if (tmPkgPath$1 === "") { + tmPkgPath$1 = $clone(t.pkgPath, name).name(); + } + vmPkgPath$1 = $clone(vmName$1, name).pkgPath(); + if (vmPkgPath$1 === "") { + vmPkgPath$1 = $clone(V.nameOff(v$1.pkgPath), name).name(); + } + if (!(tmPkgPath$1 === vmPkgPath$1)) { + j$1 = j$1 + (1) >> 0; + continue; + } + } + i$1 = i$1 + (1) >> 0; + if (i$1 >= t.methods.$length) { + return true; + } + } + j$1 = j$1 + (1) >> 0; + } + return false; + }; + directlyAssignable = function directlyAssignable$1(T, V) { + var {$24r, T, V, _r, $s, $r, $c} = $restore(this, {T, V}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (T === V) { + $s = -1; return true; + } + if (T.hasName() && V.hasName() || !((T.Kind() === V.Kind()))) { + $s = -1; return false; + } + _r = haveIdenticalUnderlyingType(T, V, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: directlyAssignable$1, $c: true, $r, $24r, T, V, _r, $s};return $f; + }; + haveIdenticalType = function haveIdenticalType$1(T, V, cmpTags) { + var {$24r, T, V, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _v, cmpTags, $s, $r, $c} = $restore(this, {T, V, cmpTags}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (cmpTags) { + $s = -1; return $interfaceIsEqual(T, V); + } + _r = T.Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = V.Name(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (!(_r === _r$1)) { _v = true; $s = 3; continue s; } + _r$2 = T.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = V.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = !((_r$2 === _r$3)); case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return false; + /* } */ case 2: + _r$4 = T.common(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg = _r$4; + _r$5 = V.common(); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$1 = _r$5; + _r$6 = haveIdenticalUnderlyingType(_arg, _arg$1, false); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r = _r$6; + $s = 11; case 11: return $24r; + /* */ } return; } var $f = {$blk: haveIdenticalType$1, $c: true, $r, $24r, T, V, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _v, cmpTags, $s};return $f; + }; + haveIdenticalUnderlyingType = function haveIdenticalUnderlyingType$1(T, V, cmpTags) { + var {$24r, $24r$1, $24r$2, $24r$3, T, V, _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _v, _v$1, _v$2, _v$3, cmpTags, i, i$1, i$2, kind$1, t, t$1, t$2, tf, v, v$1, v$2, vf, x, x$1, $s, $r, $c} = $restore(this, {T, V, cmpTags}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (T === V) { + $s = -1; return true; + } + kind$1 = T.Kind(); + if (!((kind$1 === V.Kind()))) { + $s = -1; return false; + } + if (1 <= kind$1 && kind$1 <= 16 || (kind$1 === 24) || (kind$1 === 26)) { + $s = -1; return true; + } + _1 = kind$1; + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if (_1 === (18)) { $s = 3; continue; } + /* */ if (_1 === (19)) { $s = 4; continue; } + /* */ if (_1 === (20)) { $s = 5; continue; } + /* */ if (_1 === (21)) { $s = 6; continue; } + /* */ if ((_1 === (22)) || (_1 === (23))) { $s = 7; continue; } + /* */ if (_1 === (25)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === (17)) { */ case 2: + if (!(T.Len() === V.Len())) { _v = false; $s = 10; continue s; } + _r = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 10: + $24r = _v; + $s = 12; case 12: return $24r; + /* } else if (_1 === (18)) { */ case 3: + if (!(V.chanDir() === 3)) { _v$1 = false; $s = 15; continue s; } + _r$1 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v$1 = _r$1; case 15: + /* */ if (_v$1) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_v$1) { */ case 13: + $s = -1; return true; + /* } */ case 14: + if (!(V.chanDir() === T.chanDir())) { _v$2 = false; $s = 17; continue s; } + _r$2 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$2 = _r$2; case 17: + $24r$1 = _v$2; + $s = 19; case 19: return $24r$1; + /* } else if (_1 === (19)) { */ case 4: + t = (T.kindType); + v = (V.kindType); + if (!((t.outCount === v.outCount)) || !((t.inCount === v.inCount))) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 20: + /* if (!(i < t.rtype.NumIn())) { break; } */ if(!(i < t.rtype.NumIn())) { $s = 21; continue; } + _r$3 = haveIdenticalType(t.rtype.In(i), v.rtype.In(i), cmpTags); /* */ $s = 24; case 24: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!_r$3) { */ case 22: + $s = -1; return false; + /* } */ case 23: + i = i + (1) >> 0; + $s = 20; continue; + case 21: + i$1 = 0; + /* while (true) { */ case 25: + /* if (!(i$1 < t.rtype.NumOut())) { break; } */ if(!(i$1 < t.rtype.NumOut())) { $s = 26; continue; } + _r$4 = haveIdenticalType(t.rtype.Out(i$1), v.rtype.Out(i$1), cmpTags); /* */ $s = 29; case 29: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (!_r$4) { */ case 27: + $s = -1; return false; + /* } */ case 28: + i$1 = i$1 + (1) >> 0; + $s = 25; continue; + case 26: + $s = -1; return true; + /* } else if (_1 === (20)) { */ case 5: + t$1 = (T.kindType); + v$1 = (V.kindType); + if ((t$1.methods.$length === 0) && (v$1.methods.$length === 0)) { + $s = -1; return true; + } + $s = -1; return false; + /* } else if (_1 === (21)) { */ case 6: + _r$5 = haveIdenticalType(T.Key(), V.Key(), cmpTags); /* */ $s = 31; case 31: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + if (!(_r$5)) { _v$3 = false; $s = 30; continue s; } + _r$6 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 32; case 32: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$3 = _r$6; case 30: + $24r$2 = _v$3; + $s = 33; case 33: return $24r$2; + /* } else if ((_1 === (22)) || (_1 === (23))) { */ case 7: + _r$7 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $24r$3 = _r$7; + $s = 35; case 35: return $24r$3; + /* } else if (_1 === (25)) { */ case 8: + t$2 = (T.kindType); + v$2 = (V.kindType); + if (!((t$2.fields.$length === v$2.fields.$length))) { + $s = -1; return false; + } + if (!($clone(t$2.pkgPath, name).name() === $clone(v$2.pkgPath, name).name())) { + $s = -1; return false; + } + _ref = t$2.fields; + _i = 0; + /* while (true) { */ case 36: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 37; continue; } + i$2 = _i; + tf = (x = t$2.fields, ((i$2 < 0 || i$2 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i$2])); + vf = (x$1 = v$2.fields, ((i$2 < 0 || i$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$2])); + if (!($clone(tf.name, name).name() === $clone(vf.name, name).name())) { + $s = -1; return false; + } + _r$8 = haveIdenticalType(tf.typ, vf.typ, cmpTags); /* */ $s = 40; case 40: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (!_r$8) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (!_r$8) { */ case 38: + $s = -1; return false; + /* } */ case 39: + if (cmpTags && !($clone(tf.name, name).tag() === $clone(vf.name, name).tag())) { + $s = -1; return false; + } + if (!((tf.offset === vf.offset))) { + $s = -1; return false; + } + if (!(tf.embedded() === vf.embedded())) { + $s = -1; return false; + } + _i++; + $s = 36; continue; + case 37: + $s = -1; return true; + /* } */ case 9: + case 1: + $s = -1; return false; + /* */ } return; } var $f = {$blk: haveIdenticalUnderlyingType$1, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, T, V, _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _v, _v$1, _v$2, _v$3, cmpTags, i, i$1, i$2, kind$1, t, t$1, t$2, tf, v, v$1, v$2, vf, x, x$1, $s};return $f; + }; + toType = function toType$1(t) { + var t; + if (t === ptrType$1.nil) { + return $ifaceNil; + } + return t; + }; + ifaceIndir = function ifaceIndir$1(t) { + var t; + return ((t.kind & 32) >>> 0) === 0; + }; + $ptrType(Value).prototype.object = function object() { + var _1, newVal, v, val; + v = this; + if ((v.typ.Kind() === 17) || (v.typ.Kind() === 25)) { + return v.ptr; + } + if (!((((v.flag & 128) >>> 0) === 0))) { + val = v.ptr.$get(); + if (!(val === $ifaceNil) && !(val.constructor === jsType(v.typ))) { + switch (0) { default: + _1 = v.typ.Kind(); + if ((_1 === (11)) || (_1 === (6))) { + val = new (jsType(v.typ))(val.$high, val.$low); + } else if ((_1 === (15)) || (_1 === (16))) { + val = new (jsType(v.typ))(val.$real, val.$imag); + } else if (_1 === (23)) { + if (val === val.constructor.nil) { + val = jsType(v.typ).nil; + break; + } + newVal = new (jsType(v.typ))(val.$array); + newVal.$offset = val.$offset; + newVal.$length = val.$length; + newVal.$capacity = val.$capacity; + val = newVal; + } + } + } + return val; + } + return v.ptr; + }; + Value.prototype.object = function(...$args) { return this.$val.object(...$args); }; + $ptrType(Value).prototype.assignTo = function assignTo(context, dst, target) { + var {_r, _r$1, _r$2, context, dst, fl, target, v, x, $s, $r, $c} = $restore(this, {context, dst, target}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + /* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1: + _r = makeMethodValue(context, $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + Value.copy(v, _r); + /* } */ case 2: + _r$1 = directlyAssignable(dst, v.typ); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 5; continue; } + /* */ if (implements$1(dst, v.typ)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$1) { */ case 5: + fl = (((v.flag & 384) >>> 0) | new flag(v.flag).ro()) >>> 0; + fl = (fl | (((dst.Kind() >>> 0)))) >>> 0; + $s = -1; return new Value.ptr(dst, v.ptr, fl); + /* } else if (implements$1(dst, v.typ)) { */ case 6: + if (target === 0) { + target = unsafe_New(dst); + } + _r$2 = valueInterface($clone(v, Value)); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = _r$2; + if (dst.NumMethod() === 0) { + (target).$set(x); + } else { + ifaceE2I(dst, x, target); + } + $s = -1; return new Value.ptr(dst, target, 148); + /* } */ case 7: + case 4: + $panic(new $String(context + ": value of type " + v.typ.String() + " is not assignable to type " + dst.String())); + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + /* */ } return; } var $f = {$blk: assignTo, $c: true, $r, _r, _r$1, _r$2, context, dst, fl, target, v, x, $s};return $f; + }; + Value.prototype.assignTo = function(...$args) { return this.$val.assignTo(...$args); }; + $ptrType(Value).prototype.Cap = function Cap() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (17)) { + return v.typ.Len(); + } else if ((_1 === (18)) || (_1 === (23))) { + return $parseInt($clone(v, Value).object().$capacity) >> 0; + } + $panic(new ValueError.ptr("reflect.Value.Cap", k)); + }; + Value.prototype.Cap = function(...$args) { return this.$val.Cap(...$args); }; + $ptrType(Value).prototype.Index = function Index(i) { + var {$24r, $24r$1, _1, _r, _r$1, a, a$1, c, fl, fl$1, fl$2, i, k, s, str, tt, tt$1, typ, typ$1, v, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = [a]; + a$1 = [a$1]; + c = [c]; + i = [i]; + typ = [typ]; + typ$1 = [typ$1]; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if (_1 === (23)) { $s = 3; continue; } + /* */ if (_1 === (24)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (17)) { */ case 2: + tt = (v.typ.kindType); + if (i[0] < 0 || i[0] > ((tt.len >> 0))) { + $panic(new $String("reflect: array index out of range")); + } + typ[0] = tt.elem; + fl = (((((v.flag & 384) >>> 0) | new flag(v.flag).ro()) >>> 0) | ((typ[0].Kind() >>> 0))) >>> 0; + a[0] = v.ptr; + /* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 7: + $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(a, a$1, c, i, typ, typ$1) { return function Value·Index·func1() { + return wrapJsObject(typ[0], a[0][i[0]]); + }; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function Value·Index·func2(x) { + var x; + a[0][i[0]] = unwrapJsObject(typ[0], x); + }; })(a, a$1, c, i, typ, typ$1))), fl); + /* } */ case 8: + _r = makeValue(typ[0], wrapJsObject(typ[0], a[0][i[0]]), fl); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 10; case 10: return $24r; + /* } else if (_1 === (23)) { */ case 3: + s = $clone(v, Value).object(); + if (i[0] < 0 || i[0] >= ($parseInt(s.$length) >> 0)) { + $panic(new $String("reflect: slice index out of range")); + } + tt$1 = (v.typ.kindType); + typ$1[0] = tt$1.elem; + fl$1 = (((384 | new flag(v.flag).ro()) >>> 0) | ((typ$1[0].Kind() >>> 0))) >>> 0; + i[0] = i[0] + (($parseInt(s.$offset) >> 0)) >> 0; + a$1[0] = s.$array; + /* */ if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { */ case 11: + $s = -1; return new Value.ptr(typ$1[0], (new (jsType(PtrTo(typ$1[0])))((function(a, a$1, c, i, typ, typ$1) { return function Value·Index·func3() { + return wrapJsObject(typ$1[0], a$1[0][i[0]]); + }; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function Value·Index·func4(x) { + var x; + a$1[0][i[0]] = unwrapJsObject(typ$1[0], x); + }; })(a, a$1, c, i, typ, typ$1))), fl$1); + /* } */ case 12: + _r$1 = makeValue(typ$1[0], wrapJsObject(typ$1[0], a$1[0][i[0]]), fl$1); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 14; case 14: return $24r$1; + /* } else if (_1 === (24)) { */ case 4: + str = (v.ptr).$get(); + if (i[0] < 0 || i[0] >= str.length) { + $panic(new $String("reflect: string index out of range")); + } + fl$2 = (((new flag(v.flag).ro() | 8) >>> 0) | 128) >>> 0; + c[0] = str.charCodeAt(i[0]); + $s = -1; return new Value.ptr(uint8Type, ((c.$ptr || (c.$ptr = new ptrType$6(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, c)))), fl$2); + /* } else { */ case 5: + $panic(new ValueError.ptr("reflect.Value.Index", k)); + /* } */ case 6: + case 1: + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + /* */ } return; } var $f = {$blk: Index, $c: true, $r, $24r, $24r$1, _1, _r, _r$1, a, a$1, c, fl, fl$1, fl$2, i, k, s, str, tt, tt$1, typ, typ$1, v, $s};return $f; + }; + Value.prototype.Index = function(...$args) { return this.$val.Index(...$args); }; + $ptrType(Value).prototype.InterfaceData = function InterfaceData() { + var v; + v = this; + $panic(new $String("InterfaceData is not supported by GopherJS")); + }; + Value.prototype.InterfaceData = function(...$args) { return this.$val.InterfaceData(...$args); }; + $ptrType(Value).prototype.IsNil = function IsNil() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (22)) || (_1 === (23))) { + return $clone(v, Value).object() === jsType(v.typ).nil; + } else if (_1 === (18)) { + return $clone(v, Value).object() === $chanNil; + } else if (_1 === (19)) { + return $clone(v, Value).object() === $throwNilPointerError; + } else if (_1 === (21)) { + return $clone(v, Value).object() === false; + } else if (_1 === (20)) { + return $clone(v, Value).object() === $ifaceNil; + } else if (_1 === (26)) { + return $clone(v, Value).object() === 0; + } else { + $panic(new ValueError.ptr("reflect.Value.IsNil", k)); + } + }; + Value.prototype.IsNil = function(...$args) { return this.$val.IsNil(...$args); }; + $ptrType(Value).prototype.Len = function Len$1() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (17)) || (_1 === (24))) { + return $parseInt($clone(v, Value).object().length); + } else if (_1 === (23)) { + return $parseInt($clone(v, Value).object().$length) >> 0; + } else if (_1 === (18)) { + return $parseInt($clone(v, Value).object().$buffer.length) >> 0; + } else if (_1 === (21)) { + return $parseInt($clone(v, Value).object().size) >> 0; + } else { + $panic(new ValueError.ptr("reflect.Value.Len", k)); + } + }; + Value.prototype.Len = function(...$args) { return this.$val.Len(...$args); }; + $ptrType(Value).prototype.Pointer = function Pointer() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (18)) || (_1 === (21)) || (_1 === (22)) || (_1 === (26))) { + if ($clone(v, Value).IsNil()) { + return 0; + } + return $clone(v, Value).object(); + } else if (_1 === (19)) { + if ($clone(v, Value).IsNil()) { + return 0; + } + return 1; + } else if (_1 === (23)) { + if ($clone(v, Value).IsNil()) { + return 0; + } + return $clone(v, Value).object().$array; + } else { + $panic(new ValueError.ptr("reflect.Value.Pointer", k)); + } + }; + Value.prototype.Pointer = function(...$args) { return this.$val.Pointer(...$args); }; + $ptrType(Value).prototype.Set = function Set(x) { + var {_1, _r, _r$1, v, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(x.flag).mustBeExported(); + _r = $clone(x, Value).assignTo("reflect.Set", v.typ, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + Value.copy(x, _r); + /* */ if (!((((v.flag & 128) >>> 0) === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((((v.flag & 128) >>> 0) === 0))) { */ case 2: + _1 = v.typ.Kind(); + /* */ if (_1 === (17)) { $s = 5; continue; } + /* */ if (_1 === (20)) { $s = 6; continue; } + /* */ if (_1 === (25)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_1 === (17)) { */ case 5: + jsType(v.typ).copy(v.ptr, x.ptr); + $s = 9; continue; + /* } else if (_1 === (20)) { */ case 6: + _r$1 = valueInterface($clone(x, Value)); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v.ptr.$set(_r$1); + $s = 9; continue; + /* } else if (_1 === (25)) { */ case 7: + copyStruct(v.ptr, x.ptr, v.typ); + $s = 9; continue; + /* } else { */ case 8: + v.ptr.$set($clone(x, Value).object()); + /* } */ case 9: + case 4: + $s = -1; return; + /* } */ case 3: + v.ptr = x.ptr; + $s = -1; return; + /* */ } return; } var $f = {$blk: Set, $c: true, $r, _1, _r, _r$1, v, x, $s};return $f; + }; + Value.prototype.Set = function(...$args) { return this.$val.Set(...$args); }; + $ptrType(Value).prototype.SetBytes = function SetBytes(x) { + var {_r, _r$1, _v, slice, typedSlice, v, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 8))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 8))) { */ case 1: + $panic(new $String("reflect.Value.SetBytes of non-byte slice")); + /* } */ case 2: + slice = x; + if (!(v.typ.Name() === "")) { _v = true; $s = 6; continue s; } + _r$1 = v.typ.Elem().Name(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = !(_r$1 === ""); case 6: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + typedSlice = new (jsType(v.typ))(slice.$array); + typedSlice.$offset = slice.$offset; + typedSlice.$length = slice.$length; + typedSlice.$capacity = slice.$capacity; + slice = typedSlice; + /* } */ case 5: + v.ptr.$set(slice); + $s = -1; return; + /* */ } return; } var $f = {$blk: SetBytes, $c: true, $r, _r, _r$1, _v, slice, typedSlice, v, x, $s};return $f; + }; + Value.prototype.SetBytes = function(...$args) { return this.$val.SetBytes(...$args); }; + $ptrType(Value).prototype.SetCap = function SetCap(n) { + var n, newSlice, s, v; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + s = v.ptr.$get(); + if (n < ($parseInt(s.$length) >> 0) || n > ($parseInt(s.$capacity) >> 0)) { + $panic(new $String("reflect: slice capacity out of range in SetCap")); + } + newSlice = new (jsType(v.typ))(s.$array); + newSlice.$offset = s.$offset; + newSlice.$length = s.$length; + newSlice.$capacity = n; + v.ptr.$set(newSlice); + }; + Value.prototype.SetCap = function(...$args) { return this.$val.SetCap(...$args); }; + $ptrType(Value).prototype.SetLen = function SetLen(n) { + var n, newSlice, s, v; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + s = v.ptr.$get(); + if (n < 0 || n > ($parseInt(s.$capacity) >> 0)) { + $panic(new $String("reflect: slice length out of range in SetLen")); + } + newSlice = new (jsType(v.typ))(s.$array); + newSlice.$offset = s.$offset; + newSlice.$length = n; + newSlice.$capacity = s.$capacity; + v.ptr.$set(newSlice); + }; + Value.prototype.SetLen = function(...$args) { return this.$val.SetLen(...$args); }; + $ptrType(Value).prototype.Slice = function Slice(i, j) { + var {$24r, $24r$1, _1, _r, _r$1, cap, i, j, kind$1, s, str, tt, typ, v, $s, $r, $c} = $restore(this, {i, j}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + cap = 0; + typ = $ifaceNil; + s = null; + kind$1 = new flag(v.flag).kind(); + _1 = kind$1; + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if (_1 === (23)) { $s = 3; continue; } + /* */ if (_1 === (24)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (17)) { */ case 2: + if (((v.flag & 256) >>> 0) === 0) { + $panic(new $String("reflect.Value.Slice: slice of unaddressable array")); + } + tt = (v.typ.kindType); + cap = ((tt.len >> 0)); + typ = SliceOf(tt.elem); + s = new (jsType(typ))($clone(v, Value).object()); + $s = 6; continue; + /* } else if (_1 === (23)) { */ case 3: + typ = v.typ; + s = $clone(v, Value).object(); + cap = $parseInt(s.$capacity) >> 0; + $s = 6; continue; + /* } else if (_1 === (24)) { */ case 4: + str = (v.ptr).$get(); + if (i < 0 || j < i || j > str.length) { + $panic(new $String("reflect.Value.Slice: string slice index out of bounds")); + } + _r = ValueOf(new $String($substring(str, i, j))); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 8; case 8: return $24r; + /* } else { */ case 5: + $panic(new ValueError.ptr("reflect.Value.Slice", kind$1)); + /* } */ case 6: + case 1: + if (i < 0 || j < i || j > cap) { + $panic(new $String("reflect.Value.Slice: slice index out of bounds")); + } + _r$1 = makeValue(typ, $subslice(s, i, j), new flag(v.flag).ro()); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 10; case 10: return $24r$1; + /* */ } return; } var $f = {$blk: Slice, $c: true, $r, $24r, $24r$1, _1, _r, _r$1, cap, i, j, kind$1, s, str, tt, typ, v, $s};return $f; + }; + Value.prototype.Slice = function(...$args) { return this.$val.Slice(...$args); }; + $ptrType(Value).prototype.Slice3 = function Slice3(i, j, k) { + var {$24r, _1, _r, cap, i, j, k, kind$1, s, tt, typ, v, $s, $r, $c} = $restore(this, {i, j, k}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + cap = 0; + typ = $ifaceNil; + s = null; + kind$1 = new flag(v.flag).kind(); + _1 = kind$1; + if (_1 === (17)) { + if (((v.flag & 256) >>> 0) === 0) { + $panic(new $String("reflect.Value.Slice: slice of unaddressable array")); + } + tt = (v.typ.kindType); + cap = ((tt.len >> 0)); + typ = SliceOf(tt.elem); + s = new (jsType(typ))($clone(v, Value).object()); + } else if (_1 === (23)) { + typ = v.typ; + s = $clone(v, Value).object(); + cap = $parseInt(s.$capacity) >> 0; + } else { + $panic(new ValueError.ptr("reflect.Value.Slice3", kind$1)); + } + if (i < 0 || j < i || k < j || k > cap) { + $panic(new $String("reflect.Value.Slice3: slice index out of bounds")); + } + _r = makeValue(typ, $subslice(s, i, j, k), new flag(v.flag).ro()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Slice3, $c: true, $r, $24r, _1, _r, cap, i, j, k, kind$1, s, tt, typ, v, $s};return $f; + }; + Value.prototype.Slice3 = function(...$args) { return this.$val.Slice3(...$args); }; + $ptrType(Value).prototype.Close = function Close() { + var v; + v = this; + new flag(v.flag).mustBe(18); + new flag(v.flag).mustBeExported(); + $close($clone(v, Value).object()); + }; + Value.prototype.Close = function(...$args) { return this.$val.Close(...$args); }; + $ptrType(Value).prototype.Elem = function Elem$1() { + var {$24r, _1, _r, fl, k, tt, typ, v, val, val$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + k = new flag(v.flag).kind(); + _1 = k; + /* */ if (_1 === (20)) { $s = 2; continue; } + /* */ if (_1 === (22)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_1 === (20)) { */ case 2: + val = $clone(v, Value).object(); + if (val === $ifaceNil) { + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + } + typ = reflectType(val.constructor); + _r = makeValue(typ, val.$val, new flag(v.flag).ro()); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 7; case 7: return $24r; + /* } else if (_1 === (22)) { */ case 3: + if ($clone(v, Value).IsNil()) { + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + } + val$1 = $clone(v, Value).object(); + tt = (v.typ.kindType); + fl = (((((v.flag & 96) >>> 0) | 128) >>> 0) | 256) >>> 0; + fl = (fl | (((tt.elem.Kind() >>> 0)))) >>> 0; + $s = -1; return new Value.ptr(tt.elem, (wrapJsObject(tt.elem, val$1)), fl); + /* } else { */ case 4: + $panic(new ValueError.ptr("reflect.Value.Elem", k)); + /* } */ case 5: + case 1: + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + /* */ } return; } var $f = {$blk: Elem$1, $c: true, $r, $24r, _1, _r, fl, k, tt, typ, v, val, val$1, $s};return $f; + }; + Value.prototype.Elem = function(...$args) { return this.$val.Elem(...$args); }; + $ptrType(Value).prototype.NumField = function NumField() { + var tt, v; + v = this; + new flag(v.flag).mustBe(25); + tt = (v.typ.kindType); + return tt.fields.$length; + }; + Value.prototype.NumField = function(...$args) { return this.$val.NumField(...$args); }; + $ptrType(Value).prototype.MapKeys = function MapKeys() { + var {_r, a, fl, i, it, key, keyType, m, mlen, tt, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(21); + tt = (v.typ.kindType); + keyType = tt.key; + fl = (new flag(v.flag).ro() | ((keyType.Kind() >>> 0))) >>> 0; + m = $clone(v, Value).pointer(); + mlen = 0; + if (!(m === 0)) { + mlen = maplen(m); + } + it = mapiterinit(v.typ, m); + a = $makeSlice(sliceType$6, mlen); + i = 0; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < a.$length)) { break; } */ if(!(i < a.$length)) { $s = 2; continue; } + _r = mapiterkey(it); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + key = _r; + if (key === 0) { + /* break; */ $s = 2; continue; + } + Value.copy(((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]), copyVal(keyType, fl, key)); + mapiternext(it); + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return $subslice(a, 0, i); + /* */ } return; } var $f = {$blk: MapKeys, $c: true, $r, _r, a, fl, i, it, key, keyType, m, mlen, tt, v, $s};return $f; + }; + Value.prototype.MapKeys = function(...$args) { return this.$val.MapKeys(...$args); }; + $ptrType(Value).prototype.MapIndex = function MapIndex(key) { + var {_r, e, fl, k, key, tt, typ, v, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(21); + tt = (v.typ.kindType); + _r = $clone(key, Value).assignTo("reflect.Value.MapIndex", tt.key, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + Value.copy(key, _r); + k = 0; + if (!((((key.flag & 128) >>> 0) === 0))) { + k = key.ptr; + } else { + k = ((key.$ptr_ptr || (key.$ptr_ptr = new ptrType$7(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key)))); + } + e = mapaccess(v.typ, $clone(v, Value).pointer(), k); + if (e === 0) { + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + } + typ = tt.elem; + fl = new flag((((v.flag | key.flag) >>> 0))).ro(); + fl = (fl | (((typ.Kind() >>> 0)))) >>> 0; + $s = -1; return copyVal(typ, fl, e); + /* */ } return; } var $f = {$blk: MapIndex, $c: true, $r, _r, e, fl, k, key, tt, typ, v, $s};return $f; + }; + Value.prototype.MapIndex = function(...$args) { return this.$val.MapIndex(...$args); }; + $ptrType(Value).prototype.Field = function Field(i) { + var {$24r, _r, _r$1, _r$2, field, fl, i, jsTag, o, prop, s, tag, tt, typ, v, x, x$1, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + jsTag = [jsTag]; + prop = [prop]; + s = [s]; + typ = [typ]; + v = this; + if (!((new flag(v.flag).kind() === 25))) { + $panic(new ValueError.ptr("reflect.Value.Field", new flag(v.flag).kind())); + } + tt = (v.typ.kindType); + if (((i >>> 0)) >= ((tt.fields.$length >>> 0))) { + $panic(new $String("reflect: Field index out of range")); + } + prop[0] = $internalize(jsType(v.typ).fields[i].prop, $String); + field = (x = tt.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + typ[0] = field.typ; + fl = (((v.flag & 416) >>> 0) | ((typ[0].Kind() >>> 0))) >>> 0; + if (!$clone(field.name, name).isExported()) { + if (field.embedded()) { + fl = (fl | (64)) >>> 0; + } else { + fl = (fl | (32)) >>> 0; + } + } + tag = $clone((x$1 = tt.fields, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])).name, name).tag(); + /* */ if (!(tag === "") && !((i === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(tag === "") && !((i === 0))) { */ case 1: + jsTag[0] = getJsTag(tag); + /* */ if (!(jsTag[0] === "")) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(jsTag[0] === "")) { */ case 3: + /* while (true) { */ case 5: + o = [o]; + _r = $clone(v, Value).Field(0); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + Value.copy(v, _r); + /* */ if (v.typ === jsObjectPtr) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (v.typ === jsObjectPtr) { */ case 8: + o[0] = $clone(v, Value).object().object; + $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, o, prop, s, typ) { return function Value·Field·func1() { + return $internalize(o[0][$externalize(jsTag[0], $String)], jsType(typ[0])); + }; })(jsTag, o, prop, s, typ), (function(jsTag, o, prop, s, typ) { return function Value·Field·func2(x$2) { + var x$2; + o[0][$externalize(jsTag[0], $String)] = $externalize(x$2, jsType(typ[0])); + }; })(jsTag, o, prop, s, typ))), fl); + /* } */ case 9: + /* */ if (v.typ.Kind() === 22) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (v.typ.Kind() === 22) { */ case 10: + _r$1 = $clone(v, Value).Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + Value.copy(v, _r$1); + /* } */ case 11: + $s = 5; continue; + case 6: + /* } */ case 4: + /* } */ case 2: + s[0] = v.ptr; + /* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 13: + $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, prop, s, typ) { return function Value·Field·func3() { + return wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]); + }; })(jsTag, prop, s, typ), (function(jsTag, prop, s, typ) { return function Value·Field·func4(x$2) { + var x$2; + s[0][$externalize(prop[0], $String)] = unwrapJsObject(typ[0], x$2); + }; })(jsTag, prop, s, typ))), fl); + /* } */ case 14: + _r$2 = makeValue(typ[0], wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]), fl); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 16; case 16: return $24r; + /* */ } return; } var $f = {$blk: Field, $c: true, $r, $24r, _r, _r$1, _r$2, field, fl, i, jsTag, o, prop, s, tag, tt, typ, v, x, x$1, $s};return $f; + }; + Value.prototype.Field = function(...$args) { return this.$val.Field(...$args); }; + $ptrType(errorString).prototype.Error = function Error$1() { + var e; + e = this; + return e.s; + }; + unquote = function unquote$1(s) { + var s; + if (s.length < 2) { + return [s, $ifaceNil]; + } + if ((s.charCodeAt(0) === 39) || (s.charCodeAt(0) === 34)) { + if (s.charCodeAt((s.length - 1 >> 0)) === s.charCodeAt(0)) { + return [$substring(s, 1, (s.length - 1 >> 0)), $ifaceNil]; + } + return ["", $pkg.ErrSyntax]; + } + return [s, $ifaceNil]; + }; + flag.prototype.mustBe = function mustBe(expected) { + var expected, f; + f = this.$val; + if (!((((((f & 31) >>> 0) >>> 0)) === expected))) { + $panic(new ValueError.ptr(methodName(), new flag(f).kind())); + } + }; + $ptrType(flag).prototype.mustBe = function(...$args) { return new flag(this.$get()).mustBe(...$args); }; + $ptrType(rtype).prototype.Comparable = function Comparable() { + var {$24r, _1, _r, _r$1, ft, i, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _1 = t.Kind(); + /* */ if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { $s = 2; continue; } + /* */ if (_1 === (17)) { $s = 3; continue; } + /* */ if (_1 === (25)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { */ case 2: + $s = -1; return false; + /* } else if (_1 === (17)) { */ case 3: + _r = t.Elem().Comparable(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 7; case 7: return $24r; + /* } else if (_1 === (25)) { */ case 4: + i = 0; + /* while (true) { */ case 8: + /* if (!(i < t.NumField())) { break; } */ if(!(i < t.NumField())) { $s = 9; continue; } + ft = $clone(t.Field(i), structField); + _r$1 = ft.typ.Comparable(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!_r$1) { */ case 10: + $s = -1; return false; + /* } */ case 11: + i = i + (1) >> 0; + $s = 8; continue; + case 9: + /* } */ case 5: + case 1: + $s = -1; return true; + /* */ } return; } var $f = {$blk: Comparable, $c: true, $r, $24r, _1, _r, _r$1, ft, i, t, $s};return $f; + }; + $ptrType(rtype).prototype.IsVariadic = function IsVariadic() { + var t, tt; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: IsVariadic of non-func type")); + } + tt = (t.kindType); + return !((((tt.outCount & 32768) >>> 0) === 0)); + }; + $ptrType(rtype).prototype.Field = function Field$1(i) { + var i, t, tt, x; + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: Field of non-struct type")); + } + tt = (t.kindType); + if (i < 0 || i >= tt.fields.$length) { + $panic(new $String("reflect: Field index out of bounds")); + } + return (x = tt.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(rtype).prototype.Key = function Key() { + var t, tt; + t = this; + if (!((t.Kind() === 21))) { + $panic(new $String("reflect: Key of non-map type")); + } + tt = (t.kindType); + return toType(tt.key); + }; + $ptrType(rtype).prototype.NumField = function NumField$1() { + var t, tt; + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: NumField of non-struct type")); + } + tt = (t.kindType); + return tt.fields.$length; + }; + $ptrType(rtype).prototype.Method = function Method$1(i) { + var {$24r, _i, _i$1, _r, _r$1, _ref, _ref$1, arg, fl, fn, ft, i, in$1, m, methods, mt, mtyp, out, p, pname, prop, ret, t, tt, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + prop = [prop]; + m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$1.nil, 0, 0), 0); + t = this; + /* */ if (t.Kind() === 20) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (t.Kind() === 20) { */ case 1: + tt = (t.kindType); + _r = tt.rtype.Method(i); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + Method.copy(m, _r); + $24r = m; + $s = 4; case 4: return $24r; + /* } */ case 2: + methods = t.exportedMethods(); + if (i < 0 || i >= methods.$length) { + $panic(new $String("reflect: Method index out of range")); + } + p = $clone(((i < 0 || i >= methods.$length) ? ($throwRuntimeError("index out of range"), undefined) : methods.$array[methods.$offset + i]), method); + pname = $clone(t.nameOff(p.name), name); + m.Name = $clone(pname, name).name(); + fl = 19; + mtyp = t.typeOff(p.mtyp); + ft = (mtyp.kindType); + in$1 = $makeSlice(sliceType$7, 0, (1 + ft.in$().$length >> 0)); + in$1 = $append(in$1, t); + _ref = ft.in$(); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + in$1 = $append(in$1, arg); + _i++; + } + out = $makeSlice(sliceType$7, 0, ft.out().$length); + _ref$1 = ft.out(); + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + ret = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + out = $append(out, ret); + _i$1++; + } + _r$1 = FuncOf(in$1, out, ft.rtype.IsVariadic()); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + mt = _r$1; + m.Type = mt; + prop[0] = $internalize($methodSet(t[$externalize(idJsType, $String)])[i].prop, $String); + fn = js.MakeFunc((function(prop) { return function rtype·Method·func1(this$1, arguments$1) { + var arguments$1, rcvr, this$1; + rcvr = (0 >= arguments$1.$length ? ($throwRuntimeError("index out of range"), undefined) : arguments$1.$array[arguments$1.$offset + 0]); + return new $jsObjectPtr(rcvr[$externalize(prop[0], $String)].apply(rcvr, $externalize($subslice(arguments$1, 1), sliceType$8))); + }; })(prop)); + Value.copy(m.Func, new Value.ptr($assertType(mt, ptrType$1), (fn), fl)); + m.Index = i; + Method.copy(m, m); + $s = -1; return m; + /* */ } return; } var $f = {$blk: Method$1, $c: true, $r, $24r, _i, _i$1, _r, _r$1, _ref, _ref$1, arg, fl, fn, ft, i, in$1, m, methods, mt, mtyp, out, p, pname, prop, ret, t, tt, $s};return $f; + }; + Swapper = function Swapper$1(slice) { + var {_1, _r, a, off, slice, v, vLen, $s, $r, $c} = $restore(this, {slice}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = [a]; + off = [off]; + vLen = [vLen]; + _r = ValueOf(slice); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = $clone(_r, Value); + if (!(($clone(v, Value).Kind() === 23))) { + $panic(new ValueError.ptr("Swapper", $clone(v, Value).Kind())); + } + vLen[0] = (($clone(v, Value).Len() >>> 0)); + _1 = vLen[0]; + if (_1 === (0)) { + $s = -1; return (function(a, off, vLen) { return function Swapper·func1(i, j) { + var i, j; + $panic(new $String("reflect: slice index out of range")); + }; })(a, off, vLen); + } else if (_1 === (1)) { + $s = -1; return (function(a, off, vLen) { return function Swapper·func2(i, j) { + var i, j; + if (!((i === 0)) || !((j === 0))) { + $panic(new $String("reflect: slice index out of range")); + } + }; })(a, off, vLen); + } + a[0] = slice.$array; + off[0] = $parseInt(slice.$offset) >> 0; + $s = -1; return (function(a, off, vLen) { return function Swapper·func3(i, j) { + var i, j, tmp; + if (((i >>> 0)) >= vLen[0] || ((j >>> 0)) >= vLen[0]) { + $panic(new $String("reflect: slice index out of range")); + } + i = i + (off[0]) >> 0; + j = j + (off[0]) >> 0; + tmp = a[0][i]; + a[0][i] = a[0][j]; + a[0][j] = tmp; + }; })(a, off, vLen); + /* */ } return; } var $f = {$blk: Swapper$1, $c: true, $r, _1, _r, a, off, slice, v, vLen, $s};return $f; + }; + $pkg.Swapper = Swapper; + init = function init$1() { + var {used, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + used = (function init·func1(i) { + var i; + }); + $r = used((x = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$1 = new uncommonType.ptr(0, 0, 0, 0, sliceType$5.nil), new x$1.constructor.elem(x$1))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$2 = new method.ptr(0, 0, 0, 0), new x$2.constructor.elem(x$2))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$3 = new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), ptrType$1.nil, ptrType$1.nil, 0), new x$3.constructor.elem(x$3))); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$4 = new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), ptrType$1.nil, 0), new x$4.constructor.elem(x$4))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$5 = new funcType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), 0, 0, sliceType$2.nil, sliceType$2.nil), new x$5.constructor.elem(x$5))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$6 = new interfaceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), new name.ptr(ptrType$6.nil), sliceType$9.nil), new x$6.constructor.elem(x$6))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$7 = new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, $throwNilPointerError, 0, 0, 0, 0), new x$7.constructor.elem(x$7))); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$8 = new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), ptrType$1.nil), new x$8.constructor.elem(x$8))); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$9 = new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), ptrType$1.nil), new x$9.constructor.elem(x$9))); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$10 = new structType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), new name.ptr(ptrType$6.nil), sliceType$10.nil), new x$10.constructor.elem(x$10))); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$11 = new imethod.ptr(0, 0), new x$11.constructor.elem(x$11))); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$12 = new structField.ptr(new name.ptr(ptrType$6.nil), ptrType$1.nil, 0), new x$12.constructor.elem(x$12))); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + initialized = true; + uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1); + $s = -1; return; + /* */ } return; } var $f = {$blk: init$1, $c: true, $r, used, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s};return $f; + }; + jsType = function jsType$1(typ) { + var typ; + return typ[$externalize(idJsType, $String)]; + }; + reflectType = function reflectType$1(typ) { + var _1, _i, _i$1, _i$2, _i$3, _key, _ref, _ref$1, _ref$2, _ref$3, dir, exported, exported$1, f, fields, i, i$1, i$2, i$3, i$4, i$5, imethods, in$1, m, m$1, m$2, methodSet, methods, out, outCount, params, reflectFields, reflectMethods, results, rt, typ, ut, xcount; + if (typ[$externalize(idReflectType, $String)] === undefined) { + rt = new rtype.ptr(((($parseInt(typ.size) >> 0) >>> 0)), 0, 0, 0, 0, 0, ((($parseInt(typ.kind) >> 0) << 24 >>> 24)), $throwNilPointerError, ptrType$6.nil, newNameOff($clone(newName(internalStr(typ.string), "", !!(typ.exported), false), name)), 0); + rt[$externalize(idJsType, $String)] = typ; + typ[$externalize(idReflectType, $String)] = rt; + methodSet = $methodSet(typ); + if (!(($parseInt(methodSet.length) === 0)) || !!(typ.named)) { + rt.tflag = (rt.tflag | (1)) >>> 0; + if (!!(typ.named)) { + rt.tflag = (rt.tflag | (4)) >>> 0; + } + reflectMethods = sliceType$5.nil; + i = 0; + while (true) { + if (!(i < $parseInt(methodSet.length))) { break; } + m = methodSet[i]; + exported = internalStr(m.pkg) === ""; + if (!exported) { + i = i + (1) >> 0; + continue; + } + reflectMethods = $append(reflectMethods, new method.ptr(newNameOff($clone(newName(internalStr(m.name), "", exported, false), name)), newTypeOff(reflectType(m.typ)), 0, 0)); + i = i + (1) >> 0; + } + xcount = ((reflectMethods.$length << 16 >>> 16)); + i$1 = 0; + while (true) { + if (!(i$1 < $parseInt(methodSet.length))) { break; } + m$1 = methodSet[i$1]; + exported$1 = internalStr(m$1.pkg) === ""; + if (exported$1) { + i$1 = i$1 + (1) >> 0; + continue; + } + reflectMethods = $append(reflectMethods, new method.ptr(newNameOff($clone(newName(internalStr(m$1.name), "", exported$1, false), name)), newTypeOff(reflectType(m$1.typ)), 0, 0)); + i$1 = i$1 + (1) >> 0; + } + ut = new uncommonType.ptr(newNameOff($clone(newName(internalStr(typ.pkg), "", false, false), name)), (($parseInt(methodSet.length) << 16 >>> 16)), xcount, 0, reflectMethods); + _key = rt; (uncommonTypeMap || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$1.keyFor(_key), { k: _key, v: ut }); + ut[$externalize(idJsType, $String)] = typ; + } + _1 = rt.Kind(); + if (_1 === (17)) { + setKindType(rt, new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), reflectType(typ.elem), ptrType$1.nil, ((($parseInt(typ.len) >> 0) >>> 0)))); + } else if (_1 === (18)) { + dir = 3; + if (!!(typ.sendOnly)) { + dir = 2; + } + if (!!(typ.recvOnly)) { + dir = 1; + } + setKindType(rt, new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), reflectType(typ.elem), ((dir >>> 0)))); + } else if (_1 === (19)) { + params = typ.params; + in$1 = $makeSlice(sliceType$2, $parseInt(params.length)); + _ref = in$1; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i$2 = _i; + ((i$2 < 0 || i$2 >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + i$2] = reflectType(params[i$2])); + _i++; + } + results = typ.results; + out = $makeSlice(sliceType$2, $parseInt(results.length)); + _ref$1 = out; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$3 = _i$1; + ((i$3 < 0 || i$3 >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i$3] = reflectType(results[i$3])); + _i$1++; + } + outCount = (($parseInt(results.length) << 16 >>> 16)); + if (!!(typ.variadic)) { + outCount = (outCount | (32768)) >>> 0; + } + setKindType(rt, new funcType.ptr($clone(rt, rtype), (($parseInt(params.length) << 16 >>> 16)), outCount, in$1, out)); + } else if (_1 === (20)) { + methods = typ.methods; + imethods = $makeSlice(sliceType$9, $parseInt(methods.length)); + _ref$2 = imethods; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$4 = _i$2; + m$2 = methods[i$4]; + imethod.copy(((i$4 < 0 || i$4 >= imethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : imethods.$array[imethods.$offset + i$4]), new imethod.ptr(newNameOff($clone(newName(internalStr(m$2.name), "", internalStr(m$2.pkg) === "", false), name)), newTypeOff(reflectType(m$2.typ)))); + _i$2++; + } + setKindType(rt, new interfaceType.ptr($clone(rt, rtype), $clone(newName(internalStr(typ.pkg), "", false, false), name), imethods)); + } else if (_1 === (21)) { + setKindType(rt, new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), reflectType(typ.key), reflectType(typ.elem), ptrType$1.nil, $throwNilPointerError, 0, 0, 0, 0)); + } else if (_1 === (22)) { + setKindType(rt, new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), reflectType(typ.elem))); + } else if (_1 === (23)) { + setKindType(rt, new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0), reflectType(typ.elem))); + } else if (_1 === (25)) { + fields = typ.fields; + reflectFields = $makeSlice(sliceType$10, $parseInt(fields.length)); + _ref$3 = reflectFields; + _i$3 = 0; + while (true) { + if (!(_i$3 < _ref$3.$length)) { break; } + i$5 = _i$3; + f = fields[i$5]; + structField.copy(((i$5 < 0 || i$5 >= reflectFields.$length) ? ($throwRuntimeError("index out of range"), undefined) : reflectFields.$array[reflectFields.$offset + i$5]), new structField.ptr($clone(newName(internalStr(f.name), internalStr(f.tag), !!(f.exported), !!(f.embedded)), name), reflectType(f.typ), ((i$5 >>> 0)))); + _i$3++; + } + setKindType(rt, new structType.ptr($clone(rt, rtype), $clone(newName(internalStr(typ.pkgPath), "", false, false), name), reflectFields)); + } + } + return ((typ[$externalize(idReflectType, $String)])); + }; + setKindType = function setKindType$1(rt, kindType$1) { + var kindType$1, rt; + rt[$externalize(idKindType, $String)] = kindType$1; + kindType$1[$externalize(idRtype, $String)] = rt; + }; + $ptrType(uncommonType).prototype.methods = function methods() { + var t; + t = this; + return t._methods; + }; + $ptrType(uncommonType).prototype.exportedMethods = function exportedMethods$1() { + var t; + t = this; + return $subslice(t._methods, 0, t.xcount, t.xcount); + }; + $ptrType(rtype).prototype.uncommon = function uncommon() { + var _entry, t; + t = this; + return (_entry = $mapIndex(uncommonTypeMap,ptrType$1.keyFor(t)), _entry !== undefined ? _entry.v : ptrType$4.nil); + }; + $ptrType(funcType).prototype.in$ = function in$1() { + var t; + t = this; + return t._in; + }; + $ptrType(funcType).prototype.out = function out() { + var t; + t = this; + return t._out; + }; + $ptrType(name).prototype.name = function name$1() { + var _entry, n, s; + s = ""; + n = this; + s = (_entry = $mapIndex(nameMap,ptrType$6.keyFor(n.bytes)), _entry !== undefined ? _entry.v : ptrType$8.nil).name; + return s; + }; + name.prototype.name = function(...$args) { return this.$val.name(...$args); }; + $ptrType(name).prototype.tag = function tag() { + var _entry, n, s; + s = ""; + n = this; + s = (_entry = $mapIndex(nameMap,ptrType$6.keyFor(n.bytes)), _entry !== undefined ? _entry.v : ptrType$8.nil).tag; + return s; + }; + name.prototype.tag = function(...$args) { return this.$val.tag(...$args); }; + $ptrType(name).prototype.pkgPath = function pkgPath() { + var n; + n = this; + return ""; + }; + name.prototype.pkgPath = function(...$args) { return this.$val.pkgPath(...$args); }; + $ptrType(name).prototype.isExported = function isExported() { + var _entry, n; + n = this; + return (_entry = $mapIndex(nameMap,ptrType$6.keyFor(n.bytes)), _entry !== undefined ? _entry.v : ptrType$8.nil).exported; + }; + name.prototype.isExported = function(...$args) { return this.$val.isExported(...$args); }; + $ptrType(name).prototype.embedded = function embedded$1() { + var _entry, n; + n = this; + return (_entry = $mapIndex(nameMap,ptrType$6.keyFor(n.bytes)), _entry !== undefined ? _entry.v : ptrType$8.nil).embedded; + }; + name.prototype.embedded = function(...$args) { return this.$val.embedded(...$args); }; + newName = function newName$1(n, tag$1, exported, embedded$2) { + var _key, b, embedded$2, exported, n, tag$1; + b = $newDataPointer(0, ptrType$6); + _key = b; (nameMap || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$6.keyFor(_key), { k: _key, v: new nameData.ptr(n, tag$1, exported, embedded$2) }); + return new name.ptr(b); + }; + $ptrType(rtype).prototype.nameOff = function nameOff$1(off) { + var off, t, x; + t = this; + return (x = ((off >> 0)), ((x < 0 || x >= nameOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : nameOffList.$array[nameOffList.$offset + x])); + }; + newNameOff = function newNameOff$1(n) { + var i, n; + i = nameOffList.$length; + nameOffList = $append(nameOffList, n); + return ((i >> 0)); + }; + $ptrType(rtype).prototype.typeOff = function typeOff$1(off) { + var off, t, x; + t = this; + return (x = ((off >> 0)), ((x < 0 || x >= typeOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : typeOffList.$array[typeOffList.$offset + x])); + }; + newTypeOff = function newTypeOff$1(t) { + var i, t; + i = typeOffList.$length; + typeOffList = $append(typeOffList, t); + return ((i >> 0)); + }; + internalStr = function internalStr$1(strObj) { + var c, strObj; + c = new structType$2.ptr(""); + c.str = strObj; + return c.str; + }; + isWrapped = function isWrapped$1(typ) { + var typ; + return !!(jsType(typ).wrapped); + }; + copyStruct = function copyStruct$1(dst, src, typ) { + var dst, fields, i, prop, src, typ; + fields = jsType(typ).fields; + i = 0; + while (true) { + if (!(i < $parseInt(fields.length))) { break; } + prop = $internalize(fields[i].prop, $String); + dst[$externalize(prop, $String)] = src[$externalize(prop, $String)]; + i = i + (1) >> 0; + } + }; + makeValue = function makeValue$1(t, v, fl) { + var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _v, _v$1, fl, rt, t, v, $s, $r, $c} = $restore(this, {t, v, fl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + rt = _r; + _r$1 = t.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (_r$1 === 17) { _v$1 = true; $s = 5; continue s; } + _r$2 = t.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$1 = _r$2 === 25; case 5: + if (_v$1) { _v = true; $s = 4; continue s; } + _r$3 = t.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3 === 22; case 4: + /* */ if (_v) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_v) { */ case 2: + _r$4 = t.Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = new Value.ptr(rt, (v), (fl | ((_r$4 >>> 0))) >>> 0); + $s = 10; case 10: return $24r; + /* } */ case 3: + _r$5 = t.Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r$1 = new Value.ptr(rt, ($newDataPointer(v, jsType(rt.ptrTo()))), (((fl | ((_r$5 >>> 0))) >>> 0) | 128) >>> 0); + $s = 12; case 12: return $24r$1; + /* */ } return; } var $f = {$blk: makeValue$1, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _v, _v$1, fl, rt, t, v, $s};return $f; + }; + TypeOf = function TypeOf$1(i) { + var i; + if (!initialized) { + return new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$6.nil, 0, 0); + } + if ($interfaceIsEqual(i, $ifaceNil)) { + return $ifaceNil; + } + return reflectType(i.constructor); + }; + $pkg.TypeOf = TypeOf; + ValueOf = function ValueOf$1(i) { + var {$24r, _r, i, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(i, $ifaceNil)) { + $s = -1; return new Value.ptr(ptrType$1.nil, 0, 0); + } + _r = makeValue(reflectType(i.constructor), i.$val, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ValueOf$1, $c: true, $r, $24r, _r, i, $s};return $f; + }; + $pkg.ValueOf = ValueOf; + FuncOf = function FuncOf$1(in$2, out$1, variadic) { + var {_i, _i$1, _r, _ref, _ref$1, _v, _v$1, i, i$1, in$2, jsIn, jsOut, out$1, v, v$1, variadic, x, $s, $r, $c} = $restore(this, {in$2, out$1, variadic}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(variadic)) { _v = false; $s = 3; continue s; } + if (in$2.$length === 0) { _v$1 = true; $s = 4; continue s; } + _r = (x = in$2.$length - 1 >> 0, ((x < 0 || x >= in$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$2.$array[in$2.$offset + x])).Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v$1 = !((_r === 23)); case 4: + _v = _v$1; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $panic(new $String("reflect.FuncOf: last arg of variadic func must be slice")); + /* } */ case 2: + jsIn = $makeSlice(sliceType$8, in$2.$length); + _ref = in$2; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ((i < 0 || i >= jsIn.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsIn.$array[jsIn.$offset + i] = jsType(v)); + _i++; + } + jsOut = $makeSlice(sliceType$8, out$1.$length); + _ref$1 = out$1; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + v$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + ((i$1 < 0 || i$1 >= jsOut.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsOut.$array[jsOut.$offset + i$1] = jsType(v$1)); + _i$1++; + } + $s = -1; return reflectType($funcType($externalize(jsIn, sliceType$8), $externalize(jsOut, sliceType$8), $externalize(variadic, $Bool))); + /* */ } return; } var $f = {$blk: FuncOf$1, $c: true, $r, _i, _i$1, _r, _ref, _ref$1, _v, _v$1, i, i$1, in$2, jsIn, jsOut, out$1, v, v$1, variadic, x, $s};return $f; + }; + $pkg.FuncOf = FuncOf; + $ptrType(rtype).prototype.ptrTo = function ptrTo() { + var t; + t = this; + return reflectType($ptrType(jsType(t))); + }; + SliceOf = function SliceOf$1(t) { + var t; + return reflectType($sliceType(jsType(t))); + }; + $pkg.SliceOf = SliceOf; + unsafe_New = function unsafe_New$1(typ) { + var _1, typ; + _1 = typ.Kind(); + if (_1 === (25)) { + return (new (jsType(typ).ptr)()); + } else if (_1 === (17)) { + return (jsType(typ).zero()); + } else { + return ($newDataPointer(jsType(typ).zero(), jsType(typ.ptrTo()))); + } + }; + typedmemmove = function typedmemmove$1(t, dst, src) { + var dst, src, t; + dst.$set(src.$get()); + }; + keyFor = function keyFor$1(t, key) { + var k, key, kv, t; + kv = key; + if (!(kv.$get === undefined)) { + kv = kv.$get(); + } + k = $internalize(jsType(t.Key()).keyFor(kv), $String); + return [kv, k]; + }; + mapaccess = function mapaccess$1(t, m, key) { + var _tuple, entry, k, key, m, t; + _tuple = keyFor(t, key); + k = _tuple[1]; + entry = m.get($externalize(k, $String)); + if (entry === undefined) { + return 0; + } + return ($newDataPointer(entry.v, jsType(PtrTo(t.Elem())))); + }; + $ptrType(mapIter).prototype.skipUntilValidKey = function skipUntilValidKey() { + var iter, k; + iter = this; + while (true) { + if (!(iter.i < $parseInt(iter.keys.length))) { break; } + k = iter.keys[iter.i]; + if (!(iter.m.get(k) === undefined)) { + break; + } + iter.i = iter.i + (1) >> 0; + } + }; + mapiterinit = function mapiterinit$1(t, m) { + var m, t; + return (new mapIter.ptr(t, m, $global.Array.from(m.keys()), 0, null)); + }; + mapiterkey = function mapiterkey$1(it) { + var {$24r, _r, _r$1, _r$2, it, iter, k, kv, $s, $r, $c} = $restore(this, {it}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + iter = ($pointerOfStructConversion(it, ptrType$9)); + kv = null; + if (!(iter.last === null)) { + kv = iter.last; + } else { + iter.skipUntilValidKey(); + if (iter.i === $parseInt(iter.keys.length)) { + $s = -1; return 0; + } + k = iter.keys[iter.i]; + kv = iter.m.get(k); + iter.last = kv; + } + _r = $assertType(iter.t, TypeEx).Key(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = PtrTo(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = jsType(_r$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = ($newDataPointer(kv.k, _r$2)); + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: mapiterkey$1, $c: true, $r, $24r, _r, _r$1, _r$2, it, iter, k, kv, $s};return $f; + }; + mapiternext = function mapiternext$1(it) { + var it, iter; + iter = ($pointerOfStructConversion(it, ptrType$9)); + iter.last = null; + iter.i = iter.i + (1) >> 0; + }; + maplen = function maplen$1(m) { + var m; + return $parseInt(m.size) >> 0; + }; + methodReceiver = function methodReceiver$1(op, v, i) { + var _, fn, i, m, m$1, ms, op, prop, rcvr, t, tt, v, x; + _ = ptrType$1.nil; + t = ptrType$5.nil; + fn = 0; + prop = ""; + if (v.typ.Kind() === 20) { + tt = (v.typ.kindType); + if (i < 0 || i >= tt.methods.$length) { + $panic(new $String("reflect: internal error: invalid method index")); + } + m = (x = tt.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + if (!$clone(tt.rtype.nameOff(m.name), name).isExported()) { + $panic(new $String("reflect: " + op + " of unexported method")); + } + t = (tt.rtype.typeOff(m.typ).kindType); + prop = $clone(tt.rtype.nameOff(m.name), name).name(); + } else { + ms = v.typ.exportedMethods(); + if (((i >>> 0)) >= ((ms.$length >>> 0))) { + $panic(new $String("reflect: internal error: invalid method index")); + } + m$1 = $clone(((i < 0 || i >= ms.$length) ? ($throwRuntimeError("index out of range"), undefined) : ms.$array[ms.$offset + i]), method); + if (!$clone(v.typ.nameOff(m$1.name), name).isExported()) { + $panic(new $String("reflect: " + op + " of unexported method")); + } + t = (v.typ.typeOff(m$1.mtyp).kindType); + prop = $internalize($methodSet(jsType(v.typ))[i].prop, $String); + } + rcvr = $clone(v, Value).object(); + if (isWrapped(v.typ)) { + rcvr = new (jsType(v.typ))(rcvr); + } + fn = (rcvr[$externalize(prop, $String)]); + return [_, t, fn]; + }; + valueInterface = function valueInterface$1(v) { + var {_r, cv, v, $s, $r, $c} = $restore(this, {v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (v.flag === 0) { + $panic(new ValueError.ptr("reflect.Value.Interface", 0)); + } + /* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1: + _r = makeMethodValue("Interface", $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + Value.copy(v, _r); + /* } */ case 2: + if (isWrapped(v.typ)) { + if (!((((v.flag & 128) >>> 0) === 0)) && ($clone(v, Value).Kind() === 25)) { + cv = jsType(v.typ).zero(); + copyStruct(cv, $clone(v, Value).object(), v.typ); + $s = -1; return ((new (jsType(v.typ))(cv))); + } + $s = -1; return ((new (jsType(v.typ))($clone(v, Value).object()))); + } + $s = -1; return (($clone(v, Value).object())); + /* */ } return; } var $f = {$blk: valueInterface$1, $c: true, $r, _r, cv, v, $s};return $f; + }; + ifaceE2I = function ifaceE2I$1(t, src, dst) { + var dst, src, t; + dst.$set(src); + }; + methodName = function methodName$1() { + return "?FIXME?"; + }; + makeMethodValue = function makeMethodValue$1(op, v) { + var {$24r, _r, _tuple, fn, fv, op, rcvr, v, $s, $r, $c} = $restore(this, {op, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fn = [fn]; + rcvr = [rcvr]; + if (((v.flag & 512) >>> 0) === 0) { + $panic(new $String("reflect: internal error: invalid use of makePartialFunc")); + } + _tuple = methodReceiver(op, $clone(v, Value), ((v.flag >> 0)) >> 10 >> 0); + fn[0] = _tuple[2]; + rcvr[0] = $clone(v, Value).object(); + if (isWrapped(v.typ)) { + rcvr[0] = new (jsType(v.typ))(rcvr[0]); + } + fv = js.MakeFunc((function(fn, rcvr) { return function makeMethodValue·func1(this$1, arguments$1) { + var arguments$1, this$1; + return new $jsObjectPtr(fn[0].apply(rcvr[0], $externalize(arguments$1, sliceType$8))); + }; })(fn, rcvr)); + _r = $clone(v, Value).Type().common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = new Value.ptr(_r, (fv), (new flag(v.flag).ro() | 19) >>> 0); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: makeMethodValue$1, $c: true, $r, $24r, _r, _tuple, fn, fv, op, rcvr, v, $s};return $f; + }; + wrapJsObject = function wrapJsObject$1(typ, val) { + var typ, val; + if ($interfaceIsEqual(typ, jsObjectPtr)) { + return new (jsType(jsObjectPtr))(val); + } + return val; + }; + unwrapJsObject = function unwrapJsObject$1(typ, val) { + var typ, val; + if ($interfaceIsEqual(typ, jsObjectPtr)) { + return val.object; + } + return val; + }; + getJsTag = function getJsTag$1(tag$1) { + var _tuple, i, name$2, qvalue, tag$1, value; + while (true) { + if (!(!(tag$1 === ""))) { break; } + i = 0; + while (true) { + if (!(i < tag$1.length && (tag$1.charCodeAt(i) === 32))) { break; } + i = i + (1) >> 0; + } + tag$1 = $substring(tag$1, i); + if (tag$1 === "") { + break; + } + i = 0; + while (true) { + if (!(i < tag$1.length && !((tag$1.charCodeAt(i) === 32)) && !((tag$1.charCodeAt(i) === 58)) && !((tag$1.charCodeAt(i) === 34)))) { break; } + i = i + (1) >> 0; + } + if ((i + 1 >> 0) >= tag$1.length || !((tag$1.charCodeAt(i) === 58)) || !((tag$1.charCodeAt((i + 1 >> 0)) === 34))) { + break; + } + name$2 = ($substring(tag$1, 0, i)); + tag$1 = $substring(tag$1, (i + 1 >> 0)); + i = 1; + while (true) { + if (!(i < tag$1.length && !((tag$1.charCodeAt(i) === 34)))) { break; } + if (tag$1.charCodeAt(i) === 92) { + i = i + (1) >> 0; + } + i = i + (1) >> 0; + } + if (i >= tag$1.length) { + break; + } + qvalue = ($substring(tag$1, 0, (i + 1 >> 0))); + tag$1 = $substring(tag$1, (i + 1 >> 0)); + if (name$2 === "js") { + _tuple = unquote(qvalue); + value = _tuple[0]; + return value; + } + } + return ""; + }; + PtrTo = function PtrTo$1(t) { + var t; + return $assertType(t, ptrType$1).ptrTo(); + }; + $pkg.PtrTo = PtrTo; + copyVal = function copyVal$1(typ, fl, ptr) { + var c, fl, ptr, typ; + if (ifaceIndir(typ)) { + c = unsafe_New(typ); + typedmemmove(typ, c, ptr); + return new Value.ptr(typ, c, (fl | 128) >>> 0); + } + return new Value.ptr(typ, (ptr).$get(), fl); + }; + Value.methods = [{prop: "pointer", name: "pointer", pkg: "internal/reflectlite", typ: $funcType([], [$UnsafePointer], false)}, {prop: "CanSet", name: "CanSet", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsValid", name: "IsValid", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "numMethod", name: "numMethod", pkg: "internal/reflectlite", typ: $funcType([], [$Int], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "object", name: "object", pkg: "internal/reflectlite", typ: $funcType([], [ptrType$2], false)}, {prop: "assignTo", name: "assignTo", pkg: "internal/reflectlite", typ: $funcType([$String, ptrType$1, $UnsafePointer], [Value], false)}, {prop: "call", name: "call", pkg: "internal/reflectlite", typ: $funcType([$String, sliceType$6], [sliceType$6], false)}, {prop: "Cap", name: "Cap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "InterfaceData", name: "InterfaceData", pkg: "", typ: $funcType([], [arrayType$2], false)}, {prop: "IsNil", name: "IsNil", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Pointer", name: "Pointer", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([Value], [], false)}, {prop: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType$13], [], false)}, {prop: "SetCap", name: "SetCap", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "SetLen", name: "SetLen", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Slice", name: "Slice", pkg: "", typ: $funcType([$Int, $Int], [Value], false)}, {prop: "Slice3", name: "Slice3", pkg: "", typ: $funcType([$Int, $Int, $Int], [Value], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Value], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MapKeys", name: "MapKeys", pkg: "", typ: $funcType([], [sliceType$6], false)}, {prop: "MapIndex", name: "MapIndex", pkg: "", typ: $funcType([Value], [Value], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [Value], false)}]; + flag.methods = [{prop: "kind", name: "kind", pkg: "internal/reflectlite", typ: $funcType([], [Kind], false)}, {prop: "ro", name: "ro", pkg: "internal/reflectlite", typ: $funcType([], [flag], false)}, {prop: "mustBeExported", name: "mustBeExported", pkg: "internal/reflectlite", typ: $funcType([], [], false)}, {prop: "mustBeAssignable", name: "mustBeAssignable", pkg: "internal/reflectlite", typ: $funcType([], [], false)}, {prop: "mustBe", name: "mustBe", pkg: "internal/reflectlite", typ: $funcType([Kind], [], false)}]; + ptrType$10.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + Kind.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$1.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "pointers", name: "pointers", pkg: "internal/reflectlite", typ: $funcType([], [$Bool], false)}, {prop: "common", name: "common", pkg: "internal/reflectlite", typ: $funcType([], [ptrType$1], false)}, {prop: "exportedMethods", name: "exportedMethods", pkg: "internal/reflectlite", typ: $funcType([], [sliceType$5], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "hasName", name: "hasName", pkg: "internal/reflectlite", typ: $funcType([], [$Bool], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "chanDir", name: "chanDir", pkg: "internal/reflectlite", typ: $funcType([], [chanDir], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumIn", name: "NumIn", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumOut", name: "NumOut", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Out", name: "Out", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsVariadic", name: "IsVariadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "kindType", name: "kindType", pkg: "internal/reflectlite", typ: $funcType([], [ptrType$1], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [structField], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "uncommon", name: "uncommon", pkg: "internal/reflectlite", typ: $funcType([], [ptrType$4], false)}, {prop: "nameOff", name: "nameOff", pkg: "internal/reflectlite", typ: $funcType([nameOff], [name], false)}, {prop: "typeOff", name: "typeOff", pkg: "internal/reflectlite", typ: $funcType([typeOff], [ptrType$1], false)}, {prop: "ptrTo", name: "ptrTo", pkg: "internal/reflectlite", typ: $funcType([], [ptrType$1], false)}]; + ptrType$11.methods = [{prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}]; + ptrType$12.methods = [{prop: "embedded", name: "embedded", pkg: "internal/reflectlite", typ: $funcType([], [$Bool], false)}]; + ptrType$13.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$4.methods = [{prop: "methods", name: "methods", pkg: "internal/reflectlite", typ: $funcType([], [sliceType$5], false)}, {prop: "exportedMethods", name: "exportedMethods", pkg: "internal/reflectlite", typ: $funcType([], [sliceType$5], false)}]; + ptrType$5.methods = [{prop: "in$", name: "in", pkg: "internal/reflectlite", typ: $funcType([], [sliceType$2], false)}, {prop: "out", name: "out", pkg: "internal/reflectlite", typ: $funcType([], [sliceType$2], false)}]; + name.methods = [{prop: "data", name: "data", pkg: "internal/reflectlite", typ: $funcType([$Int, $String], [ptrType$6], false)}, {prop: "hasTag", name: "hasTag", pkg: "internal/reflectlite", typ: $funcType([], [$Bool], false)}, {prop: "readVarint", name: "readVarint", pkg: "internal/reflectlite", typ: $funcType([$Int], [$Int, $Int], false)}, {prop: "name", name: "name", pkg: "internal/reflectlite", typ: $funcType([], [$String], false)}, {prop: "tag", name: "tag", pkg: "internal/reflectlite", typ: $funcType([], [$String], false)}, {prop: "pkgPath", name: "pkgPath", pkg: "internal/reflectlite", typ: $funcType([], [$String], false)}, {prop: "isExported", name: "isExported", pkg: "internal/reflectlite", typ: $funcType([], [$Bool], false)}, {prop: "embedded", name: "embedded", pkg: "internal/reflectlite", typ: $funcType([], [$Bool], false)}]; + ptrType$9.methods = [{prop: "skipUntilValidKey", name: "skipUntilValidKey", pkg: "internal/reflectlite", typ: $funcType([], [], false)}]; + Value.init("internal/reflectlite", [{prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "ptr", name: "ptr", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "flag", name: "flag", embedded: true, exported: false, typ: flag, tag: ""}]); + ValueError.init("", [{prop: "Method", name: "Method", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Kind", name: "Kind", embedded: false, exported: true, typ: Kind, tag: ""}]); + Type.init([{prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "common", name: "common", pkg: "internal/reflectlite", typ: $funcType([], [ptrType$1], false)}, {prop: "uncommon", name: "uncommon", pkg: "internal/reflectlite", typ: $funcType([], [ptrType$4], false)}]); + rtype.init("internal/reflectlite", [{prop: "size", name: "size", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "ptrdata", name: "ptrdata", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "hash", name: "hash", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "tflag", name: "tflag", embedded: false, exported: false, typ: tflag, tag: ""}, {prop: "align", name: "align", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "fieldAlign", name: "fieldAlign", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "kind", name: "kind", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "equal", name: "equal", embedded: false, exported: false, typ: funcType$2, tag: ""}, {prop: "gcdata", name: "gcdata", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "str", name: "str", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "ptrToThis", name: "ptrToThis", embedded: false, exported: false, typ: typeOff, tag: ""}]); + method.init("internal/reflectlite", [{prop: "name", name: "name", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "mtyp", name: "mtyp", embedded: false, exported: false, typ: typeOff, tag: ""}, {prop: "ifn", name: "ifn", embedded: false, exported: false, typ: textOff, tag: ""}, {prop: "tfn", name: "tfn", embedded: false, exported: false, typ: textOff, tag: ""}]); + arrayType.init("internal/reflectlite", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "slice", name: "slice", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "len", name: "len", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); + chanType.init("internal/reflectlite", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "dir", name: "dir", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); + imethod.init("internal/reflectlite", [{prop: "name", name: "name", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: typeOff, tag: ""}]); + interfaceType.init("internal/reflectlite", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: name, tag: ""}, {prop: "methods", name: "methods", embedded: false, exported: false, typ: sliceType$9, tag: ""}]); + mapType.init("internal/reflectlite", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "key", name: "key", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "bucket", name: "bucket", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "hasher", name: "hasher", embedded: false, exported: false, typ: funcType$3, tag: ""}, {prop: "keysize", name: "keysize", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "valuesize", name: "valuesize", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "bucketsize", name: "bucketsize", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "flags", name: "flags", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + ptrType.init("internal/reflectlite", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}]); + sliceType.init("internal/reflectlite", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$1, tag: ""}]); + structField.init("internal/reflectlite", [{prop: "name", name: "name", embedded: false, exported: false, typ: name, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); + structType.init("internal/reflectlite", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: name, tag: ""}, {prop: "fields", name: "fields", embedded: false, exported: false, typ: sliceType$10, tag: ""}]); + errorString.init("internal/reflectlite", [{prop: "s", name: "s", embedded: false, exported: false, typ: $String, tag: ""}]); + Method.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}, {prop: "Func", name: "Func", embedded: false, exported: true, typ: Value, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: $Int, tag: ""}]); + uncommonType.init("internal/reflectlite", [{prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "mcount", name: "mcount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "xcount", name: "xcount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "moff", name: "moff", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "_methods", name: "_methods", embedded: false, exported: false, typ: sliceType$5, tag: ""}]); + funcType.init("internal/reflectlite", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: "reflect:\"func\""}, {prop: "inCount", name: "inCount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "outCount", name: "outCount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "_in", name: "_in", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "_out", name: "_out", embedded: false, exported: false, typ: sliceType$2, tag: ""}]); + name.init("internal/reflectlite", [{prop: "bytes", name: "bytes", embedded: false, exported: false, typ: ptrType$6, tag: ""}]); + nameData.init("internal/reflectlite", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "tag", name: "tag", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "exported", name: "exported", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "embedded", name: "embedded", embedded: false, exported: false, typ: $Bool, tag: ""}]); + mapIter.init("internal/reflectlite", [{prop: "t", name: "t", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "m", name: "m", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "keys", name: "keys", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "i", name: "i", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "last", name: "last", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); + TypeEx.init([{prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "common", name: "common", pkg: "internal/reflectlite", typ: $funcType([], [ptrType$1], false)}, {prop: "uncommon", name: "uncommon", pkg: "internal/reflectlite", typ: $funcType([], [ptrType$4], false)}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = goarch.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + uint8Type = ptrType$1.nil; + nameOffList = sliceType$1.nil; + typeOffList = sliceType$2.nil; + kindNames = new sliceType$3(["invalid", "bool", "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64", "uintptr", "float32", "float64", "complex64", "complex128", "array", "chan", "func", "interface", "map", "ptr", "slice", "string", "struct", "unsafe.Pointer"]); + callHelper = $assertType($internalize($call, $emptyInterface), funcType$1); + $pkg.ErrSyntax = new errorString.ptr("invalid syntax"); + initialized = false; + idJsType = "_jsType"; + idReflectType = "_reflectType"; + idKindType = "kindType"; + idRtype = "_rtype"; + uncommonTypeMap = new $global.Map(); + nameMap = new $global.Map(); + jsObjectPtr = reflectType($jsObjectPtr); + selectHelper = $assertType($internalize($select, $emptyInterface), funcType$1); + $r = init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["errors"] = (function() { + var $pkg = {}, $init, reflectlite, errorString, ptrType, interfaceType, interfaceType$1, sliceType, interfaceType$2, ptrType$2, errorType, _r, Is, New; + reflectlite = $packages["internal/reflectlite"]; + errorString = $newType(0, $kindStruct, "errors.errorString", true, "errors", false, function(s_) { + this.$val = this; + if (arguments.length === 0) { + this.s = ""; + return; + } + this.s = s_; + }); + $pkg.errorString = errorString; + $pkg.$finishSetup = function() { + ptrType = $ptrType($error); + interfaceType = $interfaceType([{prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [$error], false)}]); + interfaceType$1 = $interfaceType([{prop: "Is", name: "Is", pkg: "", typ: $funcType([$error], [$Bool], false)}]); + sliceType = $sliceType($error); + interfaceType$2 = $interfaceType([{prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [sliceType], false)}]); + ptrType$2 = $ptrType(errorString); + Is = function Is$1(err, target) { + var {_i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _tuple, _v, err, err$1, isComparable, ok, target, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {err, target}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(target, $ifaceNil)) { + $s = -1; return $interfaceIsEqual(err, target); + } + _r$1 = reflectlite.TypeOf(target).Comparable(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + isComparable = _r$1; + /* while (true) { */ case 2: + if (isComparable && $interfaceIsEqual(err, target)) { + $s = -1; return true; + } + _tuple = $assertType(err, interfaceType$1, true); + x = _tuple[0]; + ok = _tuple[1]; + if (!(ok)) { _v = false; $s = 6; continue s; } + _r$2 = x.Is(target); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2; case 6: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + $s = -1; return true; + /* } */ case 5: + _ref = err; + /* */ if ($assertType(_ref, interfaceType, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, interfaceType$2, true)[1]) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ($assertType(_ref, interfaceType, true)[1]) { */ case 8: + x$1 = _ref; + _r$3 = x$1.Unwrap(); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err = _r$3; + if ($interfaceIsEqual(err, $ifaceNil)) { + $s = -1; return false; + } + $s = 11; continue; + /* } else if ($assertType(_ref, interfaceType$2, true)[1]) { */ case 9: + x$2 = _ref; + _r$4 = x$2.Unwrap(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _ref$1 = _r$4; + _i = 0; + /* while (true) { */ case 14: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 15; continue; } + err$1 = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _r$5 = Is(err$1, target); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (_r$5) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_r$5) { */ case 16: + $s = -1; return true; + /* } */ case 17: + _i++; + $s = 14; continue; + case 15: + $s = -1; return false; + /* } else { */ case 10: + x$3 = _ref; + $s = -1; return false; + /* } */ case 11: + $s = 2; continue; + case 3: + $s = -1; return false; + /* */ } return; } var $f = {$blk: Is$1, $c: true, $r, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _tuple, _v, err, err$1, isComparable, ok, target, x, x$1, x$2, x$3, $s};return $f; + }; + $pkg.Is = Is; + New = function New$1(text) { + var text; + return new errorString.ptr(text); + }; + $pkg.New = New; + $ptrType(errorString).prototype.Error = function Error$1() { + var e; + e = this; + return e.s; + }; + ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + errorString.init("errors", [{prop: "s", name: "s", embedded: false, exported: false, typ: $String, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = reflectlite.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = reflectlite.TypeOf((ptrType.nil)).Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + errorType = _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/abi"] = (function() { + var $pkg = {}, $init, goarch; + goarch = $packages["internal/goarch"]; + $pkg.$finishSetup = function() { + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = goarch.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/cpu"] = (function() { + var $pkg = {}, $init, CacheLinePad, arrayType, structType, structType$2, structType$5; + CacheLinePad = $newType(0, $kindStruct, "cpu.CacheLinePad", true, "internal/cpu", true, function(_$0_) { + this.$val = this; + if (arguments.length === 0) { + this._$0 = arrayType.zero(); + return; + } + this._$0 = _$0_; + }); + $pkg.CacheLinePad = CacheLinePad; + $pkg.$finishSetup = function() { + arrayType = $arrayType($Uint8, 0); + structType = $structType("internal/cpu", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: CacheLinePad, tag: ""}, {prop: "HasAES", name: "HasAES", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasADX", name: "HasADX", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasAVX", name: "HasAVX", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasAVX2", name: "HasAVX2", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasBMI1", name: "HasBMI1", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasBMI2", name: "HasBMI2", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasERMS", name: "HasERMS", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasFMA", name: "HasFMA", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasOSXSAVE", name: "HasOSXSAVE", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasPCLMULQDQ", name: "HasPCLMULQDQ", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasPOPCNT", name: "HasPOPCNT", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasRDTSCP", name: "HasRDTSCP", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSHA", name: "HasSHA", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSSE3", name: "HasSSE3", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSSSE3", name: "HasSSSE3", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSSE41", name: "HasSSE41", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSSE42", name: "HasSSE42", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "_$18", name: "_", embedded: false, exported: false, typ: CacheLinePad, tag: ""}]); + structType$2 = $structType("internal/cpu", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: CacheLinePad, tag: ""}, {prop: "HasAES", name: "HasAES", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasPMULL", name: "HasPMULL", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSHA1", name: "HasSHA1", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSHA2", name: "HasSHA2", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSHA512", name: "HasSHA512", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasCRC32", name: "HasCRC32", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasATOMICS", name: "HasATOMICS", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasCPUID", name: "HasCPUID", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "IsNeoverseN1", name: "IsNeoverseN1", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "IsNeoverseV1", name: "IsNeoverseV1", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "_$11", name: "_", embedded: false, exported: false, typ: CacheLinePad, tag: ""}]); + structType$5 = $structType("internal/cpu", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: CacheLinePad, tag: ""}, {prop: "HasZARCH", name: "HasZARCH", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSTFLE", name: "HasSTFLE", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasLDISP", name: "HasLDISP", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasEIMM", name: "HasEIMM", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasDFP", name: "HasDFP", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasETF3EH", name: "HasETF3EH", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasMSA", name: "HasMSA", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasAES", name: "HasAES", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasAESCBC", name: "HasAESCBC", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasAESCTR", name: "HasAESCTR", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasAESGCM", name: "HasAESGCM", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasGHASH", name: "HasGHASH", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSHA1", name: "HasSHA1", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSHA256", name: "HasSHA256", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSHA512", name: "HasSHA512", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasSHA3", name: "HasSHA3", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasVX", name: "HasVX", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasVXE", name: "HasVXE", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasKDSA", name: "HasKDSA", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasECDSA", name: "HasECDSA", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HasEDDSA", name: "HasEDDSA", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "_$22", name: "_", embedded: false, exported: false, typ: CacheLinePad, tag: ""}]); + CacheLinePad.init("internal/cpu", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: arrayType, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $pkg.X86 = new structType.ptr(new CacheLinePad.ptr(arrayType.zero()), false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, new CacheLinePad.ptr(arrayType.zero())); + $pkg.ARM64 = new structType$2.ptr(new CacheLinePad.ptr(arrayType.zero()), false, false, false, false, false, false, false, false, false, false, new CacheLinePad.ptr(arrayType.zero())); + $pkg.S390X = new structType$5.ptr(new CacheLinePad.ptr(arrayType.zero()), false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, new CacheLinePad.ptr(arrayType.zero())); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/bytealg"] = (function() { + var $pkg = {}, $init, cpu, Index, IndexString, Cutover, Equal, IndexByteString, Count, HashStrBytes, IndexRabinKarpBytes; + cpu = $packages["internal/cpu"]; + $pkg.$finishSetup = function() { + Index = function Index$1(a, b) { + var a, b; + $panic(new $String("unimplemented")); + }; + $pkg.Index = Index; + IndexString = function IndexString$1(a, b) { + var a, b; + $panic(new $String("unimplemented")); + }; + $pkg.IndexString = IndexString; + Cutover = function Cutover$1(n) { + var n; + $panic(new $String("unimplemented")); + }; + $pkg.Cutover = Cutover; + Equal = function Equal$1(a, b) { + var _i, _ref, a, b, c, i; + if (!((a.$length === b.$length))) { + return false; + } + _ref = a; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((c === ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i])))) { + return false; + } + _i++; + } + return true; + }; + $pkg.Equal = Equal; + IndexByteString = function IndexByteString$1(s, c) { + var c, i, s; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if (s.charCodeAt(i) === c) { + return i; + } + i = i + (1) >> 0; + } + return -1; + }; + $pkg.IndexByteString = IndexByteString; + Count = function Count$1(b, c) { + var _i, _ref, b, c, n, x; + n = 0; + _ref = b; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (x === c) { + n = n + (1) >> 0; + } + _i++; + } + return n; + }; + $pkg.Count = Count; + HashStrBytes = function HashStrBytes$1(sep) { + var _tmp, _tmp$1, hash, i, i$1, pow, sep, sq; + hash = 0; + i = 0; + while (true) { + if (!(i < sep.$length)) { break; } + hash = ($imul(hash, 16777619) >>> 0) + ((((i < 0 || i >= sep.$length) ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + i]) >>> 0)) >>> 0; + i = i + (1) >> 0; + } + _tmp = 1; + _tmp$1 = 16777619; + pow = _tmp; + sq = _tmp$1; + i$1 = sep.$length; + while (true) { + if (!(i$1 > 0)) { break; } + if (!(((i$1 & 1) === 0))) { + pow = $imul(pow, (sq)) >>> 0; + } + sq = $imul(sq, (sq)) >>> 0; + i$1 = (i$1 >> $min((1), 31)) >> 0; + } + return [hash, pow]; + }; + $pkg.HashStrBytes = HashStrBytes; + IndexRabinKarpBytes = function IndexRabinKarpBytes$1(s, sep) { + var _tuple, h, hashsep, i, i$1, n, pow, s, sep, x; + _tuple = HashStrBytes(sep); + hashsep = _tuple[0]; + pow = _tuple[1]; + n = sep.$length; + h = 0; + i = 0; + while (true) { + if (!(i < n)) { break; } + h = ($imul(h, 16777619) >>> 0) + ((((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) >>> 0)) >>> 0; + i = i + (1) >> 0; + } + if ((h === hashsep) && Equal($subslice(s, 0, n), sep)) { + return 0; + } + i$1 = n; + while (true) { + if (!(i$1 < s.$length)) { break; } + h = $imul(h, (16777619)) >>> 0; + h = h + (((((i$1 < 0 || i$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i$1]) >>> 0))) >>> 0; + h = h - (($imul(pow, (((x = i$1 - n >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) >>> 0))) >>> 0)) >>> 0; + i$1 = i$1 + (1) >> 0; + if ((h === hashsep) && Equal($subslice(s, (i$1 - n >> 0), i$1), sep)) { + return i$1 - n >> 0; + } + } + return -1; + }; + $pkg.IndexRabinKarpBytes = IndexRabinKarpBytes; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = cpu.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.MaxLen = 0; + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/itoa"] = (function() { + var $pkg = {}, $init, arrayType, sliceType, Itoa, Uitoa; + $pkg.$finishSetup = function() { + arrayType = $arrayType($Uint8, 20); + sliceType = $sliceType($Uint8); + Itoa = function Itoa$1(val) { + var val; + if (val < 0) { + return "-" + Uitoa(((-val >>> 0))); + } + return Uitoa(((val >>> 0))); + }; + $pkg.Itoa = Itoa; + Uitoa = function Uitoa$1(val) { + var _q, buf, i, q, val; + if (val === 0) { + return "0"; + } + buf = arrayType.zero(); + i = 19; + while (true) { + if (!(val >= 10)) { break; } + q = (_q = val / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = ((((48 + val >>> 0) - ($imul(q, 10) >>> 0) >>> 0) << 24 >>> 24))); + i = i - (1) >> 0; + val = q; + } + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = (((48 + val >>> 0) << 24 >>> 24))); + return ($bytesToString($subslice(new sliceType(buf), i))); + }; + $pkg.Uitoa = Uitoa; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["math/bits"] = (function() { + var $pkg = {}, $init, _err, overflowError, divideError, deBruijn32tab, deBruijn64tab, Mul32, Add32, Div32, LeadingZeros, LeadingZeros32, LeadingZeros64, TrailingZeros, TrailingZeros32, TrailingZeros64, RotateLeft32, RotateLeft64, Reverse8, Reverse16, ReverseBytes64, Len, Len32, Len64, Add, Add64, Sub, Sub32, Sub64, Mul, Mul64, Div, Div64; + _err = $newType(8, $kindString, "bits._err", true, "math/bits", false, null); + $pkg._err = _err; + $pkg.$finishSetup = function() { + _err.prototype.Error = function Error() { + var e; + e = this.$val; + return (e); + }; + $ptrType(_err).prototype.Error = function(...$args) { return new _err(this.$get()).Error(...$args); }; + _err.prototype.RuntimeError = function RuntimeError() { + var e; + e = this.$val; + }; + $ptrType(_err).prototype.RuntimeError = function(...$args) { return new _err(this.$get()).RuntimeError(...$args); }; + Mul32 = function Mul32$1(x, y) { + var hi, lo, t, w0, w1, w2, x, x0, x1, y, y0, y1; + hi = 0; + lo = 0; + x0 = (x & 65535) >>> 0; + x1 = x >>> 16 >>> 0; + y0 = (y & 65535) >>> 0; + y1 = y >>> 16 >>> 0; + w0 = $imul(x0, y0) >>> 0; + t = ($imul(x1, y0) >>> 0) + (w0 >>> 16 >>> 0) >>> 0; + w1 = (t & 65535) >>> 0; + w2 = t >>> 16 >>> 0; + w1 = w1 + (($imul(x0, y1) >>> 0)) >>> 0; + hi = (($imul(x1, y1) >>> 0) + w2 >>> 0) + (w1 >>> 16 >>> 0) >>> 0; + lo = $imul(x, y) >>> 0; + return [hi, lo]; + }; + $pkg.Mul32 = Mul32; + Add32 = function Add32$1(x, y, carry) { + var carry, carryOut, sum, x, y; + sum = 0; + carryOut = 0; + sum = (x + y >>> 0) + carry >>> 0; + carryOut = ((((((x & y) >>> 0)) | ((((((x | y) >>> 0)) & ~sum) >>> 0))) >>> 0)) >>> 31 >>> 0; + return [sum, carryOut]; + }; + $pkg.Add32 = Add32; + Div32 = function Div32$1(hi, lo, y) { + var _q, _q$1, _tmp, _tmp$1, hi, lo, q0, q1, quo, rem, rhat, s, un0, un1, un10, un16, un21, y, y$1, y$2, y$3, y$4, y$5, yn0, yn1; + quo = 0; + rem = 0; + if (y === 0) { + $panic(divideError); + } + if (y <= hi) { + $panic(overflowError); + } + s = ((LeadingZeros32(y) >>> 0)); + y = (y$1 = (s), y$1 < 32 ? (y << y$1) : 0) >>> 0; + yn1 = y >>> 16 >>> 0; + yn0 = (y & 65535) >>> 0; + un16 = (((y$2 = s, y$2 < 32 ? (hi << y$2) : 0) >>> 0) | ((y$3 = ((32 - s >>> 0)), y$3 < 32 ? (lo >>> y$3) : 0) >>> 0)) >>> 0; + un10 = (y$4 = s, y$4 < 32 ? (lo << y$4) : 0) >>> 0; + un1 = un10 >>> 16 >>> 0; + un0 = (un10 & 65535) >>> 0; + q1 = (_q = un16 / yn1, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + rhat = un16 - ($imul(q1, yn1) >>> 0) >>> 0; + while (true) { + if (!(q1 >= 65536 || ($imul(q1, yn0) >>> 0) > (($imul(65536, rhat) >>> 0) + un1 >>> 0))) { break; } + q1 = q1 - (1) >>> 0; + rhat = rhat + (yn1) >>> 0; + if (rhat >= 65536) { + break; + } + } + un21 = (($imul(un16, 65536) >>> 0) + un1 >>> 0) - ($imul(q1, y) >>> 0) >>> 0; + q0 = (_q$1 = un21 / yn1, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); + rhat = un21 - ($imul(q0, yn1) >>> 0) >>> 0; + while (true) { + if (!(q0 >= 65536 || ($imul(q0, yn0) >>> 0) > (($imul(65536, rhat) >>> 0) + un0 >>> 0))) { break; } + q0 = q0 - (1) >>> 0; + rhat = rhat + (yn1) >>> 0; + if (rhat >= 65536) { + break; + } + } + _tmp = ($imul(q1, 65536) >>> 0) + q0 >>> 0; + _tmp$1 = (y$5 = s, y$5 < 32 ? ((((($imul(un21, 65536) >>> 0) + un0 >>> 0) - ($imul(q0, y) >>> 0) >>> 0)) >>> y$5) : 0) >>> 0; + quo = _tmp; + rem = _tmp$1; + return [quo, rem]; + }; + $pkg.Div32 = Div32; + LeadingZeros = function LeadingZeros$1(x) { + var x; + return 32 - Len(x) >> 0; + }; + $pkg.LeadingZeros = LeadingZeros; + LeadingZeros32 = function LeadingZeros32$1(x) { + var x; + return 32 - Len32(x) >> 0; + }; + $pkg.LeadingZeros32 = LeadingZeros32; + LeadingZeros64 = function LeadingZeros64$1(x) { + var x; + return 64 - Len64(x) >> 0; + }; + $pkg.LeadingZeros64 = LeadingZeros64; + TrailingZeros = function TrailingZeros$1(x) { + var x; + if (true) { + return TrailingZeros32(((x >>> 0))); + } + return TrailingZeros64((new $Uint64(0, x))); + }; + $pkg.TrailingZeros = TrailingZeros; + TrailingZeros32 = function TrailingZeros32$1(x) { + var x, x$1; + if (x === 0) { + return 32; + } + return (((x$1 = ($imul((((x & (-x >>> 0)) >>> 0)), 125613361) >>> 0) >>> 27 >>> 0, ((x$1 < 0 || x$1 >= deBruijn32tab.length) ? ($throwRuntimeError("index out of range"), undefined) : deBruijn32tab[x$1])) >> 0)); + }; + $pkg.TrailingZeros32 = TrailingZeros32; + TrailingZeros64 = function TrailingZeros64$1(x) { + var x, x$1, x$2; + if ((x.$high === 0 && x.$low === 0)) { + return 64; + } + return (((x$1 = $shiftRightUint64($mul64(((x$2 = new $Uint64(-x.$high, -x.$low), new $Uint64(x.$high & x$2.$high, (x.$low & x$2.$low) >>> 0))), new $Uint64(66559345, 3033172745)), 58), (($flatten64(x$1) < 0 || $flatten64(x$1) >= deBruijn64tab.length) ? ($throwRuntimeError("index out of range"), undefined) : deBruijn64tab[$flatten64(x$1)])) >> 0)); + }; + $pkg.TrailingZeros64 = TrailingZeros64; + RotateLeft32 = function RotateLeft32$1(x, k) { + var k, s, x, y, y$1; + s = (((k >>> 0)) & 31) >>> 0; + return (((y = s, y < 32 ? (x << y) : 0) >>> 0) | ((y$1 = ((32 - s >>> 0)), y$1 < 32 ? (x >>> y$1) : 0) >>> 0)) >>> 0; + }; + $pkg.RotateLeft32 = RotateLeft32; + RotateLeft64 = function RotateLeft64$1(x, k) { + var k, s, x, x$1, x$2; + s = (((k >>> 0)) & 63) >>> 0; + return (x$1 = $shiftLeft64(x, s), x$2 = $shiftRightUint64(x, ((64 - s >>> 0))), new $Uint64(x$1.$high | x$2.$high, (x$1.$low | x$2.$low) >>> 0)); + }; + $pkg.RotateLeft64 = RotateLeft64; + Reverse8 = function Reverse8$1(x) { + var x; + return "\x00\x80@\xC0 \xA0`\xE0\x10\x90P\xD00\xB0p\xF0\b\x88H\xC8(\xA8h\xE8\x18\x98X\xD88\xB8x\xF8\x04\x84D\xC4$\xA4d\xE4\x14\x94T\xD44\xB4t\xF4\f\x8CL\xCC,\xACl\xEC\x1C\x9C\\\xDC<\xBC|\xFC\x02\x82B\xC2\"\xA2b\xE2\x12\x92R\xD22\xB2r\xF2\n\x8AJ\xCA*\xAAj\xEA\x1A\x9AZ\xDA:\xBAz\xFA\x06\x86F\xC6&\xA6f\xE6\x16\x96V\xD66\xB6v\xF6\x0E\x8EN\xCE.\xAEn\xEE\x1E\x9E^\xDE>\xBE~\xFE\x01\x81A\xC1!\xA1a\xE1\x11\x91Q\xD11\xB1q\xF1\t\x89I\xC9)\xA9i\xE9\x19\x99Y\xD99\xB9y\xF9\x05\x85E\xC5%\xA5e\xE5\x15\x95U\xD55\xB5u\xF5\r\x8DM\xCD-\xADm\xED\x1D\x9D]\xDD=\xBD}\xFD\x03\x83C\xC3#\xA3c\xE3\x13\x93S\xD33\xB3s\xF3\v\x8BK\xCB+\xABk\xEB\x1B\x9B[\xDB;\xBB{\xFB\x07\x87G\xC7'\xA7g\xE7\x17\x97W\xD77\xB7w\xF7\x0F\x8FO\xCF/\xAFo\xEF\x1F\x9F_\xDF?\xBF\x7F\xFF".charCodeAt(x); + }; + $pkg.Reverse8 = Reverse8; + Reverse16 = function Reverse16$1(x) { + var x; + return ((("\x00\x80@\xC0 \xA0`\xE0\x10\x90P\xD00\xB0p\xF0\b\x88H\xC8(\xA8h\xE8\x18\x98X\xD88\xB8x\xF8\x04\x84D\xC4$\xA4d\xE4\x14\x94T\xD44\xB4t\xF4\f\x8CL\xCC,\xACl\xEC\x1C\x9C\\\xDC<\xBC|\xFC\x02\x82B\xC2\"\xA2b\xE2\x12\x92R\xD22\xB2r\xF2\n\x8AJ\xCA*\xAAj\xEA\x1A\x9AZ\xDA:\xBAz\xFA\x06\x86F\xC6&\xA6f\xE6\x16\x96V\xD66\xB6v\xF6\x0E\x8EN\xCE.\xAEn\xEE\x1E\x9E^\xDE>\xBE~\xFE\x01\x81A\xC1!\xA1a\xE1\x11\x91Q\xD11\xB1q\xF1\t\x89I\xC9)\xA9i\xE9\x19\x99Y\xD99\xB9y\xF9\x05\x85E\xC5%\xA5e\xE5\x15\x95U\xD55\xB5u\xF5\r\x8DM\xCD-\xADm\xED\x1D\x9D]\xDD=\xBD}\xFD\x03\x83C\xC3#\xA3c\xE3\x13\x93S\xD33\xB3s\xF3\v\x8BK\xCB+\xABk\xEB\x1B\x9B[\xDB;\xBB{\xFB\x07\x87G\xC7'\xA7g\xE7\x17\x97W\xD77\xB7w\xF7\x0F\x8FO\xCF/\xAFo\xEF\x1F\x9F_\xDF?\xBF\x7F\xFF".charCodeAt((x >>> 8 << 16 >>> 16)) << 16 >>> 16)) | ((("\x00\x80@\xC0 \xA0`\xE0\x10\x90P\xD00\xB0p\xF0\b\x88H\xC8(\xA8h\xE8\x18\x98X\xD88\xB8x\xF8\x04\x84D\xC4$\xA4d\xE4\x14\x94T\xD44\xB4t\xF4\f\x8CL\xCC,\xACl\xEC\x1C\x9C\\\xDC<\xBC|\xFC\x02\x82B\xC2\"\xA2b\xE2\x12\x92R\xD22\xB2r\xF2\n\x8AJ\xCA*\xAAj\xEA\x1A\x9AZ\xDA:\xBAz\xFA\x06\x86F\xC6&\xA6f\xE6\x16\x96V\xD66\xB6v\xF6\x0E\x8EN\xCE.\xAEn\xEE\x1E\x9E^\xDE>\xBE~\xFE\x01\x81A\xC1!\xA1a\xE1\x11\x91Q\xD11\xB1q\xF1\t\x89I\xC9)\xA9i\xE9\x19\x99Y\xD99\xB9y\xF9\x05\x85E\xC5%\xA5e\xE5\x15\x95U\xD55\xB5u\xF5\r\x8DM\xCD-\xADm\xED\x1D\x9D]\xDD=\xBD}\xFD\x03\x83C\xC3#\xA3c\xE3\x13\x93S\xD33\xB3s\xF3\v\x8BK\xCB+\xABk\xEB\x1B\x9B[\xDB;\xBB{\xFB\x07\x87G\xC7'\xA7g\xE7\x17\x97W\xD77\xB7w\xF7\x0F\x8FO\xCF/\xAFo\xEF\x1F\x9F_\xDF?\xBF\x7F\xFF".charCodeAt(((x & 255) >>> 0)) << 16 >>> 16)) << 8 << 16 >>> 16)) >>> 0; + }; + $pkg.Reverse16 = Reverse16; + ReverseBytes64 = function ReverseBytes64$1(x) { + var x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; + x = (x$1 = (x$2 = $shiftRightUint64(x, 8), new $Uint64(x$2.$high & 16711935, (x$2.$low & 16711935) >>> 0)), x$3 = $shiftLeft64(new $Uint64(x.$high & 16711935, (x.$low & 16711935) >>> 0), 8), new $Uint64(x$1.$high | x$3.$high, (x$1.$low | x$3.$low) >>> 0)); + x = (x$4 = (x$5 = $shiftRightUint64(x, 16), new $Uint64(x$5.$high & 65535, (x$5.$low & 65535) >>> 0)), x$6 = $shiftLeft64(new $Uint64(x.$high & 65535, (x.$low & 65535) >>> 0), 16), new $Uint64(x$4.$high | x$6.$high, (x$4.$low | x$6.$low) >>> 0)); + return (x$7 = $shiftRightUint64(x, 32), x$8 = $shiftLeft64(x, 32), new $Uint64(x$7.$high | x$8.$high, (x$7.$low | x$8.$low) >>> 0)); + }; + $pkg.ReverseBytes64 = ReverseBytes64; + Len = function Len$1(x) { + var x; + if (true) { + return Len32(((x >>> 0))); + } + return Len64((new $Uint64(0, x))); + }; + $pkg.Len = Len; + Len32 = function Len32$1(x) { + var n, x, y, y$1; + n = 0; + if (x >= 65536) { + x = (y = (16), y < 32 ? (x >>> y) : 0) >>> 0; + n = 16; + } + if (x >= 256) { + x = (y$1 = (8), y$1 < 32 ? (x >>> y$1) : 0) >>> 0; + n = n + (8) >> 0; + } + n = n + (("\x00\x01\x02\x02\x03\x03\x03\x03\x04\x04\x04\x04\x04\x04\x04\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b".charCodeAt(x) >> 0)) >> 0; + return n; + }; + $pkg.Len32 = Len32; + Len64 = function Len64$1(x) { + var n, x; + n = 0; + if ((x.$high > 1 || (x.$high === 1 && x.$low >= 0))) { + x = $shiftRightUint64(x, (32)); + n = 32; + } + if ((x.$high > 0 || (x.$high === 0 && x.$low >= 65536))) { + x = $shiftRightUint64(x, (16)); + n = n + (16) >> 0; + } + if ((x.$high > 0 || (x.$high === 0 && x.$low >= 256))) { + x = $shiftRightUint64(x, (8)); + n = n + (8) >> 0; + } + n = n + (("\x00\x01\x02\x02\x03\x03\x03\x03\x04\x04\x04\x04\x04\x04\x04\x04\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b".charCodeAt($flatten64(x)) >> 0)) >> 0; + return n; + }; + $pkg.Len64 = Len64; + Add = function Add$1(x, y, carry) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, c32, c64, carry, carryOut, s32, s64, sum, x, y; + sum = 0; + carryOut = 0; + if (true) { + _tuple = Add32(((x >>> 0)), ((y >>> 0)), ((carry >>> 0))); + s32 = _tuple[0]; + c32 = _tuple[1]; + _tmp = ((s32 >>> 0)); + _tmp$1 = ((c32 >>> 0)); + sum = _tmp; + carryOut = _tmp$1; + return [sum, carryOut]; + } + _tuple$1 = Add64((new $Uint64(0, x)), (new $Uint64(0, y)), (new $Uint64(0, carry))); + s64 = _tuple$1[0]; + c64 = _tuple$1[1]; + _tmp$2 = ((s64.$low >>> 0)); + _tmp$3 = ((c64.$low >>> 0)); + sum = _tmp$2; + carryOut = _tmp$3; + return [sum, carryOut]; + }; + $pkg.Add = Add; + Add64 = function Add64$1(x, y, carry) { + var carry, carryOut, sum, x, x$1, x$2, x$3, x$4, y; + sum = new $Uint64(0, 0); + carryOut = new $Uint64(0, 0); + sum = (x$1 = new $Uint64(x.$high + y.$high, x.$low + y.$low), new $Uint64(x$1.$high + carry.$high, x$1.$low + carry.$low)); + carryOut = $shiftRightUint64(((x$2 = new $Uint64(x.$high & y.$high, (x.$low & y.$low) >>> 0), x$3 = (x$4 = new $Uint64(x.$high | y.$high, (x.$low | y.$low) >>> 0), new $Uint64(x$4.$high & ~sum.$high, (x$4.$low & ~sum.$low) >>> 0)), new $Uint64(x$2.$high | x$3.$high, (x$2.$low | x$3.$low) >>> 0))), 63); + return [sum, carryOut]; + }; + $pkg.Add64 = Add64; + Sub = function Sub$1(x, y, borrow) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, b32, b64, borrow, borrowOut, d32, d64, diff, x, y; + diff = 0; + borrowOut = 0; + if (true) { + _tuple = Sub32(((x >>> 0)), ((y >>> 0)), ((borrow >>> 0))); + d32 = _tuple[0]; + b32 = _tuple[1]; + _tmp = ((d32 >>> 0)); + _tmp$1 = ((b32 >>> 0)); + diff = _tmp; + borrowOut = _tmp$1; + return [diff, borrowOut]; + } + _tuple$1 = Sub64((new $Uint64(0, x)), (new $Uint64(0, y)), (new $Uint64(0, borrow))); + d64 = _tuple$1[0]; + b64 = _tuple$1[1]; + _tmp$2 = ((d64.$low >>> 0)); + _tmp$3 = ((b64.$low >>> 0)); + diff = _tmp$2; + borrowOut = _tmp$3; + return [diff, borrowOut]; + }; + $pkg.Sub = Sub; + Sub32 = function Sub32$1(x, y, borrow) { + var borrow, borrowOut, diff, x, y; + diff = 0; + borrowOut = 0; + diff = (x - y >>> 0) - borrow >>> 0; + borrowOut = (((((((~x >>> 0) & y) >>> 0)) | ((((~(((x ^ y) >>> 0)) >>> 0) & diff) >>> 0))) >>> 0)) >>> 31 >>> 0; + return [diff, borrowOut]; + }; + $pkg.Sub32 = Sub32; + Sub64 = function Sub64$1(x, y, borrow) { + var borrow, borrowOut, diff, x, x$1, x$2, x$3, x$4, x$5, x$6, y; + diff = new $Uint64(0, 0); + borrowOut = new $Uint64(0, 0); + diff = (x$1 = new $Uint64(x.$high - y.$high, x.$low - y.$low), new $Uint64(x$1.$high - borrow.$high, x$1.$low - borrow.$low)); + borrowOut = $shiftRightUint64(((x$2 = (x$3 = new $Uint64(~x.$high, ~x.$low >>> 0), new $Uint64(x$3.$high & y.$high, (x$3.$low & y.$low) >>> 0)), x$4 = (x$5 = (x$6 = new $Uint64(x.$high ^ y.$high, (x.$low ^ y.$low) >>> 0), new $Uint64(~x$6.$high, ~x$6.$low >>> 0)), new $Uint64(x$5.$high & diff.$high, (x$5.$low & diff.$low) >>> 0)), new $Uint64(x$2.$high | x$4.$high, (x$2.$low | x$4.$low) >>> 0))), 63); + return [diff, borrowOut]; + }; + $pkg.Sub64 = Sub64; + Mul = function Mul$1(x, y) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, h, h$1, hi, l, l$1, lo, x, y; + hi = 0; + lo = 0; + if (true) { + _tuple = Mul32(((x >>> 0)), ((y >>> 0))); + h = _tuple[0]; + l = _tuple[1]; + _tmp = ((h >>> 0)); + _tmp$1 = ((l >>> 0)); + hi = _tmp; + lo = _tmp$1; + return [hi, lo]; + } + _tuple$1 = Mul64((new $Uint64(0, x)), (new $Uint64(0, y))); + h$1 = _tuple$1[0]; + l$1 = _tuple$1[1]; + _tmp$2 = ((h$1.$low >>> 0)); + _tmp$3 = ((l$1.$low >>> 0)); + hi = _tmp$2; + lo = _tmp$3; + return [hi, lo]; + }; + $pkg.Mul = Mul; + Mul64 = function Mul64$1(x, y) { + var hi, lo, t, w0, w1, w2, x, x$1, x$2, x$3, x$4, x$5, x$6, x0, x1, y, y0, y1; + hi = new $Uint64(0, 0); + lo = new $Uint64(0, 0); + x0 = new $Uint64(x.$high & 0, (x.$low & 4294967295) >>> 0); + x1 = $shiftRightUint64(x, 32); + y0 = new $Uint64(y.$high & 0, (y.$low & 4294967295) >>> 0); + y1 = $shiftRightUint64(y, 32); + w0 = $mul64(x0, y0); + t = (x$1 = $mul64(x1, y0), x$2 = $shiftRightUint64(w0, 32), new $Uint64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); + w1 = new $Uint64(t.$high & 0, (t.$low & 4294967295) >>> 0); + w2 = $shiftRightUint64(t, 32); + w1 = (x$3 = $mul64(x0, y1), new $Uint64(w1.$high + x$3.$high, w1.$low + x$3.$low)); + hi = (x$4 = (x$5 = $mul64(x1, y1), new $Uint64(x$5.$high + w2.$high, x$5.$low + w2.$low)), x$6 = $shiftRightUint64(w1, 32), new $Uint64(x$4.$high + x$6.$high, x$4.$low + x$6.$low)); + lo = $mul64(x, y); + return [hi, lo]; + }; + $pkg.Mul64 = Mul64; + Div = function Div$1(hi, lo, y) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, hi, lo, q, q$1, quo, r, r$1, rem, y; + quo = 0; + rem = 0; + if (true) { + _tuple = Div32(((hi >>> 0)), ((lo >>> 0)), ((y >>> 0))); + q = _tuple[0]; + r = _tuple[1]; + _tmp = ((q >>> 0)); + _tmp$1 = ((r >>> 0)); + quo = _tmp; + rem = _tmp$1; + return [quo, rem]; + } + _tuple$1 = Div64((new $Uint64(0, hi)), (new $Uint64(0, lo)), (new $Uint64(0, y))); + q$1 = _tuple$1[0]; + r$1 = _tuple$1[1]; + _tmp$2 = ((q$1.$low >>> 0)); + _tmp$3 = ((r$1.$low >>> 0)); + quo = _tmp$2; + rem = _tmp$3; + return [quo, rem]; + }; + $pkg.Div = Div; + Div64 = function Div64$1(hi, lo, y) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, hi, lo, q0, q1, quo, rem, rhat, s, un0, un1, un10, un21, un32, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, yn0, yn1; + quo = new $Uint64(0, 0); + rem = new $Uint64(0, 0); + if ((y.$high === 0 && y.$low === 0)) { + $panic(divideError); + } + if ((y.$high < hi.$high || (y.$high === hi.$high && y.$low <= hi.$low))) { + $panic(overflowError); + } + if ((hi.$high === 0 && hi.$low === 0)) { + _tmp = $div64(lo, y, false); + _tmp$1 = $div64(lo, y, true); + quo = _tmp; + rem = _tmp$1; + return [quo, rem]; + } + s = ((LeadingZeros64(y) >>> 0)); + y = $shiftLeft64(y, (s)); + yn1 = $shiftRightUint64(y, 32); + yn0 = new $Uint64(y.$high & 0, (y.$low & 4294967295) >>> 0); + un32 = (x = $shiftLeft64(hi, s), x$1 = $shiftRightUint64(lo, ((64 - s >>> 0))), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)); + un10 = $shiftLeft64(lo, s); + un1 = $shiftRightUint64(un10, 32); + un0 = new $Uint64(un10.$high & 0, (un10.$low & 4294967295) >>> 0); + q1 = $div64(un32, yn1, false); + rhat = (x$2 = $mul64(q1, yn1), new $Uint64(un32.$high - x$2.$high, un32.$low - x$2.$low)); + while (true) { + if (!((q1.$high > 1 || (q1.$high === 1 && q1.$low >= 0)) || (x$3 = $mul64(q1, yn0), x$4 = (x$5 = $mul64(new $Uint64(1, 0), rhat), new $Uint64(x$5.$high + un1.$high, x$5.$low + un1.$low)), (x$3.$high > x$4.$high || (x$3.$high === x$4.$high && x$3.$low > x$4.$low))))) { break; } + q1 = (x$6 = new $Uint64(0, 1), new $Uint64(q1.$high - x$6.$high, q1.$low - x$6.$low)); + rhat = (x$7 = yn1, new $Uint64(rhat.$high + x$7.$high, rhat.$low + x$7.$low)); + if ((rhat.$high > 1 || (rhat.$high === 1 && rhat.$low >= 0))) { + break; + } + } + un21 = (x$8 = (x$9 = $mul64(un32, new $Uint64(1, 0)), new $Uint64(x$9.$high + un1.$high, x$9.$low + un1.$low)), x$10 = $mul64(q1, y), new $Uint64(x$8.$high - x$10.$high, x$8.$low - x$10.$low)); + q0 = $div64(un21, yn1, false); + rhat = (x$11 = $mul64(q0, yn1), new $Uint64(un21.$high - x$11.$high, un21.$low - x$11.$low)); + while (true) { + if (!((q0.$high > 1 || (q0.$high === 1 && q0.$low >= 0)) || (x$12 = $mul64(q0, yn0), x$13 = (x$14 = $mul64(new $Uint64(1, 0), rhat), new $Uint64(x$14.$high + un0.$high, x$14.$low + un0.$low)), (x$12.$high > x$13.$high || (x$12.$high === x$13.$high && x$12.$low > x$13.$low))))) { break; } + q0 = (x$15 = new $Uint64(0, 1), new $Uint64(q0.$high - x$15.$high, q0.$low - x$15.$low)); + rhat = (x$16 = yn1, new $Uint64(rhat.$high + x$16.$high, rhat.$low + x$16.$low)); + if ((rhat.$high > 1 || (rhat.$high === 1 && rhat.$low >= 0))) { + break; + } + } + _tmp$2 = (x$17 = $mul64(q1, new $Uint64(1, 0)), new $Uint64(x$17.$high + q0.$high, x$17.$low + q0.$low)); + _tmp$3 = $shiftRightUint64(((x$18 = (x$19 = $mul64(un21, new $Uint64(1, 0)), new $Uint64(x$19.$high + un0.$high, x$19.$low + un0.$low)), x$20 = $mul64(q0, y), new $Uint64(x$18.$high - x$20.$high, x$18.$low - x$20.$low))), s); + quo = _tmp$2; + rem = _tmp$3; + return [quo, rem]; + }; + $pkg.Div64 = Div64; + _err.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}]; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + overflowError = new _err("runtime error: integer overflow"); + divideError = new _err("runtime error: integer divide by zero"); + deBruijn32tab = $toNativeArray($kindUint8, [0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9]); + deBruijn64tab = $toNativeArray($kindUint8, [0, 1, 56, 2, 57, 49, 28, 3, 61, 58, 42, 50, 38, 29, 17, 4, 62, 47, 59, 36, 45, 43, 51, 22, 53, 39, 33, 30, 24, 18, 12, 5, 63, 55, 48, 27, 60, 41, 37, 16, 46, 35, 44, 21, 52, 32, 23, 11, 54, 26, 40, 15, 34, 20, 31, 10, 25, 14, 19, 9, 13, 8, 7, 6]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["math"] = (function() { + var $pkg = {}, $init, js, bits, arrayType, arrayType$1, arrayType$2, structType, buf, math, _zero, posInf, negInf, nan, log10, log2, ldexp, Atan2, Cbrt, Ceil, Copysign, Cos, Exp, Floor, Frexp, Inf, IsInf, IsNaN, Ldexp, Log, Log10, Log2, Max, Min, Mod, NaN, Pow, Signbit, Sin, Sqrt, Trunc, init, Float32bits, Float32frombits, Float64bits, Float64frombits, frexp, Round, max, min, normalize, Abs; + js = $packages["github.com/gopherjs/gopherjs/js"]; + bits = $packages["math/bits"]; + $pkg.$finishSetup = function() { + arrayType = $arrayType($Uint32, 2); + arrayType$1 = $arrayType($Float32, 2); + arrayType$2 = $arrayType($Float64, 1); + structType = $structType("math", [{prop: "uint32array", name: "uint32array", embedded: false, exported: false, typ: arrayType, tag: ""}, {prop: "float32array", name: "float32array", embedded: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "float64array", name: "float64array", embedded: false, exported: false, typ: arrayType$2, tag: ""}]); + log10 = function log10$1(x) { + var x; + return Log(x) * 0.4342944819032518; + }; + log2 = function log2$1(x) { + var _tuple, exp$1, frac, x; + _tuple = Frexp(x); + frac = _tuple[0]; + exp$1 = _tuple[1]; + if (frac === 0.5) { + return ((exp$1 - 1 >> 0)); + } + return Log(frac) * 1.4426950408889634 + (exp$1); + }; + ldexp = function ldexp$1(frac, exp$1) { + var _tuple, e, exp$1, frac, m, x, x$1, x$2; + if ((frac === 0)) { + return frac; + } else if (IsInf(frac, 0) || IsNaN(frac)) { + return frac; + } + _tuple = normalize(frac); + frac = _tuple[0]; + e = _tuple[1]; + exp$1 = exp$1 + (e) >> 0; + x = Float64bits(frac); + exp$1 = exp$1 + ((((($shiftRightUint64(x, 52).$low >> 0)) & 2047) - 1023 >> 0)) >> 0; + if (exp$1 < -1075) { + return Copysign(0, frac); + } + if (exp$1 > 1023) { + if (frac < 0) { + return Inf(-1); + } + return Inf(1); + } + m = 1; + if (exp$1 < -1022) { + exp$1 = exp$1 + (53) >> 0; + m = 1.1102230246251565e-16; + } + x = (x$1 = new $Uint64(2146435072, 0), new $Uint64(x.$high & ~x$1.$high, (x.$low & ~x$1.$low) >>> 0)); + x = (x$2 = $shiftLeft64((new $Uint64(0, (exp$1 + 1023 >> 0))), 52), new $Uint64(x.$high | x$2.$high, (x.$low | x$2.$low) >>> 0)); + return m * Float64frombits(x); + }; + Atan2 = function Atan2$1(y, x) { + var x, y; + return $parseFloat(math.atan2(y, x)); + }; + $pkg.Atan2 = Atan2; + Cbrt = function Cbrt$1(x) { + var x; + return $parseFloat(math.cbrt(x)); + }; + $pkg.Cbrt = Cbrt; + Ceil = function Ceil$1(x) { + var x; + return $parseFloat(math.ceil(x)); + }; + $pkg.Ceil = Ceil; + Copysign = function Copysign$1(x, y) { + var x, y; + if (!((x < 0 || (1 / x === negInf)) === (y < 0 || (1 / y === negInf)))) { + return -x; + } + return x; + }; + $pkg.Copysign = Copysign; + Cos = function Cos$1(x) { + var x; + return $parseFloat(math.cos(x)); + }; + $pkg.Cos = Cos; + Exp = function Exp$1(x) { + var x; + return $parseFloat(math.exp(x)); + }; + $pkg.Exp = Exp; + Floor = function Floor$1(x) { + var x; + return $parseFloat(math.floor(x)); + }; + $pkg.Floor = Floor; + Frexp = function Frexp$1(f) { + var _tuple, exp$1, f, frac; + frac = 0; + exp$1 = 0; + _tuple = frexp(f); + frac = _tuple[0]; + exp$1 = _tuple[1]; + return [frac, exp$1]; + }; + $pkg.Frexp = Frexp; + Inf = function Inf$1(sign) { + var sign; + if (sign >= 0) { + return posInf; + } else { + return negInf; + } + }; + $pkg.Inf = Inf; + IsInf = function IsInf$1(f, sign) { + var f, sign; + if (f === posInf) { + return sign >= 0; + } + if (f === negInf) { + return sign <= 0; + } + return false; + }; + $pkg.IsInf = IsInf; + IsNaN = function IsNaN$1(f) { + var f, is; + is = false; + is = !((f === f)); + return is; + }; + $pkg.IsNaN = IsNaN; + Ldexp = function Ldexp$1(frac, exp$1) { + var exp$1, frac; + if (-1024 < exp$1 && exp$1 < 1024) { + if (frac === 0) { + return frac; + } + return frac * $parseFloat(math.pow(2, exp$1)); + } + return ldexp(frac, exp$1); + }; + $pkg.Ldexp = Ldexp; + Log = function Log$1(x) { + var x; + if (!((x === x))) { + return nan; + } + return $parseFloat(math.log(x)); + }; + $pkg.Log = Log; + Log10 = function Log10$1(x) { + var x; + return log10(x); + }; + $pkg.Log10 = Log10; + Log2 = function Log2$1(x) { + var x; + return log2(x); + }; + $pkg.Log2 = Log2; + Max = function Max$1(x, y) { + var x, y; + return max(x, y); + }; + $pkg.Max = Max; + Min = function Min$1(x, y) { + var x, y; + return min(x, y); + }; + $pkg.Min = Min; + Mod = function Mod$1(x, y) { + var x, y; + return $parseFloat($mod(x, y)); + }; + $pkg.Mod = Mod; + NaN = function NaN$1() { + return nan; + }; + $pkg.NaN = NaN; + Pow = function Pow$1(x, y) { + var x, y; + if ((x === 1) || ((x === -1) && ((y === posInf) || (y === negInf)))) { + return 1; + } + return $parseFloat(math.pow(x, y)); + }; + $pkg.Pow = Pow; + Signbit = function Signbit$1(x) { + var x; + return x < 0 || (1 / x === negInf); + }; + $pkg.Signbit = Signbit; + Sin = function Sin$1(x) { + var x; + return $parseFloat(math.sin(x)); + }; + $pkg.Sin = Sin; + Sqrt = function Sqrt$1(x) { + var x; + return $parseFloat(math.sqrt(x)); + }; + $pkg.Sqrt = Sqrt; + Trunc = function Trunc$1(x) { + var x; + if ((x === posInf) || (x === negInf) || !((x === x)) || (1 / x === negInf)) { + return x; + } + return Copysign((((x >> 0))), x); + }; + $pkg.Trunc = Trunc; + init = function init$1() { + var ab; + ab = new ($global.ArrayBuffer)(8); + buf.uint32array = new ($global.Uint32Array)(ab); + buf.float32array = new ($global.Float32Array)(ab); + buf.float64array = new ($global.Float64Array)(ab); + }; + Float32bits = function Float32bits$1(f) { + var f; + buf.float32array[0] = f; + return buf.uint32array[0]; + }; + $pkg.Float32bits = Float32bits; + Float32frombits = function Float32frombits$1(b) { + var b; + buf.uint32array[0] = b; + return buf.float32array[0]; + }; + $pkg.Float32frombits = Float32frombits; + Float64bits = function Float64bits$1(f) { + var f, x, x$1; + buf.float64array[0] = f; + return (x = $shiftLeft64((new $Uint64(0, buf.uint32array[1])), 32), x$1 = (new $Uint64(0, buf.uint32array[0])), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)); + }; + $pkg.Float64bits = Float64bits; + Float64frombits = function Float64frombits$1(b) { + var b; + buf.uint32array[0] = ((b.$low >>> 0)); + buf.uint32array[1] = (($shiftRightUint64(b, 32).$low >>> 0)); + return buf.float64array[0]; + }; + $pkg.Float64frombits = Float64frombits; + frexp = function frexp$1(f) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, exp$1, f, frac, x, x$1, x$2, x$3; + frac = 0; + exp$1 = 0; + if ((f === 0)) { + _tmp = f; + _tmp$1 = 0; + frac = _tmp; + exp$1 = _tmp$1; + return [frac, exp$1]; + } else if (IsInf(f, 0) || IsNaN(f)) { + _tmp$2 = f; + _tmp$3 = 0; + frac = _tmp$2; + exp$1 = _tmp$3; + return [frac, exp$1]; + } + _tuple = normalize(f); + f = _tuple[0]; + exp$1 = _tuple[1]; + x = Float64bits(f); + exp$1 = exp$1 + ((((((x$1 = $shiftRightUint64(x, 52), new $Uint64(x$1.$high & 0, (x$1.$low & 2047) >>> 0)).$low >> 0)) - 1023 >> 0) + 1 >> 0)) >> 0; + x = (x$2 = new $Uint64(2146435072, 0), new $Uint64(x.$high & ~x$2.$high, (x.$low & ~x$2.$low) >>> 0)); + x = (x$3 = new $Uint64(1071644672, 0), new $Uint64(x.$high | x$3.$high, (x.$low | x$3.$low) >>> 0)); + frac = Float64frombits(x); + return [frac, exp$1]; + }; + Round = function Round$1(x) { + var bits$1, e, x, x$1, x$2, x$3, x$4; + bits$1 = Float64bits(x); + e = ((($shiftRightUint64(bits$1, 52).$low >>> 0)) & 2047) >>> 0; + if (e < 1023) { + bits$1 = (x$1 = new $Uint64(2147483648, 0), new $Uint64(bits$1.$high & x$1.$high, (bits$1.$low & x$1.$low) >>> 0)); + if (e === 1022) { + bits$1 = (x$2 = new $Uint64(1072693248, 0), new $Uint64(bits$1.$high | x$2.$high, (bits$1.$low | x$2.$low) >>> 0)); + } + } else if (e < 1075) { + e = e - (1023) >>> 0; + bits$1 = (x$3 = $shiftRightUint64(new $Uint64(524288, 0), e), new $Uint64(bits$1.$high + x$3.$high, bits$1.$low + x$3.$low)); + bits$1 = (x$4 = $shiftRightUint64(new $Uint64(1048575, 4294967295), e), new $Uint64(bits$1.$high & ~x$4.$high, (bits$1.$low & ~x$4.$low) >>> 0)); + } + return Float64frombits(bits$1); + }; + $pkg.Round = Round; + max = function max$1(x, y) { + var x, y; + if (IsInf(x, 1) || IsInf(y, 1)) { + return Inf(1); + } else if (IsNaN(x) || IsNaN(y)) { + return NaN(); + } else if ((x === 0) && (x === y)) { + if (Signbit(x)) { + return y; + } + return x; + } + if (x > y) { + return x; + } + return y; + }; + min = function min$1(x, y) { + var x, y; + if (IsInf(x, -1) || IsInf(y, -1)) { + return Inf(-1); + } else if (IsNaN(x) || IsNaN(y)) { + return NaN(); + } else if ((x === 0) && (x === y)) { + if (Signbit(x)) { + return x; + } + return y; + } + if (x < y) { + return x; + } + return y; + }; + normalize = function normalize$1(x) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, exp$2, x, y; + y = 0; + exp$2 = 0; + if (Abs(x) < 2.2250738585072014e-308) { + _tmp = x * 4.503599627370496e+15; + _tmp$1 = -52; + y = _tmp; + exp$2 = _tmp$1; + return [y, exp$2]; + } + _tmp$2 = x; + _tmp$3 = 0; + y = _tmp$2; + exp$2 = _tmp$3; + return [y, exp$2]; + }; + Abs = function Abs$1(x) { + var x, x$1; + return Float64frombits((x$1 = Float64bits(x), new $Uint64(x$1.$high & ~2147483648, (x$1.$low & ~0) >>> 0))); + }; + $pkg.Abs = Abs; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bits.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf = new structType.ptr(arrayType.zero(), arrayType$1.zero(), arrayType$2.zero()); + math = $global.Math; + _zero = 0; + posInf = 1 / _zero; + negInf = -1 / _zero; + nan = $parseFloat($NaN); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["unicode/utf8"] = (function() { + var $pkg = {}, $init, acceptRange, first, acceptRanges, FullRune, DecodeRune, DecodeRuneInString, DecodeLastRune, DecodeLastRuneInString, RuneLen, EncodeRune, AppendRune, appendRuneNonASCII, RuneCount, RuneCountInString, RuneStart, Valid, ValidString, ValidRune; + acceptRange = $newType(0, $kindStruct, "utf8.acceptRange", true, "unicode/utf8", false, function(lo_, hi_) { + this.$val = this; + if (arguments.length === 0) { + this.lo = 0; + this.hi = 0; + return; + } + this.lo = lo_; + this.hi = hi_; + }); + $pkg.acceptRange = acceptRange; + $pkg.$finishSetup = function() { + FullRune = function FullRune$1(p) { + var accept, n, p, x, x$1, x$2; + n = p.$length; + if (n === 0) { + return false; + } + x$1 = (x = (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]), ((x < 0 || x >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[x])); + if (n >= ((((x$1 & 7) >>> 0) >> 0))) { + return true; + } + accept = $clone((x$2 = x$1 >>> 4 << 24 >>> 24, ((x$2 < 0 || x$2 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$2])), acceptRange); + if (n > 1 && ((1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]) < accept.lo || accept.hi < (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]))) { + return true; + } else if (n > 2 && ((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]) < 128 || 191 < (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]))) { + return true; + } + return false; + }; + $pkg.FullRune = FullRune; + DecodeRune = function DecodeRune$1(p) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, accept, b1, b2, b3, mask, n, p, p0, r, size, sz, x, x$1; + r = 0; + size = 0; + n = p.$length; + if (n < 1) { + _tmp = 65533; + _tmp$1 = 0; + r = _tmp; + size = _tmp$1; + return [r, size]; + } + p0 = (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]); + x = ((p0 < 0 || p0 >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[p0]); + if (x >= 240) { + mask = (((x >> 0)) << 31 >> 0) >> 31 >> 0; + _tmp$2 = (((((0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]) >> 0)) & ~mask) >> 0) | (65533 & mask); + _tmp$3 = 1; + r = _tmp$2; + size = _tmp$3; + return [r, size]; + } + sz = ((((x & 7) >>> 0) >> 0)); + accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); + if (n < sz) { + _tmp$4 = 65533; + _tmp$5 = 1; + r = _tmp$4; + size = _tmp$5; + return [r, size]; + } + b1 = (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]); + if (b1 < accept.lo || accept.hi < b1) { + _tmp$6 = 65533; + _tmp$7 = 1; + r = _tmp$6; + size = _tmp$7; + return [r, size]; + } + if (sz <= 2) { + _tmp$8 = (((((p0 & 31) >>> 0) >> 0)) << 6 >> 0) | ((((b1 & 63) >>> 0) >> 0)); + _tmp$9 = 2; + r = _tmp$8; + size = _tmp$9; + return [r, size]; + } + b2 = (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]); + if (b2 < 128 || 191 < b2) { + _tmp$10 = 65533; + _tmp$11 = 1; + r = _tmp$10; + size = _tmp$11; + return [r, size]; + } + if (sz <= 3) { + _tmp$12 = ((((((p0 & 15) >>> 0) >> 0)) << 12 >> 0) | (((((b1 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((b2 & 63) >>> 0) >> 0)); + _tmp$13 = 3; + r = _tmp$12; + size = _tmp$13; + return [r, size]; + } + b3 = (3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3]); + if (b3 < 128 || 191 < b3) { + _tmp$14 = 65533; + _tmp$15 = 1; + r = _tmp$14; + size = _tmp$15; + return [r, size]; + } + _tmp$16 = (((((((p0 & 7) >>> 0) >> 0)) << 18 >> 0) | (((((b1 & 63) >>> 0) >> 0)) << 12 >> 0)) | (((((b2 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((b3 & 63) >>> 0) >> 0)); + _tmp$17 = 4; + r = _tmp$16; + size = _tmp$17; + return [r, size]; + }; + $pkg.DecodeRune = DecodeRune; + DecodeRuneInString = function DecodeRuneInString$1(s) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, accept, mask, n, r, s, s0, s1, s2, s3, size, sz, x, x$1; + r = 0; + size = 0; + n = s.length; + if (n < 1) { + _tmp = 65533; + _tmp$1 = 0; + r = _tmp; + size = _tmp$1; + return [r, size]; + } + s0 = s.charCodeAt(0); + x = ((s0 < 0 || s0 >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[s0]); + if (x >= 240) { + mask = (((x >> 0)) << 31 >> 0) >> 31 >> 0; + _tmp$2 = ((((s.charCodeAt(0) >> 0)) & ~mask) >> 0) | (65533 & mask); + _tmp$3 = 1; + r = _tmp$2; + size = _tmp$3; + return [r, size]; + } + sz = ((((x & 7) >>> 0) >> 0)); + accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); + if (n < sz) { + _tmp$4 = 65533; + _tmp$5 = 1; + r = _tmp$4; + size = _tmp$5; + return [r, size]; + } + s1 = s.charCodeAt(1); + if (s1 < accept.lo || accept.hi < s1) { + _tmp$6 = 65533; + _tmp$7 = 1; + r = _tmp$6; + size = _tmp$7; + return [r, size]; + } + if (sz <= 2) { + _tmp$8 = (((((s0 & 31) >>> 0) >> 0)) << 6 >> 0) | ((((s1 & 63) >>> 0) >> 0)); + _tmp$9 = 2; + r = _tmp$8; + size = _tmp$9; + return [r, size]; + } + s2 = s.charCodeAt(2); + if (s2 < 128 || 191 < s2) { + _tmp$10 = 65533; + _tmp$11 = 1; + r = _tmp$10; + size = _tmp$11; + return [r, size]; + } + if (sz <= 3) { + _tmp$12 = ((((((s0 & 15) >>> 0) >> 0)) << 12 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s2 & 63) >>> 0) >> 0)); + _tmp$13 = 3; + r = _tmp$12; + size = _tmp$13; + return [r, size]; + } + s3 = s.charCodeAt(3); + if (s3 < 128 || 191 < s3) { + _tmp$14 = 65533; + _tmp$15 = 1; + r = _tmp$14; + size = _tmp$15; + return [r, size]; + } + _tmp$16 = (((((((s0 & 7) >>> 0) >> 0)) << 18 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 12 >> 0)) | (((((s2 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s3 & 63) >>> 0) >> 0)); + _tmp$17 = 4; + r = _tmp$16; + size = _tmp$17; + return [r, size]; + }; + $pkg.DecodeRuneInString = DecodeRuneInString; + DecodeLastRune = function DecodeLastRune$1(p) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, p, r, size, start; + r = 0; + size = 0; + end = p.$length; + if (end === 0) { + _tmp = 65533; + _tmp$1 = 0; + r = _tmp; + size = _tmp$1; + return [r, size]; + } + start = end - 1 >> 0; + r = ((((start < 0 || start >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + start]) >> 0)); + if (r < 128) { + _tmp$2 = r; + _tmp$3 = 1; + r = _tmp$2; + size = _tmp$3; + return [r, size]; + } + lim = end - 4 >> 0; + if (lim < 0) { + lim = 0; + } + start = start - (1) >> 0; + while (true) { + if (!(start >= lim)) { break; } + if (RuneStart(((start < 0 || start >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + start]))) { + break; + } + start = start - (1) >> 0; + } + if (start < 0) { + start = 0; + } + _tuple = DecodeRune($subslice(p, start, end)); + r = _tuple[0]; + size = _tuple[1]; + if (!(((start + size >> 0) === end))) { + _tmp$4 = 65533; + _tmp$5 = 1; + r = _tmp$4; + size = _tmp$5; + return [r, size]; + } + _tmp$6 = r; + _tmp$7 = size; + r = _tmp$6; + size = _tmp$7; + return [r, size]; + }; + $pkg.DecodeLastRune = DecodeLastRune; + DecodeLastRuneInString = function DecodeLastRuneInString$1(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, r, s, size, start; + r = 0; + size = 0; + end = s.length; + if (end === 0) { + _tmp = 65533; + _tmp$1 = 0; + r = _tmp; + size = _tmp$1; + return [r, size]; + } + start = end - 1 >> 0; + r = ((s.charCodeAt(start) >> 0)); + if (r < 128) { + _tmp$2 = r; + _tmp$3 = 1; + r = _tmp$2; + size = _tmp$3; + return [r, size]; + } + lim = end - 4 >> 0; + if (lim < 0) { + lim = 0; + } + start = start - (1) >> 0; + while (true) { + if (!(start >= lim)) { break; } + if (RuneStart(s.charCodeAt(start))) { + break; + } + start = start - (1) >> 0; + } + if (start < 0) { + start = 0; + } + _tuple = DecodeRuneInString($substring(s, start, end)); + r = _tuple[0]; + size = _tuple[1]; + if (!(((start + size >> 0) === end))) { + _tmp$4 = 65533; + _tmp$5 = 1; + r = _tmp$4; + size = _tmp$5; + return [r, size]; + } + _tmp$6 = r; + _tmp$7 = size; + r = _tmp$6; + size = _tmp$7; + return [r, size]; + }; + $pkg.DecodeLastRuneInString = DecodeLastRuneInString; + RuneLen = function RuneLen$1(r) { + var r; + if (r < 0) { + return -1; + } else if (r <= 127) { + return 1; + } else if (r <= 2047) { + return 2; + } else if (55296 <= r && r <= 57343) { + return -1; + } else if (r <= 65535) { + return 3; + } else if (r <= 1114111) { + return 4; + } + return -1; + }; + $pkg.RuneLen = RuneLen; + EncodeRune = function EncodeRune$1(p, r) { + var i, p, r; + i = ((r >>> 0)); + if (i <= 127) { + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((r << 24 >>> 24))); + return 1; + } else if (i <= 2047) { + $unused((1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((192 | (((r >> 6 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 2; + } else if ((i > 1114111) || (55296 <= i && i <= 57343)) { + r = 65533; + $unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 3; + } else if (i <= 65535) { + $unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 3; + } else { + $unused((3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((240 | (((r >> 18 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 12 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 4; + } + }; + $pkg.EncodeRune = EncodeRune; + AppendRune = function AppendRune$1(p, r) { + var p, r; + if (((r >>> 0)) <= 127) { + return $append(p, ((r << 24 >>> 24))); + } + return appendRuneNonASCII(p, r); + }; + $pkg.AppendRune = AppendRune; + appendRuneNonASCII = function appendRuneNonASCII$1(p, r) { + var i, p, r; + i = ((r >>> 0)); + if (i <= 2047) { + return $append(p, (192 | (((r >> 6 >> 0) << 24 >>> 24))) >>> 0, (128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0); + } else if ((i > 1114111) || (55296 <= i && i <= 57343)) { + r = 65533; + return $append(p, (224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0, (128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0, (128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0); + } else if (i <= 65535) { + return $append(p, (224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0, (128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0, (128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0); + } else { + return $append(p, (240 | (((r >> 18 >> 0) << 24 >>> 24))) >>> 0, (128 | (((((r >> 12 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0, (128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0, (128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0); + } + }; + RuneCount = function RuneCount$1(p) { + var accept, c, c$1, c$2, c$3, i, n, np, p, size, x, x$1, x$2, x$3, x$4; + np = p.$length; + n = 0; + i = 0; + while (true) { + if (!(i < np)) { break; } + n = n + (1) >> 0; + c = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); + if (c < 128) { + i = i + (1) >> 0; + continue; + } + x = ((c < 0 || c >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[c]); + if (x === 241) { + i = i + (1) >> 0; + continue; + } + size = ((((x & 7) >>> 0) >> 0)); + if ((i + size >> 0) > np) { + i = i + (1) >> 0; + continue; + } + accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); + c$1 = (x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2])); + if (c$1 < accept.lo || accept.hi < c$1) { + size = 1; + } else if (size === 2) { + } else { + c$2 = (x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$3])); + if (c$2 < 128 || 191 < c$2) { + size = 1; + } else if (size === 3) { + } else { + c$3 = (x$4 = i + 3 >> 0, ((x$4 < 0 || x$4 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$4])); + if (c$3 < 128 || 191 < c$3) { + size = 1; + } + } + } + i = i + (size) >> 0; + } + return n; + }; + $pkg.RuneCount = RuneCount; + RuneCountInString = function RuneCountInString$1(s) { + var accept, c, c$1, c$2, c$3, i, n, ns, s, size, x, x$1; + n = 0; + ns = s.length; + i = 0; + while (true) { + if (!(i < ns)) { break; } + c = s.charCodeAt(i); + if (c < 128) { + i = i + (1) >> 0; + n = n + (1) >> 0; + continue; + } + x = ((c < 0 || c >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[c]); + if (x === 241) { + i = i + (1) >> 0; + n = n + (1) >> 0; + continue; + } + size = ((((x & 7) >>> 0) >> 0)); + if ((i + size >> 0) > ns) { + i = i + (1) >> 0; + n = n + (1) >> 0; + continue; + } + accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); + c$1 = s.charCodeAt((i + 1 >> 0)); + if (c$1 < accept.lo || accept.hi < c$1) { + size = 1; + } else if (size === 2) { + } else { + c$2 = s.charCodeAt((i + 2 >> 0)); + if (c$2 < 128 || 191 < c$2) { + size = 1; + } else if (size === 3) { + } else { + c$3 = s.charCodeAt((i + 3 >> 0)); + if (c$3 < 128 || 191 < c$3) { + size = 1; + } + } + } + i = i + (size) >> 0; + n = n + (1) >> 0; + } + n = n; + return n; + }; + $pkg.RuneCountInString = RuneCountInString; + RuneStart = function RuneStart$1(b) { + var b; + return !((((b & 192) >>> 0) === 128)); + }; + $pkg.RuneStart = RuneStart; + Valid = function Valid$1(p) { + var accept, c, c$1, c$2, first32, i, n, p, pi, second32, size, x, x$1, x$2, x$3, x$4; + p = $subslice(p, 0, p.$length, p.$length); + while (true) { + if (!(p.$length >= 8)) { break; } + first32 = ((((((((0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]) >>> 0)) | ((((1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3]) >>> 0)) << 24 >>> 0)) >>> 0; + second32 = ((((((((4 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 4]) >>> 0)) | ((((5 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 5]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((6 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 6]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((7 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 7]) >>> 0)) << 24 >>> 0)) >>> 0; + if (!(((((((first32 | second32) >>> 0)) & 2155905152) >>> 0) === 0))) { + break; + } + p = $subslice(p, 8); + } + n = p.$length; + i = 0; + while (true) { + if (!(i < n)) { break; } + pi = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); + if (pi < 128) { + i = i + (1) >> 0; + continue; + } + x = ((pi < 0 || pi >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[pi]); + if (x === 241) { + return false; + } + size = ((((x & 7) >>> 0) >> 0)); + if ((i + size >> 0) > n) { + return false; + } + accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); + c = (x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2])); + if (c < accept.lo || accept.hi < c) { + return false; + } else if (size === 2) { + } else { + c$1 = (x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$3])); + if (c$1 < 128 || 191 < c$1) { + return false; + } else if (size === 3) { + } else { + c$2 = (x$4 = i + 3 >> 0, ((x$4 < 0 || x$4 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$4])); + if (c$2 < 128 || 191 < c$2) { + return false; + } + } + } + i = i + (size) >> 0; + } + return true; + }; + $pkg.Valid = Valid; + ValidString = function ValidString$1(s) { + var accept, c, c$1, c$2, first32, i, n, s, second32, si, size, x, x$1; + while (true) { + if (!(s.length >= 8)) { break; } + first32 = (((((((s.charCodeAt(0) >>> 0)) | (((s.charCodeAt(1) >>> 0)) << 8 >>> 0)) >>> 0) | (((s.charCodeAt(2) >>> 0)) << 16 >>> 0)) >>> 0) | (((s.charCodeAt(3) >>> 0)) << 24 >>> 0)) >>> 0; + second32 = (((((((s.charCodeAt(4) >>> 0)) | (((s.charCodeAt(5) >>> 0)) << 8 >>> 0)) >>> 0) | (((s.charCodeAt(6) >>> 0)) << 16 >>> 0)) >>> 0) | (((s.charCodeAt(7) >>> 0)) << 24 >>> 0)) >>> 0; + if (!(((((((first32 | second32) >>> 0)) & 2155905152) >>> 0) === 0))) { + break; + } + s = $substring(s, 8); + } + n = s.length; + i = 0; + while (true) { + if (!(i < n)) { break; } + si = s.charCodeAt(i); + if (si < 128) { + i = i + (1) >> 0; + continue; + } + x = ((si < 0 || si >= first.length) ? ($throwRuntimeError("index out of range"), undefined) : first[si]); + if (x === 241) { + return false; + } + size = ((((x & 7) >>> 0) >> 0)); + if ((i + size >> 0) > n) { + return false; + } + accept = $clone((x$1 = x >>> 4 << 24 >>> 24, ((x$1 < 0 || x$1 >= acceptRanges.length) ? ($throwRuntimeError("index out of range"), undefined) : acceptRanges[x$1])), acceptRange); + c = s.charCodeAt((i + 1 >> 0)); + if (c < accept.lo || accept.hi < c) { + return false; + } else if (size === 2) { + } else { + c$1 = s.charCodeAt((i + 2 >> 0)); + if (c$1 < 128 || 191 < c$1) { + return false; + } else if (size === 3) { + } else { + c$2 = s.charCodeAt((i + 3 >> 0)); + if (c$2 < 128 || 191 < c$2) { + return false; + } + } + } + i = i + (size) >> 0; + } + return true; + }; + $pkg.ValidString = ValidString; + ValidRune = function ValidRune$1(r) { + var r; + if (0 <= r && r < 55296) { + return true; + } else if (57343 < r && r <= 1114111) { + return true; + } + return false; + }; + $pkg.ValidRune = ValidRune; + acceptRange.init("unicode/utf8", [{prop: "lo", name: "lo", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "hi", name: "hi", embedded: false, exported: false, typ: $Uint8, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + first = $toNativeArray($kindUint8, [240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 19, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 35, 3, 3, 52, 4, 4, 4, 68, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241]); + acceptRanges = $toNativeArray($kindStruct, [$clone(new acceptRange.ptr(128, 191), acceptRange), $clone(new acceptRange.ptr(160, 191), acceptRange), $clone(new acceptRange.ptr(128, 159), acceptRange), $clone(new acceptRange.ptr(144, 191), acceptRange), $clone(new acceptRange.ptr(128, 143), acceptRange), new acceptRange.ptr(0, 0), new acceptRange.ptr(0, 0), new acceptRange.ptr(0, 0), new acceptRange.ptr(0, 0), new acceptRange.ptr(0, 0), new acceptRange.ptr(0, 0), new acceptRange.ptr(0, 0), new acceptRange.ptr(0, 0), new acceptRange.ptr(0, 0), new acceptRange.ptr(0, 0), new acceptRange.ptr(0, 0)]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["strconv"] = (function() { + var $pkg = {}, $init, errors, js, bytealg, math, bits, utf8, floatInfo, decimalSlice, decimal, leftCheat, NumError, sliceType, sliceType$1, arrayType, sliceType$2, sliceType$3, sliceType$4, sliceType$5, sliceType$6, arrayType$1, arrayType$2, ptrType, arrayType$3, arrayType$4, arrayType$5, ptrType$1, ptrType$2, isPrint16, isNotPrint16, isPrint32, isNotPrint32, isGraphic, uint64pow10, float32info, float32info$24ptr, float64info, float64info$24ptr, detailedPowersOfTen, leftcheats, optimize, powtab, float64pow10, float32pow10, contains, quoteWith, appendQuotedWith, appendQuotedRuneWith, appendEscapedRune, Quote, AppendQuote, QuoteToASCII, AppendQuoteToASCII, AppendQuoteRune, AppendQuoteRuneToASCII, CanBackquote, unhex, UnquoteChar, Unquote, unquote, bsearch16, bsearch32, IsPrint, isInGraphicList, FormatUint, FormatInt, AppendInt, AppendUint, small, formatBits, isPowerOfTwo, Itoa, Atoi, ryuFtoaFixed32, ryuFtoaFixed64, formatDecimal, ryuFtoaShortest, mulByLog2Log10, mulByLog10Log2, computeBounds, ryuDigits, ryuDigits32, mult64bitPow10, mult128bitPow10, divisibleByPower5, divmod1e9, FormatFloat, AppendFloat, genericFtoa, bigFtoa, formatDigits, roundShortest, fmtE, fmtF, fmtB, fmtX, min, max, eiselLemire64, eiselLemire32, digitZero, trim, rightShift, prefixIsLessThan, leftShift, shouldRoundUp, index, lower, cloneString, syntaxError, rangeError, baseError, bitSizeError, ParseUint, ParseInt, underscoreOK, commonPrefixLenIgnoreCase, special, readFloat, atof64exact, atof32exact, atofHex, atof32, atof64, ParseFloat, parseFloatPrefix, FormatBool; + errors = $packages["errors"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + bytealg = $packages["internal/bytealg"]; + math = $packages["math"]; + bits = $packages["math/bits"]; + utf8 = $packages["unicode/utf8"]; + floatInfo = $newType(0, $kindStruct, "strconv.floatInfo", true, "strconv", false, function(mantbits_, expbits_, bias_) { + this.$val = this; + if (arguments.length === 0) { + this.mantbits = 0; + this.expbits = 0; + this.bias = 0; + return; + } + this.mantbits = mantbits_; + this.expbits = expbits_; + this.bias = bias_; + }); + decimalSlice = $newType(0, $kindStruct, "strconv.decimalSlice", true, "strconv", false, function(d_, nd_, dp_) { + this.$val = this; + if (arguments.length === 0) { + this.d = sliceType$6.nil; + this.nd = 0; + this.dp = 0; + return; + } + this.d = d_; + this.nd = nd_; + this.dp = dp_; + }); + decimal = $newType(0, $kindStruct, "strconv.decimal", true, "strconv", false, function(d_, nd_, dp_, neg_, trunc_) { + this.$val = this; + if (arguments.length === 0) { + this.d = arrayType$5.zero(); + this.nd = 0; + this.dp = 0; + this.neg = false; + this.trunc = false; + return; + } + this.d = d_; + this.nd = nd_; + this.dp = dp_; + this.neg = neg_; + this.trunc = trunc_; + }); + leftCheat = $newType(0, $kindStruct, "strconv.leftCheat", true, "strconv", false, function(delta_, cutoff_) { + this.$val = this; + if (arguments.length === 0) { + this.delta = 0; + this.cutoff = ""; + return; + } + this.delta = delta_; + this.cutoff = cutoff_; + }); + NumError = $newType(0, $kindStruct, "strconv.NumError", true, "strconv", true, function(Func_, Num_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Func = ""; + this.Num = ""; + this.Err = $ifaceNil; + return; + } + this.Func = Func_; + this.Num = Num_; + this.Err = Err_; + }); + $pkg.floatInfo = floatInfo; + $pkg.decimalSlice = decimalSlice; + $pkg.decimal = decimal; + $pkg.leftCheat = leftCheat; + $pkg.NumError = NumError; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint16); + sliceType$1 = $sliceType($Uint32); + arrayType = $arrayType($Uint64, 2); + sliceType$2 = $sliceType(leftCheat); + sliceType$3 = $sliceType($Int); + sliceType$4 = $sliceType($Float64); + sliceType$5 = $sliceType($Float32); + sliceType$6 = $sliceType($Uint8); + arrayType$1 = $arrayType($Uint8, 4); + arrayType$2 = $arrayType($Uint8, 65); + ptrType = $ptrType(floatInfo); + arrayType$3 = $arrayType($Uint8, 32); + arrayType$4 = $arrayType($Uint8, 24); + arrayType$5 = $arrayType($Uint8, 800); + ptrType$1 = $ptrType(NumError); + ptrType$2 = $ptrType(decimal); + contains = function contains$1(s, c) { + var c, s; + return !((index(s, c) === -1)); + }; + quoteWith = function quoteWith$1(s, quote, ASCIIonly, graphicOnly) { + var ASCIIonly, _q, graphicOnly, quote, s; + return ($bytesToString(appendQuotedWith($makeSlice(sliceType$6, 0, (_q = ($imul(3, s.length)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), s, quote, ASCIIonly, graphicOnly))); + }; + appendQuotedWith = function appendQuotedWith$1(buf, s, quote, ASCIIonly, graphicOnly) { + var ASCIIonly, _tuple, buf, graphicOnly, nBuf, quote, r, s, width; + if ((buf.$capacity - buf.$length >> 0) < s.length) { + nBuf = $makeSlice(sliceType$6, buf.$length, (((buf.$length + 1 >> 0) + s.length >> 0) + 1 >> 0)); + $copySlice(nBuf, buf); + buf = nBuf; + } + buf = $append(buf, quote); + width = 0; + while (true) { + if (!(s.length > 0)) { break; } + r = ((s.charCodeAt(0) >> 0)); + width = 1; + if (r >= 128) { + _tuple = utf8.DecodeRuneInString(s); + r = _tuple[0]; + width = _tuple[1]; + } + if ((width === 1) && (r === 65533)) { + buf = $appendSlice(buf, "\\x"); + buf = $append(buf, "0123456789abcdef".charCodeAt((s.charCodeAt(0) >>> 4 << 24 >>> 24))); + buf = $append(buf, "0123456789abcdef".charCodeAt(((s.charCodeAt(0) & 15) >>> 0))); + s = $substring(s, width); + continue; + } + buf = appendEscapedRune(buf, r, quote, ASCIIonly, graphicOnly); + s = $substring(s, width); + } + buf = $append(buf, quote); + return buf; + }; + appendQuotedRuneWith = function appendQuotedRuneWith$1(buf, r, quote, ASCIIonly, graphicOnly) { + var ASCIIonly, buf, graphicOnly, quote, r; + buf = $append(buf, quote); + if (!utf8.ValidRune(r)) { + r = 65533; + } + buf = appendEscapedRune(buf, r, quote, ASCIIonly, graphicOnly); + buf = $append(buf, quote); + return buf; + }; + appendEscapedRune = function appendEscapedRune$1(buf, r, quote, ASCIIonly, graphicOnly) { + var ASCIIonly, _1, buf, graphicOnly, n, quote, r, runeTmp, s, s$1; + runeTmp = arrayType$1.zero(); + if ((r === ((quote >> 0))) || (r === 92)) { + buf = $append(buf, 92); + buf = $append(buf, ((r << 24 >>> 24))); + return buf; + } + if (ASCIIonly) { + if (r < 128 && IsPrint(r)) { + buf = $append(buf, ((r << 24 >>> 24))); + return buf; + } + } else if (IsPrint(r) || graphicOnly && isInGraphicList(r)) { + n = utf8.EncodeRune(new sliceType$6(runeTmp), r); + buf = $appendSlice(buf, $subslice(new sliceType$6(runeTmp), 0, n)); + return buf; + } + _1 = r; + if (_1 === (7)) { + buf = $appendSlice(buf, "\\a"); + } else if (_1 === (8)) { + buf = $appendSlice(buf, "\\b"); + } else if (_1 === (12)) { + buf = $appendSlice(buf, "\\f"); + } else if (_1 === (10)) { + buf = $appendSlice(buf, "\\n"); + } else if (_1 === (13)) { + buf = $appendSlice(buf, "\\r"); + } else if (_1 === (9)) { + buf = $appendSlice(buf, "\\t"); + } else if (_1 === (11)) { + buf = $appendSlice(buf, "\\v"); + } else { + if (r < 32 || (r === 127)) { + buf = $appendSlice(buf, "\\x"); + buf = $append(buf, "0123456789abcdef".charCodeAt((((r << 24 >>> 24)) >>> 4 << 24 >>> 24))); + buf = $append(buf, "0123456789abcdef".charCodeAt(((((r << 24 >>> 24)) & 15) >>> 0))); + } else if (!utf8.ValidRune(r)) { + r = 65533; + buf = $appendSlice(buf, "\\u"); + s = 12; + while (true) { + if (!(s >= 0)) { break; } + buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s >>> 0)), 31)) >> 0) & 15))); + s = s - (4) >> 0; + } + } else if (r < 65536) { + buf = $appendSlice(buf, "\\u"); + s = 12; + while (true) { + if (!(s >= 0)) { break; } + buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s >>> 0)), 31)) >> 0) & 15))); + s = s - (4) >> 0; + } + } else { + buf = $appendSlice(buf, "\\U"); + s$1 = 28; + while (true) { + if (!(s$1 >= 0)) { break; } + buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min(((s$1 >>> 0)), 31)) >> 0) & 15))); + s$1 = s$1 - (4) >> 0; + } + } + } + return buf; + }; + Quote = function Quote$1(s) { + var s; + return quoteWith(s, 34, false, false); + }; + $pkg.Quote = Quote; + AppendQuote = function AppendQuote$1(dst, s) { + var dst, s; + return appendQuotedWith(dst, s, 34, false, false); + }; + $pkg.AppendQuote = AppendQuote; + QuoteToASCII = function QuoteToASCII$1(s) { + var s; + return quoteWith(s, 34, true, false); + }; + $pkg.QuoteToASCII = QuoteToASCII; + AppendQuoteToASCII = function AppendQuoteToASCII$1(dst, s) { + var dst, s; + return appendQuotedWith(dst, s, 34, true, false); + }; + $pkg.AppendQuoteToASCII = AppendQuoteToASCII; + AppendQuoteRune = function AppendQuoteRune$1(dst, r) { + var dst, r; + return appendQuotedRuneWith(dst, r, 39, false, false); + }; + $pkg.AppendQuoteRune = AppendQuoteRune; + AppendQuoteRuneToASCII = function AppendQuoteRuneToASCII$1(dst, r) { + var dst, r; + return appendQuotedRuneWith(dst, r, 39, true, false); + }; + $pkg.AppendQuoteRuneToASCII = AppendQuoteRuneToASCII; + CanBackquote = function CanBackquote$1(s) { + var _tuple, r, s, wid; + while (true) { + if (!(s.length > 0)) { break; } + _tuple = utf8.DecodeRuneInString(s); + r = _tuple[0]; + wid = _tuple[1]; + s = $substring(s, wid); + if (wid > 1) { + if (r === 65279) { + return false; + } + continue; + } + if (r === 65533) { + return false; + } + if ((r < 32 && !((r === 9))) || (r === 96) || (r === 127)) { + return false; + } + } + return true; + }; + $pkg.CanBackquote = CanBackquote; + unhex = function unhex$1(b) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, c, ok, v; + v = 0; + ok = false; + c = ((b >> 0)); + if (48 <= c && c <= 57) { + _tmp = c - 48 >> 0; + _tmp$1 = true; + v = _tmp; + ok = _tmp$1; + return [v, ok]; + } else if (97 <= c && c <= 102) { + _tmp$2 = (c - 97 >> 0) + 10 >> 0; + _tmp$3 = true; + v = _tmp$2; + ok = _tmp$3; + return [v, ok]; + } else if (65 <= c && c <= 70) { + _tmp$4 = (c - 65 >> 0) + 10 >> 0; + _tmp$5 = true; + v = _tmp$4; + ok = _tmp$5; + return [v, ok]; + } + return [v, ok]; + }; + UnquoteChar = function UnquoteChar$1(s, quote) { + var _1, _2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, c, c$1, err, j, j$1, multibyte, n, ok, quote, r, s, size, tail, v, v$1, value, x, x$1; + value = 0; + multibyte = false; + tail = ""; + err = $ifaceNil; + if (s.length === 0) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + c = s.charCodeAt(0); + if ((c === quote) && ((quote === 39) || (quote === 34))) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } else if (c >= 128) { + _tuple = utf8.DecodeRuneInString(s); + r = _tuple[0]; + size = _tuple[1]; + _tmp = r; + _tmp$1 = true; + _tmp$2 = $substring(s, size); + _tmp$3 = $ifaceNil; + value = _tmp; + multibyte = _tmp$1; + tail = _tmp$2; + err = _tmp$3; + return [value, multibyte, tail, err]; + } else if (!((c === 92))) { + _tmp$4 = ((s.charCodeAt(0) >> 0)); + _tmp$5 = false; + _tmp$6 = $substring(s, 1); + _tmp$7 = $ifaceNil; + value = _tmp$4; + multibyte = _tmp$5; + tail = _tmp$6; + err = _tmp$7; + return [value, multibyte, tail, err]; + } + if (s.length <= 1) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + c$1 = s.charCodeAt(1); + s = $substring(s, 2); + switch (0) { default: + _1 = c$1; + if (_1 === (97)) { + value = 7; + } else if (_1 === (98)) { + value = 8; + } else if (_1 === (102)) { + value = 12; + } else if (_1 === (110)) { + value = 10; + } else if (_1 === (114)) { + value = 13; + } else if (_1 === (116)) { + value = 9; + } else if (_1 === (118)) { + value = 11; + } else if ((_1 === (120)) || (_1 === (117)) || (_1 === (85))) { + n = 0; + _2 = c$1; + if (_2 === (120)) { + n = 2; + } else if (_2 === (117)) { + n = 4; + } else if (_2 === (85)) { + n = 8; + } + v = 0; + if (s.length < n) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + j = 0; + while (true) { + if (!(j < n)) { break; } + _tuple$1 = unhex(s.charCodeAt(j)); + x = _tuple$1[0]; + ok = _tuple$1[1]; + if (!ok) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + v = (v << 4 >> 0) | x; + j = j + (1) >> 0; + } + s = $substring(s, n); + if (c$1 === 120) { + value = v; + break; + } + if (!utf8.ValidRune(v)) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + value = v; + multibyte = true; + } else if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55))) { + v$1 = ((c$1 >> 0)) - 48 >> 0; + if (s.length < 2) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + j$1 = 0; + while (true) { + if (!(j$1 < 2)) { break; } + x$1 = ((s.charCodeAt(j$1) >> 0)) - 48 >> 0; + if (x$1 < 0 || x$1 > 7) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + v$1 = ((v$1 << 3 >> 0)) | x$1; + j$1 = j$1 + (1) >> 0; + } + s = $substring(s, 2); + if (v$1 > 255) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + value = v$1; + } else if (_1 === (92)) { + value = 92; + } else if ((_1 === (39)) || (_1 === (34))) { + if (!((c$1 === quote))) { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + value = ((c$1 >> 0)); + } else { + err = $pkg.ErrSyntax; + return [value, multibyte, tail, err]; + } + } + tail = s; + return [value, multibyte, tail, err]; + }; + $pkg.UnquoteChar = UnquoteChar; + Unquote = function Unquote$1(s) { + var _tuple, err, out, rem, s; + _tuple = unquote(s, true); + out = _tuple[0]; + rem = _tuple[1]; + err = _tuple[2]; + if (rem.length > 0) { + return ["", $pkg.ErrSyntax]; + } + return [out, err]; + }; + $pkg.Unquote = Unquote; + unquote = function unquote$1(in$1, unescape) { + var _1, _2, _q, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, arr, buf, buf$1, end, err, err$1, i, in$1, in0, multibyte, n, n$1, out, quote, r, r$1, rem, rem$1, unescape, valid; + out = ""; + rem = ""; + err = $ifaceNil; + if (in$1.length < 2) { + _tmp = ""; + _tmp$1 = in$1; + _tmp$2 = $pkg.ErrSyntax; + out = _tmp; + rem = _tmp$1; + err = _tmp$2; + return [out, rem, err]; + } + quote = in$1.charCodeAt(0); + end = index($substring(in$1, 1), quote); + if (end < 0) { + _tmp$3 = ""; + _tmp$4 = in$1; + _tmp$5 = $pkg.ErrSyntax; + out = _tmp$3; + rem = _tmp$4; + err = _tmp$5; + return [out, rem, err]; + } + end = end + (2) >> 0; + _1 = quote; + if (_1 === (96)) { + if (!unescape) { + out = $substring(in$1, 0, end); + } else if (!contains($substring(in$1, 0, end), 13)) { + out = $substring(in$1, 1, (end - 1 >> 0)); + } else { + buf = $makeSlice(sliceType$6, 0, (((end - 1 >> 0) - 1 >> 0) - 1 >> 0)); + i = 1; + while (true) { + if (!(i < (end - 1 >> 0))) { break; } + if (!((in$1.charCodeAt(i) === 13))) { + buf = $append(buf, in$1.charCodeAt(i)); + } + i = i + (1) >> 0; + } + out = ($bytesToString(buf)); + } + _tmp$6 = out; + _tmp$7 = $substring(in$1, end); + _tmp$8 = $ifaceNil; + out = _tmp$6; + rem = _tmp$7; + err = _tmp$8; + return [out, rem, err]; + } else if ((_1 === (34)) || (_1 === (39))) { + if (!contains($substring(in$1, 0, end), 92) && !contains($substring(in$1, 0, end), 10)) { + valid = false; + _2 = quote; + if (_2 === (34)) { + valid = utf8.ValidString($substring(in$1, 1, (end - 1 >> 0))); + } else if (_2 === (39)) { + _tuple = utf8.DecodeRuneInString($substring(in$1, 1, (end - 1 >> 0))); + r = _tuple[0]; + n = _tuple[1]; + valid = (((1 + n >> 0) + 1 >> 0) === end) && (!((r === 65533)) || !((n === 1))); + } + if (valid) { + out = $substring(in$1, 0, end); + if (unescape) { + out = $substring(out, 1, (end - 1 >> 0)); + } + _tmp$9 = out; + _tmp$10 = $substring(in$1, end); + _tmp$11 = $ifaceNil; + out = _tmp$9; + rem = _tmp$10; + err = _tmp$11; + return [out, rem, err]; + } + } + buf$1 = sliceType$6.nil; + in0 = in$1; + in$1 = $substring(in$1, 1); + if (unescape) { + buf$1 = $makeSlice(sliceType$6, 0, (_q = ($imul(3, end)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); + } + while (true) { + if (!(in$1.length > 0 && !((in$1.charCodeAt(0) === quote)))) { break; } + _tuple$1 = UnquoteChar(in$1, quote); + r$1 = _tuple$1[0]; + multibyte = _tuple$1[1]; + rem$1 = _tuple$1[2]; + err$1 = _tuple$1[3]; + if ((in$1.charCodeAt(0) === 10) || !($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp$12 = ""; + _tmp$13 = in0; + _tmp$14 = $pkg.ErrSyntax; + out = _tmp$12; + rem = _tmp$13; + err = _tmp$14; + return [out, rem, err]; + } + in$1 = rem$1; + if (unescape) { + if (r$1 < 128 || !multibyte) { + buf$1 = $append(buf$1, ((r$1 << 24 >>> 24))); + } else { + arr = arrayType$1.zero(); + n$1 = utf8.EncodeRune(new sliceType$6(arr), r$1); + buf$1 = $appendSlice(buf$1, $subslice(new sliceType$6(arr), 0, n$1)); + } + } + if (quote === 39) { + break; + } + } + if (!(in$1.length > 0 && (in$1.charCodeAt(0) === quote))) { + _tmp$15 = ""; + _tmp$16 = in0; + _tmp$17 = $pkg.ErrSyntax; + out = _tmp$15; + rem = _tmp$16; + err = _tmp$17; + return [out, rem, err]; + } + in$1 = $substring(in$1, 1); + if (unescape) { + _tmp$18 = ($bytesToString(buf$1)); + _tmp$19 = in$1; + _tmp$20 = $ifaceNil; + out = _tmp$18; + rem = _tmp$19; + err = _tmp$20; + return [out, rem, err]; + } + _tmp$21 = $substring(in0, 0, (in0.length - in$1.length >> 0)); + _tmp$22 = in$1; + _tmp$23 = $ifaceNil; + out = _tmp$21; + rem = _tmp$22; + err = _tmp$23; + return [out, rem, err]; + } else { + _tmp$24 = ""; + _tmp$25 = in$1; + _tmp$26 = $pkg.ErrSyntax; + out = _tmp$24; + rem = _tmp$25; + err = _tmp$26; + return [out, rem, err]; + } + }; + bsearch16 = function bsearch16$1(a, x) { + var _tmp, _tmp$1, a, h, i, j, x; + _tmp = 0; + _tmp$1 = a.$length; + i = _tmp; + j = _tmp$1; + while (true) { + if (!(i < j)) { break; } + h = i + (((j - i >> 0)) >> 1 >> 0) >> 0; + if (((h < 0 || h >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + h]) < x) { + i = h + 1 >> 0; + } else { + j = h; + } + } + return i; + }; + bsearch32 = function bsearch32$1(a, x) { + var _tmp, _tmp$1, a, h, i, j, x; + _tmp = 0; + _tmp$1 = a.$length; + i = _tmp; + j = _tmp$1; + while (true) { + if (!(i < j)) { break; } + h = i + (((j - i >> 0)) >> 1 >> 0) >> 0; + if (((h < 0 || h >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + h]) < x) { + i = h + 1 >> 0; + } else { + j = h; + } + } + return i; + }; + IsPrint = function IsPrint$1(r) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, i, i$1, isNotPrint, isNotPrint$1, isPrint, isPrint$1, j, j$1, r, rr, rr$1, x, x$1, x$2, x$3; + if (r <= 255) { + if (32 <= r && r <= 126) { + return true; + } + if (161 <= r && r <= 255) { + return !((r === 173)); + } + return false; + } + if (0 <= r && r < 65536) { + _tmp = ((r << 16 >>> 16)); + _tmp$1 = isPrint16; + _tmp$2 = isNotPrint16; + rr = _tmp; + isPrint = _tmp$1; + isNotPrint = _tmp$2; + i = bsearch16(isPrint, rr); + if (i >= isPrint.$length || rr < (x = (i & ~1) >> 0, ((x < 0 || x >= isPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint.$array[isPrint.$offset + x])) || (x$1 = i | 1, ((x$1 < 0 || x$1 >= isPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint.$array[isPrint.$offset + x$1])) < rr) { + return false; + } + j = bsearch16(isNotPrint, rr); + return j >= isNotPrint.$length || !((((j < 0 || j >= isNotPrint.$length) ? ($throwRuntimeError("index out of range"), undefined) : isNotPrint.$array[isNotPrint.$offset + j]) === rr)); + } + _tmp$3 = ((r >>> 0)); + _tmp$4 = isPrint32; + _tmp$5 = isNotPrint32; + rr$1 = _tmp$3; + isPrint$1 = _tmp$4; + isNotPrint$1 = _tmp$5; + i$1 = bsearch32(isPrint$1, rr$1); + if (i$1 >= isPrint$1.$length || rr$1 < (x$2 = (i$1 & ~1) >> 0, ((x$2 < 0 || x$2 >= isPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint$1.$array[isPrint$1.$offset + x$2])) || (x$3 = i$1 | 1, ((x$3 < 0 || x$3 >= isPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isPrint$1.$array[isPrint$1.$offset + x$3])) < rr$1) { + return false; + } + if (r >= 131072) { + return true; + } + r = r - (65536) >> 0; + j$1 = bsearch16(isNotPrint$1, ((r << 16 >>> 16))); + return j$1 >= isNotPrint$1.$length || !((((j$1 < 0 || j$1 >= isNotPrint$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : isNotPrint$1.$array[isNotPrint$1.$offset + j$1]) === ((r << 16 >>> 16)))); + }; + $pkg.IsPrint = IsPrint; + isInGraphicList = function isInGraphicList$1(r) { + var i, r, rr; + if (r > 65535) { + return false; + } + rr = ((r << 16 >>> 16)); + i = bsearch16(isGraphic, rr); + return i < isGraphic.$length && (rr === ((i < 0 || i >= isGraphic.$length) ? ($throwRuntimeError("index out of range"), undefined) : isGraphic.$array[isGraphic.$offset + i])); + }; + FormatUint = function FormatUint$1(i, base) { + var _tuple, base, i, s; + if (true && (i.$high < 0 || (i.$high === 0 && i.$low < 100)) && (base === 10)) { + return small(((i.$low >> 0))); + } + _tuple = formatBits(sliceType$6.nil, i, base, false, false); + s = _tuple[1]; + return s; + }; + $pkg.FormatUint = FormatUint; + FormatInt = function FormatInt$1(i, base) { + var _tuple, base, i, s; + if (true && (0 < i.$high || (0 === i.$high && 0 <= i.$low)) && (i.$high < 0 || (i.$high === 0 && i.$low < 100)) && (base === 10)) { + return small((((i.$low + ((i.$high >> 31) * 4294967296)) >> 0))); + } + _tuple = formatBits(sliceType$6.nil, (new $Uint64(i.$high, i.$low)), base, (i.$high < 0 || (i.$high === 0 && i.$low < 0)), false); + s = _tuple[1]; + return s; + }; + $pkg.FormatInt = FormatInt; + AppendInt = function AppendInt$1(dst, i, base) { + var _tuple, base, dst, i; + if (true && (0 < i.$high || (0 === i.$high && 0 <= i.$low)) && (i.$high < 0 || (i.$high === 0 && i.$low < 100)) && (base === 10)) { + return $appendSlice(dst, small((((i.$low + ((i.$high >> 31) * 4294967296)) >> 0)))); + } + _tuple = formatBits(dst, (new $Uint64(i.$high, i.$low)), base, (i.$high < 0 || (i.$high === 0 && i.$low < 0)), true); + dst = _tuple[0]; + return dst; + }; + $pkg.AppendInt = AppendInt; + AppendUint = function AppendUint$1(dst, i, base) { + var _tuple, base, dst, i; + if (true && (i.$high < 0 || (i.$high === 0 && i.$low < 100)) && (base === 10)) { + return $appendSlice(dst, small(((i.$low >> 0)))); + } + _tuple = formatBits(dst, i, base, false, true); + dst = _tuple[0]; + return dst; + }; + $pkg.AppendUint = AppendUint; + small = function small$1(i) { + var i; + if (i < 10) { + return $substring("0123456789abcdefghijklmnopqrstuvwxyz", i, (i + 1 >> 0)); + } + return $substring("00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899", ($imul(i, 2)), (($imul(i, 2)) + 2 >> 0)); + }; + formatBits = function formatBits$1(dst, u, base, neg, append_) { + var _q, _q$1, _r, _r$1, a, append_, b, b$1, base, d, dst, i, is, is$1, is$2, j, m, neg, q, q$1, s, shift, u, us, us$1, x, x$1, x$2, x$3, x$4, x$5; + d = sliceType$6.nil; + s = ""; + if (base < 2 || base > 36) { + $panic(new $String("strconv: illegal AppendInt/FormatInt base")); + } + a = arrayType$2.zero(); + i = 65; + if (neg) { + u = new $Uint64(-u.$high, -u.$low); + } + if (base === 10) { + if (true) { + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 1000000000)))) { break; } + q = $div64(u, new $Uint64(0, 1000000000), false); + us = (((x = $mul64(q, new $Uint64(0, 1000000000)), new $Uint64(u.$high - x.$high, u.$low - x.$low)).$low >>> 0)); + j = 4; + while (true) { + if (!(j > 0)) { break; } + is = $imul((_r = us % 100, _r === _r ? _r : $throwRuntimeError("integer divide by zero")), 2) >>> 0; + us = (_q = us / (100), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + i = i - (2) >> 0; + (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$1] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is + 1 >>> 0)))); + (x$2 = i + 0 >> 0, ((x$2 < 0 || x$2 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$2] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is + 0 >>> 0)))); + j = j - (1) >> 0; + } + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((($imul(us, 2) >>> 0) + 1 >>> 0))); + u = q; + } + } + us$1 = ((u.$low >>> 0)); + while (true) { + if (!(us$1 >= 100)) { break; } + is$1 = $imul((_r$1 = us$1 % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")), 2) >>> 0; + us$1 = (_q$1 = us$1 / (100), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); + i = i - (2) >> 0; + (x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$3] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$1 + 1 >>> 0)))); + (x$4 = i + 0 >> 0, ((x$4 < 0 || x$4 >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[x$4] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$1 + 0 >>> 0)))); + } + is$2 = $imul(us$1, 2) >>> 0; + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((is$2 + 1 >>> 0))); + if (us$1 >= 10) { + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt(is$2)); + } + } else if (isPowerOfTwo(base)) { + shift = (((bits.TrailingZeros(((base >>> 0))) >>> 0)) & 7) >>> 0; + b = (new $Uint64(0, base)); + m = ((base >>> 0)) - 1 >>> 0; + while (true) { + if (!((u.$high > b.$high || (u.$high === b.$high && u.$low >= b.$low)))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((((u.$low >>> 0)) & m) >>> 0))); + u = $shiftRightUint64(u, (shift)); + } + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((u.$low >>> 0)))); + } else { + b$1 = (new $Uint64(0, base)); + while (true) { + if (!((u.$high > b$1.$high || (u.$high === b$1.$high && u.$low >= b$1.$low)))) { break; } + i = i - (1) >> 0; + q$1 = $div64(u, b$1, false); + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt((((x$5 = $mul64(q$1, b$1), new $Uint64(u.$high - x$5.$high, u.$low - x$5.$low)).$low >>> 0)))); + u = q$1; + } + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((u.$low >>> 0)))); + } + if (neg) { + i = i - (1) >> 0; + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = 45); + } + if (append_) { + d = $appendSlice(dst, $subslice(new sliceType$6(a), i)); + return [d, s]; + } + s = ($bytesToString($subslice(new sliceType$6(a), i))); + return [d, s]; + }; + isPowerOfTwo = function isPowerOfTwo$1(x) { + var x; + return (x & ((x - 1 >> 0))) === 0; + }; + Itoa = function Itoa$1(i) { + var i; + return $internalize(i.toString(), $String); + }; + $pkg.Itoa = Itoa; + Atoi = function Atoi$1(s) { + var floatval, i, jsValue, s, v; + if (s.length === 0) { + return [0, syntaxError("Atoi", s)]; + } + i = 0; + while (true) { + if (!(i < s.length)) { break; } + v = s.charCodeAt(i); + if (v < 48 || v > 57) { + if (!((v === 43)) && !((v === 45))) { + return [0, syntaxError("Atoi", s)]; + } + } + i = i + (1) >> 0; + } + jsValue = $global.Number($externalize(s, $String), 10); + if (!!!($global.isFinite(jsValue))) { + return [0, syntaxError("Atoi", s)]; + } + floatval = $parseFloat(jsValue); + if (floatval > 2.147483647e+09) { + return [2147483647, rangeError("Atoi", s)]; + } else if (floatval < -2.147483648e+09) { + return [-2147483648, rangeError("Atoi", s)]; + } + return [$parseInt(jsValue) >> 0, $ifaceNil]; + }; + $pkg.Atoi = Atoi; + ryuFtoaFixed32 = function ryuFtoaFixed32$1(d, mant, exp, prec) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, d, d0, dexp2, dfrac, di, e2, exact, exp, extra, extraMask, mant, prec, q, roundUp, y, y$1, y$2, y$3, y$4, y$5, y$6; + if (prec < 0) { + $panic(new $String("ryuFtoaFixed32 called with negative prec")); + } + if (prec > 9) { + $panic(new $String("ryuFtoaFixed32 called with prec > 9")); + } + if (mant === 0) { + _tmp = 0; + _tmp$1 = 0; + d.nd = _tmp; + d.dp = _tmp$1; + return; + } + e2 = exp; + b = bits.Len32(mant); + if (b < 25) { + mant = (y = ((((25 - b >> 0) >>> 0))), y < 32 ? (mant << y) : 0) >>> 0; + e2 = e2 + ((b - 25 >> 0)) >> 0; + } + q = (-mulByLog2Log10(e2 + 24 >> 0) + prec >> 0) - 1 >> 0; + exact = q <= 27 && q >= 0; + _tuple = mult64bitPow10(mant, e2, q); + di = _tuple[0]; + dexp2 = _tuple[1]; + d0 = _tuple[2]; + if (dexp2 >= 0) { + $panic(new $String("not enough significant bits after mult64bitPow10")); + } + if (q < 0 && q >= -10 && divisibleByPower5((new $Uint64(0, mant)), -q)) { + exact = true; + d0 = true; + } + extra = ((-dexp2 >>> 0)); + extraMask = ((((y$1 = extra, y$1 < 32 ? (1 << y$1) : 0) >>> 0) - 1 >>> 0)); + _tmp$2 = (y$2 = extra, y$2 < 32 ? (di >>> y$2) : 0) >>> 0; + _tmp$3 = (di & extraMask) >>> 0; + di = _tmp$2; + dfrac = _tmp$3; + roundUp = false; + if (exact) { + roundUp = dfrac > ((y$3 = ((extra - 1 >>> 0)), y$3 < 32 ? (1 << y$3) : 0) >>> 0) || ((dfrac === ((y$4 = ((extra - 1 >>> 0)), y$4 < 32 ? (1 << y$4) : 0) >>> 0)) && !d0) || ((dfrac === ((y$5 = ((extra - 1 >>> 0)), y$5 < 32 ? (1 << y$5) : 0) >>> 0)) && d0 && (((di & 1) >>> 0) === 1)); + } else { + roundUp = ((y$6 = ((extra - 1 >>> 0)), y$6 < 32 ? (dfrac >>> y$6) : 0) >>> 0) === 1; + } + if (!((dfrac === 0))) { + d0 = false; + } + formatDecimal(d, (new $Uint64(0, di)), !d0, roundUp, prec); + d.dp = d.dp - (q) >> 0; + }; + ryuFtoaFixed64 = function ryuFtoaFixed64$1(d, mant, exp, prec) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, d, d0, dexp2, dfrac, di, e2, exact, exp, extra, extraMask, mant, prec, q, roundUp, x, x$1, x$2, x$3, x$4, x$5; + if (prec > 18) { + $panic(new $String("ryuFtoaFixed64 called with prec > 18")); + } + if ((mant.$high === 0 && mant.$low === 0)) { + _tmp = 0; + _tmp$1 = 0; + d.nd = _tmp; + d.dp = _tmp$1; + return; + } + e2 = exp; + b = bits.Len64(mant); + if (b < 55) { + mant = $shiftLeft64(mant, (((55 - b >> 0) >>> 0))); + e2 = e2 + ((b - 55 >> 0)) >> 0; + } + q = (-mulByLog2Log10(e2 + 54 >> 0) + prec >> 0) - 1 >> 0; + exact = q <= 55 && q >= 0; + _tuple = mult128bitPow10(mant, e2, q); + di = _tuple[0]; + dexp2 = _tuple[1]; + d0 = _tuple[2]; + if (dexp2 >= 0) { + $panic(new $String("not enough significant bits after mult128bitPow10")); + } + if (q < 0 && q >= -22 && divisibleByPower5(mant, -q)) { + exact = true; + d0 = true; + } + extra = ((-dexp2 >>> 0)); + extraMask = ((x = $shiftLeft64(new $Uint64(0, 1), extra), new $Uint64(x.$high - 0, x.$low - 1))); + _tmp$2 = $shiftRightUint64(di, extra); + _tmp$3 = new $Uint64(di.$high & extraMask.$high, (di.$low & extraMask.$low) >>> 0); + di = _tmp$2; + dfrac = _tmp$3; + roundUp = false; + if (exact) { + roundUp = (x$1 = $shiftLeft64(new $Uint64(0, 1), ((extra - 1 >>> 0))), (dfrac.$high > x$1.$high || (dfrac.$high === x$1.$high && dfrac.$low > x$1.$low))) || ((x$2 = $shiftLeft64(new $Uint64(0, 1), ((extra - 1 >>> 0))), (dfrac.$high === x$2.$high && dfrac.$low === x$2.$low)) && !d0) || ((x$3 = $shiftLeft64(new $Uint64(0, 1), ((extra - 1 >>> 0))), (dfrac.$high === x$3.$high && dfrac.$low === x$3.$low)) && d0 && (x$4 = new $Uint64(di.$high & 0, (di.$low & 1) >>> 0), (x$4.$high === 0 && x$4.$low === 1))); + } else { + roundUp = (x$5 = $shiftRightUint64(dfrac, ((extra - 1 >>> 0))), (x$5.$high === 0 && x$5.$low === 1)); + } + if (!((dfrac.$high === 0 && dfrac.$low === 0))) { + d0 = false; + } + formatDecimal(d, di, !d0, roundUp, prec); + d.dp = d.dp - (q) >> 0; + }; + formatDecimal = function formatDecimal$1(d, m, trunc, roundUp, prec) { + var _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, a, b, d, m, max$1, n, prec, roundUp, trimmed, trunc, v, v1, v2, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + max$1 = ((prec < 0 || prec >= uint64pow10.length) ? ($throwRuntimeError("index out of range"), undefined) : uint64pow10[prec]); + trimmed = 0; + while (true) { + if (!((m.$high > max$1.$high || (m.$high === max$1.$high && m.$low >= max$1.$low)))) { break; } + _tmp = $div64(m, new $Uint64(0, 10), false); + _tmp$1 = $div64(m, new $Uint64(0, 10), true); + a = _tmp; + b = _tmp$1; + m = a; + trimmed = trimmed + (1) >> 0; + if ((b.$high > 0 || (b.$high === 0 && b.$low > 5))) { + roundUp = true; + } else if ((b.$high < 0 || (b.$high === 0 && b.$low < 5))) { + roundUp = false; + } else { + roundUp = trunc || (x = new $Uint64(m.$high & 0, (m.$low & 1) >>> 0), (x.$high === 0 && x.$low === 1)); + } + if (!((b.$high === 0 && b.$low === 0))) { + trunc = true; + } + } + if (roundUp) { + m = (x$1 = new $Uint64(0, 1), new $Uint64(m.$high + x$1.$high, m.$low + x$1.$low)); + } + if ((m.$high > max$1.$high || (m.$high === max$1.$high && m.$low >= max$1.$low))) { + m = $div64(m, (new $Uint64(0, 10)), false); + trimmed = trimmed + (1) >> 0; + } + n = ((prec >>> 0)); + d.nd = prec; + v = m; + while (true) { + if (!((v.$high > 0 || (v.$high === 0 && v.$low >= 100)))) { break; } + _tmp$2 = new $Uint64(0, 0); + _tmp$3 = new $Uint64(0, 0); + v1 = _tmp$2; + v2 = _tmp$3; + if ((x$2 = $shiftRightUint64(v, 32), (x$2.$high === 0 && x$2.$low === 0))) { + _tmp$4 = (new $Uint64(0, (_q = ((v.$low >>> 0)) / 100, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")))); + _tmp$5 = (new $Uint64(0, (_r = ((v.$low >>> 0)) % 100, _r === _r ? _r : $throwRuntimeError("integer divide by zero")))); + v1 = _tmp$4; + v2 = _tmp$5; + } else { + _tmp$6 = $div64(v, new $Uint64(0, 100), false); + _tmp$7 = $div64(v, new $Uint64(0, 100), true); + v1 = _tmp$6; + v2 = _tmp$7; + } + n = n - (2) >>> 0; + (x$4 = d.d, x$5 = n + 1 >>> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt($flatten64((x$3 = $mul64(new $Uint64(0, 2), v2), new $Uint64(x$3.$high + 0, x$3.$low + 1)))))); + (x$7 = d.d, x$8 = n + 0 >>> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt($flatten64((x$6 = $mul64(new $Uint64(0, 2), v2), new $Uint64(x$6.$high + 0, x$6.$low + 0)))))); + v = v1; + } + if ((v.$high > 0 || (v.$high === 0 && v.$low > 0))) { + n = n - (1) >>> 0; + (x$10 = d.d, ((n < 0 || n >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + n] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt($flatten64((x$9 = $mul64(new $Uint64(0, 2), v), new $Uint64(x$9.$high + 0, x$9.$low + 1)))))); + } + if ((v.$high > 0 || (v.$high === 0 && v.$low >= 10))) { + n = n - (1) >>> 0; + (x$11 = d.d, ((n < 0 || n >= x$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + n] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt($flatten64($mul64(new $Uint64(0, 2), v))))); + } + while (true) { + if (!((x$12 = d.d, x$13 = d.nd - 1 >> 0, ((x$13 < 0 || x$13 >= x$12.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + x$13])) === 48)) { break; } + d.nd = d.nd - (1) >> 0; + trimmed = trimmed + (1) >> 0; + } + d.dp = d.nd + trimmed >> 0; + }; + ryuFtoaShortest = function ryuFtoaShortest$1(d, mant, exp, flt) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, c0, cup, d, dc, dc0, dc32, dl, dl0, dl32, du, du0, du32, e2, exp, extra, extraMask, flt, fracc, fracl, fracu, lok, mant, mc, ml, mu, q, uok, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; + if ((mant.$high === 0 && mant.$low === 0)) { + _tmp = 0; + _tmp$1 = 0; + d.nd = _tmp; + d.dp = _tmp$1; + return; + } + if (exp <= 0 && bits.TrailingZeros64(mant) >= -exp) { + mant = $shiftRightUint64(mant, (((-exp >>> 0)))); + ryuDigits(d, mant, mant, mant, true, false); + return; + } + _tuple = computeBounds(mant, exp, flt); + ml = _tuple[0]; + mc = _tuple[1]; + mu = _tuple[2]; + e2 = _tuple[3]; + if (e2 === 0) { + ryuDigits(d, ml, mc, mu, true, false); + return; + } + q = mulByLog2Log10(-e2) + 1 >> 0; + _tmp$2 = new $Uint64(0, 0); + _tmp$3 = new $Uint64(0, 0); + _tmp$4 = new $Uint64(0, 0); + dl = _tmp$2; + dc = _tmp$3; + du = _tmp$4; + _tmp$5 = false; + _tmp$6 = false; + _tmp$7 = false; + dl0 = _tmp$5; + dc0 = _tmp$6; + du0 = _tmp$7; + if (flt === float32info) { + _tmp$8 = 0; + _tmp$9 = 0; + _tmp$10 = 0; + dl32 = _tmp$8; + dc32 = _tmp$9; + du32 = _tmp$10; + _tuple$1 = mult64bitPow10(((ml.$low >>> 0)), e2, q); + dl32 = _tuple$1[0]; + dl0 = _tuple$1[2]; + _tuple$2 = mult64bitPow10(((mc.$low >>> 0)), e2, q); + dc32 = _tuple$2[0]; + dc0 = _tuple$2[2]; + _tuple$3 = mult64bitPow10(((mu.$low >>> 0)), e2, q); + du32 = _tuple$3[0]; + e2 = _tuple$3[1]; + du0 = _tuple$3[2]; + _tmp$11 = (new $Uint64(0, dl32)); + _tmp$12 = (new $Uint64(0, dc32)); + _tmp$13 = (new $Uint64(0, du32)); + dl = _tmp$11; + dc = _tmp$12; + du = _tmp$13; + } else { + _tuple$4 = mult128bitPow10(ml, e2, q); + dl = _tuple$4[0]; + dl0 = _tuple$4[2]; + _tuple$5 = mult128bitPow10(mc, e2, q); + dc = _tuple$5[0]; + dc0 = _tuple$5[2]; + _tuple$6 = mult128bitPow10(mu, e2, q); + du = _tuple$6[0]; + e2 = _tuple$6[1]; + du0 = _tuple$6[2]; + } + if (e2 >= 0) { + $panic(new $String("not enough significant bits after mult128bitPow10")); + } + if (q > 55) { + _tmp$14 = false; + _tmp$15 = false; + _tmp$16 = false; + dl0 = _tmp$14; + dc0 = _tmp$15; + du0 = _tmp$16; + } + if (q < 0 && q >= -24) { + if (divisibleByPower5(ml, -q)) { + dl0 = true; + } + if (divisibleByPower5(mc, -q)) { + dc0 = true; + } + if (divisibleByPower5(mu, -q)) { + du0 = true; + } + } + extra = ((-e2 >>> 0)); + extraMask = ((x = $shiftLeft64(new $Uint64(0, 1), extra), new $Uint64(x.$high - 0, x.$low - 1))); + _tmp$17 = $shiftRightUint64(dl, extra); + _tmp$18 = new $Uint64(dl.$high & extraMask.$high, (dl.$low & extraMask.$low) >>> 0); + dl = _tmp$17; + fracl = _tmp$18; + _tmp$19 = $shiftRightUint64(dc, extra); + _tmp$20 = new $Uint64(dc.$high & extraMask.$high, (dc.$low & extraMask.$low) >>> 0); + dc = _tmp$19; + fracc = _tmp$20; + _tmp$21 = $shiftRightUint64(du, extra); + _tmp$22 = new $Uint64(du.$high & extraMask.$high, (du.$low & extraMask.$low) >>> 0); + du = _tmp$21; + fracu = _tmp$22; + uok = !du0 || (fracu.$high > 0 || (fracu.$high === 0 && fracu.$low > 0)); + if (du0 && (fracu.$high === 0 && fracu.$low === 0)) { + uok = (x$1 = new $Uint64(mant.$high & 0, (mant.$low & 1) >>> 0), (x$1.$high === 0 && x$1.$low === 0)); + } + if (!uok) { + du = (x$2 = new $Uint64(0, 1), new $Uint64(du.$high - x$2.$high, du.$low - x$2.$low)); + } + cup = false; + if (dc0) { + cup = (x$3 = $shiftLeft64(new $Uint64(0, 1), ((extra - 1 >>> 0))), (fracc.$high > x$3.$high || (fracc.$high === x$3.$high && fracc.$low > x$3.$low))) || ((x$4 = $shiftLeft64(new $Uint64(0, 1), ((extra - 1 >>> 0))), (fracc.$high === x$4.$high && fracc.$low === x$4.$low)) && (x$5 = new $Uint64(dc.$high & 0, (dc.$low & 1) >>> 0), (x$5.$high === 0 && x$5.$low === 1))); + } else { + cup = (x$6 = $shiftRightUint64(fracc, ((extra - 1 >>> 0))), (x$6.$high === 0 && x$6.$low === 1)); + } + lok = dl0 && (fracl.$high === 0 && fracl.$low === 0) && ((x$7 = new $Uint64(mant.$high & 0, (mant.$low & 1) >>> 0), (x$7.$high === 0 && x$7.$low === 0))); + if (!lok) { + dl = (x$8 = new $Uint64(0, 1), new $Uint64(dl.$high + x$8.$high, dl.$low + x$8.$low)); + } + c0 = dc0 && (fracc.$high === 0 && fracc.$low === 0); + ryuDigits(d, dl, dc, du, c0, cup); + d.dp = d.dp - (q) >> 0; + }; + mulByLog2Log10 = function mulByLog2Log10$1(x) { + var x; + return (($imul(x, 78913))) >> 18 >> 0; + }; + mulByLog10Log2 = function mulByLog10Log2$1(x) { + var x; + return (($imul(x, 108853))) >> 15 >> 0; + }; + computeBounds = function computeBounds$1(mant, exp, flt) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, central, e2, exp, flt, lower$1, mant, upper, x, x$1, x$2, x$3, x$4; + lower$1 = new $Uint64(0, 0); + central = new $Uint64(0, 0); + upper = new $Uint64(0, 0); + e2 = 0; + if (!((x = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high === x.$high && mant.$low === x.$low))) || (exp === ((flt.bias + 1 >> 0) - ((flt.mantbits >> 0)) >> 0))) { + _tmp = (x$1 = $mul64(new $Uint64(0, 2), mant), new $Uint64(x$1.$high - 0, x$1.$low - 1)); + _tmp$1 = $mul64(new $Uint64(0, 2), mant); + _tmp$2 = (x$2 = $mul64(new $Uint64(0, 2), mant), new $Uint64(x$2.$high + 0, x$2.$low + 1)); + lower$1 = _tmp; + central = _tmp$1; + upper = _tmp$2; + e2 = exp - 1 >> 0; + return [lower$1, central, upper, e2]; + } else { + _tmp$3 = (x$3 = $mul64(new $Uint64(0, 4), mant), new $Uint64(x$3.$high - 0, x$3.$low - 1)); + _tmp$4 = $mul64(new $Uint64(0, 4), mant); + _tmp$5 = (x$4 = $mul64(new $Uint64(0, 4), mant), new $Uint64(x$4.$high + 0, x$4.$low + 2)); + lower$1 = _tmp$3; + central = _tmp$4; + upper = _tmp$5; + e2 = exp - 2 >> 0; + return [lower$1, central, upper, e2]; + } + }; + ryuDigits = function ryuDigits$1(d, lower$1, central, upper, c0, cup) { + var _q, _r, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, c0, central, chi, clo, cup, d, lhi, llo, lower$1, n, uhi, ulo, upper, v, v1, v2, x, x$1, x$2, x$3; + _tuple = divmod1e9(lower$1); + lhi = _tuple[0]; + llo = _tuple[1]; + _tuple$1 = divmod1e9(central); + chi = _tuple$1[0]; + clo = _tuple$1[1]; + _tuple$2 = divmod1e9(upper); + uhi = _tuple$2[0]; + ulo = _tuple$2[1]; + if (uhi === 0) { + ryuDigits32(d, llo, clo, ulo, c0, cup, 8); + } else if (lhi < uhi) { + if (!((llo === 0))) { + lhi = lhi + (1) >>> 0; + } + c0 = c0 && (clo === 0); + cup = (clo > 500000000) || ((clo === 500000000) && cup); + ryuDigits32(d, lhi, chi, uhi, c0, cup, 8); + d.dp = d.dp + (9) >> 0; + } else { + d.nd = 0; + n = 9; + v = chi; + while (true) { + if (!(v > 0)) { break; } + _tmp = (_q = v / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + _tmp$1 = (_r = v % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); + v1 = _tmp; + v2 = _tmp$1; + v = v1; + n = n - (1) >>> 0; + (x = d.d, ((n < 0 || n >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + n] = (((v2 + 48 >>> 0) << 24 >>> 24)))); + } + d.d = $subslice(d.d, n); + d.nd = (((9 - n >>> 0) >> 0)); + ryuDigits32(d, llo, clo, ulo, c0, cup, d.nd + 8 >> 0); + } + while (true) { + if (!(d.nd > 0 && ((x$1 = d.d, x$2 = d.nd - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) === 48))) { break; } + d.nd = d.nd - (1) >> 0; + } + while (true) { + if (!(d.nd > 0 && ((x$3 = d.d, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])) === 48))) { break; } + d.nd = d.nd - (1) >> 0; + d.dp = d.dp - (1) >> 0; + d.d = $subslice(d.d, 1); + } + }; + ryuDigits32 = function ryuDigits32$1(d, lower$1, central, upper, c0, cup, endindex) { + var _q, _q$1, _q$2, _q$3, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, c, c0, cNextDigit, cdigit, central, cup, d, endindex, l, lower$1, n, trimmed, u, upper, v, v1, v2, x, x$1, x$2, x$3; + if (upper === 0) { + d.dp = endindex + 1 >> 0; + return; + } + trimmed = 0; + cNextDigit = 0; + while (true) { + if (!(upper > 0)) { break; } + l = (_q = ((lower$1 + 9 >>> 0)) / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + _tmp = (_q$1 = central / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); + _tmp$1 = (_r = central % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); + c = _tmp; + cdigit = _tmp$1; + u = (_q$2 = upper / 10, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >>> 0 : $throwRuntimeError("integer divide by zero")); + if (l > u) { + break; + } + if ((l === (c + 1 >>> 0)) && c < u) { + c = c + (1) >>> 0; + cdigit = 0; + cup = false; + } + trimmed = trimmed + (1) >> 0; + c0 = c0 && (cNextDigit === 0); + cNextDigit = ((cdigit >> 0)); + _tmp$2 = l; + _tmp$3 = c; + _tmp$4 = u; + lower$1 = _tmp$2; + central = _tmp$3; + upper = _tmp$4; + } + if (trimmed > 0) { + cup = cNextDigit > 5 || ((cNextDigit === 5) && !c0) || ((cNextDigit === 5) && c0 && (((central & 1) >>> 0) === 1)); + } + if (central < upper && cup) { + central = central + (1) >>> 0; + } + endindex = endindex - (trimmed) >> 0; + v = central; + n = endindex; + while (true) { + if (!(n > d.nd)) { break; } + _tmp$5 = (_q$3 = v / 100, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >>> 0 : $throwRuntimeError("integer divide by zero")); + _tmp$6 = (_r$1 = v % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")); + v1 = _tmp$5; + v2 = _tmp$6; + (x = d.d, ((n < 0 || n >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + n] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((($imul(2, v2) >>> 0) + 1 >>> 0)))); + (x$1 = d.d, x$2 = n - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2] = "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899".charCodeAt((($imul(2, v2) >>> 0) + 0 >>> 0)))); + n = n - (2) >> 0; + v = v1; + } + if (n === d.nd) { + (x$3 = d.d, ((n < 0 || n >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + n] = (((v + 48 >>> 0) << 24 >>> 24)))); + } + d.nd = endindex + 1 >> 0; + d.dp = d.nd + trimmed >> 0; + }; + mult64bitPow10 = function mult64bitPow10$1(m, e2, q) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, e2, exact, hi, lo, m, pow, q, resE, resM, x, x$1, x$2, x$3, x$4; + resM = 0; + resE = 0; + exact = false; + if (q === 0) { + _tmp = m << 6 >>> 0; + _tmp$1 = e2 - 6 >> 0; + _tmp$2 = true; + resM = _tmp; + resE = _tmp$1; + exact = _tmp$2; + return [resM, resE, exact]; + } + if (q < -348 || 347 < q) { + $panic(new $String("mult64bitPow10: power of 10 is out of range")); + } + pow = (x = q - -348 >> 0, ((x < 0 || x >= detailedPowersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : detailedPowersOfTen[x]))[1]; + if (q < 0) { + pow = (x$1 = new $Uint64(0, 1), new $Uint64(pow.$high + x$1.$high, pow.$low + x$1.$low)); + } + _tuple = bits.Mul64((new $Uint64(0, m)), pow); + hi = _tuple[0]; + lo = _tuple[1]; + e2 = e2 + (((mulByLog10Log2(q) - 63 >> 0) + 57 >> 0)) >> 0; + _tmp$3 = (((x$2 = $shiftLeft64(hi, 7), x$3 = $shiftRightUint64(lo, 57), new $Uint64(x$2.$high | x$3.$high, (x$2.$low | x$3.$low) >>> 0)).$low >>> 0)); + _tmp$4 = e2; + _tmp$5 = (x$4 = $shiftLeft64(lo, 7), (x$4.$high === 0 && x$4.$low === 0)); + resM = _tmp$3; + resE = _tmp$4; + exact = _tmp$5; + return [resM, resE, exact]; + }; + mult128bitPow10 = function mult128bitPow10$1(m, e2, q) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, carry, e2, exact, h0, h1, l0, l1, m, mid, pow, q, resE, resM, x, x$1, x$2, x$3, x$4, x$5, x$6; + resM = new $Uint64(0, 0); + resE = 0; + exact = false; + if (q === 0) { + _tmp = $shiftLeft64(m, 8); + _tmp$1 = e2 - 8 >> 0; + _tmp$2 = true; + resM = _tmp; + resE = _tmp$1; + exact = _tmp$2; + return [resM, resE, exact]; + } + if (q < -348 || 347 < q) { + $panic(new $String("mult128bitPow10: power of 10 is out of range")); + } + pow = $clone((x = q - -348 >> 0, ((x < 0 || x >= detailedPowersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : detailedPowersOfTen[x])), arrayType); + if (q < 0) { + pow[0] = (x$1 = pow[0], x$2 = new $Uint64(0, 1), new $Uint64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); + } + e2 = e2 + (((mulByLog10Log2(q) - 127 >> 0) + 119 >> 0)) >> 0; + _tuple = bits.Mul64(m, pow[0]); + l1 = _tuple[0]; + l0 = _tuple[1]; + _tuple$1 = bits.Mul64(m, pow[1]); + h1 = _tuple$1[0]; + h0 = _tuple$1[1]; + _tuple$2 = bits.Add64(l1, h0, new $Uint64(0, 0)); + mid = _tuple$2[0]; + carry = _tuple$2[1]; + h1 = (x$3 = carry, new $Uint64(h1.$high + x$3.$high, h1.$low + x$3.$low)); + _tmp$3 = (x$4 = $shiftLeft64(h1, 9), x$5 = $shiftRightUint64(mid, 55), new $Uint64(x$4.$high | x$5.$high, (x$4.$low | x$5.$low) >>> 0)); + _tmp$4 = e2; + _tmp$5 = (x$6 = $shiftLeft64(mid, 9), (x$6.$high === 0 && x$6.$low === 0)) && (l0.$high === 0 && l0.$low === 0); + resM = _tmp$3; + resE = _tmp$4; + exact = _tmp$5; + return [resM, resE, exact]; + }; + divisibleByPower5 = function divisibleByPower5$1(m, k) { + var i, k, m, x; + if ((m.$high === 0 && m.$low === 0)) { + return true; + } + i = 0; + while (true) { + if (!(i < k)) { break; } + if (!((x = $div64(m, new $Uint64(0, 5), true), (x.$high === 0 && x.$low === 0)))) { + return false; + } + m = $div64(m, (new $Uint64(0, 5)), false); + i = i + (1) >> 0; + } + return true; + }; + divmod1e9 = function divmod1e9$1(x) { + var _tuple, hi, q, x, x$1; + if (false) { + return [(($div64(x, new $Uint64(0, 1000000000), false).$low >>> 0)), (($div64(x, new $Uint64(0, 1000000000), true).$low >>> 0))]; + } + _tuple = bits.Mul64($shiftRightUint64(x, 1), new $Uint64(2305843009, 917808536)); + hi = _tuple[0]; + q = $shiftRightUint64(hi, 28); + return [((q.$low >>> 0)), (((x$1 = $mul64(q, new $Uint64(0, 1000000000)), new $Uint64(x.$high - x$1.$high, x.$low - x$1.$low)).$low >>> 0))]; + }; + FormatFloat = function FormatFloat$1(f, fmt, prec, bitSize) { + var bitSize, f, fmt, prec; + return ($bytesToString(genericFtoa($makeSlice(sliceType$6, 0, max(prec + 4 >> 0, 24)), f, fmt, prec, bitSize))); + }; + $pkg.FormatFloat = FormatFloat; + AppendFloat = function AppendFloat$1(dst, f, fmt, prec, bitSize) { + var bitSize, dst, f, fmt, prec; + return genericFtoa(dst, f, fmt, prec, bitSize); + }; + $pkg.AppendFloat = AppendFloat; + genericFtoa = function genericFtoa$1(dst, val, fmt, prec, bitSize) { + var _1, _2, _3, _4, bitSize, bits$1, buf, buf$1, digits, digs, dst, exp, flt, fmt, mant, neg, ok, prec, s, shortest, val, x, x$1, x$2, x$3, y, y$1; + bits$1 = new $Uint64(0, 0); + flt = ptrType.nil; + _1 = bitSize; + if (_1 === (32)) { + bits$1 = (new $Uint64(0, math.Float32bits(($fround(val))))); + flt = float32info; + } else if (_1 === (64)) { + bits$1 = math.Float64bits(val); + flt = float64info; + } else { + $panic(new $String("strconv: illegal AppendFloat/FormatFloat bitSize")); + } + neg = !((x = $shiftRightUint64(bits$1, ((flt.expbits + flt.mantbits >>> 0))), (x.$high === 0 && x.$low === 0))); + exp = (($shiftRightUint64(bits$1, flt.mantbits).$low >> 0)) & ((((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)); + mant = (x$1 = (x$2 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(x$2.$high - 0, x$2.$low - 1)), new $Uint64(bits$1.$high & x$1.$high, (bits$1.$low & x$1.$low) >>> 0)); + _2 = exp; + if (_2 === ((((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0))) { + s = ""; + if (!((mant.$high === 0 && mant.$low === 0))) { + s = "NaN"; + } else if (neg) { + s = "-Inf"; + } else { + s = "+Inf"; + } + return $appendSlice(dst, s); + } else if (_2 === (0)) { + exp = exp + (1) >> 0; + } else { + mant = (x$3 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(mant.$high | x$3.$high, (mant.$low | x$3.$low) >>> 0)); + } + exp = exp + (flt.bias) >> 0; + if (fmt === 98) { + return fmtB(dst, neg, mant, exp, flt); + } + if ((fmt === 120) || (fmt === 88)) { + return fmtX(dst, prec, fmt, neg, mant, exp, flt); + } + if (!optimize) { + return bigFtoa(dst, prec, fmt, neg, mant, exp, flt); + } + digs = new decimalSlice.ptr(sliceType$6.nil, 0, 0); + ok = false; + shortest = prec < 0; + if (shortest) { + buf = arrayType$3.zero(); + digs.d = new sliceType$6(buf); + ryuFtoaShortest(digs, mant, exp - ((flt.mantbits >> 0)) >> 0, flt); + ok = true; + _3 = fmt; + if ((_3 === (101)) || (_3 === (69))) { + prec = max(digs.nd - 1 >> 0, 0); + } else if (_3 === (102)) { + prec = max(digs.nd - digs.dp >> 0, 0); + } else if ((_3 === (103)) || (_3 === (71))) { + prec = digs.nd; + } + } else if (!((fmt === 102))) { + digits = prec; + _4 = fmt; + if ((_4 === (101)) || (_4 === (69))) { + digits = digits + (1) >> 0; + } else if ((_4 === (103)) || (_4 === (71))) { + if (prec === 0) { + prec = 1; + } + digits = prec; + } else { + digits = 1; + } + buf$1 = arrayType$4.zero(); + if ((bitSize === 32) && digits <= 9) { + digs.d = new sliceType$6(buf$1); + ryuFtoaFixed32(digs, ((mant.$low >>> 0)), exp - ((flt.mantbits >> 0)) >> 0, digits); + ok = true; + } else if (digits <= 18) { + digs.d = new sliceType$6(buf$1); + ryuFtoaFixed64(digs, mant, exp - ((flt.mantbits >> 0)) >> 0, digits); + ok = true; + } + } + if (!ok) { + return bigFtoa(dst, prec, fmt, neg, mant, exp, flt); + } + return formatDigits(dst, shortest, neg, $clone(digs, decimalSlice), prec, fmt); + }; + bigFtoa = function bigFtoa$1(dst, prec, fmt, neg, mant, exp, flt) { + var _1, _2, d, digs, dst, exp, flt, fmt, mant, neg, prec, shortest; + d = new decimal.ptr(arrayType$5.zero(), 0, 0, false, false); + d.Assign(mant); + d.Shift(exp - ((flt.mantbits >> 0)) >> 0); + digs = new decimalSlice.ptr(sliceType$6.nil, 0, 0); + shortest = prec < 0; + if (shortest) { + roundShortest(d, mant, exp, flt); + decimalSlice.copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp)); + _1 = fmt; + if ((_1 === (101)) || (_1 === (69))) { + prec = digs.nd - 1 >> 0; + } else if (_1 === (102)) { + prec = max(digs.nd - digs.dp >> 0, 0); + } else if ((_1 === (103)) || (_1 === (71))) { + prec = digs.nd; + } + } else { + _2 = fmt; + if ((_2 === (101)) || (_2 === (69))) { + d.Round(prec + 1 >> 0); + } else if (_2 === (102)) { + d.Round(d.dp + prec >> 0); + } else if ((_2 === (103)) || (_2 === (71))) { + if (prec === 0) { + prec = 1; + } + d.Round(prec); + } + decimalSlice.copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp)); + } + return formatDigits(dst, shortest, neg, $clone(digs, decimalSlice), prec, fmt); + }; + formatDigits = function formatDigits$1(dst, shortest, neg, digs, prec, fmt) { + var _1, digs, dst, eprec, exp, fmt, neg, prec, shortest; + _1 = fmt; + if ((_1 === (101)) || (_1 === (69))) { + return fmtE(dst, neg, $clone(digs, decimalSlice), prec, fmt); + } else if (_1 === (102)) { + return fmtF(dst, neg, $clone(digs, decimalSlice), prec); + } else if ((_1 === (103)) || (_1 === (71))) { + eprec = prec; + if (eprec > digs.nd && digs.nd >= digs.dp) { + eprec = digs.nd; + } + if (shortest) { + eprec = 6; + } + exp = digs.dp - 1 >> 0; + if (exp < -4 || exp >= eprec) { + if (prec > digs.nd) { + prec = digs.nd; + } + return fmtE(dst, neg, $clone(digs, decimalSlice), prec - 1 >> 0, (fmt + 101 << 24 >>> 24) - 103 << 24 >>> 24); + } + if (prec > digs.dp) { + prec = digs.nd; + } + return fmtF(dst, neg, $clone(digs, decimalSlice), max(prec - digs.dp >> 0, 0)); + } + return $append(dst, 37, fmt); + }; + roundShortest = function roundShortest$1(d, mant, exp, flt) { + var d, exp, explo, flt, inclusive, l, li, lower$1, m, mant, mantlo, mi, minexp, okdown, okup, u, ui, upper, upperdelta, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7; + if ((mant.$high === 0 && mant.$low === 0)) { + d.nd = 0; + return; + } + minexp = flt.bias + 1 >> 0; + if (exp > minexp && ($imul(332, ((d.dp - d.nd >> 0)))) >= ($imul(100, ((exp - ((flt.mantbits >> 0)) >> 0))))) { + return; + } + upper = new decimal.ptr(arrayType$5.zero(), 0, 0, false, false); + upper.Assign((x = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x.$high + 0, x.$low + 1))); + upper.Shift((exp - ((flt.mantbits >> 0)) >> 0) - 1 >> 0); + mantlo = new $Uint64(0, 0); + explo = 0; + if ((x$1 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high > x$1.$high || (mant.$high === x$1.$high && mant.$low > x$1.$low))) || (exp === minexp)) { + mantlo = new $Uint64(mant.$high - 0, mant.$low - 1); + explo = exp; + } else { + mantlo = (x$2 = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x$2.$high - 0, x$2.$low - 1)); + explo = exp - 1 >> 0; + } + lower$1 = new decimal.ptr(arrayType$5.zero(), 0, 0, false, false); + lower$1.Assign((x$3 = $mul64(mantlo, new $Uint64(0, 2)), new $Uint64(x$3.$high + 0, x$3.$low + 1))); + lower$1.Shift((explo - ((flt.mantbits >> 0)) >> 0) - 1 >> 0); + inclusive = (x$4 = $div64(mant, new $Uint64(0, 2), true), (x$4.$high === 0 && x$4.$low === 0)); + upperdelta = 0; + ui = 0; + while (true) { + mi = (ui - upper.dp >> 0) + d.dp >> 0; + if (mi >= d.nd) { + break; + } + li = (ui - upper.dp >> 0) + lower$1.dp >> 0; + l = 48; + if (li >= 0 && li < lower$1.nd) { + l = (x$5 = lower$1.d, ((li < 0 || li >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[li])); + } + m = 48; + if (mi >= 0) { + m = (x$6 = d.d, ((mi < 0 || mi >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[mi])); + } + u = 48; + if (ui < upper.nd) { + u = (x$7 = upper.d, ((ui < 0 || ui >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[ui])); + } + okdown = !((l === m)) || inclusive && ((li + 1 >> 0) === lower$1.nd); + if ((upperdelta === 0) && (m + 1 << 24 >>> 24) < u) { + upperdelta = 2; + } else if ((upperdelta === 0) && !((m === u))) { + upperdelta = 1; + } else if ((upperdelta === 1) && (!((m === 57)) || !((u === 48)))) { + upperdelta = 2; + } + okup = upperdelta > 0 && (inclusive || upperdelta > 1 || (ui + 1 >> 0) < upper.nd); + if (okdown && okup) { + d.Round(mi + 1 >> 0); + return; + } else if (okdown) { + d.RoundDown(mi + 1 >> 0); + return; + } else if (okup) { + d.RoundUp(mi + 1 >> 0); + return; + } + ui = ui + (1) >> 0; + } + }; + fmtE = function fmtE$1(dst, neg, d, prec, fmt) { + var _q, _q$1, _q$2, _r, _r$1, _r$2, ch, d, dst, exp, fmt, i, m, neg, prec, x; + if (neg) { + dst = $append(dst, 45); + } + ch = 48; + if (!((d.nd === 0))) { + ch = (x = d.d, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + } + dst = $append(dst, ch); + if (prec > 0) { + dst = $append(dst, 46); + i = 1; + m = min(d.nd, prec + 1 >> 0); + if (i < m) { + dst = $appendSlice(dst, $subslice(d.d, i, m)); + i = m; + } + while (true) { + if (!(i <= prec)) { break; } + dst = $append(dst, 48); + i = i + (1) >> 0; + } + } + dst = $append(dst, fmt); + exp = d.dp - 1 >> 0; + if (d.nd === 0) { + exp = 0; + } + if (exp < 0) { + ch = 45; + exp = -exp; + } else { + ch = 43; + } + dst = $append(dst, ch); + if (exp < 10) { + dst = $append(dst, 48, ((exp << 24 >>> 24)) + 48 << 24 >>> 24); + } else if (exp < 100) { + dst = $append(dst, (((_q = exp / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (((_r = exp % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24); + } else { + dst = $append(dst, (((_q$1 = exp / 100, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (_r$1 = (((_q$2 = exp / 10, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) % 10, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24, (((_r$2 = exp % 10, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24); + } + return dst; + }; + fmtF = function fmtF$1(dst, neg, d, prec) { + var ch, d, dst, i, j, m, neg, prec, x; + if (neg) { + dst = $append(dst, 45); + } + if (d.dp > 0) { + m = min(d.nd, d.dp); + dst = $appendSlice(dst, $subslice(d.d, 0, m)); + while (true) { + if (!(m < d.dp)) { break; } + dst = $append(dst, 48); + m = m + (1) >> 0; + } + } else { + dst = $append(dst, 48); + } + if (prec > 0) { + dst = $append(dst, 46); + i = 0; + while (true) { + if (!(i < prec)) { break; } + ch = 48; + j = d.dp + i >> 0; + if (0 <= j && j < d.nd) { + ch = (x = d.d, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); + } + dst = $append(dst, ch); + i = i + (1) >> 0; + } + } + return dst; + }; + fmtB = function fmtB$1(dst, neg, mant, exp, flt) { + var _tuple, _tuple$1, dst, exp, flt, mant, neg; + if (neg) { + dst = $append(dst, 45); + } + _tuple = formatBits(dst, mant, 10, false, true); + dst = _tuple[0]; + dst = $append(dst, 112); + exp = exp - (((flt.mantbits >> 0))) >> 0; + if (exp >= 0) { + dst = $append(dst, 43); + } + _tuple$1 = formatBits(dst, (new $Uint64(0, exp)), 10, exp < 0, true); + dst = _tuple$1[0]; + return dst; + }; + fmtX = function fmtX$1(dst, prec, fmt, neg, mant, exp, flt) { + var _q, _q$1, _q$2, _q$3, _q$4, _q$5, _r, _r$1, _r$2, _r$3, _r$4, _r$5, ch, dst, exp, extra, flt, fmt, hex, i, mant, neg, prec, shift, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; + if ((mant.$high === 0 && mant.$low === 0)) { + exp = 0; + } + mant = $shiftLeft64(mant, ((60 - flt.mantbits >>> 0))); + while (true) { + if (!(!((mant.$high === 0 && mant.$low === 0)) && (x = new $Uint64(mant.$high & 268435456, (mant.$low & 0) >>> 0), (x.$high === 0 && x.$low === 0)))) { break; } + mant = $shiftLeft64(mant, (1)); + exp = exp - (1) >> 0; + } + if (prec >= 0 && prec < 15) { + shift = ((($imul(prec, 4)) >>> 0)); + extra = (x$1 = $shiftLeft64(mant, shift), new $Uint64(x$1.$high & 268435455, (x$1.$low & 4294967295) >>> 0)); + mant = $shiftRightUint64(mant, ((60 - shift >>> 0))); + if ((x$2 = (x$3 = new $Uint64(mant.$high & 0, (mant.$low & 1) >>> 0), new $Uint64(extra.$high | x$3.$high, (extra.$low | x$3.$low) >>> 0)), (x$2.$high > 134217728 || (x$2.$high === 134217728 && x$2.$low > 0)))) { + mant = (x$4 = new $Uint64(0, 1), new $Uint64(mant.$high + x$4.$high, mant.$low + x$4.$low)); + } + mant = $shiftLeft64(mant, ((60 - shift >>> 0))); + if (!((x$5 = new $Uint64(mant.$high & 536870912, (mant.$low & 0) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) { + mant = $shiftRightUint64(mant, (1)); + exp = exp + (1) >> 0; + } + } + hex = "0123456789abcdef"; + if (fmt === 88) { + hex = "0123456789ABCDEF"; + } + if (neg) { + dst = $append(dst, 45); + } + dst = $append(dst, 48, fmt, 48 + (((x$6 = $shiftRightUint64(mant, 60), new $Uint64(x$6.$high & 0, (x$6.$low & 1) >>> 0)).$low << 24 >>> 24)) << 24 >>> 24); + mant = $shiftLeft64(mant, (4)); + if (prec < 0 && !((mant.$high === 0 && mant.$low === 0))) { + dst = $append(dst, 46); + while (true) { + if (!(!((mant.$high === 0 && mant.$low === 0)))) { break; } + dst = $append(dst, hex.charCodeAt($flatten64((x$7 = $shiftRightUint64(mant, 60), new $Uint64(x$7.$high & 0, (x$7.$low & 15) >>> 0))))); + mant = $shiftLeft64(mant, (4)); + } + } else if (prec > 0) { + dst = $append(dst, 46); + i = 0; + while (true) { + if (!(i < prec)) { break; } + dst = $append(dst, hex.charCodeAt($flatten64((x$8 = $shiftRightUint64(mant, 60), new $Uint64(x$8.$high & 0, (x$8.$low & 15) >>> 0))))); + mant = $shiftLeft64(mant, (4)); + i = i + (1) >> 0; + } + } + ch = 80; + if (fmt === lower(fmt)) { + ch = 112; + } + dst = $append(dst, ch); + if (exp < 0) { + ch = 45; + exp = -exp; + } else { + ch = 43; + } + dst = $append(dst, ch); + if (exp < 100) { + dst = $append(dst, (((_q = exp / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (((_r = exp % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24); + } else if (exp < 1000) { + dst = $append(dst, (((_q$1 = exp / 100, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (((_r$1 = ((_q$2 = exp / 10, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))) % 10, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (((_r$2 = exp % 10, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24); + } else { + dst = $append(dst, (((_q$3 = exp / 1000, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (_r$3 = (((_q$4 = exp / 100, (_q$4 === _q$4 && _q$4 !== 1/0 && _q$4 !== -1/0) ? _q$4 >> 0 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) % 10, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) + 48 << 24 >>> 24, (((_r$4 = ((_q$5 = exp / 10, (_q$5 === _q$5 && _q$5 !== 1/0 && _q$5 !== -1/0) ? _q$5 >> 0 : $throwRuntimeError("integer divide by zero"))) % 10, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24, (((_r$5 = exp % 10, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) << 24 >>> 24)) + 48 << 24 >>> 24); + } + return dst; + }; + min = function min$1(a, b) { + var a, b; + if (a < b) { + return a; + } + return b; + }; + max = function max$1(a, b) { + var a, b; + if (a > b) { + return a; + } + return b; + }; + eiselLemire64 = function eiselLemire64$1(man, exp10, neg) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, clz, exp10, f, man, mergedHi, mergedLo, msb, neg, ok, retBits, retExp2, retMantissa, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xHi, xLo, yHi, yLo; + f = 0; + ok = false; + if ((man.$high === 0 && man.$low === 0)) { + if (neg) { + f = math.Float64frombits(new $Uint64(2147483648, 0)); + } + _tmp = f; + _tmp$1 = true; + f = _tmp; + ok = _tmp$1; + return [f, ok]; + } + if (exp10 < -348 || 347 < exp10) { + _tmp$2 = 0; + _tmp$3 = false; + f = _tmp$2; + ok = _tmp$3; + return [f, ok]; + } + clz = bits.LeadingZeros64(man); + man = $shiftLeft64(man, (((clz >>> 0)))); + retExp2 = (x = (new $Uint64(0, (((($imul(217706, exp10)) >> 16 >> 0) + 64 >> 0) + 1023 >> 0))), x$1 = (new $Uint64(0, clz)), new $Uint64(x.$high - x$1.$high, x.$low - x$1.$low)); + _tuple = bits.Mul64(man, (x$2 = exp10 - -348 >> 0, ((x$2 < 0 || x$2 >= detailedPowersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : detailedPowersOfTen[x$2]))[1]); + xHi = _tuple[0]; + xLo = _tuple[1]; + if ((x$3 = new $Uint64(xHi.$high & 0, (xHi.$low & 511) >>> 0), (x$3.$high === 0 && x$3.$low === 511)) && (x$4 = new $Uint64(xLo.$high + man.$high, xLo.$low + man.$low), (x$4.$high < man.$high || (x$4.$high === man.$high && x$4.$low < man.$low)))) { + _tuple$1 = bits.Mul64(man, (x$5 = exp10 - -348 >> 0, ((x$5 < 0 || x$5 >= detailedPowersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : detailedPowersOfTen[x$5]))[0]); + yHi = _tuple$1[0]; + yLo = _tuple$1[1]; + _tmp$4 = xHi; + _tmp$5 = new $Uint64(xLo.$high + yHi.$high, xLo.$low + yHi.$low); + mergedHi = _tmp$4; + mergedLo = _tmp$5; + if ((mergedLo.$high < xLo.$high || (mergedLo.$high === xLo.$high && mergedLo.$low < xLo.$low))) { + mergedHi = (x$6 = new $Uint64(0, 1), new $Uint64(mergedHi.$high + x$6.$high, mergedHi.$low + x$6.$low)); + } + if ((x$7 = new $Uint64(mergedHi.$high & 0, (mergedHi.$low & 511) >>> 0), (x$7.$high === 0 && x$7.$low === 511)) && (x$8 = new $Uint64(mergedLo.$high + 0, mergedLo.$low + 1), (x$8.$high === 0 && x$8.$low === 0)) && (x$9 = new $Uint64(yLo.$high + man.$high, yLo.$low + man.$low), (x$9.$high < man.$high || (x$9.$high === man.$high && x$9.$low < man.$low)))) { + _tmp$6 = 0; + _tmp$7 = false; + f = _tmp$6; + ok = _tmp$7; + return [f, ok]; + } + _tmp$8 = mergedHi; + _tmp$9 = mergedLo; + xHi = _tmp$8; + xLo = _tmp$9; + } + msb = $shiftRightUint64(xHi, 63); + retMantissa = $shiftRightUint64(xHi, $flatten64((new $Uint64(msb.$high + 0, msb.$low + 9)))); + retExp2 = (x$10 = new $Uint64(0 ^ msb.$high, (1 ^ msb.$low) >>> 0), new $Uint64(retExp2.$high - x$10.$high, retExp2.$low - x$10.$low)); + if ((xLo.$high === 0 && xLo.$low === 0) && (x$11 = new $Uint64(xHi.$high & 0, (xHi.$low & 511) >>> 0), (x$11.$high === 0 && x$11.$low === 0)) && (x$12 = new $Uint64(retMantissa.$high & 0, (retMantissa.$low & 3) >>> 0), (x$12.$high === 0 && x$12.$low === 1))) { + _tmp$10 = 0; + _tmp$11 = false; + f = _tmp$10; + ok = _tmp$11; + return [f, ok]; + } + retMantissa = (x$13 = new $Uint64(retMantissa.$high & 0, (retMantissa.$low & 1) >>> 0), new $Uint64(retMantissa.$high + x$13.$high, retMantissa.$low + x$13.$low)); + retMantissa = $shiftRightUint64(retMantissa, (1)); + if ((x$14 = $shiftRightUint64(retMantissa, 53), (x$14.$high > 0 || (x$14.$high === 0 && x$14.$low > 0)))) { + retMantissa = $shiftRightUint64(retMantissa, (1)); + retExp2 = (x$15 = new $Uint64(0, 1), new $Uint64(retExp2.$high + x$15.$high, retExp2.$low + x$15.$low)); + } + if ((x$16 = new $Uint64(retExp2.$high - 0, retExp2.$low - 1), (x$16.$high > 0 || (x$16.$high === 0 && x$16.$low >= 2046)))) { + _tmp$12 = 0; + _tmp$13 = false; + f = _tmp$12; + ok = _tmp$13; + return [f, ok]; + } + retBits = (x$17 = $shiftLeft64(retExp2, 52), x$18 = new $Uint64(retMantissa.$high & 1048575, (retMantissa.$low & 4294967295) >>> 0), new $Uint64(x$17.$high | x$18.$high, (x$17.$low | x$18.$low) >>> 0)); + if (neg) { + retBits = (x$19 = new $Uint64(2147483648, 0), new $Uint64(retBits.$high | x$19.$high, (retBits.$low | x$19.$low) >>> 0)); + } + _tmp$14 = math.Float64frombits(retBits); + _tmp$15 = true; + f = _tmp$14; + ok = _tmp$15; + return [f, ok]; + }; + eiselLemire32 = function eiselLemire32$1(man, exp10, neg) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, clz, exp10, f, man, mergedHi, mergedLo, msb, neg, ok, retBits, retExp2, retMantissa, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xHi, xLo, yHi, yLo; + f = 0; + ok = false; + if ((man.$high === 0 && man.$low === 0)) { + if (neg) { + f = math.Float32frombits(2147483648); + } + _tmp = f; + _tmp$1 = true; + f = _tmp; + ok = _tmp$1; + return [f, ok]; + } + if (exp10 < -348 || 347 < exp10) { + _tmp$2 = 0; + _tmp$3 = false; + f = _tmp$2; + ok = _tmp$3; + return [f, ok]; + } + clz = bits.LeadingZeros64(man); + man = $shiftLeft64(man, (((clz >>> 0)))); + retExp2 = (x = (new $Uint64(0, (((($imul(217706, exp10)) >> 16 >> 0) + 64 >> 0) + 127 >> 0))), x$1 = (new $Uint64(0, clz)), new $Uint64(x.$high - x$1.$high, x.$low - x$1.$low)); + _tuple = bits.Mul64(man, (x$2 = exp10 - -348 >> 0, ((x$2 < 0 || x$2 >= detailedPowersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : detailedPowersOfTen[x$2]))[1]); + xHi = _tuple[0]; + xLo = _tuple[1]; + if ((x$3 = new $Uint64(xHi.$high & 63, (xHi.$low & 4294967295) >>> 0), (x$3.$high === 63 && x$3.$low === 4294967295)) && (x$4 = new $Uint64(xLo.$high + man.$high, xLo.$low + man.$low), (x$4.$high < man.$high || (x$4.$high === man.$high && x$4.$low < man.$low)))) { + _tuple$1 = bits.Mul64(man, (x$5 = exp10 - -348 >> 0, ((x$5 < 0 || x$5 >= detailedPowersOfTen.length) ? ($throwRuntimeError("index out of range"), undefined) : detailedPowersOfTen[x$5]))[0]); + yHi = _tuple$1[0]; + yLo = _tuple$1[1]; + _tmp$4 = xHi; + _tmp$5 = new $Uint64(xLo.$high + yHi.$high, xLo.$low + yHi.$low); + mergedHi = _tmp$4; + mergedLo = _tmp$5; + if ((mergedLo.$high < xLo.$high || (mergedLo.$high === xLo.$high && mergedLo.$low < xLo.$low))) { + mergedHi = (x$6 = new $Uint64(0, 1), new $Uint64(mergedHi.$high + x$6.$high, mergedHi.$low + x$6.$low)); + } + if ((x$7 = new $Uint64(mergedHi.$high & 63, (mergedHi.$low & 4294967295) >>> 0), (x$7.$high === 63 && x$7.$low === 4294967295)) && (x$8 = new $Uint64(mergedLo.$high + 0, mergedLo.$low + 1), (x$8.$high === 0 && x$8.$low === 0)) && (x$9 = new $Uint64(yLo.$high + man.$high, yLo.$low + man.$low), (x$9.$high < man.$high || (x$9.$high === man.$high && x$9.$low < man.$low)))) { + _tmp$6 = 0; + _tmp$7 = false; + f = _tmp$6; + ok = _tmp$7; + return [f, ok]; + } + _tmp$8 = mergedHi; + _tmp$9 = mergedLo; + xHi = _tmp$8; + xLo = _tmp$9; + } + msb = $shiftRightUint64(xHi, 63); + retMantissa = $shiftRightUint64(xHi, $flatten64((new $Uint64(msb.$high + 0, msb.$low + 38)))); + retExp2 = (x$10 = new $Uint64(0 ^ msb.$high, (1 ^ msb.$low) >>> 0), new $Uint64(retExp2.$high - x$10.$high, retExp2.$low - x$10.$low)); + if ((xLo.$high === 0 && xLo.$low === 0) && (x$11 = new $Uint64(xHi.$high & 63, (xHi.$low & 4294967295) >>> 0), (x$11.$high === 0 && x$11.$low === 0)) && (x$12 = new $Uint64(retMantissa.$high & 0, (retMantissa.$low & 3) >>> 0), (x$12.$high === 0 && x$12.$low === 1))) { + _tmp$10 = 0; + _tmp$11 = false; + f = _tmp$10; + ok = _tmp$11; + return [f, ok]; + } + retMantissa = (x$13 = new $Uint64(retMantissa.$high & 0, (retMantissa.$low & 1) >>> 0), new $Uint64(retMantissa.$high + x$13.$high, retMantissa.$low + x$13.$low)); + retMantissa = $shiftRightUint64(retMantissa, (1)); + if ((x$14 = $shiftRightUint64(retMantissa, 24), (x$14.$high > 0 || (x$14.$high === 0 && x$14.$low > 0)))) { + retMantissa = $shiftRightUint64(retMantissa, (1)); + retExp2 = (x$15 = new $Uint64(0, 1), new $Uint64(retExp2.$high + x$15.$high, retExp2.$low + x$15.$low)); + } + if ((x$16 = new $Uint64(retExp2.$high - 0, retExp2.$low - 1), (x$16.$high > 0 || (x$16.$high === 0 && x$16.$low >= 254)))) { + _tmp$12 = 0; + _tmp$13 = false; + f = _tmp$12; + ok = _tmp$13; + return [f, ok]; + } + retBits = (x$17 = $shiftLeft64(retExp2, 23), x$18 = new $Uint64(retMantissa.$high & 0, (retMantissa.$low & 8388607) >>> 0), new $Uint64(x$17.$high | x$18.$high, (x$17.$low | x$18.$low) >>> 0)); + if (neg) { + retBits = (x$19 = new $Uint64(0, 2147483648), new $Uint64(retBits.$high | x$19.$high, (retBits.$low | x$19.$low) >>> 0)); + } + _tmp$14 = math.Float32frombits(((retBits.$low >>> 0))); + _tmp$15 = true; + f = _tmp$14; + ok = _tmp$15; + return [f, ok]; + }; + $ptrType(decimal).prototype.String = function String() { + var a, buf, n, w; + a = this; + n = 10 + a.nd >> 0; + if (a.dp > 0) { + n = n + (a.dp) >> 0; + } + if (a.dp < 0) { + n = n + (-a.dp) >> 0; + } + buf = $makeSlice(sliceType$6, n); + w = 0; + if ((a.nd === 0)) { + return "0"; + } else if (a.dp <= 0) { + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 48); + w = w + (1) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46); + w = w + (1) >> 0; + w = w + (digitZero($subslice(buf, w, (w + -a.dp >> 0)))) >> 0; + w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0; + } else if (a.dp < a.nd) { + w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.dp))) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46); + w = w + (1) >> 0; + w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), a.dp, a.nd))) >> 0; + } else { + w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0; + w = w + (digitZero($subslice(buf, w, ((w + a.dp >> 0) - a.nd >> 0)))) >> 0; + } + return ($bytesToString($subslice(buf, 0, w))); + }; + digitZero = function digitZero$1(dst) { + var _i, _ref, dst, i; + _ref = dst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + i] = 48); + _i++; + } + return dst.$length; + }; + trim = function trim$1(a) { + var a, x, x$1; + while (true) { + if (!(a.nd > 0 && ((x = a.d, x$1 = a.nd - 1 >> 0, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) === 48))) { break; } + a.nd = a.nd - (1) >> 0; + } + if (a.nd === 0) { + a.dp = 0; + } + }; + $ptrType(decimal).prototype.Assign = function Assign(v) { + var a, buf, n, v, v1, x, x$1, x$2; + a = this; + buf = arrayType$4.zero(); + n = 0; + while (true) { + if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; } + v1 = $div64(v, new $Uint64(0, 10), false); + v = (x = $mul64(new $Uint64(0, 10), v1), new $Uint64(v.$high - x.$high, v.$low - x.$low)); + ((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n] = ((new $Uint64(v.$high + 0, v.$low + 48).$low << 24 >>> 24))); + n = n + (1) >> 0; + v = v1; + } + a.nd = 0; + n = n - (1) >> 0; + while (true) { + if (!(n >= 0)) { break; } + (x$1 = a.d, x$2 = a.nd, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2] = ((n < 0 || n >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[n]))); + a.nd = a.nd + (1) >> 0; + n = n - (1) >> 0; + } + a.dp = a.nd; + trim(a); + }; + rightShift = function rightShift$1(a, k) { + var a, c, c$1, dig, dig$1, k, mask, n, r, w, x, x$1, x$2, x$3, y, y$1, y$2, y$3, y$4; + r = 0; + w = 0; + n = 0; + while (true) { + if (!(((y = k, y < 32 ? (n >>> y) : 0) >>> 0) === 0)) { break; } + if (r >= a.nd) { + if (n === 0) { + a.nd = 0; + return; + } + while (true) { + if (!(((y$1 = k, y$1 < 32 ? (n >>> y$1) : 0) >>> 0) === 0)) { break; } + n = $imul(n, 10) >>> 0; + r = r + (1) >> 0; + } + break; + } + c = (((x = a.d, ((r < 0 || r >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[r])) >>> 0)); + n = (($imul(n, 10) >>> 0) + c >>> 0) - 48 >>> 0; + r = r + (1) >> 0; + } + a.dp = a.dp - ((r - 1 >> 0)) >> 0; + mask = (((y$2 = k, y$2 < 32 ? (1 << y$2) : 0) >>> 0)) - 1 >>> 0; + while (true) { + if (!(r < a.nd)) { break; } + c$1 = (((x$1 = a.d, ((r < 0 || r >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[r])) >>> 0)); + dig = (y$3 = k, y$3 < 32 ? (n >>> y$3) : 0) >>> 0; + n = (n & (mask)) >>> 0; + (x$2 = a.d, ((w < 0 || w >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[w] = (((dig + 48 >>> 0) << 24 >>> 24)))); + w = w + (1) >> 0; + n = (($imul(n, 10) >>> 0) + c$1 >>> 0) - 48 >>> 0; + r = r + (1) >> 0; + } + while (true) { + if (!(n > 0)) { break; } + dig$1 = (y$4 = k, y$4 < 32 ? (n >>> y$4) : 0) >>> 0; + n = (n & (mask)) >>> 0; + if (w < 800) { + (x$3 = a.d, ((w < 0 || w >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[w] = (((dig$1 + 48 >>> 0) << 24 >>> 24)))); + w = w + (1) >> 0; + } else if (dig$1 > 0) { + a.trunc = true; + } + n = $imul(n, 10) >>> 0; + } + a.nd = w; + trim(a); + }; + prefixIsLessThan = function prefixIsLessThan$1(b, s) { + var b, i, s; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if (i >= b.$length) { + return true; + } + if (!((((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) === s.charCodeAt(i)))) { + return ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) < s.charCodeAt(i); + } + i = i + (1) >> 0; + } + return false; + }; + leftShift = function leftShift$1(a, k) { + var _q, _q$1, a, delta, k, n, quo, quo$1, r, rem, rem$1, w, x, x$1, x$2, y; + delta = ((k < 0 || k >= leftcheats.$length) ? ($throwRuntimeError("index out of range"), undefined) : leftcheats.$array[leftcheats.$offset + k]).delta; + if (prefixIsLessThan($subslice(new sliceType$6(a.d), 0, a.nd), ((k < 0 || k >= leftcheats.$length) ? ($throwRuntimeError("index out of range"), undefined) : leftcheats.$array[leftcheats.$offset + k]).cutoff)) { + delta = delta - (1) >> 0; + } + r = a.nd; + w = a.nd + delta >> 0; + n = 0; + r = r - (1) >> 0; + while (true) { + if (!(r >= 0)) { break; } + n = n + (((y = k, y < 32 ? ((((((x = a.d, ((r < 0 || r >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[r])) >>> 0)) - 48 >>> 0)) << y) : 0) >>> 0)) >>> 0; + quo = (_q = n / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + rem = n - ($imul(10, quo) >>> 0) >>> 0; + w = w - (1) >> 0; + if (w < 800) { + (x$1 = a.d, ((w < 0 || w >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[w] = (((rem + 48 >>> 0) << 24 >>> 24)))); + } else if (!((rem === 0))) { + a.trunc = true; + } + n = quo; + r = r - (1) >> 0; + } + while (true) { + if (!(n > 0)) { break; } + quo$1 = (_q$1 = n / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); + rem$1 = n - ($imul(10, quo$1) >>> 0) >>> 0; + w = w - (1) >> 0; + if (w < 800) { + (x$2 = a.d, ((w < 0 || w >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[w] = (((rem$1 + 48 >>> 0) << 24 >>> 24)))); + } else if (!((rem$1 === 0))) { + a.trunc = true; + } + n = quo$1; + } + a.nd = a.nd + (delta) >> 0; + if (a.nd >= 800) { + a.nd = 800; + } + a.dp = a.dp + (delta) >> 0; + trim(a); + }; + $ptrType(decimal).prototype.Shift = function Shift(k) { + var a, k; + a = this; + if ((a.nd === 0)) { + } else if (k > 0) { + while (true) { + if (!(k > 28)) { break; } + leftShift(a, 28); + k = k - (28) >> 0; + } + leftShift(a, ((k >>> 0))); + } else if (k < 0) { + while (true) { + if (!(k < -28)) { break; } + rightShift(a, 28); + k = k + (28) >> 0; + } + rightShift(a, ((-k >>> 0))); + } + }; + shouldRoundUp = function shouldRoundUp$1(a, nd) { + var _r, a, nd, x, x$1, x$2, x$3; + if (nd < 0 || nd >= a.nd) { + return false; + } + if (((x = a.d, ((nd < 0 || nd >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[nd])) === 53) && ((nd + 1 >> 0) === a.nd)) { + if (a.trunc) { + return true; + } + return nd > 0 && !(((_r = (((x$1 = a.d, x$2 = nd - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])) - 48 << 24 >>> 24)) % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0)); + } + return (x$3 = a.d, ((nd < 0 || nd >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[nd])) >= 53; + }; + $ptrType(decimal).prototype.Round = function Round(nd) { + var a, nd; + a = this; + if (nd < 0 || nd >= a.nd) { + return; + } + if (shouldRoundUp(a, nd)) { + a.RoundUp(nd); + } else { + a.RoundDown(nd); + } + }; + $ptrType(decimal).prototype.RoundDown = function RoundDown(nd) { + var a, nd; + a = this; + if (nd < 0 || nd >= a.nd) { + return; + } + a.nd = nd; + trim(a); + }; + $ptrType(decimal).prototype.RoundUp = function RoundUp(nd) { + var a, c, i, nd, x, x$1, x$2; + a = this; + if (nd < 0 || nd >= a.nd) { + return; + } + i = nd - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + c = (x = a.d, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])); + if (c < 57) { + (x$2 = a.d, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = ((x$1 = a.d, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])) + (1) << 24 >>> 24))); + a.nd = i + 1 >> 0; + return; + } + i = i - (1) >> 0; + } + a.d[0] = 49; + a.nd = 1; + a.dp = a.dp + (1) >> 0; + }; + $ptrType(decimal).prototype.RoundedInteger = function RoundedInteger() { + var a, i, n, x, x$1, x$2, x$3; + a = this; + if (a.dp > 20) { + return new $Uint64(4294967295, 4294967295); + } + i = 0; + n = new $Uint64(0, 0); + i = 0; + while (true) { + if (!(i < a.dp && i < a.nd)) { break; } + n = (x = $mul64(n, new $Uint64(0, 10)), x$1 = (new $Uint64(0, ((x$2 = a.d, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) - 48 << 24 >>> 24))), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)); + i = i + (1) >> 0; + } + while (true) { + if (!(i < a.dp)) { break; } + n = $mul64(n, (new $Uint64(0, 10))); + i = i + (1) >> 0; + } + if (shouldRoundUp(a, a.dp)) { + n = (x$3 = new $Uint64(0, 1), new $Uint64(n.$high + x$3.$high, n.$low + x$3.$low)); + } + return n; + }; + index = function index$1(s, c) { + var c, s; + return bytealg.IndexByteString(s, c); + }; + lower = function lower$1(c) { + var c; + return (c | 32) >>> 0; + }; + $ptrType(NumError).prototype.Error = function Error() { + var {$24r, _r, e, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = "strconv." + e.Func + ": " + "parsing " + Quote(e.Num) + ": " + _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Error, $c: true, $r, $24r, _r, e, $s};return $f; + }; + $ptrType(NumError).prototype.Unwrap = function Unwrap() { + var e; + e = this; + return e.Err; + }; + cloneString = function cloneString$1(x) { + var x; + return ($bytesToString((new sliceType$6($stringToBytes(x))))); + }; + syntaxError = function syntaxError$1(fn, str) { + var fn, str; + return new NumError.ptr(fn, cloneString(str), $pkg.ErrSyntax); + }; + rangeError = function rangeError$1(fn, str) { + var fn, str; + return new NumError.ptr(fn, cloneString(str), $pkg.ErrRange); + }; + baseError = function baseError$1(fn, str, base) { + var base, fn, str; + return new NumError.ptr(fn, cloneString(str), errors.New("invalid base " + Itoa(base))); + }; + bitSizeError = function bitSizeError$1(fn, str, bitSize) { + var bitSize, fn, str; + return new NumError.ptr(fn, cloneString(str), errors.New("invalid bit size " + Itoa(bitSize))); + }; + ParseUint = function ParseUint$1(s, base, bitSize) { + var _1, _i, _ref, base, base0, bitSize, c, cutoff, d, maxVal, n, n1, s, s0, underscores, x, x$1, x$2; + if (s === "") { + return [new $Uint64(0, 0), syntaxError("ParseUint", s)]; + } + base0 = base === 0; + s0 = s; + if (2 <= base && base <= 36) { + } else if ((base === 0)) { + base = 10; + if (s.charCodeAt(0) === 48) { + if (s.length >= 3 && (lower(s.charCodeAt(1)) === 98)) { + base = 2; + s = $substring(s, 2); + } else if (s.length >= 3 && (lower(s.charCodeAt(1)) === 111)) { + base = 8; + s = $substring(s, 2); + } else if (s.length >= 3 && (lower(s.charCodeAt(1)) === 120)) { + base = 16; + s = $substring(s, 2); + } else { + base = 8; + s = $substring(s, 1); + } + } + } else { + return [new $Uint64(0, 0), baseError("ParseUint", s0, base)]; + } + if (bitSize === 0) { + bitSize = 32; + } else if (bitSize < 0 || bitSize > 64) { + return [new $Uint64(0, 0), bitSizeError("ParseUint", s0, bitSize)]; + } + cutoff = new $Uint64(0, 0); + _1 = base; + if (_1 === (10)) { + cutoff = new $Uint64(429496729, 2576980378); + } else if (_1 === (16)) { + cutoff = new $Uint64(268435456, 0); + } else { + cutoff = (x = $div64(new $Uint64(4294967295, 4294967295), (new $Uint64(0, base)), false), new $Uint64(x.$high + 0, x.$low + 1)); + } + maxVal = (x$1 = $shiftLeft64(new $Uint64(0, 1), ((bitSize >>> 0))), new $Uint64(x$1.$high - 0, x$1.$low - 1)); + underscores = false; + n = new $Uint64(0, 0); + _ref = (new sliceType$6($stringToBytes(s))); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + d = 0; + if ((c === 95) && base0) { + underscores = true; + _i++; + continue; + } else if (48 <= c && c <= 57) { + d = c - 48 << 24 >>> 24; + } else if (97 <= lower(c) && lower(c) <= 122) { + d = (lower(c) - 97 << 24 >>> 24) + 10 << 24 >>> 24; + } else { + return [new $Uint64(0, 0), syntaxError("ParseUint", s0)]; + } + if (d >= ((base << 24 >>> 24))) { + return [new $Uint64(0, 0), syntaxError("ParseUint", s0)]; + } + if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { + return [maxVal, rangeError("ParseUint", s0)]; + } + n = $mul64(n, ((new $Uint64(0, base)))); + n1 = (x$2 = (new $Uint64(0, d)), new $Uint64(n.$high + x$2.$high, n.$low + x$2.$low)); + if ((n1.$high < n.$high || (n1.$high === n.$high && n1.$low < n.$low)) || (n1.$high > maxVal.$high || (n1.$high === maxVal.$high && n1.$low > maxVal.$low))) { + return [maxVal, rangeError("ParseUint", s0)]; + } + n = n1; + _i++; + } + if (underscores && !underscoreOK(s0)) { + return [new $Uint64(0, 0), syntaxError("ParseUint", s0)]; + } + return [n, $ifaceNil]; + }; + $pkg.ParseUint = ParseUint; + ParseInt = function ParseInt$1(s, base, bitSize) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, base, bitSize, cutoff, err, i, n, neg, s, s0, un, x, x$1; + i = new $Int64(0, 0); + err = $ifaceNil; + if (s === "") { + _tmp = new $Int64(0, 0); + _tmp$1 = syntaxError("ParseInt", s); + i = _tmp; + err = _tmp$1; + return [i, err]; + } + s0 = s; + neg = false; + if (s.charCodeAt(0) === 43) { + s = $substring(s, 1); + } else if (s.charCodeAt(0) === 45) { + neg = true; + s = $substring(s, 1); + } + un = new $Uint64(0, 0); + _tuple = ParseUint(s, base, bitSize); + un = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual($assertType(err, ptrType$1).Err, $pkg.ErrRange))) { + $assertType(err, ptrType$1).Func = "ParseInt"; + $assertType(err, ptrType$1).Num = cloneString(s0); + _tmp$2 = new $Int64(0, 0); + _tmp$3 = err; + i = _tmp$2; + err = _tmp$3; + return [i, err]; + } + if (bitSize === 0) { + bitSize = 32; + } + cutoff = ($shiftLeft64(new $Uint64(0, 1), (((bitSize - 1 >> 0) >>> 0)))); + if (!neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low >= cutoff.$low))) { + _tmp$4 = ((x = new $Uint64(cutoff.$high - 0, cutoff.$low - 1), new $Int64(x.$high, x.$low))); + _tmp$5 = rangeError("ParseInt", s0); + i = _tmp$4; + err = _tmp$5; + return [i, err]; + } + if (neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low > cutoff.$low))) { + _tmp$6 = (x$1 = (new $Int64(cutoff.$high, cutoff.$low)), new $Int64(-x$1.$high, -x$1.$low)); + _tmp$7 = rangeError("ParseInt", s0); + i = _tmp$6; + err = _tmp$7; + return [i, err]; + } + n = (new $Int64(un.$high, un.$low)); + if (neg) { + n = new $Int64(-n.$high, -n.$low); + } + _tmp$8 = n; + _tmp$9 = $ifaceNil; + i = _tmp$8; + err = _tmp$9; + return [i, err]; + }; + $pkg.ParseInt = ParseInt; + underscoreOK = function underscoreOK$1(s) { + var hex, i, s, saw; + saw = 94; + i = 0; + if (s.length >= 1 && ((s.charCodeAt(0) === 45) || (s.charCodeAt(0) === 43))) { + s = $substring(s, 1); + } + hex = false; + if (s.length >= 2 && (s.charCodeAt(0) === 48) && ((lower(s.charCodeAt(1)) === 98) || (lower(s.charCodeAt(1)) === 111) || (lower(s.charCodeAt(1)) === 120))) { + i = 2; + saw = 48; + hex = lower(s.charCodeAt(1)) === 120; + } + while (true) { + if (!(i < s.length)) { break; } + if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57 || hex && 97 <= lower(s.charCodeAt(i)) && lower(s.charCodeAt(i)) <= 102) { + saw = 48; + i = i + (1) >> 0; + continue; + } + if (s.charCodeAt(i) === 95) { + if (!((saw === 48))) { + return false; + } + saw = 95; + i = i + (1) >> 0; + continue; + } + if (saw === 95) { + return false; + } + saw = 33; + i = i + (1) >> 0; + } + return !((saw === 95)); + }; + commonPrefixLenIgnoreCase = function commonPrefixLenIgnoreCase$1(s, prefix) { + var c, i, n, prefix, s; + n = prefix.length; + if (n > s.length) { + n = s.length; + } + i = 0; + while (true) { + if (!(i < n)) { break; } + c = s.charCodeAt(i); + if (65 <= c && c <= 90) { + c = c + (32) << 24 >>> 24; + } + if (!((c === prefix.charCodeAt(i)))) { + return i; + } + i = i + (1) >> 0; + } + return n; + }; + special = function special$1(s) { + var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, f, n, n$1, nsign, ok, s, sign; + f = 0; + n = 0; + ok = false; + if (s.length === 0) { + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = false; + f = _tmp; + n = _tmp$1; + ok = _tmp$2; + return [f, n, ok]; + } + sign = 1; + nsign = 0; + _1 = s.charCodeAt(0); + if ((_1 === (43)) || (_1 === (45))) { + if (s.charCodeAt(0) === 45) { + sign = -1; + } + nsign = 1; + s = $substring(s, 1); + n$1 = commonPrefixLenIgnoreCase(s, "infinity"); + if (3 < n$1 && n$1 < 8) { + n$1 = 3; + } + if ((n$1 === 3) || (n$1 === 8)) { + _tmp$3 = math.Inf(sign); + _tmp$4 = nsign + n$1 >> 0; + _tmp$5 = true; + f = _tmp$3; + n = _tmp$4; + ok = _tmp$5; + return [f, n, ok]; + } + } else if ((_1 === (105)) || (_1 === (73))) { + n$1 = commonPrefixLenIgnoreCase(s, "infinity"); + if (3 < n$1 && n$1 < 8) { + n$1 = 3; + } + if ((n$1 === 3) || (n$1 === 8)) { + _tmp$6 = math.Inf(sign); + _tmp$7 = nsign + n$1 >> 0; + _tmp$8 = true; + f = _tmp$6; + n = _tmp$7; + ok = _tmp$8; + return [f, n, ok]; + } + } else if ((_1 === (110)) || (_1 === (78))) { + if (commonPrefixLenIgnoreCase(s, "nan") === 3) { + _tmp$9 = math.NaN(); + _tmp$10 = 3; + _tmp$11 = true; + f = _tmp$9; + n = _tmp$10; + ok = _tmp$11; + return [f, n, ok]; + } + } + _tmp$12 = 0; + _tmp$13 = 0; + _tmp$14 = false; + f = _tmp$12; + n = _tmp$13; + ok = _tmp$14; + return [f, n, ok]; + }; + $ptrType(decimal).prototype.set = function set(s) { + var b, e, esign, i, ok, s, sawdigits, sawdot, x, x$1; + ok = false; + b = this; + i = 0; + b.neg = false; + b.trunc = false; + if (i >= s.length) { + return ok; + } + if ((s.charCodeAt(i) === 43)) { + i = i + (1) >> 0; + } else if ((s.charCodeAt(i) === 45)) { + b.neg = true; + i = i + (1) >> 0; + } + sawdot = false; + sawdigits = false; + while (true) { + if (!(i < s.length)) { break; } + if ((s.charCodeAt(i) === 95)) { + i = i + (1) >> 0; + continue; + } else if ((s.charCodeAt(i) === 46)) { + if (sawdot) { + return ok; + } + sawdot = true; + b.dp = b.nd; + i = i + (1) >> 0; + continue; + } else if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57) { + sawdigits = true; + if ((s.charCodeAt(i) === 48) && (b.nd === 0)) { + b.dp = b.dp - (1) >> 0; + i = i + (1) >> 0; + continue; + } + if (b.nd < 800) { + (x = b.d, x$1 = b.nd, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1] = s.charCodeAt(i))); + b.nd = b.nd + (1) >> 0; + } else if (!((s.charCodeAt(i) === 48))) { + b.trunc = true; + } + i = i + (1) >> 0; + continue; + } + break; + } + if (!sawdigits) { + return ok; + } + if (!sawdot) { + b.dp = b.nd; + } + if (i < s.length && (lower(s.charCodeAt(i)) === 101)) { + i = i + (1) >> 0; + if (i >= s.length) { + return ok; + } + esign = 1; + if (s.charCodeAt(i) === 43) { + i = i + (1) >> 0; + } else if (s.charCodeAt(i) === 45) { + i = i + (1) >> 0; + esign = -1; + } + if (i >= s.length || s.charCodeAt(i) < 48 || s.charCodeAt(i) > 57) { + return ok; + } + e = 0; + while (true) { + if (!(i < s.length && (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57 || (s.charCodeAt(i) === 95)))) { break; } + if (s.charCodeAt(i) === 95) { + i = i + (1) >> 0; + continue; + } + if (e < 10000) { + e = (($imul(e, 10)) + ((s.charCodeAt(i) >> 0)) >> 0) - 48 >> 0; + } + i = i + (1) >> 0; + } + b.dp = b.dp + (($imul(e, esign))) >> 0; + } + if (!((i === s.length))) { + return ok; + } + ok = true; + return ok; + }; + readFloat = function readFloat$1(s) { + var _1, base, c, dp, e, esign, exp, expChar, hex, i, mantissa, maxMantDigits, nd, ndMant, neg, ok, s, sawdigits, sawdot, trunc, underscores, x, x$1; + mantissa = new $Uint64(0, 0); + exp = 0; + neg = false; + trunc = false; + hex = false; + i = 0; + ok = false; + underscores = false; + if (i >= s.length) { + return [mantissa, exp, neg, trunc, hex, i, ok]; + } + if ((s.charCodeAt(i) === 43)) { + i = i + (1) >> 0; + } else if ((s.charCodeAt(i) === 45)) { + neg = true; + i = i + (1) >> 0; + } + base = new $Uint64(0, 10); + maxMantDigits = 19; + expChar = 101; + if ((i + 2 >> 0) < s.length && (s.charCodeAt(i) === 48) && (lower(s.charCodeAt((i + 1 >> 0))) === 120)) { + base = new $Uint64(0, 16); + maxMantDigits = 16; + i = i + (2) >> 0; + expChar = 112; + hex = true; + } + sawdot = false; + sawdigits = false; + nd = 0; + ndMant = 0; + dp = 0; + loop: + while (true) { + if (!(i < s.length)) { break; } + c = s.charCodeAt(i); + _1 = true; + if (_1 === ((c === 95))) { + underscores = true; + i = i + (1) >> 0; + continue; + } else if (_1 === ((c === 46))) { + if (sawdot) { + break loop; + } + sawdot = true; + dp = nd; + i = i + (1) >> 0; + continue; + } else if (_1 === (48 <= c && c <= 57)) { + sawdigits = true; + if ((c === 48) && (nd === 0)) { + dp = dp - (1) >> 0; + i = i + (1) >> 0; + continue; + } + nd = nd + (1) >> 0; + if (ndMant < maxMantDigits) { + mantissa = $mul64(mantissa, (base)); + mantissa = (x = (new $Uint64(0, (c - 48 << 24 >>> 24))), new $Uint64(mantissa.$high + x.$high, mantissa.$low + x.$low)); + ndMant = ndMant + (1) >> 0; + } else if (!((c === 48))) { + trunc = true; + } + i = i + (1) >> 0; + continue; + } else if (_1 === ((base.$high === 0 && base.$low === 16) && 97 <= lower(c) && lower(c) <= 102)) { + sawdigits = true; + nd = nd + (1) >> 0; + if (ndMant < maxMantDigits) { + mantissa = $mul64(mantissa, (new $Uint64(0, 16))); + mantissa = (x$1 = (new $Uint64(0, ((lower(c) - 97 << 24 >>> 24) + 10 << 24 >>> 24))), new $Uint64(mantissa.$high + x$1.$high, mantissa.$low + x$1.$low)); + ndMant = ndMant + (1) >> 0; + } else { + trunc = true; + } + i = i + (1) >> 0; + continue; + } + break; + } + if (!sawdigits) { + return [mantissa, exp, neg, trunc, hex, i, ok]; + } + if (!sawdot) { + dp = nd; + } + if ((base.$high === 0 && base.$low === 16)) { + dp = $imul(dp, (4)); + ndMant = $imul(ndMant, (4)); + } + if (i < s.length && (lower(s.charCodeAt(i)) === expChar)) { + i = i + (1) >> 0; + if (i >= s.length) { + return [mantissa, exp, neg, trunc, hex, i, ok]; + } + esign = 1; + if (s.charCodeAt(i) === 43) { + i = i + (1) >> 0; + } else if (s.charCodeAt(i) === 45) { + i = i + (1) >> 0; + esign = -1; + } + if (i >= s.length || s.charCodeAt(i) < 48 || s.charCodeAt(i) > 57) { + return [mantissa, exp, neg, trunc, hex, i, ok]; + } + e = 0; + while (true) { + if (!(i < s.length && (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57 || (s.charCodeAt(i) === 95)))) { break; } + if (s.charCodeAt(i) === 95) { + underscores = true; + i = i + (1) >> 0; + continue; + } + if (e < 10000) { + e = (($imul(e, 10)) + ((s.charCodeAt(i) >> 0)) >> 0) - 48 >> 0; + } + i = i + (1) >> 0; + } + dp = dp + (($imul(e, esign))) >> 0; + } else if ((base.$high === 0 && base.$low === 16)) { + return [mantissa, exp, neg, trunc, hex, i, ok]; + } + if (!((mantissa.$high === 0 && mantissa.$low === 0))) { + exp = dp - ndMant >> 0; + } + if (underscores && !underscoreOK($substring(s, 0, i))) { + return [mantissa, exp, neg, trunc, hex, i, ok]; + } + ok = true; + return [mantissa, exp, neg, trunc, hex, i, ok]; + }; + $ptrType(decimal).prototype.floatBits = function floatBits(flt) { + var _tmp, _tmp$1, b, bits$1, d, exp, flt, mant, n, n$1, n$2, overflow, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y, y$1, y$2, y$3, $s; + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = new $Uint64(0, 0); + overflow = false; + d = this; + exp = 0; + mant = new $Uint64(0, 0); + /* */ if (d.nd === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (d.nd === 0) { */ case 1: + mant = new $Uint64(0, 0); + exp = flt.bias; + /* goto out */ $s = 3; continue; + /* } */ case 2: + /* */ if (d.dp > 310) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (d.dp > 310) { */ case 4: + /* goto overflow */ $s = 6; continue; + /* } */ case 5: + /* */ if (d.dp < -330) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (d.dp < -330) { */ case 7: + mant = new $Uint64(0, 0); + exp = flt.bias; + /* goto out */ $s = 3; continue; + /* } */ case 8: + exp = 0; + while (true) { + if (!(d.dp > 0)) { break; } + n = 0; + if (d.dp >= powtab.$length) { + n = 27; + } else { + n = (x = d.dp, ((x < 0 || x >= powtab.$length) ? ($throwRuntimeError("index out of range"), undefined) : powtab.$array[powtab.$offset + x])); + } + d.Shift(-n); + exp = exp + (n) >> 0; + } + while (true) { + if (!(d.dp < 0 || (d.dp === 0) && d.d[0] < 53)) { break; } + n$1 = 0; + if (-d.dp >= powtab.$length) { + n$1 = 27; + } else { + n$1 = (x$1 = -d.dp, ((x$1 < 0 || x$1 >= powtab.$length) ? ($throwRuntimeError("index out of range"), undefined) : powtab.$array[powtab.$offset + x$1])); + } + d.Shift(n$1); + exp = exp - (n$1) >> 0; + } + exp = exp - (1) >> 0; + if (exp < (flt.bias + 1 >> 0)) { + n$2 = (flt.bias + 1 >> 0) - exp >> 0; + d.Shift(-n$2); + exp = exp + (n$2) >> 0; + } + /* */ if ((exp - flt.bias >> 0) >= (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ((exp - flt.bias >> 0) >= (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)) { */ case 9: + /* goto overflow */ $s = 6; continue; + /* } */ case 10: + d.Shift((((1 + flt.mantbits >>> 0) >> 0))); + mant = d.RoundedInteger(); + /* */ if ((x$2 = $shiftLeft64(new $Uint64(0, 2), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if ((x$2 = $shiftLeft64(new $Uint64(0, 2), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) { */ case 11: + mant = $shiftRightUint64(mant, (1)); + exp = exp + (1) >> 0; + /* */ if ((exp - flt.bias >> 0) >= (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0)) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if ((exp - flt.bias >> 0) >= (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0)) { */ case 13: + /* goto overflow */ $s = 6; continue; + /* } */ case 14: + /* } */ case 12: + if ((x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(mant.$high & x$4.$high, (mant.$low & x$4.$low) >>> 0)), (x$3.$high === 0 && x$3.$low === 0))) { + exp = flt.bias; + } + /* goto out */ $s = 3; continue; + /* overflow: */ case 6: + mant = new $Uint64(0, 0); + exp = (((y$2 = flt.expbits, y$2 < 32 ? (1 << y$2) : 0) >> 0) - 1 >> 0) + flt.bias >> 0; + overflow = true; + /* out: */ case 3: + bits$1 = (x$5 = (x$6 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(x$6.$high - 0, x$6.$low - 1)), new $Uint64(mant.$high & x$5.$high, (mant.$low & x$5.$low) >>> 0)); + bits$1 = (x$7 = $shiftLeft64((new $Uint64(0, (((exp - flt.bias >> 0)) & ((((y$3 = flt.expbits, y$3 < 32 ? (1 << y$3) : 0) >> 0) - 1 >> 0))))), flt.mantbits), new $Uint64(bits$1.$high | x$7.$high, (bits$1.$low | x$7.$low) >>> 0)); + if (d.neg) { + bits$1 = (x$8 = $shiftLeft64($shiftLeft64(new $Uint64(0, 1), flt.mantbits), flt.expbits), new $Uint64(bits$1.$high | x$8.$high, (bits$1.$low | x$8.$low) >>> 0)); + } + _tmp = bits$1; + _tmp$1 = overflow; + b = _tmp; + overflow = _tmp$1; + $s = -1; return [b, overflow]; + /* */ } return; } + }; + atof64exact = function atof64exact$1(mantissa, exp, neg) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, exp, f, mantissa, neg, ok, x, x$1, x$2; + f = 0; + ok = false; + if (!((x = $shiftRightUint64(mantissa, float64info.mantbits), (x.$high === 0 && x.$low === 0)))) { + return [f, ok]; + } + f = ($flatten64(mantissa)); + if (neg) { + f = -f; + } + if ((exp === 0)) { + _tmp = f; + _tmp$1 = true; + f = _tmp; + ok = _tmp$1; + return [f, ok]; + } else if (exp > 0 && exp <= 37) { + if (exp > 22) { + f = f * ((x$1 = exp - 22 >> 0, ((x$1 < 0 || x$1 >= float64pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float64pow10.$array[float64pow10.$offset + x$1]))); + exp = 22; + } + if (f > 1e+15 || f < -1e+15) { + return [f, ok]; + } + _tmp$2 = f * ((exp < 0 || exp >= float64pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float64pow10.$array[float64pow10.$offset + exp]); + _tmp$3 = true; + f = _tmp$2; + ok = _tmp$3; + return [f, ok]; + } else if (exp < 0 && exp >= -22) { + _tmp$4 = f / (x$2 = -exp, ((x$2 < 0 || x$2 >= float64pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float64pow10.$array[float64pow10.$offset + x$2])); + _tmp$5 = true; + f = _tmp$4; + ok = _tmp$5; + return [f, ok]; + } + return [f, ok]; + }; + atof32exact = function atof32exact$1(mantissa, exp, neg) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, exp, f, mantissa, neg, ok, x, x$1, x$2; + f = 0; + ok = false; + if (!((x = $shiftRightUint64(mantissa, float32info.mantbits), (x.$high === 0 && x.$low === 0)))) { + return [f, ok]; + } + f = ($flatten64(mantissa)); + if (neg) { + f = -f; + } + if ((exp === 0)) { + _tmp = f; + _tmp$1 = true; + f = _tmp; + ok = _tmp$1; + return [f, ok]; + } else if (exp > 0 && exp <= 17) { + if (exp > 10) { + f = $fround(f * ((x$1 = exp - 10 >> 0, ((x$1 < 0 || x$1 >= float32pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float32pow10.$array[float32pow10.$offset + x$1])))); + exp = 10; + } + if (f > 1e+07 || f < -1e+07) { + return [f, ok]; + } + _tmp$2 = $fround(f * ((exp < 0 || exp >= float32pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float32pow10.$array[float32pow10.$offset + exp])); + _tmp$3 = true; + f = _tmp$2; + ok = _tmp$3; + return [f, ok]; + } else if (exp < 0 && exp >= -10) { + _tmp$4 = $fround(f / (x$2 = -exp, ((x$2 < 0 || x$2 >= float32pow10.$length) ? ($throwRuntimeError("index out of range"), undefined) : float32pow10.$array[float32pow10.$offset + x$2]))); + _tmp$5 = true; + f = _tmp$4; + ok = _tmp$5; + return [f, ok]; + } + return [f, ok]; + }; + atofHex = function atofHex$1(s, flt, mantissa, exp, neg, trunc) { + var bits$1, err, exp, flt, mantissa, maxExp, minExp, neg, round, s, trunc, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, y$1; + maxExp = (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) + flt.bias >> 0) - 2 >> 0; + minExp = flt.bias + 1 >> 0; + exp = exp + (((flt.mantbits >> 0))) >> 0; + while (true) { + if (!(!((mantissa.$high === 0 && mantissa.$low === 0)) && (x = $shiftRightUint64(mantissa, ((flt.mantbits + 2 >>> 0))), (x.$high === 0 && x.$low === 0)))) { break; } + mantissa = $shiftLeft64(mantissa, (1)); + exp = exp - (1) >> 0; + } + if (trunc) { + mantissa = (x$1 = new $Uint64(0, 1), new $Uint64(mantissa.$high | x$1.$high, (mantissa.$low | x$1.$low) >>> 0)); + } + while (true) { + if (!(!((x$2 = $shiftRightUint64(mantissa, (((1 + flt.mantbits >>> 0) + 2 >>> 0))), (x$2.$high === 0 && x$2.$low === 0))))) { break; } + mantissa = (x$3 = $shiftRightUint64(mantissa, 1), x$4 = new $Uint64(mantissa.$high & 0, (mantissa.$low & 1) >>> 0), new $Uint64(x$3.$high | x$4.$high, (x$3.$low | x$4.$low) >>> 0)); + exp = exp + (1) >> 0; + } + while (true) { + if (!((mantissa.$high > 0 || (mantissa.$high === 0 && mantissa.$low > 1)) && exp < (minExp - 2 >> 0))) { break; } + mantissa = (x$5 = $shiftRightUint64(mantissa, 1), x$6 = new $Uint64(mantissa.$high & 0, (mantissa.$low & 1) >>> 0), new $Uint64(x$5.$high | x$6.$high, (x$5.$low | x$6.$low) >>> 0)); + exp = exp + (1) >> 0; + } + round = new $Uint64(mantissa.$high & 0, (mantissa.$low & 3) >>> 0); + mantissa = $shiftRightUint64(mantissa, (2)); + round = (x$7 = new $Uint64(mantissa.$high & 0, (mantissa.$low & 1) >>> 0), new $Uint64(round.$high | x$7.$high, (round.$low | x$7.$low) >>> 0)); + exp = exp + (2) >> 0; + if ((round.$high === 0 && round.$low === 3)) { + mantissa = (x$8 = new $Uint64(0, 1), new $Uint64(mantissa.$high + x$8.$high, mantissa.$low + x$8.$low)); + if ((x$9 = $shiftLeft64(new $Uint64(0, 1), ((1 + flt.mantbits >>> 0))), (mantissa.$high === x$9.$high && mantissa.$low === x$9.$low))) { + mantissa = $shiftRightUint64(mantissa, (1)); + exp = exp + (1) >> 0; + } + } + if ((x$10 = $shiftRightUint64(mantissa, flt.mantbits), (x$10.$high === 0 && x$10.$low === 0))) { + exp = flt.bias; + } + err = $ifaceNil; + if (exp > maxExp) { + mantissa = $shiftLeft64(new $Uint64(0, 1), flt.mantbits); + exp = maxExp + 1 >> 0; + err = rangeError("ParseFloat", s); + } + bits$1 = (x$11 = (x$12 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(x$12.$high - 0, x$12.$low - 1)), new $Uint64(mantissa.$high & x$11.$high, (mantissa.$low & x$11.$low) >>> 0)); + bits$1 = (x$13 = $shiftLeft64((new $Uint64(0, (((exp - flt.bias >> 0)) & ((((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0))))), flt.mantbits), new $Uint64(bits$1.$high | x$13.$high, (bits$1.$low | x$13.$low) >>> 0)); + if (neg) { + bits$1 = (x$14 = $shiftLeft64($shiftLeft64(new $Uint64(0, 1), flt.mantbits), flt.expbits), new $Uint64(bits$1.$high | x$14.$high, (bits$1.$low | x$14.$low) >>> 0)); + } + if (flt === float32info) { + return [(math.Float32frombits(((bits$1.$low >>> 0)))), err]; + } + return [math.Float64frombits(bits$1), err]; + }; + atof32 = function atof32$1(s) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, b, d, err, err$1, exp, f, f$1, f$2, f$3, fUp, hex, mantissa, n, n$1, neg, ok, ok$1, ok$2, ok$3, ok$4, ovf, s, trunc, val; + f = 0; + n = 0; + err = $ifaceNil; + _tuple = special(s); + val = _tuple[0]; + n$1 = _tuple[1]; + ok = _tuple[2]; + if (ok) { + _tmp = ($fround(val)); + _tmp$1 = n$1; + _tmp$2 = $ifaceNil; + f = _tmp; + n = _tmp$1; + err = _tmp$2; + return [f, n, err]; + } + _tuple$1 = readFloat(s); + mantissa = _tuple$1[0]; + exp = _tuple$1[1]; + neg = _tuple$1[2]; + trunc = _tuple$1[3]; + hex = _tuple$1[4]; + n = _tuple$1[5]; + ok$1 = _tuple$1[6]; + if (!ok$1) { + _tmp$3 = 0; + _tmp$4 = n; + _tmp$5 = syntaxError("ParseFloat", s); + f = _tmp$3; + n = _tmp$4; + err = _tmp$5; + return [f, n, err]; + } + if (hex) { + _tuple$2 = atofHex($substring(s, 0, n), float32info, mantissa, exp, neg, trunc); + f$1 = _tuple$2[0]; + err$1 = _tuple$2[1]; + _tmp$6 = ($fround(f$1)); + _tmp$7 = n; + _tmp$8 = err$1; + f = _tmp$6; + n = _tmp$7; + err = _tmp$8; + return [f, n, err]; + } + if (optimize) { + if (!trunc) { + _tuple$3 = atof32exact(mantissa, exp, neg); + f$2 = _tuple$3[0]; + ok$2 = _tuple$3[1]; + if (ok$2) { + _tmp$9 = f$2; + _tmp$10 = n; + _tmp$11 = $ifaceNil; + f = _tmp$9; + n = _tmp$10; + err = _tmp$11; + return [f, n, err]; + } + } + _tuple$4 = eiselLemire32(mantissa, exp, neg); + f$3 = _tuple$4[0]; + ok$3 = _tuple$4[1]; + if (ok$3) { + if (!trunc) { + _tmp$12 = f$3; + _tmp$13 = n; + _tmp$14 = $ifaceNil; + f = _tmp$12; + n = _tmp$13; + err = _tmp$14; + return [f, n, err]; + } + _tuple$5 = eiselLemire32(new $Uint64(mantissa.$high + 0, mantissa.$low + 1), exp, neg); + fUp = _tuple$5[0]; + ok$4 = _tuple$5[1]; + if (ok$4 && (f$3 === fUp)) { + _tmp$15 = f$3; + _tmp$16 = n; + _tmp$17 = $ifaceNil; + f = _tmp$15; + n = _tmp$16; + err = _tmp$17; + return [f, n, err]; + } + } + } + d = new decimal.ptr(arrayType$5.zero(), 0, 0, false, false); + if (!d.set($substring(s, 0, n))) { + _tmp$18 = 0; + _tmp$19 = n; + _tmp$20 = syntaxError("ParseFloat", s); + f = _tmp$18; + n = _tmp$19; + err = _tmp$20; + return [f, n, err]; + } + _tuple$6 = d.floatBits(float32info); + b = _tuple$6[0]; + ovf = _tuple$6[1]; + f = math.Float32frombits(((b.$low >>> 0))); + if (ovf) { + err = rangeError("ParseFloat", s); + } + _tmp$21 = f; + _tmp$22 = n; + _tmp$23 = err; + f = _tmp$21; + n = _tmp$22; + err = _tmp$23; + return [f, n, err]; + }; + atof64 = function atof64$1(s) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, b, d, err, err$1, exp, f, f$1, f$2, f$3, fUp, hex, mantissa, n, n$1, neg, ok, ok$1, ok$2, ok$3, ok$4, ovf, s, trunc, val; + f = 0; + n = 0; + err = $ifaceNil; + _tuple = special(s); + val = _tuple[0]; + n$1 = _tuple[1]; + ok = _tuple[2]; + if (ok) { + _tmp = val; + _tmp$1 = n$1; + _tmp$2 = $ifaceNil; + f = _tmp; + n = _tmp$1; + err = _tmp$2; + return [f, n, err]; + } + _tuple$1 = readFloat(s); + mantissa = _tuple$1[0]; + exp = _tuple$1[1]; + neg = _tuple$1[2]; + trunc = _tuple$1[3]; + hex = _tuple$1[4]; + n = _tuple$1[5]; + ok$1 = _tuple$1[6]; + if (!ok$1) { + _tmp$3 = 0; + _tmp$4 = n; + _tmp$5 = syntaxError("ParseFloat", s); + f = _tmp$3; + n = _tmp$4; + err = _tmp$5; + return [f, n, err]; + } + if (hex) { + _tuple$2 = atofHex($substring(s, 0, n), float64info, mantissa, exp, neg, trunc); + f$1 = _tuple$2[0]; + err$1 = _tuple$2[1]; + _tmp$6 = f$1; + _tmp$7 = n; + _tmp$8 = err$1; + f = _tmp$6; + n = _tmp$7; + err = _tmp$8; + return [f, n, err]; + } + if (optimize) { + if (!trunc) { + _tuple$3 = atof64exact(mantissa, exp, neg); + f$2 = _tuple$3[0]; + ok$2 = _tuple$3[1]; + if (ok$2) { + _tmp$9 = f$2; + _tmp$10 = n; + _tmp$11 = $ifaceNil; + f = _tmp$9; + n = _tmp$10; + err = _tmp$11; + return [f, n, err]; + } + } + _tuple$4 = eiselLemire64(mantissa, exp, neg); + f$3 = _tuple$4[0]; + ok$3 = _tuple$4[1]; + if (ok$3) { + if (!trunc) { + _tmp$12 = f$3; + _tmp$13 = n; + _tmp$14 = $ifaceNil; + f = _tmp$12; + n = _tmp$13; + err = _tmp$14; + return [f, n, err]; + } + _tuple$5 = eiselLemire64(new $Uint64(mantissa.$high + 0, mantissa.$low + 1), exp, neg); + fUp = _tuple$5[0]; + ok$4 = _tuple$5[1]; + if (ok$4 && (f$3 === fUp)) { + _tmp$15 = f$3; + _tmp$16 = n; + _tmp$17 = $ifaceNil; + f = _tmp$15; + n = _tmp$16; + err = _tmp$17; + return [f, n, err]; + } + } + } + d = new decimal.ptr(arrayType$5.zero(), 0, 0, false, false); + if (!d.set($substring(s, 0, n))) { + _tmp$18 = 0; + _tmp$19 = n; + _tmp$20 = syntaxError("ParseFloat", s); + f = _tmp$18; + n = _tmp$19; + err = _tmp$20; + return [f, n, err]; + } + _tuple$6 = d.floatBits(float64info); + b = _tuple$6[0]; + ovf = _tuple$6[1]; + f = math.Float64frombits(b); + if (ovf) { + err = rangeError("ParseFloat", s); + } + _tmp$21 = f; + _tmp$22 = n; + _tmp$23 = err; + f = _tmp$21; + n = _tmp$22; + err = _tmp$23; + return [f, n, err]; + }; + ParseFloat = function ParseFloat$1(s, bitSize) { + var _tuple, bitSize, err, f, n, s; + _tuple = parseFloatPrefix(s, bitSize); + f = _tuple[0]; + n = _tuple[1]; + err = _tuple[2]; + if (!((n === s.length)) && ($interfaceIsEqual(err, $ifaceNil) || !($interfaceIsEqual($assertType(err, ptrType$1).Err, $pkg.ErrSyntax)))) { + return [0, syntaxError("ParseFloat", s)]; + } + return [f, err]; + }; + $pkg.ParseFloat = ParseFloat; + parseFloatPrefix = function parseFloatPrefix$1(s, bitSize) { + var _tuple, bitSize, err, f, n, s; + if (bitSize === 32) { + _tuple = atof32(s); + f = _tuple[0]; + n = _tuple[1]; + err = _tuple[2]; + return [(f), n, err]; + } + return atof64(s); + }; + FormatBool = function FormatBool$1(b) { + var b; + if (b) { + return "true"; + } + return "false"; + }; + $pkg.FormatBool = FormatBool; + ptrType$2.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Assign", name: "Assign", pkg: "", typ: $funcType([$Uint64], [], false)}, {prop: "Shift", name: "Shift", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundDown", name: "RoundDown", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundUp", name: "RoundUp", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundedInteger", name: "RoundedInteger", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "set", name: "set", pkg: "strconv", typ: $funcType([$String], [$Bool], false)}, {prop: "floatBits", name: "floatBits", pkg: "strconv", typ: $funcType([ptrType], [$Uint64, $Bool], false)}]; + ptrType$1.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [$error], false)}]; + floatInfo.init("strconv", [{prop: "mantbits", name: "mantbits", embedded: false, exported: false, typ: $Uint, tag: ""}, {prop: "expbits", name: "expbits", embedded: false, exported: false, typ: $Uint, tag: ""}, {prop: "bias", name: "bias", embedded: false, exported: false, typ: $Int, tag: ""}]); + decimalSlice.init("strconv", [{prop: "d", name: "d", embedded: false, exported: false, typ: sliceType$6, tag: ""}, {prop: "nd", name: "nd", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "dp", name: "dp", embedded: false, exported: false, typ: $Int, tag: ""}]); + decimal.init("strconv", [{prop: "d", name: "d", embedded: false, exported: false, typ: arrayType$5, tag: ""}, {prop: "nd", name: "nd", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "dp", name: "dp", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "neg", name: "neg", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "trunc", name: "trunc", embedded: false, exported: false, typ: $Bool, tag: ""}]); + leftCheat.init("strconv", [{prop: "delta", name: "delta", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "cutoff", name: "cutoff", embedded: false, exported: false, typ: $String, tag: ""}]); + NumError.init("", [{prop: "Func", name: "Func", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Num", name: "Num", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytealg.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bits.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + isPrint16 = new sliceType([32, 126, 161, 887, 890, 895, 900, 1366, 1369, 1418, 1421, 1479, 1488, 1514, 1519, 1524, 1542, 1563, 1566, 1805, 1808, 1866, 1869, 1969, 1984, 2042, 2045, 2093, 2096, 2139, 2142, 2154, 2208, 2247, 2259, 2444, 2447, 2448, 2451, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2531, 2534, 2558, 2561, 2570, 2575, 2576, 2579, 2617, 2620, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2654, 2662, 2678, 2689, 2745, 2748, 2765, 2768, 2768, 2784, 2787, 2790, 2801, 2809, 2828, 2831, 2832, 2835, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2901, 2903, 2908, 2915, 2918, 2935, 2946, 2954, 2958, 2965, 2969, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3021, 3024, 3024, 3031, 3031, 3046, 3066, 3072, 3129, 3133, 3149, 3157, 3162, 3168, 3171, 3174, 3183, 3191, 3257, 3260, 3277, 3285, 3286, 3294, 3299, 3302, 3314, 3328, 3407, 3412, 3427, 3430, 3478, 3482, 3517, 3520, 3526, 3530, 3530, 3535, 3551, 3558, 3567, 3570, 3572, 3585, 3642, 3647, 3675, 3713, 3773, 3776, 3789, 3792, 3801, 3804, 3807, 3840, 3948, 3953, 4058, 4096, 4295, 4301, 4301, 4304, 4685, 4688, 4701, 4704, 4749, 4752, 4789, 4792, 4805, 4808, 4885, 4888, 4954, 4957, 4988, 4992, 5017, 5024, 5109, 5112, 5117, 5120, 5788, 5792, 5880, 5888, 5908, 5920, 5942, 5952, 5971, 5984, 6003, 6016, 6109, 6112, 6121, 6128, 6137, 6144, 6157, 6160, 6169, 6176, 6264, 6272, 6314, 6320, 6389, 6400, 6443, 6448, 6459, 6464, 6464, 6468, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6622, 6683, 6686, 6780, 6783, 6793, 6800, 6809, 6816, 6829, 6832, 6848, 6912, 6987, 6992, 7036, 7040, 7155, 7164, 7223, 7227, 7241, 7245, 7304, 7312, 7354, 7357, 7367, 7376, 7418, 7424, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8061, 8064, 8147, 8150, 8175, 8178, 8190, 8208, 8231, 8240, 8286, 8304, 8305, 8308, 8348, 8352, 8383, 8400, 8432, 8448, 8587, 8592, 9254, 9280, 9290, 9312, 11123, 11126, 11507, 11513, 11559, 11565, 11565, 11568, 11623, 11631, 11632, 11647, 11670, 11680, 11858, 11904, 12019, 12032, 12245, 12272, 12283, 12289, 12438, 12441, 12543, 12549, 12771, 12784, 40956, 40960, 42124, 42128, 42182, 42192, 42539, 42560, 42743, 42752, 42943, 42946, 42954, 42997, 43052, 43056, 43065, 43072, 43127, 43136, 43205, 43214, 43225, 43232, 43347, 43359, 43388, 43392, 43481, 43486, 43574, 43584, 43597, 43600, 43609, 43612, 43714, 43739, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43883, 43888, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64449, 64467, 64831, 64848, 64911, 64914, 64967, 65008, 65021, 65024, 65049, 65056, 65131, 65136, 65276, 65281, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65504, 65518, 65532, 65533]); + isNotPrint16 = new sliceType([173, 907, 909, 930, 1328, 1424, 1757, 2111, 2143, 2229, 2274, 2436, 2473, 2481, 2526, 2564, 2601, 2609, 2612, 2615, 2621, 2653, 2692, 2702, 2706, 2729, 2737, 2740, 2758, 2762, 2816, 2820, 2857, 2865, 2868, 2910, 2948, 2961, 2971, 2973, 3017, 3085, 3089, 3113, 3141, 3145, 3159, 3213, 3217, 3241, 3252, 3269, 3273, 3295, 3312, 3341, 3345, 3397, 3401, 3456, 3460, 3506, 3516, 3541, 3543, 3715, 3717, 3723, 3748, 3750, 3781, 3783, 3912, 3992, 4029, 4045, 4294, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, 4881, 5760, 5901, 5997, 6001, 6431, 6751, 7674, 8024, 8026, 8028, 8030, 8117, 8133, 8156, 8181, 8335, 11158, 11311, 11359, 11558, 11687, 11695, 11703, 11711, 11719, 11727, 11735, 11743, 11930, 12352, 12592, 12687, 12831, 43470, 43519, 43815, 43823, 64311, 64317, 64319, 64322, 64325, 65107, 65127, 65141, 65511]); + isPrint32 = new sliceType$1([65536, 65613, 65616, 65629, 65664, 65786, 65792, 65794, 65799, 65843, 65847, 65948, 65952, 65952, 66000, 66045, 66176, 66204, 66208, 66256, 66272, 66299, 66304, 66339, 66349, 66378, 66384, 66426, 66432, 66499, 66504, 66517, 66560, 66717, 66720, 66729, 66736, 66771, 66776, 66811, 66816, 66855, 66864, 66915, 66927, 66927, 67072, 67382, 67392, 67413, 67424, 67431, 67584, 67589, 67592, 67640, 67644, 67644, 67647, 67742, 67751, 67759, 67808, 67829, 67835, 67867, 67871, 67897, 67903, 67903, 67968, 68023, 68028, 68047, 68050, 68102, 68108, 68149, 68152, 68154, 68159, 68168, 68176, 68184, 68192, 68255, 68288, 68326, 68331, 68342, 68352, 68405, 68409, 68437, 68440, 68466, 68472, 68497, 68505, 68508, 68521, 68527, 68608, 68680, 68736, 68786, 68800, 68850, 68858, 68903, 68912, 68921, 69216, 69293, 69296, 69297, 69376, 69415, 69424, 69465, 69552, 69579, 69600, 69622, 69632, 69709, 69714, 69743, 69759, 69825, 69840, 69864, 69872, 69881, 69888, 69959, 69968, 70006, 70016, 70132, 70144, 70206, 70272, 70313, 70320, 70378, 70384, 70393, 70400, 70412, 70415, 70416, 70419, 70468, 70471, 70472, 70475, 70477, 70480, 70480, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70656, 70753, 70784, 70855, 70864, 70873, 71040, 71093, 71096, 71133, 71168, 71236, 71248, 71257, 71264, 71276, 71296, 71352, 71360, 71369, 71424, 71450, 71453, 71467, 71472, 71487, 71680, 71739, 71840, 71922, 71935, 71942, 71945, 71945, 71948, 71992, 71995, 72006, 72016, 72025, 72096, 72103, 72106, 72151, 72154, 72164, 72192, 72263, 72272, 72354, 72384, 72440, 72704, 72773, 72784, 72812, 72816, 72847, 72850, 72886, 72960, 73014, 73018, 73031, 73040, 73049, 73056, 73112, 73120, 73129, 73440, 73464, 73648, 73648, 73664, 73713, 73727, 74649, 74752, 74868, 74880, 75075, 77824, 78894, 82944, 83526, 92160, 92728, 92736, 92777, 92782, 92783, 92880, 92909, 92912, 92917, 92928, 92997, 93008, 93047, 93053, 93071, 93760, 93850, 93952, 94026, 94031, 94087, 94095, 94111, 94176, 94180, 94192, 94193, 94208, 100343, 100352, 101589, 101632, 101640, 110592, 110878, 110928, 110930, 110948, 110951, 110960, 111355, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113820, 113823, 118784, 119029, 119040, 119078, 119081, 119154, 119163, 119272, 119296, 119365, 119520, 119539, 119552, 119638, 119648, 119672, 119808, 119967, 119970, 119970, 119973, 119974, 119977, 120074, 120077, 120134, 120138, 120485, 120488, 120779, 120782, 121483, 121499, 121519, 122880, 122904, 122907, 122922, 123136, 123180, 123184, 123197, 123200, 123209, 123214, 123215, 123584, 123641, 123647, 123647, 124928, 125124, 125127, 125142, 125184, 125259, 125264, 125273, 125278, 125279, 126065, 126132, 126209, 126269, 126464, 126500, 126503, 126523, 126530, 126530, 126535, 126548, 126551, 126564, 126567, 126619, 126625, 126651, 126704, 126705, 126976, 127019, 127024, 127123, 127136, 127150, 127153, 127221, 127232, 127405, 127462, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 128727, 128736, 128748, 128752, 128764, 128768, 128883, 128896, 128984, 128992, 129003, 129024, 129035, 129040, 129095, 129104, 129113, 129120, 129159, 129168, 129197, 129200, 129201, 129280, 129619, 129632, 129645, 129648, 129652, 129656, 129658, 129664, 129670, 129680, 129704, 129712, 129718, 129728, 129730, 129744, 129750, 129792, 129994, 130032, 130041, 131072, 173789, 173824, 177972, 177984, 178205, 178208, 183969, 183984, 191456, 194560, 195101, 196608, 201546, 917760, 917999]); + isNotPrint32 = new sliceType([12, 39, 59, 62, 399, 926, 2057, 2102, 2134, 2291, 2564, 2580, 2584, 3711, 3754, 4285, 4405, 4576, 4626, 4743, 4745, 4750, 4766, 4868, 4905, 4913, 4916, 4922, 5212, 6420, 6423, 6454, 7177, 7223, 7336, 7431, 7434, 7483, 7486, 7526, 7529, 7567, 7570, 9327, 27231, 27482, 27490, 54357, 54429, 54445, 54458, 54460, 54468, 54534, 54549, 54557, 54586, 54591, 54597, 54609, 55968, 57351, 57378, 57381, 60932, 60960, 60963, 60968, 60979, 60984, 60986, 61000, 61002, 61004, 61008, 61011, 61016, 61018, 61020, 61022, 61024, 61027, 61035, 61043, 61048, 61053, 61055, 61066, 61092, 61098, 61632, 61648, 63865, 63948, 64403]); + isGraphic = new sliceType([160, 5760, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8239, 8287, 12288]); + uint64pow10 = $toNativeArray($kindUint64, [new $Uint64(0, 1), new $Uint64(0, 10), new $Uint64(0, 100), new $Uint64(0, 1000), new $Uint64(0, 10000), new $Uint64(0, 100000), new $Uint64(0, 1000000), new $Uint64(0, 10000000), new $Uint64(0, 100000000), new $Uint64(0, 1000000000), new $Uint64(2, 1410065408), new $Uint64(23, 1215752192), new $Uint64(232, 3567587328), new $Uint64(2328, 1316134912), new $Uint64(23283, 276447232), new $Uint64(232830, 2764472320), new $Uint64(2328306, 1874919424), new $Uint64(23283064, 1569325056), new $Uint64(232830643, 2808348672), new $Uint64(2328306436, 2313682944)]); + float32info = new floatInfo.ptr(23, 8, -127); + float64info = new floatInfo.ptr(52, 11, -1023); + detailedPowersOfTen = $toNativeArray($kindArray, [$clone($toNativeArray($kindUint64, [new $Uint64(389204073, 3445679187), new $Uint64(4203730336, 136053384)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(243252546, 542936756), new $Uint64(2627331460, 85033365)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1377807506, 2826154593), new $Uint64(3284164325, 106291706)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3869743031, 1385209593), new $Uint64(4105205406, 1206606456)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2418589394, 2476368732), new $Uint64(2565753378, 3975354507)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1949494919, 947977267), new $Uint64(3207191723, 2821709486)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(289385001, 111229759), new $Uint64(4008989654, 2453395034)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1254607449, 2753873159), new $Uint64(2505618534, 459630072)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1568259312, 221115977), new $Uint64(3132023167, 2722021238)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4107807788, 276394972), new $Uint64(3915028959, 2328784723)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2030508955, 2320230505), new $Uint64(2446893099, 3066103188)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2538136194, 1826546308), new $Uint64(3058616374, 2758887161)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4246412067, 135699237), new $Uint64(3823270468, 1301125303)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4264620277, 3842908407), new $Uint64(2389544042, 2960686962)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3183291699, 1582410037), new $Uint64(2986930053, 1553375055)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2905372800, 904270722), new $Uint64(3733662566, 3015460643)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1278987088, 565169201), new $Uint64(2333539104, 810921078)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3746217508, 706461501), new $Uint64(2916923880, 1013651347)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3609030061, 883076877), new $Uint64(3646154850, 1267064184)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2255643788, 1088793960), new $Uint64(2278846781, 1865656939)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1745812911, 1360992450), new $Uint64(2848558476, 3405812998)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(34782491, 627498738), new $Uint64(3560698095, 4257266248)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(21739056, 4150283095), new $Uint64(2225436309, 4271404141)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1100915645, 892886573), new $Uint64(2781795387, 2118029704)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1376144556, 2189850041), new $Uint64(3477244234, 1573795306)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1933832171, 3516139923), new $Uint64(2173277646, 2057363890)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(269806566, 3321433080), new $Uint64(2716597058, 424221215)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3558483680, 2004307702), new $Uint64(3395746322, 2677760166)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2300620952, 2505384628), new $Uint64(4244682903, 1199716560)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1437888095, 1565865392), new $Uint64(2652926814, 2360435586)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3944843767, 883589917), new $Uint64(3316158518, 803060834)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2783571061, 30745572), new $Uint64(4145198147, 3151309691)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1202861001, 556086894), new $Uint64(2590748842, 1432697645)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2577318075, 1768850442), new $Uint64(3238436052, 3938355704)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3221647594, 1137321229), new $Uint64(4048045066, 627977334)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(939787922, 1784567592), new $Uint64(2530028166, 1466227658)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3322218551, 83225842), new $Uint64(3162535207, 3980268220)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4152773188, 3325257774), new $Uint64(3953169009, 3901593451)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2058612330, 4225769757), new $Uint64(2470730631, 827883171)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1499523589, 3134728548), new $Uint64(3088413288, 4256079436)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1874404487, 697185213), new $Uint64(3860516611, 1025131999)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2782115540, 2046353494), new $Uint64(2412822882, 103836587)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2403902601, 2557941868), new $Uint64(3016028602, 2277279382)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(857394603, 4271169159), new $Uint64(3770035753, 699115580)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2683355275, 2132609812), new $Uint64(2356272345, 3121301797)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(132968622, 1592020441), new $Uint64(2945340432, 680401775)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3387436249, 4137509200), new $Uint64(3681675540, 850502218)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3190889480, 975330514), new $Uint64(2301047212, 2679047534)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1841128202, 1219163142), new $Uint64(2876309015, 3348809418)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(153926604, 3671437576), new $Uint64(3595386269, 3112269949)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(633075040, 147164837), new $Uint64(2247116418, 2482039630)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2938827448, 183956046), new $Uint64(2808895523, 955065889)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(452308838, 229945057), new $Uint64(3511119404, 120090538)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1356434847, 3364941133), new $Uint64(2194449627, 2222540234)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3843027207, 3132434592), new $Uint64(2743062034, 1704433468)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(508816713, 2841801416), new $Uint64(3428827542, 4278025484)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(636020892, 331026298), new $Uint64(4286034428, 3200048207)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2008125793, 2354375084), new $Uint64(2678771517, 4147513777)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3583899065, 4016710679), new $Uint64(3348464397, 1963166749)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1258648360, 1799662877), new $Uint64(4185580496, 3527700261)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1323526137, 1124789298), new $Uint64(2615987810, 2204812663)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(580665847, 2479728447), new $Uint64(3269984763, 608532181)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1799574133, 2025918735), new $Uint64(4087480953, 3981890698)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2198475657, 1803070121), new $Uint64(2554675596, 878068950)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(600610923, 3327579475), new $Uint64(3193344495, 1097586188)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(750763654, 3085732520), new $Uint64(3991680619, 298240911)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2079840020, 854841001), new $Uint64(2494800386, 3944496953)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3673541849, 1068551251), new $Uint64(3118500483, 2783137543)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3518185487, 2409430888), new $Uint64(3898125604, 2405180105)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(588253193, 3116507041), new $Uint64(2436328502, 3650721214)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2882800140, 674408330), new $Uint64(3045410628, 2415917869)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(382274703, 843010412), new $Uint64(3806763285, 3019897337)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2923276249, 2137494243), new $Uint64(2379227053, 2424306747)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2580353487, 3745609628), new $Uint64(2974033816, 4104125258)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1077958211, 3608270211), new $Uint64(3717542271, 835189277)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1210594794, 1718297970), new $Uint64(2323463919, 2132606034)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3660727141, 388815), new $Uint64(2904329899, 1592015718)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2428425278, 1074227842), new $Uint64(3630412374, 916277824)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1517765798, 3892617873), new $Uint64(2269007733, 3793899112)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1897207248, 2718288694), new $Uint64(2836259667, 1521148418)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(224025412, 3397860867), new $Uint64(3545324584, 827693699)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3898112266, 4271146690), new $Uint64(2215827865, 517308561)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1651414861, 3191449714), new $Uint64(2769784831, 1720377526)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4211752225, 768086671), new $Uint64(3462231039, 1076730083)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2095474228, 3164408729), new $Uint64(2163894399, 2283569038)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(471859137, 3955510912), new $Uint64(2704867999, 1780719474)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2737307570, 1723163168), new $Uint64(3381084999, 1152157518)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1274150815, 6470312), new $Uint64(4226356249, 366455074)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1870086083, 1614656681), new $Uint64(2641472655, 2913388981)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3411349428, 944579027), new $Uint64(3301840819, 2567994402)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2116703137, 1180723784), new $Uint64(4127301024, 2136251179)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(786068548, 3422306925), new $Uint64(2579563140, 1335156987)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4203811157, 4277883656), new $Uint64(3224453925, 1668946233)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2033538475, 2126129098), new $Uint64(4030567406, 3159924616)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1270961547, 791959774), new $Uint64(2519104629, 901211061)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2662443757, 4211175190), new $Uint64(3148880786, 2200255650)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1180571049, 2042743516), new $Uint64(3936100983, 602835915)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(200985993, 3961069257), new $Uint64(2460063114, 1987385183)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3472457964, 1730111099), new $Uint64(3075078893, 336747830)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2193088807, 2162638874), new $Uint64(3843848616, 1494676612)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3518164152, 2962262032), new $Uint64(2402405385, 934172882)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2250221542, 3702827541), new $Uint64(3003006731, 2241457927)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1739035104, 2481050778), new $Uint64(3753758414, 1728080585)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3771251500, 1550656736), new $Uint64(2346099009, 6308541)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1492838903, 1938320920), new $Uint64(2932623761, 1081627501)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2939790453, 1349159326), new $Uint64(3665779701, 2425776200)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1837369033, 1380095491), new $Uint64(2291112313, 2052981037)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3370453115, 2798861187), new $Uint64(2863890391, 3639968120)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4213066394, 2424834660), new $Uint64(3579862989, 3476218326)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1559424672, 2589263487), new $Uint64(2237414368, 2709507366)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4096764488, 3236579358), new $Uint64(2796767960, 3386884207)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4047213786, 4045724198), new $Uint64(3495959950, 4233605259)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1992637704, 3602319448), new $Uint64(2184974969, 1572261463)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1417055307, 207932014), new $Uint64(2731218711, 3039068653)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2845060957, 3481140489), new $Uint64(3414023389, 2725093992)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3556326197, 1130200140), new $Uint64(4267529237, 185142018)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3296445697, 1243245999), new $Uint64(2667205773, 652584673)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(899331649, 2627799323), new $Uint64(3334007216, 1889472666)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3271648210, 63523682), new $Uint64(4167509020, 2361840832)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2044780131, 1113444125), new $Uint64(2604693137, 3623634168)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2555975164, 318063332), new $Uint64(3255866422, 1308317238)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1047485307, 397579165), new $Uint64(4069833027, 3782880196)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2802161964, 4006583362), new $Uint64(2543645642, 1827429210)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1355218808, 713261907), new $Uint64(3179557053, 136802865)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2767765334, 891577384), new $Uint64(3974446316, 1244745405)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2266724245, 3778461337), new $Uint64(2484028947, 2925449526)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(685921659, 1501851199), new $Uint64(3105036184, 2583070084)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(857402074, 803572175), new $Uint64(3881295230, 3228837605)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1072747208, 1575974433), new $Uint64(2425809519, 944281679)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(267192186, 1969968041), new $Uint64(3032261899, 106610275)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3555215705, 314976404), new $Uint64(3790327373, 3354488315)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1685138903, 2881214812), new $Uint64(2368954608, 2633426109)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3180165453, 2527776691), new $Uint64(2961193260, 3291782636)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3975206816, 4233462688), new $Uint64(3701491575, 4114728295)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4095116996, 2645914180), new $Uint64(2313432234, 4182317920)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(823928949, 3307392725), new $Uint64(2891790293, 3080413753)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2103653011, 913015435), new $Uint64(3614737867, 629291719)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2925395868, 33763735), new $Uint64(2259211166, 4151403708)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3656744835, 42204668), new $Uint64(2824013958, 3041770987)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3497189219, 3273981307), new $Uint64(3530017448, 1654730086)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1112001438, 1509367405), new $Uint64(2206260905, 1034206304)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1390001797, 4034192904), new $Uint64(2757826131, 2366499704)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1737502247, 1821515659), new $Uint64(3447282664, 1884382806)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(12197080, 2749060022), new $Uint64(2154551665, 1177739254)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2162729998, 3436325028), new $Uint64(2693189581, 2545915891)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1629670674, 2147922637), new $Uint64(3366486976, 4256136688)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2037088343, 537419649), new $Uint64(4208108721, 1025203564)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3420663862, 1946500016), new $Uint64(2630067950, 3325106787)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3202088004, 285641372), new $Uint64(3287584938, 2008899836)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4002610005, 357051716), new $Uint64(4109481173, 363641147)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1964760341, 760028234), new $Uint64(2568425733, 764146629)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3529692250, 2023777117), new $Uint64(3210532166, 2028925110)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2264631665, 382237748), new $Uint64(4013165208, 388672740)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3562878438, 2923253152), new $Uint64(2508228255, 242920462)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2306114400, 1506582793), new $Uint64(3135285318, 3524876050)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(735159352, 1883228491), new $Uint64(3919106648, 2258611415)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2070087331, 1177017807), new $Uint64(2449441655, 1411632134)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(440125516, 397530434), new $Uint64(3061802069, 690798344)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(550156895, 496913043), new $Uint64(3827252586, 1937239754)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1417589883, 1921183388), new $Uint64(2392032866, 2284516670)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3919471002, 1327737411), new $Uint64(2990041083, 708162189)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1678113280, 3807155412), new $Uint64(3737551353, 4106428209)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3733175360, 2379472132), new $Uint64(2335969596, 955904894)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2518985552, 2974340165), new $Uint64(2919961995, 1194881118)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1001248292, 3717925207), new $Uint64(3649952494, 419859574)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3847005655, 176219606), new $Uint64(2281220308, 3483637705)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1587531596, 3441499980), new $Uint64(2851525386, 59579836)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1984414496, 6907679), new $Uint64(3564406732, 2221958443)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(703388148, 4317299), new $Uint64(2227754207, 3536207675)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4100460657, 5396624), new $Uint64(2784692759, 3346517769)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1904350349, 1080487604), new $Uint64(3480865949, 3109405388)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3337702616, 1212175664), new $Uint64(2175541218, 2480249279)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3098386446, 1515219580), new $Uint64(2719426523, 952827951)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2799241233, 4041508124), new $Uint64(3399283154, 117293115)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2425309718, 1830659683), new $Uint64(4249103942, 2294100042)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2589560398, 70420478), new $Uint64(2655689964, 360070702)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1089466849, 2235509245), new $Uint64(3319612455, 450088378)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3509317209, 3868128380), new $Uint64(4149515568, 3783835944)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2193323256, 806967502), new $Uint64(2593447230, 2364897465)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3815395894, 1008709377), new $Uint64(3241809038, 808638183)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3695503043, 3408370369), new $Uint64(4052261297, 3158281377)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(699076666, 1593360569), new $Uint64(2532663311, 363313125)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1947587656, 4139184359), new $Uint64(3165829138, 3675366878)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(287000923, 879013153), new $Uint64(3957286423, 2446724950)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3400601049, 12512308), new $Uint64(2473304014, 3139815829)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1029525839, 1089382210), new $Uint64(3091630018, 1777286139)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(213165475, 287985938), new $Uint64(3864537523, 74124026)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1206970245, 3938087595), new $Uint64(2415335951, 3804423900)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1508712807, 1701384022), new $Uint64(3019169939, 3681788051)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(812149185, 1052988204), new $Uint64(3773962424, 3528493240)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(507593240, 3342472187), new $Uint64(2358726515, 2205308275)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3855717022, 4178090234), new $Uint64(2948408144, 1682893519)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3745904454, 3075129145), new $Uint64(3685510180, 2103616899)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1804319372, 848213891), new $Uint64(2303443862, 3462244210)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(107915567, 1060267364), new $Uint64(2879304828, 2180321615)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3356119931, 251592381), new $Uint64(3599131035, 2725402018)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3171316780, 3915341622), new $Uint64(2249456897, 1166505349)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(742920504, 599209732), new $Uint64(2811821121, 2531873511)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4149876102, 749012165), new $Uint64(3514776401, 4238583712)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2593672563, 3689358075), new $Uint64(2196735251, 1038502084)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3242090704, 3537955770), new $Uint64(2745919064, 224385781)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(831387909, 127477416), new $Uint64(3432398830, 280482227)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4260460358, 1233088594), new $Uint64(4290498537, 2498086431)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4273400459, 3991905843), new $Uint64(2681561585, 4245658579)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4268008750, 3916140480), new $Uint64(3351951982, 2085847752)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1040043642, 2747691952), new $Uint64(4189939978, 459826043)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(113156364, 2791049294), new $Uint64(2618712486, 1361133101)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1215187279, 3488811618), new $Uint64(3273390607, 3848900024)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1518984099, 3287272698), new $Uint64(4091738259, 3737383206)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4170590534, 1517674524), new $Uint64(2557336412, 1798993591)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4139496343, 4044576803), new $Uint64(3196670515, 2248741989)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1953144957, 3981979180), new $Uint64(3995838144, 1737185663)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2831328334, 3025607900), new $Uint64(2497398840, 1085741039)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2465418594, 1634526227), new $Uint64(3121748550, 1357176299)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2008031418, 4190641431), new $Uint64(3902185687, 3843954022)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(181277812, 3692892718), new $Uint64(2438866054, 4013084000)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(226597266, 321148602), new $Uint64(3048582568, 2868871352)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(283246582, 2548919401), new $Uint64(3810728210, 3586089190)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3398254586, 519332801), new $Uint64(2381705131, 3315047567)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3174076408, 2796649650), new $Uint64(2977131414, 3070067635)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2893853686, 3495812062), new $Uint64(3721414268, 1690100896)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1808658554, 1111140715), new $Uint64(2325883917, 3203796708)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2260823192, 3536409542), new $Uint64(2907354897, 783520413)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3899770815, 125544631), new $Uint64(3634193621, 2053142340)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(289873111, 1689078130), new $Uint64(2271371013, 1820084875)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3583566861, 1037605839), new $Uint64(2839213766, 3348847917)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1258233104, 2370749123), new $Uint64(3549017208, 2038576249)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3470750250, 1481718202), new $Uint64(2218135755, 1274110155)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3264695988, 3999631400), new $Uint64(2772669694, 518895870)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1933386338, 704571954), new $Uint64(3465837117, 2796103486)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(134624637, 1514099295), new $Uint64(2166148198, 2284435591)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3389506268, 2966365943), new $Uint64(2707685248, 708060840)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4236882835, 3707957429), new $Uint64(3384606560, 885076050)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3148619896, 3561204962), new $Uint64(4230758200, 1106345063)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3578500171, 2225753101), new $Uint64(2644223875, 691465664)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(178157918, 1708449553), new $Uint64(3305279843, 4085557553)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1296439221, 4283045589), new $Uint64(4131599804, 4033205117)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1347145425, 3213774405), new $Uint64(2582249878, 373269550)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3831415430, 795992534), new $Uint64(3227812347, 2614070585)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1568043815, 3142474316), new $Uint64(4034765434, 2193846408)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(980027384, 3574659183), new $Uint64(2521728396, 2444895829)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2298776055, 173356683), new $Uint64(3152160495, 3056119786)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(725986420, 3437921326), new $Uint64(3940200619, 2746407909)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(990612425, 1217181), new $Uint64(2462625387, 1179634031)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(164523707, 1075263300), new $Uint64(3078281734, 400800715)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3426880106, 270337301), new $Uint64(3847852167, 2648484541)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2678670978, 1242702637), new $Uint64(2404907604, 3265915574)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1200855074, 3700861945), new $Uint64(3006134505, 4082394468)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1501068843, 2478593783), new $Uint64(3757668132, 1881767613)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1475038939, 1012250202), new $Uint64(2348542582, 3323588406)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3991282322, 191570929), new $Uint64(2935678228, 2007001859)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3915361078, 2386947309), new $Uint64(3669597785, 2508752324)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(299617026, 418100244), new $Uint64(2293498615, 4252324763)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3595746754, 2670108953), new $Uint64(2866873269, 4241664129)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1273457971, 1190152543), new $Uint64(3583591587, 2080854690)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1869653056, 206974427), new $Uint64(2239744742, 763663269)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3410808144, 258718034), new $Uint64(2799680927, 3102062734)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2116026532, 323397543), new $Uint64(3499601159, 2803836594)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2396258406, 2349607112), new $Uint64(2187250724, 3363010607)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1921581184, 789525242), new $Uint64(2734063405, 4203763259)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1328234656, 986906553), new $Uint64(3417579257, 2033478602)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3807776968, 1233633192), new $Uint64(4271974071, 3615590076)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(232376957, 771020745), new $Uint64(2669983794, 3870356534)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2437954844, 2037517755), new $Uint64(3337479743, 2690462019)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1973701731, 2546897194), new $Uint64(4171849679, 2289335700)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3381047230, 1054939834), new $Uint64(2607406049, 3041447548)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4226309037, 3466158440), new $Uint64(3259257562, 580583963)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4209144473, 1111472579), new $Uint64(4074071952, 2873213602)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3704457119, 3379024922), new $Uint64(2546294970, 1795758501)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1409345927, 3150039328), new $Uint64(3182868713, 97214479)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(687940585, 2863807336), new $Uint64(3978585891, 1195259923)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4188059250, 179266849), new $Uint64(2486616182, 210166539)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4161332238, 2371567209), new $Uint64(3108270227, 2410191822)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3054181650, 816975364), new $Uint64(3885337784, 1938997954)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2982605355, 1584351426), new $Uint64(2428336115, 1211873721)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(507031222, 906697459), new $Uint64(3035420144, 441100328)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(633789027, 3280855472), new $Uint64(3794275180, 551375410)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1469859966, 1513663758), new $Uint64(2371421987, 2492093279)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(763583133, 4039563345), new $Uint64(2964277484, 2041374775)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4175704389, 1828228709), new $Uint64(3705346855, 2551718468)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(462331595, 1679513855), new $Uint64(2315841784, 3205436779)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3799139966, 1025650495), new $Uint64(2894802230, 4006795973)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1527699485, 3429546767), new $Uint64(3618502788, 2861011319)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2565424914, 2680337641), new $Uint64(2261564242, 3935615722)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1059297495, 1202938404), new $Uint64(2826955303, 2772036005)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2397863693, 429931181), new $Uint64(3533694129, 2391303182)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(424922984, 805577900), new $Uint64(2208558830, 4178919049)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1604895554, 1006972375), new $Uint64(2760698538, 3076165163)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(932377618, 3406199117), new $Uint64(3450873173, 1697722806)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3803961483, 3202616272), new $Uint64(2156795733, 1597947665)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1533726382, 2929528516), new $Uint64(2695994666, 3071176406)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4064641626, 1514426997), new $Uint64(3369993333, 1691486859)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4007060208, 4040517394), new $Uint64(4212491666, 3188100398)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1430670806, 2525323371), new $Uint64(2632807291, 3066304573)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2862080332, 1009170566), new $Uint64(3291009114, 2759138892)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3577600415, 1261463208), new $Uint64(4113761393, 1301439967)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3846612995, 2399027241), new $Uint64(2571100870, 3497754539)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3734524420, 1925042227), new $Uint64(3213876088, 2224709526)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2520671877, 2406302784), new $Uint64(4017345110, 2780886908)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3722903571, 2040810152), new $Uint64(2510840694, 664312493)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1432403992, 1477270866), new $Uint64(3138550867, 2977874265)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2864246814, 1846588582), new $Uint64(3923188584, 2648601007)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3400766995, 80376040), new $Uint64(2451992865, 1655375629)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1029733271, 3321695522), new $Uint64(3064991081, 3142961361)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2360908413, 3078377578), new $Uint64(3831238852, 707476229)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2012438670, 2460856898), new $Uint64(2394524282, 2589656291)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1441806514, 928587475), new $Uint64(2993155353, 1089586716)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1802258142, 3308217992), new $Uint64(3741444191, 2435725219)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(589540427, 993894421), new $Uint64(2338402619, 3132940998)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2884409182, 168626202), new $Uint64(2923003274, 2842434423)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2531769653, 2358266401), new $Uint64(3653754093, 1405559381)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2119226945, 2010787412), new $Uint64(2283596308, 1415345525)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3722775505, 3587226089), new $Uint64(2854495385, 1769181906)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2505985734, 1262807140), new $Uint64(3568119231, 3285219207)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3176853819, 4010479934), new $Uint64(2230074519, 3663874740)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3971067274, 3939358094), new $Uint64(2787593149, 3506101601)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1742608621, 2776713970), new $Uint64(3484491437, 1161401530)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2162872212, 2272317143), new $Uint64(2177807148, 1262746868)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2703590265, 2840396429), new $Uint64(2722258935, 1578433585)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(158262360, 329270064), new $Uint64(3402823669, 899300158)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2345311598, 411587580), new $Uint64(4253529586, 2197867021)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2002690660, 3478467709), new $Uint64(2658455991, 2447408712)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2503363326, 53117341), new $Uint64(3323069989, 1985519066)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(981720509, 2213880324), new $Uint64(4153837486, 3555640657)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3297929878, 1920546114), new $Uint64(2596148429, 1148533586)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1974928700, 253198995), new $Uint64(3245185536, 2509408807)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1394919051, 316498744), new $Uint64(4056481920, 3136761009)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3556178966, 3955908099), new $Uint64(2535301200, 1960475630)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2297740060, 2797401476), new $Uint64(3169126500, 2450594538)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(724691427, 3496751845), new $Uint64(3961408125, 3063243173)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(989803054, 1648598991), new $Uint64(2475880078, 2451397895)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(163511993, 4208232386), new $Uint64(3094850098, 916763721)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1278131816, 2039065011), new $Uint64(3868562622, 3293438299)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(261961473, 1274415632), new $Uint64(2417851639, 984657113)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1401193665, 2666761364), new $Uint64(3022314549, 157079567)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(677750258, 112226233), new $Uint64(3777893186, 1270091283)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4181690295, 1143883219), new $Uint64(2361183241, 1867548875)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4153371045, 356112200), new $Uint64(2951479051, 3408177918)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3044230158, 1518882075), new $Uint64(3689348814, 3186480574)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(828902024, 4170526768), new $Uint64(2305843009, 917808535)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4257353003, 918191165), new $Uint64(2882303761, 2221002492)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1026723958, 73997132), new $Uint64(3602879701, 3849994940)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2789186121, 3267473679), new $Uint64(2251799813, 2943117749)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(265257180, 863116627), new $Uint64(2814749767, 457671715)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3552796947, 1078895784), new $Uint64(3518437208, 3793315115)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1683627180, 137438953), new $Uint64(2199023255, 2370821947)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1030792151, 171798691), new $Uint64(2748779069, 1889785610)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3435973836, 3435973836), new $Uint64(3435973836, 3435973836)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2147483648, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2684354560, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(3355443200, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(4194304000, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2621440000, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(3276800000, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(4096000000, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2560000000, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(3200000000, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(4000000000, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2500000000, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(3125000000, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(3906250000, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2441406250, 0)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(3051757812, 2147483648)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(3814697265, 2684354560)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2384185791, 67108864)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2980232238, 3305111552)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(3725290298, 1983905792)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2328306436, 2313682944)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2910383045, 2892103680)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(3637978807, 393904128)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2273736754, 1856802816)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2842170943, 173519872)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(3552713678, 3438125312)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2220446049, 1075086496)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(2775557561, 2417599944)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(0, 0), new $Uint64(3469446951, 4095741754)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1073741824, 0), new $Uint64(2168404344, 4170451332)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1342177280, 0), new $Uint64(2710505431, 918096869)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2751463424, 0), new $Uint64(3388131789, 73879262)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1291845632, 0), new $Uint64(4235164736, 1166090902)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4028628992, 0), new $Uint64(2646977960, 728806813)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1814560768, 0), new $Uint64(3308722450, 911008517)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3341942784, 0), new $Uint64(4135903062, 3286244294)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1014972416, 0), new $Uint64(2584939414, 980160860)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1268715520, 0), new $Uint64(3231174267, 3372684723)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(512152576, 0), new $Uint64(4038967834, 3142114080)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(320095360, 0), new $Uint64(2524354896, 3037563124)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(400119200, 0), new $Uint64(3155443620, 3796953905)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1573890824, 0), new $Uint64(3944304526, 451225085)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1520552677, 0), new $Uint64(2465190328, 3503241150)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4048174494, 1073741824), new $Uint64(3081487911, 84084141)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1838992645, 3489660928), new $Uint64(3851859888, 3326330649)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3833724963, 2717908992), new $Uint64(2407412430, 2078956655)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3718414380, 2323644416), new $Uint64(3009265538, 451212171)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3574276151, 2904555520), new $Uint64(3761581922, 2711498862)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1160180770, 3425959936), new $Uint64(2350988701, 2768428613)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2523967787, 2134966272), new $Uint64(2938735877, 239310294)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1007476086, 1594966016), new $Uint64(3673419846, 1372879692)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2777156201, 4218079232), new $Uint64(2295887403, 4079275279)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2397703428, 2051373568), new $Uint64(2869859254, 4025352275)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1923387461, 2564216960), new $Uint64(3587324068, 2884206696)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1202117163, 2139506512), new $Uint64(2242077542, 3950112833)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2576388278, 1600641316), new $Uint64(2802596928, 2790157393)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4294227171, 4148285293), new $Uint64(3503246160, 3487696741)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3220762894, 2055807396), new $Uint64(2189528850, 2179810463)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2952211794, 422275597), new $Uint64(2736911063, 577279431)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2616522918, 2675328144), new $Uint64(3421138828, 3942824761)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(49428176, 1196676532), new $Uint64(4276423536, 633563656)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(30892610, 747922832), new $Uint64(2672764710, 395977285)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1112357586, 3082387189), new $Uint64(3340955887, 2642455254)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3537930631, 1705500338), new $Uint64(4176194859, 2229327243)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1674335732, 2676550447), new $Uint64(2610121787, 856458615)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1019177841, 3345688059), new $Uint64(3262652233, 4291798741)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2347714126, 960884602), new $Uint64(4078315292, 2143522954)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2541063152, 3821778348), new $Uint64(2548947057, 3487185494)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1028845293, 482255639), new $Uint64(3186183822, 1137756396)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1286056616, 1676561373), new $Uint64(3982729777, 3569679143)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2414398121, 1047850858), new $Uint64(2489206111, 620436728)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3017997651, 2383555396), new $Uint64(3111507638, 3996771382)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1625013416, 1905702422), new $Uint64(3889384548, 2848480580)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3163117033, 1191064013), new $Uint64(2430865342, 3927784010)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1806412643, 2562571841), new $Uint64(3038581678, 2762246365)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3331757628, 2129472977), new $Uint64(3798227098, 1305324308)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4229832165, 3478404258), new $Uint64(2373891936, 1889569516)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(992322911, 1126779851), new $Uint64(2967364920, 2361961896)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1240403639, 334732990), new $Uint64(3709206150, 2952452370)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1848994098, 1819820855), new $Uint64(2318253844, 771540907)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1237500799, 127292420), new $Uint64(2897817305, 964426134)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3694359646, 3380340998), new $Uint64(3622271631, 2279274491)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1772103867, 1038971299), new $Uint64(2263919769, 3035159293)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3288871658, 224972300), new $Uint64(2829899712, 572723644)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4111089572, 2428699024), new $Uint64(3537374640, 715904555)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2032560070, 3665420538), new $Uint64(2210859150, 447440347)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1466958264, 2434292024), new $Uint64(2763573937, 2706784082)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3981181478, 3042865030), new $Uint64(3454467422, 162254630)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1414496600, 828048820), new $Uint64(2159042138, 3322634616)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1768120750, 1035061025), new $Uint64(2698802673, 2005809622)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(62667289, 3441309929), new $Uint64(3373503341, 3581003852)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(78334112, 1080411939), new $Uint64(4216879177, 1255029343)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1659571556, 675257462), new $Uint64(2635549485, 3468747899)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1000722621, 844071828), new $Uint64(3294436857, 1114709402)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3398386924, 2128831609), new $Uint64(4118046071, 2467128576)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2123991827, 3478003403), new $Uint64(2573778794, 3152568096)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2654989784, 3273762430), new $Uint64(3217223493, 1793226472)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3318737230, 4092203038), new $Uint64(4021529366, 3315274914)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3147952593, 1483885074), new $Uint64(2513455854, 998304997)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(713715269, 2928598167), new $Uint64(3141819817, 3395364895)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4113369559, 439522237), new $Uint64(3927274772, 1022980646)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1497114150, 1885314134), new $Uint64(2454546732, 2786846552)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1871392688, 209159020), new $Uint64(3068183415, 3483558190)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(191757212, 261448775), new $Uint64(3835229269, 3280705914)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1193590081, 2310889132), new $Uint64(2397018293, 2587312108)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1491987601, 3962353239), new $Uint64(2996272867, 12914663)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(791242678, 1731716077), new $Uint64(3745341083, 3237368801)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3178881234, 8580724), new $Uint64(2340838177, 1486484588)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3973601542, 2158209553), new $Uint64(2926047721, 2931847559)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3893260104, 550278293), new $Uint64(3657559652, 443583977)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(822674829, 343923933), new $Uint64(2285974782, 2424723634)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3175827184, 1503646741), new $Uint64(2857468478, 883420894)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1822300332, 1879558426), new $Uint64(3571835597, 3251759766)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(65195883, 3322207664), new $Uint64(2232397248, 2569220766)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2228978502, 3079017756), new $Uint64(2790496560, 3211525957)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3859964952, 1701288547), new $Uint64(3488120700, 4014407446)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1338736271, 1063305342), new $Uint64(2180075438, 361521006)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3820903987, 255389853), new $Uint64(2725094297, 2599384905)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1554904511, 3540462789), new $Uint64(3406367872, 28005660)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1943630639, 3351836662), new $Uint64(4257959840, 35007075)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(677898237, 3705510650), new $Uint64(2661224900, 21879422)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2994856445, 1410662840), new $Uint64(3326531125, 27349277)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(522345084, 2837070374), new $Uint64(4158163906, 1107928421)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(863336589, 3920652632), new $Uint64(2598852441, 1766197087)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(5428913, 1679590318), new $Uint64(3248565551, 3281488183)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3228011613, 3173229722), new $Uint64(4060706939, 3028118404)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4164990906, 2520139488), new $Uint64(2537941837, 1355703090)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3058754985, 1002690712), new $Uint64(3172427296, 2768370687)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2749701907, 2327105214), new $Uint64(3965534120, 3460463359)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3329176428, 917569847), new $Uint64(2478458825, 2162789599)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3087728711, 1146962308), new $Uint64(3098073531, 3777228823)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2785919065, 359961061), new $Uint64(3872591914, 3647794205)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2278070327, 2909330223), new $Uint64(2420369946, 3353613202)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(700104261, 2562920955), new $Uint64(3025462433, 2044532855)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4096355798, 4277393018), new $Uint64(3781828041, 3629407892)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(412738726, 1599628812), new $Uint64(2363642526, 657767197)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1589665231, 4147019663), new $Uint64(2954553157, 2969692644)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1987081539, 4110032755), new $Uint64(3693191447, 490890333)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1778796874, 2031899560), new $Uint64(2308244654, 1917419194)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(76012445, 392390802), new $Uint64(2885305818, 249290345)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1168757380, 1564230326), new $Uint64(3606632272, 2459096579)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(193602450, 3125127602), new $Uint64(2254145170, 1536935362)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2389486711, 1758925854), new $Uint64(2817681462, 4068652850)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(839374741, 1124915494), new $Uint64(3522101828, 2938332415)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2135221949, 1239943096), new $Uint64(2201313642, 3983941407)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1595285612, 2623670694), new $Uint64(2751642053, 2832443111)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(920365191, 3279588367), new $Uint64(3439552567, 319328417)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3259582804, 3660355465), new $Uint64(2149720354, 1810192996)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4074478506, 280477036), new $Uint64(2687150443, 115257597)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1871872660, 2498079943), new $Uint64(3358938053, 3365297469)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3413582649, 3122599929), new $Uint64(4198672567, 985396364)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4280972804, 341012219), new $Uint64(2624170354, 2226485463)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4277474181, 426265274), new $Uint64(3280212943, 635623181)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2125617254, 1606573417), new $Uint64(4100266178, 4015754449)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4012865343, 4225333857), new $Uint64(2562666361, 3583588354)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2868598031, 4207925498), new $Uint64(3203332952, 1258259971)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2512005715, 4186165048), new $Uint64(4004166190, 1572824964)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3717487220, 2079482243), new $Uint64(2502603868, 4204241074)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2499375377, 2599352804), new $Uint64(3128254836, 960334047)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2050477398, 27965533), new $Uint64(3910318545, 1200417559)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2892161109, 3238703930), new $Uint64(2443949090, 3434615534)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1467717739, 827154441), new $Uint64(3054936363, 2145785770)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3982130821, 4255168523), new $Uint64(3818670454, 1608490388)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(341348115, 3196351239), new $Uint64(2386669033, 4226531965)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1500426968, 2921697224), new $Uint64(2983336292, 2061939484)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1875533710, 3652121531), new $Uint64(3729170365, 2577424355)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(635337657, 1208834132), new $Uint64(2330731478, 2147761134)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2941655719, 2584784490), new $Uint64(2913414348, 537217769)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(455844177, 2157238788), new $Uint64(3641767935, 671522212)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2432386258, 4032628802), new $Uint64(2276104959, 2030314118)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(892999175, 2893302355), new $Uint64(2845131199, 1464150824)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1116248969, 2542886120), new $Uint64(3556413999, 756446706)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1771397429, 4273658385), new $Uint64(2222758749, 2083391927)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1140504963, 2120847509), new $Uint64(2778448436, 3677981733)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2499373028, 1577317563), new $Uint64(3473060546, 302509870)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(488366318, 3133307125), new $Uint64(2170662841, 1262810493)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1684199722, 1769150258), new $Uint64(2713328551, 2652254940)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2105249653, 63954174), new $Uint64(3391660689, 2241576851)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1557820242, 1153684542), new $Uint64(4239575861, 3875712888)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(973637651, 1794794663), new $Uint64(2649734913, 2959191467)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(143305240, 1169751504), new $Uint64(3312168642, 477763862)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2326615198, 1462189381), new $Uint64(4140210802, 2744688475)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(917263586, 4135093835), new $Uint64(2587631751, 2789172121)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2220321307, 3021383645), new $Uint64(3234539689, 2412723327)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1701659810, 2702987733), new $Uint64(4043174611, 4089645983)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2674150117, 2763109157), new $Uint64(2526984132, 2019157827)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2268945823, 232660974), new $Uint64(3158730165, 2523947284)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2836182278, 3512051690), new $Uint64(3948412706, 4228675929)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(162001188, 1121290482), new $Uint64(2467757941, 3716664280)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(202501485, 1401613103), new $Uint64(3084697427, 1424604878)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2400610504, 2825758202), new $Uint64(3855871784, 707014273)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4184736125, 1766098876), new $Uint64(2409919865, 441883920)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(935952860, 3281365420), new $Uint64(3012399831, 1626096725)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2243682899, 4101706775), new $Uint64(3765499789, 958879082)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2476043636, 2026695822), new $Uint64(2353437368, 1136170338)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(947570897, 2533369778), new $Uint64(2941796710, 1420212923)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(110721797, 4240454046), new $Uint64(3677245887, 3922749802)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1142942947, 3187154691), new $Uint64(2298278679, 4062331362)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3576162332, 2910201539), new $Uint64(2872848349, 4004172378)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2322719267, 3637751924), new $Uint64(3591060437, 1783990001)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4136054102, 1736724041), new $Uint64(2244412773, 1651864662)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3022583980, 23421403), new $Uint64(2805515966, 3138572652)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3778229975, 29276754), new $Uint64(3506894958, 1775732167)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3972006470, 1628910707), new $Uint64(2191809349, 36090780)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(670040791, 4183622032), new $Uint64(2739761686, 1118855300)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(837550989, 4155785716), new $Uint64(3424702107, 3546052773)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2120680561, 1973506673), new $Uint64(4280877634, 3358824142)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(251683526, 3917796230), new $Uint64(2675548521, 3173006913)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1388346232, 2749761640), new $Uint64(3344435652, 745033169)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2809174614, 3437202050), new $Uint64(4180544565, 931291461)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2292605046, 1074509457), new $Uint64(2612840353, 1118928075)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1792014483, 3490620469), new $Uint64(3266050441, 2472401918)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(92534456, 3289533763), new $Uint64(4082563051, 4164244222)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3279059507, 2055958602), new $Uint64(2551601907, 2065781726)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1951340736, 1496206428), new $Uint64(3189502384, 1508485334)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(291692272, 1870258035), new $Uint64(3986877980, 1885606668)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2329791318, 1168911272), new $Uint64(2491798737, 3325987815)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1838497323, 3608622738), new $Uint64(3114748422, 936259297)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3371863478, 3437036599), new $Uint64(3893435527, 3317807769)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(496801938, 1074406050), new $Uint64(2433397204, 3684242592)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(621002422, 3490491211), new $Uint64(3041746506, 310335944)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(776253028, 2215630365), new $Uint64(3802183132, 2535403578)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1558899966, 3532252626), new $Uint64(2376364457, 3732110884)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1948624958, 2267832135), new $Uint64(2970455572, 1443913133)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3509523022, 687306521), new $Uint64(3713069465, 1804891416)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2193451888, 3650792047), new $Uint64(2320668415, 3812411695)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1668073037, 268522763), new $Uint64(2900835519, 3691772795)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1011349472, 1409395278), new $Uint64(3626044399, 3540974170)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1705835244, 880872049), new $Uint64(2266277749, 3823721592)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2132294055, 1101090061), new $Uint64(2832847187, 1558426518)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(517883921, 302620752), new $Uint64(3541058984, 874291324)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2471161098, 2873492530), new $Uint64(2213161865, 546432077)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4162693197, 1444382015), new $Uint64(2766452331, 1756781920)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(908399200, 2879219342), new $Uint64(3458065414, 1122235577)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3252104060, 1799512089), new $Uint64(2161290883, 3922622707)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2991388251, 2249390111), new $Uint64(2701613604, 3829536560)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3739235314, 1737995815), new $Uint64(3377017006, 491953404)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(379076847, 25011121), new $Uint64(4221271257, 2762425404)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2384406677, 1626244686), new $Uint64(2638294536, 115903141)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4054250170, 3106547682), new $Uint64(3297868170, 144878926)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2920329065, 1735700955), new $Uint64(4122335212, 2328582306)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2898947489, 3769167657), new $Uint64(2576459507, 3602847589)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(402458890, 1490234099), new $Uint64(3220574384, 3429817663)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3724299084, 4010276272), new $Uint64(4025717980, 4287272078)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1253945104, 358939022), new $Uint64(2516073738, 532061401)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2641173204, 448673777), new $Uint64(3145092172, 2812560399)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2227724681, 560842221), new $Uint64(3931365215, 3515700499)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(855457013, 3034880948), new $Uint64(2457103259, 3807925548)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1069321267, 572375713), new $Uint64(3071379074, 3686165111)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(262909759, 3936695114), new $Uint64(3839223843, 2460222741)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(701189511, 4071047182), new $Uint64(2399514902, 1000768301)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1950228713, 4015067154), new $Uint64(2999393627, 3398444024)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2437785892, 1797608470), new $Uint64(3749242034, 3174313206)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(449874358, 3270988942), new $Uint64(2343276271, 3057687578)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2709826596, 1941252529), new $Uint64(2929095339, 2748367648)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3387283245, 2426565662), new $Uint64(3661369174, 2361717736)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2117052028, 2053474450), new $Uint64(2288355734, 402331761)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3720056859, 2566843063), new $Uint64(2860444667, 2650398349)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1428845602, 2134812005), new $Uint64(3575555834, 2239256113)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3577383061, 2407999327), new $Uint64(2234722396, 2473276894)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2324245178, 4083740983), new $Uint64(2793402995, 3091596118)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(757822825, 2957192581), new $Uint64(3491753744, 2790753324)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2621122914, 237632627), new $Uint64(2182346090, 1744220827)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2202661818, 2444524431), new $Uint64(2727932613, 32792386)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(605843625, 908171891), new $Uint64(3409915766, 1114732307)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3978530003, 2208956688), new $Uint64(4262394707, 3540899031)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4097193988, 843727018), new $Uint64(2663996692, 1676190982)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2974008837, 1054658773), new $Uint64(3329995865, 2095238728)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3717511046, 2392065290), new $Uint64(4162494831, 3692790234)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3397186228, 421298982), new $Uint64(2601559269, 3918606632)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4246482785, 526623728), new $Uint64(3251949087, 1677032818)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3160619833, 1732021484), new $Uint64(4064936359, 1022549199)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3586000131, 3766867987), new $Uint64(2540585224, 2249705985)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1261274692, 3634843160), new $Uint64(3175731530, 2812132482)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3724077014, 248586654), new $Uint64(3969664413, 1367681954)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3401289957, 3376592131), new $Uint64(2481040258, 1391672133)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1030386975, 999514691), new $Uint64(3101300322, 3887073815)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(214241895, 175651540), new $Uint64(3876625403, 2711358621)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(670772096, 1720394949), new $Uint64(2422890877, 1157728226)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2985948768, 2150493686), new $Uint64(3028613596, 2520902106)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1584952312, 2688117107), new $Uint64(3785766995, 3151127633)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3674949755, 1680073192), new $Uint64(2366104372, 1432583858)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2446203546, 1026349666), new $Uint64(2957630465, 1790729823)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1984012608, 3430420731), new $Uint64(3697038081, 3312154103)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2850620616, 2144012957), new $Uint64(2310648801, 459483578)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1415792122, 2680016196), new $Uint64(2888311001, 1648096297)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2843481977, 1202536597), new $Uint64(3610388751, 3133862195)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1240305323, 3435939933), new $Uint64(2256492969, 3569276608)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1550381654, 3221183092), new $Uint64(2820616212, 1240370288)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1937977068, 1878995217), new $Uint64(3525770265, 1550462860)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3358719315, 3321855659), new $Uint64(2203606415, 3653393847)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3124657320, 3078577749), new $Uint64(2754508019, 3493000485)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(684596178, 3848222187), new $Uint64(3443135024, 3292508783)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2038485347, 3478880691), new $Uint64(2151959390, 2057817989)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3621848508, 3274859039), new $Uint64(2689949238, 424788838)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2379826987, 4093573799), new $Uint64(3362436547, 2678469696)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2974783734, 4043225425), new $Uint64(4203045684, 2274345296)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1859239834, 1453274067), new $Uint64(2626903552, 3568949458)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(176566144, 3964076232), new $Uint64(3283629441, 166219527)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3441933153, 660127994), new $Uint64(4104536801, 1281516232)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2151208220, 3096934556), new $Uint64(2565335500, 3485302205)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3762752099, 3871168195), new $Uint64(3206669376, 61660460)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(408472828, 3765218420), new $Uint64(4008336720, 77075576)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(255295518, 205777864), new $Uint64(2505210450, 48172235)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3540344869, 2404705978), new $Uint64(3131513062, 2207698941)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1204205614, 4079624297), new $Uint64(3914391328, 612140029)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1289499421, 1476023361), new $Uint64(2446494580, 382587518)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3759357924, 2918771026), new $Uint64(3058118225, 478234397)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1477971933, 3648463782), new $Uint64(3822647781, 1671534821)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1460603370, 2817160776), new $Uint64(2389154863, 1581580175)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(752012389, 1373967322), new $Uint64(2986443579, 903233395)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4161240958, 2791200977), new $Uint64(3733054474, 55299919)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4211388335, 670758786), new $Uint64(2333159046, 1108304273)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2043009946, 4059673955), new $Uint64(2916448807, 3532863990)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(406278785, 2927108796), new $Uint64(3645561009, 3342338164)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2401407889, 218830261), new $Uint64(2278475631, 478348616)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3001759861, 1347279650), new $Uint64(2848094538, 3819161242)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1604716178, 2757841387), new $Uint64(3560118173, 2626467905)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3687302171, 2797392691), new $Uint64(2225073858, 2178413352)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(314160418, 2422999040), new $Uint64(2781342323, 575533043)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3613925995, 881265152), new $Uint64(3476677903, 3940641775)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3869316483, 13919808), new $Uint64(2172923689, 4073513845)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1615420131, 3238625232), new $Uint64(2716154612, 1870666835)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(945533340, 2974539716), new $Uint64(3395193265, 2338333544)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1181916675, 3718174645), new $Uint64(4243991581, 3996658754)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1812439746, 1786988241), new $Uint64(2652494738, 3034782633)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3339291507, 86251653), new $Uint64(3315618423, 1645994643)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3100372559, 3329040039), new $Uint64(4144523029, 983751480)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1937732849, 3691262760), new $Uint64(2590326893, 1151715587)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1348424238, 1392852978), new $Uint64(3237908616, 2513386308)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1685530297, 3888549871), new $Uint64(4047385770, 3141732885)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1590327348, 819730933), new $Uint64(2529616106, 3037324877)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3061651009, 1024663666), new $Uint64(3162020133, 1649172448)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3827063761, 2354571407), new $Uint64(3952525166, 3135207384)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2391914850, 4155961689), new $Uint64(2470328229, 885762791)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1916151739, 3047468464), new $Uint64(3087910286, 2180945313)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3468931498, 2735593756), new $Uint64(3859887858, 578697993)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(557469450, 2783487921), new $Uint64(2412429911, 1435428070)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2844320461, 1331876253), new $Uint64(3015537389, 720543263)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2481658752, 2738587141), new $Uint64(3769421736, 1974420903)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3161649456, 1711616963), new $Uint64(2355888585, 1234013064)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(3952061820, 2139521204), new $Uint64(2944860731, 2616258154)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2792593627, 2674401505), new $Uint64(3681075914, 2196580869)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2282241929, 1134630028), new $Uint64(2300672446, 2446604867)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1779060587, 2492029360), new $Uint64(2875840558, 910772436)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(2223825734, 2041294876), new $Uint64(3594800697, 3285949193)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(4074245644, 202067473), new $Uint64(2246750436, 443105509)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1871581583, 252584341), new $Uint64(2808438045, 553881887)]), arrayType), $clone($toNativeArray($kindUint64, [new $Uint64(1265735154, 3536955899), new $Uint64(3510547556, 1766094183)]), arrayType)]); + leftcheats = new sliceType$2([$clone(new leftCheat.ptr(0, ""), leftCheat), $clone(new leftCheat.ptr(1, "5"), leftCheat), $clone(new leftCheat.ptr(1, "25"), leftCheat), $clone(new leftCheat.ptr(1, "125"), leftCheat), $clone(new leftCheat.ptr(2, "625"), leftCheat), $clone(new leftCheat.ptr(2, "3125"), leftCheat), $clone(new leftCheat.ptr(2, "15625"), leftCheat), $clone(new leftCheat.ptr(3, "78125"), leftCheat), $clone(new leftCheat.ptr(3, "390625"), leftCheat), $clone(new leftCheat.ptr(3, "1953125"), leftCheat), $clone(new leftCheat.ptr(4, "9765625"), leftCheat), $clone(new leftCheat.ptr(4, "48828125"), leftCheat), $clone(new leftCheat.ptr(4, "244140625"), leftCheat), $clone(new leftCheat.ptr(4, "1220703125"), leftCheat), $clone(new leftCheat.ptr(5, "6103515625"), leftCheat), $clone(new leftCheat.ptr(5, "30517578125"), leftCheat), $clone(new leftCheat.ptr(5, "152587890625"), leftCheat), $clone(new leftCheat.ptr(6, "762939453125"), leftCheat), $clone(new leftCheat.ptr(6, "3814697265625"), leftCheat), $clone(new leftCheat.ptr(6, "19073486328125"), leftCheat), $clone(new leftCheat.ptr(7, "95367431640625"), leftCheat), $clone(new leftCheat.ptr(7, "476837158203125"), leftCheat), $clone(new leftCheat.ptr(7, "2384185791015625"), leftCheat), $clone(new leftCheat.ptr(7, "11920928955078125"), leftCheat), $clone(new leftCheat.ptr(8, "59604644775390625"), leftCheat), $clone(new leftCheat.ptr(8, "298023223876953125"), leftCheat), $clone(new leftCheat.ptr(8, "1490116119384765625"), leftCheat), $clone(new leftCheat.ptr(9, "7450580596923828125"), leftCheat), $clone(new leftCheat.ptr(9, "37252902984619140625"), leftCheat), $clone(new leftCheat.ptr(9, "186264514923095703125"), leftCheat), $clone(new leftCheat.ptr(10, "931322574615478515625"), leftCheat), $clone(new leftCheat.ptr(10, "4656612873077392578125"), leftCheat), $clone(new leftCheat.ptr(10, "23283064365386962890625"), leftCheat), $clone(new leftCheat.ptr(10, "116415321826934814453125"), leftCheat), $clone(new leftCheat.ptr(11, "582076609134674072265625"), leftCheat), $clone(new leftCheat.ptr(11, "2910383045673370361328125"), leftCheat), $clone(new leftCheat.ptr(11, "14551915228366851806640625"), leftCheat), $clone(new leftCheat.ptr(12, "72759576141834259033203125"), leftCheat), $clone(new leftCheat.ptr(12, "363797880709171295166015625"), leftCheat), $clone(new leftCheat.ptr(12, "1818989403545856475830078125"), leftCheat), $clone(new leftCheat.ptr(13, "9094947017729282379150390625"), leftCheat), $clone(new leftCheat.ptr(13, "45474735088646411895751953125"), leftCheat), $clone(new leftCheat.ptr(13, "227373675443232059478759765625"), leftCheat), $clone(new leftCheat.ptr(13, "1136868377216160297393798828125"), leftCheat), $clone(new leftCheat.ptr(14, "5684341886080801486968994140625"), leftCheat), $clone(new leftCheat.ptr(14, "28421709430404007434844970703125"), leftCheat), $clone(new leftCheat.ptr(14, "142108547152020037174224853515625"), leftCheat), $clone(new leftCheat.ptr(15, "710542735760100185871124267578125"), leftCheat), $clone(new leftCheat.ptr(15, "3552713678800500929355621337890625"), leftCheat), $clone(new leftCheat.ptr(15, "17763568394002504646778106689453125"), leftCheat), $clone(new leftCheat.ptr(16, "88817841970012523233890533447265625"), leftCheat), $clone(new leftCheat.ptr(16, "444089209850062616169452667236328125"), leftCheat), $clone(new leftCheat.ptr(16, "2220446049250313080847263336181640625"), leftCheat), $clone(new leftCheat.ptr(16, "11102230246251565404236316680908203125"), leftCheat), $clone(new leftCheat.ptr(17, "55511151231257827021181583404541015625"), leftCheat), $clone(new leftCheat.ptr(17, "277555756156289135105907917022705078125"), leftCheat), $clone(new leftCheat.ptr(17, "1387778780781445675529539585113525390625"), leftCheat), $clone(new leftCheat.ptr(18, "6938893903907228377647697925567626953125"), leftCheat), $clone(new leftCheat.ptr(18, "34694469519536141888238489627838134765625"), leftCheat), $clone(new leftCheat.ptr(18, "173472347597680709441192448139190673828125"), leftCheat), $clone(new leftCheat.ptr(19, "867361737988403547205962240695953369140625"), leftCheat)]); + $pkg.ErrRange = errors.New("value out of range"); + $pkg.ErrSyntax = errors.New("invalid syntax"); + optimize = true; + powtab = new sliceType$3([1, 3, 6, 9, 13, 16, 19, 23, 26]); + float64pow10 = new sliceType$4([1, 10, 100, 1000, 10000, 100000, 1e+06, 1e+07, 1e+08, 1e+09, 1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20, 1e+21, 1e+22]); + float32pow10 = new sliceType$5([1, 10, 100, 1000, 10000, 100000, 1e+06, 1e+07, 1e+08, 1e+09, 1e+10]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/race"] = (function() { + var $pkg = {}, $init, Acquire, Release, ReleaseMerge, Disable, Enable; + $pkg.$finishSetup = function() { + Acquire = function Acquire$1(addr) { + var addr; + }; + $pkg.Acquire = Acquire; + Release = function Release$1(addr) { + var addr; + }; + $pkg.Release = Release; + ReleaseMerge = function ReleaseMerge$1(addr) { + var addr; + }; + $pkg.ReleaseMerge = ReleaseMerge; + Disable = function Disable$1() { + }; + $pkg.Disable = Disable; + Enable = function Enable$1() { + }; + $pkg.Enable = Enable; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["sync/atomic"] = (function() { + var $pkg = {}, $init, js, Value, Bool, Int32, Int64, Uint64, noCopy, align64, Pointer = [], ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, ptrType$17, ptrType$19, ptrType$20, ptrType$21, ptrType$22, ptrType$23, ptrType$24, ptrType$25, b32, SwapInt32, SwapInt64, SwapUint32, SwapUint64, CompareAndSwapInt32, CompareAndSwapInt64, CompareAndSwapUint32, CompareAndSwapUint64, AddInt32, AddUint32, AddInt64, AddUint64, LoadInt32, LoadInt64, LoadUint32, LoadUint64, StoreInt32, StoreInt64, StoreUint32, StoreUint64, sameType; + js = $packages["github.com/gopherjs/gopherjs/js"]; + Value = $newType(0, $kindStruct, "atomic.Value", true, "sync/atomic", true, function(v_) { + this.$val = this; + if (arguments.length === 0) { + this.v = $ifaceNil; + return; + } + this.v = v_; + }); + Bool = $newType(0, $kindStruct, "atomic.Bool", true, "sync/atomic", true, function(_$0_, v_) { + this.$val = this; + if (arguments.length === 0) { + this._$0 = new noCopy.ptr(); + this.v = 0; + return; + } + this._$0 = _$0_; + this.v = v_; + }); + Int32 = $newType(0, $kindStruct, "atomic.Int32", true, "sync/atomic", true, function(_$0_, v_) { + this.$val = this; + if (arguments.length === 0) { + this._$0 = new noCopy.ptr(); + this.v = 0; + return; + } + this._$0 = _$0_; + this.v = v_; + }); + Int64 = $newType(0, $kindStruct, "atomic.Int64", true, "sync/atomic", true, function(_$0_, _$1_, v_) { + this.$val = this; + if (arguments.length === 0) { + this._$0 = new noCopy.ptr(); + this._$1 = new align64.ptr(); + this.v = new $Int64(0, 0); + return; + } + this._$0 = _$0_; + this._$1 = _$1_; + this.v = v_; + }); + Uint64 = $newType(0, $kindStruct, "atomic.Uint64", true, "sync/atomic", true, function(_$0_, _$1_, v_) { + this.$val = this; + if (arguments.length === 0) { + this._$0 = new noCopy.ptr(); + this._$1 = new align64.ptr(); + this.v = new $Uint64(0, 0); + return; + } + this._$0 = _$0_; + this._$1 = _$1_; + this.v = v_; + }); + noCopy = $newType(0, $kindStruct, "atomic.noCopy", true, "sync/atomic", false, function() { this.$val = this; }); + align64 = $newType(0, $kindStruct, "atomic.align64", true, "sync/atomic", false, function() { this.$val = this; }); + Pointer[0 /* encoding/gob.encEngine */] = $newType(0, $kindStruct, "atomic.Pointer[encoding/gob.encEngine]", true, "sync/atomic", true, function(v_) { + this.$val = this; + if (arguments.length === 0) { + this.v = ptrType$6.nil; + return; + } + this.v = v_; + }); + Pointer[5 /* go/token.File */] = $newType(0, $kindStruct, "atomic.Pointer[go/token.File]", true, "sync/atomic", true, function(v_) { + this.$val = this; + if (arguments.length === 0) { + this.v = ptrType$7.nil; + return; + } + this.v = v_; + }); + Pointer[10 /* string */] = $newType(0, $kindStruct, "atomic.Pointer[string]", true, "sync/atomic", true, function(v_) { + this.$val = this; + if (arguments.length === 0) { + this.v = ptrType$8.nil; + return; + } + this.v = v_; + }); + Pointer[15 /* net/http.response */] = $newType(0, $kindStruct, "atomic.Pointer[net/http.response]", true, "sync/atomic", true, function(v_) { + this.$val = this; + if (arguments.length === 0) { + this.v = ptrType$9.nil; + return; + } + this.v = v_; + }); + Pointer[20 /* sync.readOnly */] = $newType(0, $kindStruct, "atomic.Pointer[sync.readOnly]", true, "sync/atomic", true, function(v_) { + this.$val = this; + if (arguments.length === 0) { + this.v = ptrType$10.nil; + return; + } + this.v = v_; + }); + Pointer[25 /* any */] = $newType(0, $kindStruct, "atomic.Pointer[any]", true, "sync/atomic", true, function(v_) { + this.$val = this; + if (arguments.length === 0) { + this.v = ptrType$11.nil; + return; + } + this.v = v_; + }); + $pkg.Value = Value; + $pkg.Bool = Bool; + $pkg.Int32 = Int32; + $pkg.Int64 = Int64; + $pkg.Uint64 = Uint64; + $pkg.noCopy = noCopy; + $pkg.align64 = align64; + $pkg.Pointer = Pointer; + $pkg.$finishSetup = function() { + ptrType$1 = $ptrType($Uint32); + ptrType$2 = $ptrType($Int32); + ptrType$3 = $ptrType($Int64); + ptrType$4 = $ptrType($Uint64); + ptrType$6 = $ptrType($packages["encoding/gob"].encEngine); + ptrType$7 = $ptrType($packages["go/token"].File); + ptrType$8 = $ptrType($String); + ptrType$9 = $ptrType($packages["net/http"].response); + ptrType$10 = $ptrType($packages["sync"].readOnly); + ptrType$11 = $ptrType($emptyInterface); + ptrType$12 = $ptrType(Value); + ptrType$13 = $ptrType(Bool); + ptrType$14 = $ptrType(Int32); + ptrType$15 = $ptrType(Int64); + ptrType$17 = $ptrType(Uint64); + ptrType$19 = $ptrType(noCopy); + ptrType$20 = $ptrType(Pointer[0 /* encoding/gob.encEngine */]); + ptrType$21 = $ptrType(Pointer[5 /* go/token.File */]); + ptrType$22 = $ptrType(Pointer[10 /* string */]); + ptrType$23 = $ptrType(Pointer[15 /* net/http.response */]); + ptrType$24 = $ptrType(Pointer[20 /* sync.readOnly */]); + ptrType$25 = $ptrType(Pointer[25 /* any */]); + $ptrType(Bool).prototype.Load = function Load() { + var x; + x = this; + return !((LoadUint32((x.$ptr_v || (x.$ptr_v = new ptrType$1(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x)))) === 0)); + }; + $ptrType(Bool).prototype.Store = function Store(val) { + var val, x; + x = this; + StoreUint32((x.$ptr_v || (x.$ptr_v = new ptrType$1(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(val)); + }; + $ptrType(Bool).prototype.Swap = function Swap(new$1) { + var new$1, old, x; + old = false; + x = this; + old = !((SwapUint32((x.$ptr_v || (x.$ptr_v = new ptrType$1(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(new$1)) === 0)); + return old; + }; + $ptrType(Bool).prototype.CompareAndSwap = function CompareAndSwap(old, new$1) { + var new$1, old, swapped, x; + swapped = false; + x = this; + swapped = CompareAndSwapUint32((x.$ptr_v || (x.$ptr_v = new ptrType$1(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), b32(old), b32(new$1)); + return swapped; + }; + b32 = function b32$1(b) { + var b; + if (b) { + return 1; + } + return 0; + }; + $ptrType(Int32).prototype.Load = function Load$1() { + var x; + x = this; + return LoadInt32((x.$ptr_v || (x.$ptr_v = new ptrType$2(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x)))); + }; + $ptrType(Int32).prototype.Store = function Store$1(val) { + var val, x; + x = this; + StoreInt32((x.$ptr_v || (x.$ptr_v = new ptrType$2(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), val); + }; + $ptrType(Int32).prototype.Swap = function Swap$1(new$1) { + var new$1, old, x; + old = 0; + x = this; + old = SwapInt32((x.$ptr_v || (x.$ptr_v = new ptrType$2(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), new$1); + return old; + }; + $ptrType(Int32).prototype.CompareAndSwap = function CompareAndSwap$1(old, new$1) { + var new$1, old, swapped, x; + swapped = false; + x = this; + swapped = CompareAndSwapInt32((x.$ptr_v || (x.$ptr_v = new ptrType$2(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), old, new$1); + return swapped; + }; + $ptrType(Int32).prototype.Add = function Add(delta) { + var delta, new$1, x; + new$1 = 0; + x = this; + new$1 = AddInt32((x.$ptr_v || (x.$ptr_v = new ptrType$2(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), delta); + return new$1; + }; + $ptrType(Int64).prototype.Load = function Load$2() { + var x; + x = this; + return LoadInt64((x.$ptr_v || (x.$ptr_v = new ptrType$3(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x)))); + }; + $ptrType(Int64).prototype.Store = function Store$2(val) { + var val, x; + x = this; + StoreInt64((x.$ptr_v || (x.$ptr_v = new ptrType$3(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), val); + }; + $ptrType(Int64).prototype.Swap = function Swap$2(new$1) { + var new$1, old, x; + old = new $Int64(0, 0); + x = this; + old = SwapInt64((x.$ptr_v || (x.$ptr_v = new ptrType$3(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), new$1); + return old; + }; + $ptrType(Int64).prototype.CompareAndSwap = function CompareAndSwap$2(old, new$1) { + var new$1, old, swapped, x; + swapped = false; + x = this; + swapped = CompareAndSwapInt64((x.$ptr_v || (x.$ptr_v = new ptrType$3(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), old, new$1); + return swapped; + }; + $ptrType(Int64).prototype.Add = function Add$1(delta) { + var delta, new$1, x; + new$1 = new $Int64(0, 0); + x = this; + new$1 = AddInt64((x.$ptr_v || (x.$ptr_v = new ptrType$3(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), delta); + return new$1; + }; + $ptrType(Uint64).prototype.Load = function Load$4() { + var x; + x = this; + return LoadUint64((x.$ptr_v || (x.$ptr_v = new ptrType$4(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x)))); + }; + $ptrType(Uint64).prototype.Store = function Store$4(val) { + var val, x; + x = this; + StoreUint64((x.$ptr_v || (x.$ptr_v = new ptrType$4(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), val); + }; + $ptrType(Uint64).prototype.Swap = function Swap$4(new$1) { + var new$1, old, x; + old = new $Uint64(0, 0); + x = this; + old = SwapUint64((x.$ptr_v || (x.$ptr_v = new ptrType$4(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), new$1); + return old; + }; + $ptrType(Uint64).prototype.CompareAndSwap = function CompareAndSwap$4(old, new$1) { + var new$1, old, swapped, x; + swapped = false; + x = this; + swapped = CompareAndSwapUint64((x.$ptr_v || (x.$ptr_v = new ptrType$4(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), old, new$1); + return swapped; + }; + $ptrType(Uint64).prototype.Add = function Add$3(delta) { + var delta, new$1, x; + new$1 = new $Uint64(0, 0); + x = this; + new$1 = AddUint64((x.$ptr_v || (x.$ptr_v = new ptrType$4(function() { return this.$target.v; }, function($v) { this.$target.v = $v; }, x))), delta); + return new$1; + }; + $ptrType(noCopy).prototype.Lock = function Lock() { + }; + $ptrType(noCopy).prototype.Unlock = function Unlock() { + }; + SwapInt32 = function SwapInt32$1(addr, new$1) { + var addr, new$1, old; + old = addr.$get(); + addr.$set(new$1); + return old; + }; + $pkg.SwapInt32 = SwapInt32; + SwapInt64 = function SwapInt64$1(addr, new$1) { + var addr, new$1, old; + old = addr.$get(); + addr.$set(new$1); + return old; + }; + $pkg.SwapInt64 = SwapInt64; + SwapUint32 = function SwapUint32$1(addr, new$1) { + var addr, new$1, old; + old = addr.$get(); + addr.$set(new$1); + return old; + }; + $pkg.SwapUint32 = SwapUint32; + SwapUint64 = function SwapUint64$1(addr, new$1) { + var addr, new$1, old; + old = addr.$get(); + addr.$set(new$1); + return old; + }; + $pkg.SwapUint64 = SwapUint64; + CompareAndSwapInt32 = function CompareAndSwapInt32$1(addr, old, new$1) { + var addr, new$1, old; + if (addr.$get() === old) { + addr.$set(new$1); + return true; + } + return false; + }; + $pkg.CompareAndSwapInt32 = CompareAndSwapInt32; + CompareAndSwapInt64 = function CompareAndSwapInt64$1(addr, old, new$1) { + var addr, new$1, old, x; + if ((x = addr.$get(), (x.$high === old.$high && x.$low === old.$low))) { + addr.$set(new$1); + return true; + } + return false; + }; + $pkg.CompareAndSwapInt64 = CompareAndSwapInt64; + CompareAndSwapUint32 = function CompareAndSwapUint32$1(addr, old, new$1) { + var addr, new$1, old; + if (addr.$get() === old) { + addr.$set(new$1); + return true; + } + return false; + }; + $pkg.CompareAndSwapUint32 = CompareAndSwapUint32; + CompareAndSwapUint64 = function CompareAndSwapUint64$1(addr, old, new$1) { + var addr, new$1, old, x; + if ((x = addr.$get(), (x.$high === old.$high && x.$low === old.$low))) { + addr.$set(new$1); + return true; + } + return false; + }; + $pkg.CompareAndSwapUint64 = CompareAndSwapUint64; + AddInt32 = function AddInt32$1(addr, delta) { + var addr, delta, new$1; + new$1 = addr.$get() + delta >> 0; + addr.$set(new$1); + return new$1; + }; + $pkg.AddInt32 = AddInt32; + AddUint32 = function AddUint32$1(addr, delta) { + var addr, delta, new$1; + new$1 = addr.$get() + delta >>> 0; + addr.$set(new$1); + return new$1; + }; + $pkg.AddUint32 = AddUint32; + AddInt64 = function AddInt64$1(addr, delta) { + var addr, delta, new$1, x; + new$1 = (x = addr.$get(), new $Int64(x.$high + delta.$high, x.$low + delta.$low)); + addr.$set(new$1); + return new$1; + }; + $pkg.AddInt64 = AddInt64; + AddUint64 = function AddUint64$1(addr, delta) { + var addr, delta, new$1, x; + new$1 = (x = addr.$get(), new $Uint64(x.$high + delta.$high, x.$low + delta.$low)); + addr.$set(new$1); + return new$1; + }; + $pkg.AddUint64 = AddUint64; + LoadInt32 = function LoadInt32$1(addr) { + var addr; + return addr.$get(); + }; + $pkg.LoadInt32 = LoadInt32; + LoadInt64 = function LoadInt64$1(addr) { + var addr; + return addr.$get(); + }; + $pkg.LoadInt64 = LoadInt64; + LoadUint32 = function LoadUint32$1(addr) { + var addr; + return addr.$get(); + }; + $pkg.LoadUint32 = LoadUint32; + LoadUint64 = function LoadUint64$1(addr) { + var addr; + return addr.$get(); + }; + $pkg.LoadUint64 = LoadUint64; + StoreInt32 = function StoreInt32$1(addr, val) { + var addr, val; + addr.$set(val); + }; + $pkg.StoreInt32 = StoreInt32; + StoreInt64 = function StoreInt64$1(addr, val) { + var addr, val; + addr.$set(val); + }; + $pkg.StoreInt64 = StoreInt64; + StoreUint32 = function StoreUint32$1(addr, val) { + var addr, val; + addr.$set(val); + }; + $pkg.StoreUint32 = StoreUint32; + StoreUint64 = function StoreUint64$1(addr, val) { + var addr, val; + addr.$set(val); + }; + $pkg.StoreUint64 = StoreUint64; + $ptrType(Value).prototype.Load = function Load$6() { + var v, x; + x = $ifaceNil; + v = this; + x = v.v; + return x; + }; + $ptrType(Value).prototype.Store = function Store$6(new$1) { + var new$1, v; + v = this; + v.checkNew("store", new$1); + v.v = new$1; + }; + $ptrType(Value).prototype.Swap = function Swap$6(new$1) { + var _tmp, _tmp$1, new$1, old, v; + old = $ifaceNil; + v = this; + v.checkNew("swap", new$1); + _tmp = v.v; + _tmp$1 = new$1; + old = _tmp; + v.v = _tmp$1; + old = old; + return old; + }; + $ptrType(Value).prototype.CompareAndSwap = function CompareAndSwap$6(old, new$1) { + var new$1, old, swapped, v; + swapped = false; + v = this; + v.checkNew("compare and swap", new$1); + if (!($interfaceIsEqual(v.v, $ifaceNil) && $interfaceIsEqual(old, $ifaceNil)) && !sameType(old, new$1)) { + $panic(new $String("sync/atomic: compare and swap of inconsistently typed values into Value")); + } + if (!($interfaceIsEqual(v.v, old))) { + swapped = false; + return swapped; + } + v.v = new$1; + swapped = true; + return swapped; + }; + $ptrType(Value).prototype.checkNew = function checkNew(op, new$1) { + var new$1, op, v; + v = this; + if ($interfaceIsEqual(new$1, $ifaceNil)) { + $panic(new $String("sync/atomic: " + op + " of nil value into Value")); + } + if (!($interfaceIsEqual(v.v, $ifaceNil)) && !sameType(new$1, v.v)) { + $panic(new $String("sync/atomic: " + op + " of inconsistently typed value into Value")); + } + }; + sameType = function sameType$1(x, y) { + var x, y; + return x.constructor === y.constructor; + }; + $ptrType(Pointer[0 /* encoding/gob.encEngine */]).prototype.Load = function Load$7() { + var x; + x = this; + return x.v; + }; + $ptrType(Pointer[5 /* go/token.File */]).prototype.Load = function Load$8() { + var x; + x = this; + return x.v; + }; + $ptrType(Pointer[10 /* string */]).prototype.Load = function Load$9() { + var x; + x = this; + return x.v; + }; + $ptrType(Pointer[15 /* net/http.response */]).prototype.Load = function Load$10() { + var x; + x = this; + return x.v; + }; + $ptrType(Pointer[20 /* sync.readOnly */]).prototype.Load = function Load$11() { + var x; + x = this; + return x.v; + }; + $ptrType(Pointer[25 /* any */]).prototype.Load = function Load$12() { + var x; + x = this; + return x.v; + }; + $ptrType(Pointer[0 /* encoding/gob.encEngine */]).prototype.Store = function Store$7(val) { + var val, x; + x = this; + x.v = val; + }; + $ptrType(Pointer[5 /* go/token.File */]).prototype.Store = function Store$8(val) { + var val, x; + x = this; + x.v = val; + }; + $ptrType(Pointer[10 /* string */]).prototype.Store = function Store$9(val) { + var val, x; + x = this; + x.v = val; + }; + $ptrType(Pointer[15 /* net/http.response */]).prototype.Store = function Store$10(val) { + var val, x; + x = this; + x.v = val; + }; + $ptrType(Pointer[20 /* sync.readOnly */]).prototype.Store = function Store$11(val) { + var val, x; + x = this; + x.v = val; + }; + $ptrType(Pointer[25 /* any */]).prototype.Store = function Store$12(val) { + var val, x; + x = this; + x.v = val; + }; + $ptrType(Pointer[0 /* encoding/gob.encEngine */]).prototype.Swap = function Swap$7(new$1) { + var new$1, old, x; + old = ptrType$6.nil; + x = this; + old = x.v; + x.v = new$1; + old = old; + return old; + }; + $ptrType(Pointer[5 /* go/token.File */]).prototype.Swap = function Swap$8(new$1) { + var new$1, old, x; + old = ptrType$7.nil; + x = this; + old = x.v; + x.v = new$1; + old = old; + return old; + }; + $ptrType(Pointer[10 /* string */]).prototype.Swap = function Swap$9(new$1) { + var new$1, old, x; + old = ptrType$8.nil; + x = this; + old = x.v; + x.v = new$1; + old = old; + return old; + }; + $ptrType(Pointer[15 /* net/http.response */]).prototype.Swap = function Swap$10(new$1) { + var new$1, old, x; + old = ptrType$9.nil; + x = this; + old = x.v; + x.v = new$1; + old = old; + return old; + }; + $ptrType(Pointer[20 /* sync.readOnly */]).prototype.Swap = function Swap$11(new$1) { + var new$1, old, x; + old = ptrType$10.nil; + x = this; + old = x.v; + x.v = new$1; + old = old; + return old; + }; + $ptrType(Pointer[25 /* any */]).prototype.Swap = function Swap$12(new$1) { + var new$1, old, x; + old = ptrType$11.nil; + x = this; + old = x.v; + x.v = new$1; + old = old; + return old; + }; + $ptrType(Pointer[0 /* encoding/gob.encEngine */]).prototype.CompareAndSwap = function CompareAndSwap$7(old, new$1) { + var new$1, old, x; + x = this; + if (x.v === old) { + x.v = new$1; + return true; + } + return false; + }; + $ptrType(Pointer[5 /* go/token.File */]).prototype.CompareAndSwap = function CompareAndSwap$8(old, new$1) { + var new$1, old, x; + x = this; + if (x.v === old) { + x.v = new$1; + return true; + } + return false; + }; + $ptrType(Pointer[10 /* string */]).prototype.CompareAndSwap = function CompareAndSwap$9(old, new$1) { + var new$1, old, x; + x = this; + if (x.v === old) { + x.v = new$1; + return true; + } + return false; + }; + $ptrType(Pointer[15 /* net/http.response */]).prototype.CompareAndSwap = function CompareAndSwap$10(old, new$1) { + var new$1, old, x; + x = this; + if (x.v === old) { + x.v = new$1; + return true; + } + return false; + }; + $ptrType(Pointer[20 /* sync.readOnly */]).prototype.CompareAndSwap = function CompareAndSwap$11(old, new$1) { + var new$1, old, x; + x = this; + if (x.v === old) { + x.v = new$1; + return true; + } + return false; + }; + $ptrType(Pointer[25 /* any */]).prototype.CompareAndSwap = function CompareAndSwap$12(old, new$1) { + var new$1, old, x; + x = this; + if (x.v === old) { + x.v = new$1; + return true; + } + return false; + }; + ptrType$12.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [$Bool], false)}, {prop: "checkNew", name: "checkNew", pkg: "sync/atomic", typ: $funcType([$String, $emptyInterface], [], false)}]; + ptrType$13.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Bool], [$Bool], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$Bool, $Bool], [$Bool], false)}]; + ptrType$14.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$Int32], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$Int32], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int32], [$Int32], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$Int32, $Int32], [$Bool], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([$Int32], [$Int32], false)}]; + ptrType$15.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int64], [$Int64], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$Int64, $Int64], [$Bool], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([$Int64], [$Int64], false)}]; + ptrType$17.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$Uint64], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Uint64], [$Uint64], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$Uint64, $Uint64], [$Bool], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([$Uint64], [$Uint64], false)}]; + ptrType$19.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]; + ptrType$20.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [ptrType$6], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([ptrType$6], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([ptrType$6], [ptrType$6], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([ptrType$6, ptrType$6], [$Bool], false)}]; + ptrType$21.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([ptrType$7], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([ptrType$7], [ptrType$7], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([ptrType$7, ptrType$7], [$Bool], false)}]; + ptrType$22.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [ptrType$8], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([ptrType$8], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([ptrType$8], [ptrType$8], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([ptrType$8, ptrType$8], [$Bool], false)}]; + ptrType$23.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([ptrType$9], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([ptrType$9], [ptrType$9], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([ptrType$9, ptrType$9], [$Bool], false)}]; + ptrType$24.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [ptrType$10], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([ptrType$10], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([ptrType$10], [ptrType$10], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([ptrType$10, ptrType$10], [$Bool], false)}]; + ptrType$25.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [ptrType$11], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([ptrType$11], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([ptrType$11], [ptrType$11], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([ptrType$11, ptrType$11], [$Bool], false)}]; + Value.init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: $emptyInterface, tag: ""}]); + Bool.init("sync/atomic", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: noCopy, tag: ""}, {prop: "v", name: "v", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + Int32.init("sync/atomic", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: noCopy, tag: ""}, {prop: "v", name: "v", embedded: false, exported: false, typ: $Int32, tag: ""}]); + Int64.init("sync/atomic", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: noCopy, tag: ""}, {prop: "_$1", name: "_", embedded: false, exported: false, typ: align64, tag: ""}, {prop: "v", name: "v", embedded: false, exported: false, typ: $Int64, tag: ""}]); + Uint64.init("sync/atomic", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: noCopy, tag: ""}, {prop: "_$1", name: "_", embedded: false, exported: false, typ: align64, tag: ""}, {prop: "v", name: "v", embedded: false, exported: false, typ: $Uint64, tag: ""}]); + noCopy.init("", []); + align64.init("", []); + Pointer[0 /* encoding/gob.encEngine */].init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: ptrType$6, tag: ""}]); + Pointer[5 /* go/token.File */].init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: ptrType$7, tag: ""}]); + Pointer[10 /* string */].init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: ptrType$8, tag: ""}]); + Pointer[15 /* net/http.response */].init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: ptrType$9, tag: ""}]); + Pointer[20 /* sync.readOnly */].init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: ptrType$10, tag: ""}]); + Pointer[25 /* any */].init("sync/atomic", [{prop: "v", name: "v", embedded: false, exported: false, typ: ptrType$11, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["sync"] = (function() { + var $pkg = {}, $init, js, race, atomic, RWMutex, rlocker, notifyList, Once, Mutex, Locker, Map, readOnly, entry, WaitGroup, Pool, Cond, copyChecker, noCopy, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$9, ptrType$10, ptrType$11, structType, chanType, sliceType$1, funcType, ptrType$15, ptrType$16, funcType$1, ptrType$17, mapType, ptrType$18, chanType$1, sliceType$2, ptrType$19, funcType$2, ptrType$20, ptrType$21, ptrType$22, expunged, semWaiters, semAwoken, init, runtime_doSpin, fatal, newEntry, runtime_Semacquire, runtime_SemacquireMutex, runtime_SemacquireRWMutexR, runtime_SemacquireRWMutex, runtime_Semrelease, runtime_notifyListCheck, runtime_canSpin, runtime_nanotime, throw$1, NewCond; + js = $packages["github.com/gopherjs/gopherjs/js"]; + race = $packages["internal/race"]; + atomic = $packages["sync/atomic"]; + RWMutex = $newType(0, $kindStruct, "sync.RWMutex", true, "sync", true, function(w_, writerSem_, readerSem_, readerCount_, readerWait_) { + this.$val = this; + if (arguments.length === 0) { + this.w = new Mutex.ptr(0, 0); + this.writerSem = 0; + this.readerSem = 0; + this.readerCount = new atomic.Int32.ptr(new atomic.noCopy.ptr(), 0); + this.readerWait = new atomic.Int32.ptr(new atomic.noCopy.ptr(), 0); + return; + } + this.w = w_; + this.writerSem = writerSem_; + this.readerSem = readerSem_; + this.readerCount = readerCount_; + this.readerWait = readerWait_; + }); + rlocker = $newType(0, $kindStruct, "sync.rlocker", true, "sync", false, function(w_, writerSem_, readerSem_, readerCount_, readerWait_) { + this.$val = this; + if (arguments.length === 0) { + this.w = new Mutex.ptr(0, 0); + this.writerSem = 0; + this.readerSem = 0; + this.readerCount = new atomic.Int32.ptr(new atomic.noCopy.ptr(), 0); + this.readerWait = new atomic.Int32.ptr(new atomic.noCopy.ptr(), 0); + return; + } + this.w = w_; + this.writerSem = writerSem_; + this.readerSem = readerSem_; + this.readerCount = readerCount_; + this.readerWait = readerWait_; + }); + notifyList = $newType(0, $kindStruct, "sync.notifyList", true, "sync", false, function(wait_, notify_, lock_, head_, tail_) { + this.$val = this; + if (arguments.length === 0) { + this.wait = 0; + this.notify = 0; + this.lock = 0; + this.head = 0; + this.tail = 0; + return; + } + this.wait = wait_; + this.notify = notify_; + this.lock = lock_; + this.head = head_; + this.tail = tail_; + }); + Once = $newType(0, $kindStruct, "sync.Once", true, "sync", true, function(done_, m_) { + this.$val = this; + if (arguments.length === 0) { + this.done = 0; + this.m = new Mutex.ptr(0, 0); + return; + } + this.done = done_; + this.m = m_; + }); + Mutex = $newType(0, $kindStruct, "sync.Mutex", true, "sync", true, function(state_, sema_) { + this.$val = this; + if (arguments.length === 0) { + this.state = 0; + this.sema = 0; + return; + } + this.state = state_; + this.sema = sema_; + }); + Locker = $newType(8, $kindInterface, "sync.Locker", true, "sync", true, null); + Map = $newType(0, $kindStruct, "sync.Map", true, "sync", true, function(mu_, read_, dirty_, misses_) { + this.$val = this; + if (arguments.length === 0) { + this.mu = new Mutex.ptr(0, 0); + this.read = new atomic.Pointer[20 /* sync.readOnly */].ptr(ptrType$10.nil); + this.dirty = false; + this.misses = 0; + return; + } + this.mu = mu_; + this.read = read_; + this.dirty = dirty_; + this.misses = misses_; + }); + readOnly = $newType(0, $kindStruct, "sync.readOnly", true, "sync", false, function(m_, amended_) { + this.$val = this; + if (arguments.length === 0) { + this.m = false; + this.amended = false; + return; + } + this.m = m_; + this.amended = amended_; + }); + entry = $newType(0, $kindStruct, "sync.entry", true, "sync", false, function(p_) { + this.$val = this; + if (arguments.length === 0) { + this.p = new atomic.Pointer[25 /* any */].ptr(ptrType.nil); + return; + } + this.p = p_; + }); + WaitGroup = $newType(0, $kindStruct, "sync.WaitGroup", true, "sync", true, function(counter_, ch_, state1_, state2_) { + this.$val = this; + if (arguments.length === 0) { + this.counter = 0; + this.ch = $chanNil; + this.state1 = new $Uint64(0, 0); + this.state2 = 0; + return; + } + this.counter = counter_; + this.ch = ch_; + this.state1 = state1_; + this.state2 = state2_; + }); + Pool = $newType(0, $kindStruct, "sync.Pool", true, "sync", true, function(store_, New_) { + this.$val = this; + if (arguments.length === 0) { + this.store = sliceType$2.nil; + this.New = $throwNilPointerError; + return; + } + this.store = store_; + this.New = New_; + }); + Cond = $newType(0, $kindStruct, "sync.Cond", true, "sync", true, function(noCopy_, L_, notify_, checker_, n_, ch_) { + this.$val = this; + if (arguments.length === 0) { + this.noCopy = new noCopy.ptr(); + this.L = $ifaceNil; + this.notify = new notifyList.ptr(0, 0, 0, 0, 0); + this.checker = 0; + this.n = 0; + this.ch = $chanNil; + return; + } + this.noCopy = noCopy_; + this.L = L_; + this.notify = notify_; + this.checker = checker_; + this.n = n_; + this.ch = ch_; + }); + copyChecker = $newType(4, $kindUintptr, "sync.copyChecker", true, "sync", false, null); + noCopy = $newType(0, $kindStruct, "sync.noCopy", true, "sync", false, function() { this.$val = this; }); + $pkg.RWMutex = RWMutex; + $pkg.rlocker = rlocker; + $pkg.notifyList = notifyList; + $pkg.Once = Once; + $pkg.Mutex = Mutex; + $pkg.Locker = Locker; + $pkg.Map = Map; + $pkg.readOnly = readOnly; + $pkg.entry = entry; + $pkg.WaitGroup = WaitGroup; + $pkg.Pool = Pool; + $pkg.Cond = Cond; + $pkg.copyChecker = copyChecker; + $pkg.noCopy = noCopy; + $pkg.$finishSetup = function() { + ptrType = $ptrType($emptyInterface); + ptrType$1 = $ptrType($Uint32); + ptrType$2 = $ptrType(rlocker); + ptrType$3 = $ptrType(RWMutex); + ptrType$9 = $ptrType($Int32); + ptrType$10 = $ptrType(readOnly); + ptrType$11 = $ptrType(entry); + structType = $structType("", []); + chanType = $chanType($Bool, false, false); + sliceType$1 = $sliceType(chanType); + funcType = $funcType([], [], false); + ptrType$15 = $ptrType(Once); + ptrType$16 = $ptrType(Mutex); + funcType$1 = $funcType([$emptyInterface, $emptyInterface], [$Bool], false); + ptrType$17 = $ptrType(Map); + mapType = $mapType($emptyInterface, ptrType$11); + ptrType$18 = $ptrType(WaitGroup); + chanType$1 = $chanType(structType, false, false); + sliceType$2 = $sliceType($emptyInterface); + ptrType$19 = $ptrType(Pool); + funcType$2 = $funcType([], [$emptyInterface], false); + ptrType$20 = $ptrType(Cond); + ptrType$21 = $ptrType(copyChecker); + ptrType$22 = $ptrType(noCopy); + $ptrType(WaitGroup).prototype.Done = function Done() { + var wg; + wg = this; + wg.Add(-1); + }; + $ptrType(RWMutex).prototype.RLock = function RLock() { + var {rw, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rw = this; + if (false) { + $unused(rw.w.state); + race.Disable(); + } + /* */ if (rw.readerCount.Add(1) < 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (rw.readerCount.Add(1) < 0) { */ case 1: + $r = runtime_SemacquireRWMutexR((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))), false, 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (false) { + race.Enable(); + race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))))); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: RLock, $c: true, $r, rw, $s};return $f; + }; + $ptrType(RWMutex).prototype.TryRLock = function TryRLock() { + var c, rw; + rw = this; + if (false) { + $unused(rw.w.state); + race.Disable(); + } + while (true) { + c = rw.readerCount.Load(); + if (c < 0) { + if (false) { + race.Enable(); + } + return false; + } + if (rw.readerCount.CompareAndSwap(c, c + 1 >> 0)) { + if (false) { + race.Enable(); + race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))))); + } + return true; + } + } + }; + $ptrType(RWMutex).prototype.RUnlock = function RUnlock() { + var {r, rw, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rw = this; + if (false) { + $unused(rw.w.state); + race.ReleaseMerge(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))))); + race.Disable(); + } + r = rw.readerCount.Add(-1); + /* */ if (r < 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (r < 0) { */ case 1: + $r = rw.rUnlockSlow(r); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (false) { + race.Enable(); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: RUnlock, $c: true, $r, r, rw, $s};return $f; + }; + $ptrType(RWMutex).prototype.rUnlockSlow = function rUnlockSlow(r) { + var {r, rw, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rw = this; + /* */ if (((r + 1 >> 0) === 0) || ((r + 1 >> 0) === -1073741824)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (((r + 1 >> 0) === 0) || ((r + 1 >> 0) === -1073741824)) { */ case 1: + race.Enable(); + $r = fatal("sync: RUnlock of unlocked RWMutex"); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + /* */ if (rw.readerWait.Add(-1) === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (rw.readerWait.Add(-1) === 0) { */ case 4: + $r = runtime_Semrelease((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))), false, 1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: rUnlockSlow, $c: true, $r, r, rw, $s};return $f; + }; + $ptrType(RWMutex).prototype.Lock = function Lock() { + var {r, rw, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rw = this; + if (false) { + $unused(rw.w.state); + race.Disable(); + } + $r = rw.w.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + r = rw.readerCount.Add(-1073741824) + 1073741824 >> 0; + /* */ if (!((r === 0)) && !((rw.readerWait.Add(r) === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((r === 0)) && !((rw.readerWait.Add(r) === 0))) { */ case 2: + $r = runtime_SemacquireRWMutex((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))), false, 0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + if (false) { + race.Enable(); + race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))))); + race.Acquire(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))))); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: Lock, $c: true, $r, r, rw, $s};return $f; + }; + $ptrType(RWMutex).prototype.TryLock = function TryLock() { + var {rw, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rw = this; + if (false) { + $unused(rw.w.state); + race.Disable(); + } + if (!rw.w.TryLock()) { + if (false) { + race.Enable(); + } + $s = -1; return false; + } + /* */ if (!rw.readerCount.CompareAndSwap(0, -1073741824)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!rw.readerCount.CompareAndSwap(0, -1073741824)) { */ case 1: + $r = rw.w.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (false) { + race.Enable(); + } + $s = -1; return false; + /* } */ case 2: + if (false) { + race.Enable(); + race.Acquire(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))))); + race.Acquire(((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$1(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw))))); + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: TryLock, $c: true, $r, rw, $s};return $f; + }; + $ptrType(RWMutex).prototype.Unlock = function Unlock() { + var {i, r, rw, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rw = this; + if (false) { + $unused(rw.w.state); + race.Release(((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))))); + race.Disable(); + } + r = rw.readerCount.Add(1073741824); + /* */ if (r >= 1073741824) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (r >= 1073741824) { */ case 1: + race.Enable(); + $r = fatal("sync: Unlock of unlocked RWMutex"); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + i = 0; + /* while (true) { */ case 4: + /* if (!(i < ((r >> 0)))) { break; } */ if(!(i < ((r >> 0)))) { $s = 5; continue; } + $r = runtime_Semrelease((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$1(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw))), false, 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 4; continue; + case 5: + $r = rw.w.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (false) { + race.Enable(); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: Unlock, $c: true, $r, i, r, rw, $s};return $f; + }; + $ptrType(RWMutex).prototype.RLocker = function RLocker() { + var rw; + rw = this; + return ($pointerOfStructConversion(rw, ptrType$2)); + }; + $ptrType(rlocker).prototype.Lock = function Lock$1() { + var {r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + $r = ($pointerOfStructConversion(r, ptrType$3)).RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Lock$1, $c: true, $r, r, $s};return $f; + }; + $ptrType(rlocker).prototype.Unlock = function Unlock$1() { + var {r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + $r = ($pointerOfStructConversion(r, ptrType$3)).RUnlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Unlock$1, $c: true, $r, r, $s};return $f; + }; + init = function init$1() { + var n; + n = new notifyList.ptr(0, 0, 0, 0, 0); + runtime_notifyListCheck(20); + }; + runtime_doSpin = function() { + $throwRuntimeError("native function not implemented: sync.runtime_doSpin"); + }; + $ptrType(Once).prototype.Do = function Do(f) { + var {f, o, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + o = this; + /* */ if (atomic.LoadUint32((o.$ptr_done || (o.$ptr_done = new ptrType$1(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o)))) === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (atomic.LoadUint32((o.$ptr_done || (o.$ptr_done = new ptrType$1(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o)))) === 0) { */ case 1: + $r = o.doSlow(f); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Do, $c: true, $r, f, o, $s};return $f; + }; + $ptrType(Once).prototype.doSlow = function doSlow(f) { + var {f, o, $s, $deferred, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + o = this; + $r = o.m.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(o.m, "Unlock"), []]); + /* */ if (o.done === 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (o.done === 0) { */ case 2: + $deferred.push([atomic.StoreUint32, [(o.$ptr_done || (o.$ptr_done = new ptrType$1(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o))), 1]]); + $r = f(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: doSlow, $c: true, $r, f, o, $s, $deferred};return $f; } } + }; + fatal = function() { + $throwRuntimeError("native function not implemented: sync.fatal"); + }; + $ptrType(Mutex).prototype.Lock = function Lock$2() { + var {m, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$9(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), 0, 1)) { + if (false) { + race.Acquire((m)); + } + $s = -1; return; + } + $r = m.lockSlow(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Lock$2, $c: true, $r, m, $s};return $f; + }; + $ptrType(Mutex).prototype.TryLock = function TryLock$1() { + var m, old; + m = this; + old = m.state; + if (!(((old & 5) === 0))) { + return false; + } + if (!atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$9(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, old | 1)) { + return false; + } + if (false) { + race.Acquire((m)); + } + return true; + }; + $ptrType(Mutex).prototype.lockSlow = function lockSlow() { + var {_r, _r$1, _v, awoke, delta, iter, m, new$1, old, queueLifo, starving, waitStartTime, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + waitStartTime = new $Int64(0, 0); + starving = false; + awoke = false; + iter = 0; + old = m.state; + /* while (true) { */ case 1: + /* */ if (((old & 5) === 1) && runtime_canSpin(iter)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (((old & 5) === 1) && runtime_canSpin(iter)) { */ case 3: + if (!awoke && ((old & 2) === 0) && !(((old >> 3 >> 0) === 0)) && atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$9(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, old | 2)) { + awoke = true; + } + $r = runtime_doSpin(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + iter = iter + (1) >> 0; + old = m.state; + /* continue; */ $s = 1; continue; + /* } */ case 4: + new$1 = old; + if ((old & 4) === 0) { + new$1 = new$1 | (1); + } + if (!(((old & 5) === 0))) { + new$1 = new$1 + (8) >> 0; + } + if (starving && !(((old & 1) === 0))) { + new$1 = new$1 | (4); + } + if (awoke) { + if ((new$1 & 2) === 0) { + throw$1("sync: inconsistent mutex state"); + } + new$1 = (new$1 & ~(2)) >> 0; + } + /* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$9(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$9(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 6: + if ((old & 5) === 0) { + /* break; */ $s = 2; continue; + } + queueLifo = !((waitStartTime.$high === 0 && waitStartTime.$low === 0)); + /* */ if ((waitStartTime.$high === 0 && waitStartTime.$low === 0)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ((waitStartTime.$high === 0 && waitStartTime.$low === 0)) { */ case 9: + _r = runtime_nanotime(); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + waitStartTime = _r; + /* } */ case 10: + $r = runtime_SemacquireMutex((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), queueLifo, 1); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (starving) { _v = true; $s = 13; continue s; } + _r$1 = runtime_nanotime(); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = (x = (x$1 = _r$1, new $Int64(x$1.$high - waitStartTime.$high, x$1.$low - waitStartTime.$low)), (x.$high > 0 || (x.$high === 0 && x.$low > 1000000))); case 13: + starving = _v; + old = m.state; + if (!(((old & 4) === 0))) { + if (!(((old & 3) === 0)) || ((old >> 3 >> 0) === 0)) { + throw$1("sync: inconsistent mutex state"); + } + delta = -7; + if (!starving || ((old >> 3 >> 0) === 1)) { + delta = delta - (4) >> 0; + } + atomic.AddInt32((m.$ptr_state || (m.$ptr_state = new ptrType$9(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), delta); + /* break; */ $s = 2; continue; + } + awoke = true; + iter = 0; + $s = 8; continue; + /* } else { */ case 7: + old = m.state; + /* } */ case 8: + $s = 1; continue; + case 2: + if (false) { + race.Acquire((m)); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: lockSlow, $c: true, $r, _r, _r$1, _v, awoke, delta, iter, m, new$1, old, queueLifo, starving, waitStartTime, x, x$1, $s};return $f; + }; + $ptrType(Mutex).prototype.Unlock = function Unlock$2() { + var {m, new$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + if (false) { + $unused(m.state); + race.Release((m)); + } + new$1 = atomic.AddInt32((m.$ptr_state || (m.$ptr_state = new ptrType$9(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), -1); + /* */ if (!((new$1 === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((new$1 === 0))) { */ case 1: + $r = m.unlockSlow(new$1); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Unlock$2, $c: true, $r, m, new$1, $s};return $f; + }; + $ptrType(Mutex).prototype.unlockSlow = function unlockSlow(new$1) { + var {m, new$1, old, $s, $r, $c} = $restore(this, {new$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + /* */ if ((((new$1 + 1 >> 0)) & 1) === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((((new$1 + 1 >> 0)) & 1) === 0) { */ case 1: + $r = fatal("sync: unlock of unlocked mutex"); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + /* */ if ((new$1 & 4) === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((new$1 & 4) === 0) { */ case 4: + old = new$1; + /* while (true) { */ case 7: + if (((old >> 3 >> 0) === 0) || !(((old & 7) === 0))) { + $s = -1; return; + } + new$1 = ((old - 8 >> 0)) | 2; + /* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$9(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$9(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 9: + $r = runtime_Semrelease((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), false, 1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 10: + old = m.state; + $s = 7; continue; + case 8: + $s = 6; continue; + /* } else { */ case 5: + $r = runtime_Semrelease((m.$ptr_sema || (m.$ptr_sema = new ptrType$1(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m))), true, 1); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: unlockSlow, $c: true, $r, m, new$1, old, $s};return $f; + }; + newEntry = function newEntry$1(i) { + var e, i, i$24ptr; + e = new entry.ptr(new atomic.Pointer[25 /* any */].ptr(ptrType.nil)); + e.p.Store((i$24ptr || (i$24ptr = new ptrType(function() { return i; }, function($v) { i = $v; })))); + return e; + }; + $ptrType(Map).prototype.loadReadOnly = function loadReadOnly() { + var m, p; + m = this; + p = m.read.Load(); + if (!(p === ptrType$10.nil)) { + return p; + } + return new readOnly.ptr(false, false); + }; + $ptrType(Map).prototype.Load = function Load(key) { + var {_entry, _entry$1, _entry$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, e, key, m, ok, read, value, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + value = $ifaceNil; + ok = false; + m = this; + read = $clone(m.loadReadOnly(), readOnly); + _tuple = (_entry = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [ptrType$11.nil, false]); + e = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok && read.amended) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!ok && read.amended) { */ case 1: + $r = m.mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + readOnly.copy(read, m.loadReadOnly()); + _tuple$1 = (_entry$1 = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$11.nil, false]); + e = _tuple$1[0]; + ok = _tuple$1[1]; + if (!ok && read.amended) { + _tuple$2 = (_entry$2 = $mapIndex(m.dirty,$emptyInterface.keyFor(key)), _entry$2 !== undefined ? [_entry$2.v, true] : [ptrType$11.nil, false]); + e = _tuple$2[0]; + ok = _tuple$2[1]; + m.missLocked(); + } + $r = m.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (!ok) { + _tmp = $ifaceNil; + _tmp$1 = false; + value = _tmp; + ok = _tmp$1; + $s = -1; return [value, ok]; + } + _tuple$3 = e.load(); + value = _tuple$3[0]; + ok = _tuple$3[1]; + $s = -1; return [value, ok]; + /* */ } return; } var $f = {$blk: Load, $c: true, $r, _entry, _entry$1, _entry$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, e, key, m, ok, read, value, $s};return $f; + }; + $ptrType(entry).prototype.load = function load() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, e, ok, p, value; + value = $ifaceNil; + ok = false; + e = this; + p = e.p.Load(); + if (p === ptrType.nil || p === expunged) { + _tmp = $ifaceNil; + _tmp$1 = false; + value = _tmp; + ok = _tmp$1; + return [value, ok]; + } + _tmp$2 = p.$get(); + _tmp$3 = true; + value = _tmp$2; + ok = _tmp$3; + return [value, ok]; + }; + $ptrType(Map).prototype.Store = function Store(key, value) { + var {_r, _tuple, key, m, value, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + _r = m.Swap(key, value); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + $s = -1; return; + /* */ } return; } var $f = {$blk: Store, $c: true, $r, _r, _tuple, key, m, value, $s};return $f; + }; + $ptrType(entry).prototype.tryCompareAndSwap = function tryCompareAndSwap(old, new$1) { + var e, nc, nc$24ptr, new$1, old, p; + e = this; + p = e.p.Load(); + if (p === ptrType.nil || p === expunged || !($interfaceIsEqual(p.$get(), old))) { + return false; + } + nc = new$1; + while (true) { + if (e.p.CompareAndSwap(p, (nc$24ptr || (nc$24ptr = new ptrType(function() { return nc; }, function($v) { nc = $v; }))))) { + return true; + } + p = e.p.Load(); + if (p === ptrType.nil || p === expunged || !($interfaceIsEqual(p.$get(), old))) { + return false; + } + } + }; + $ptrType(entry).prototype.unexpungeLocked = function unexpungeLocked() { + var e, wasExpunged; + wasExpunged = false; + e = this; + wasExpunged = e.p.CompareAndSwap(expunged, ptrType.nil); + return wasExpunged; + }; + $ptrType(entry).prototype.swapLocked = function swapLocked(i) { + var e, i; + e = this; + return e.p.Swap(i); + }; + $ptrType(Map).prototype.LoadOrStore = function LoadOrStore(key, value) { + var {_entry, _entry$1, _entry$2, _key, _key$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, actual, actual$1, e, e$1, e$2, key, loaded, loaded$1, m, ok, ok$1, ok$2, ok$3, read, value, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + actual = $ifaceNil; + loaded = false; + m = this; + read = $clone(m.loadReadOnly(), readOnly); + _tuple = (_entry = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [ptrType$11.nil, false]); + e = _tuple[0]; + ok = _tuple[1]; + if (ok) { + _tuple$1 = e.tryLoadOrStore(value); + actual$1 = _tuple$1[0]; + loaded$1 = _tuple$1[1]; + ok$1 = _tuple$1[2]; + if (ok$1) { + _tmp = actual$1; + _tmp$1 = loaded$1; + actual = _tmp; + loaded = _tmp$1; + $s = -1; return [actual, loaded]; + } + } + $r = m.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + readOnly.copy(read, m.loadReadOnly()); + _tuple$2 = (_entry$1 = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$11.nil, false]); + e$1 = _tuple$2[0]; + ok$2 = _tuple$2[1]; + if (ok$2) { + if (e$1.unexpungeLocked()) { + _key = key; (m.dirty || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key), { k: _key, v: e$1 }); + } + _tuple$3 = e$1.tryLoadOrStore(value); + actual = _tuple$3[0]; + loaded = _tuple$3[1]; + } else { + _tuple$4 = (_entry$2 = $mapIndex(m.dirty,$emptyInterface.keyFor(key)), _entry$2 !== undefined ? [_entry$2.v, true] : [ptrType$11.nil, false]); + e$2 = _tuple$4[0]; + ok$3 = _tuple$4[1]; + if (ok$3) { + _tuple$5 = e$2.tryLoadOrStore(value); + actual = _tuple$5[0]; + loaded = _tuple$5[1]; + m.missLocked(); + } else { + if (!read.amended) { + m.dirtyLocked(); + m.read.Store(new readOnly.ptr(read.m, true)); + } + _key$1 = key; (m.dirty || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key$1), { k: _key$1, v: newEntry(value) }); + _tmp$2 = value; + _tmp$3 = false; + actual = _tmp$2; + loaded = _tmp$3; + } + } + $r = m.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$4 = actual; + _tmp$5 = loaded; + actual = _tmp$4; + loaded = _tmp$5; + $s = -1; return [actual, loaded]; + /* */ } return; } var $f = {$blk: LoadOrStore, $c: true, $r, _entry, _entry$1, _entry$2, _key, _key$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, actual, actual$1, e, e$1, e$2, key, loaded, loaded$1, m, ok, ok$1, ok$2, ok$3, read, value, $s};return $f; + }; + $ptrType(entry).prototype.tryLoadOrStore = function tryLoadOrStore(i) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, actual, e, i, ic, ic$24ptr, loaded, ok, p; + actual = $ifaceNil; + loaded = false; + ok = false; + e = this; + p = e.p.Load(); + if (p === expunged) { + _tmp = $ifaceNil; + _tmp$1 = false; + _tmp$2 = false; + actual = _tmp; + loaded = _tmp$1; + ok = _tmp$2; + return [actual, loaded, ok]; + } + if (!(p === ptrType.nil)) { + _tmp$3 = p.$get(); + _tmp$4 = true; + _tmp$5 = true; + actual = _tmp$3; + loaded = _tmp$4; + ok = _tmp$5; + return [actual, loaded, ok]; + } + ic = i; + while (true) { + if (e.p.CompareAndSwap(ptrType.nil, (ic$24ptr || (ic$24ptr = new ptrType(function() { return ic; }, function($v) { ic = $v; }))))) { + _tmp$6 = i; + _tmp$7 = false; + _tmp$8 = true; + actual = _tmp$6; + loaded = _tmp$7; + ok = _tmp$8; + return [actual, loaded, ok]; + } + p = e.p.Load(); + if (p === expunged) { + _tmp$9 = $ifaceNil; + _tmp$10 = false; + _tmp$11 = false; + actual = _tmp$9; + loaded = _tmp$10; + ok = _tmp$11; + return [actual, loaded, ok]; + } + if (!(p === ptrType.nil)) { + _tmp$12 = p.$get(); + _tmp$13 = true; + _tmp$14 = true; + actual = _tmp$12; + loaded = _tmp$13; + ok = _tmp$14; + return [actual, loaded, ok]; + } + } + }; + $ptrType(Map).prototype.LoadAndDelete = function LoadAndDelete(key) { + var {_entry, _entry$1, _entry$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, e, key, loaded, m, ok, read, value, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + value = $ifaceNil; + loaded = false; + m = this; + read = $clone(m.loadReadOnly(), readOnly); + _tuple = (_entry = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [ptrType$11.nil, false]); + e = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok && read.amended) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!ok && read.amended) { */ case 1: + $r = m.mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + readOnly.copy(read, m.loadReadOnly()); + _tuple$1 = (_entry$1 = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$11.nil, false]); + e = _tuple$1[0]; + ok = _tuple$1[1]; + if (!ok && read.amended) { + _tuple$2 = (_entry$2 = $mapIndex(m.dirty,$emptyInterface.keyFor(key)), _entry$2 !== undefined ? [_entry$2.v, true] : [ptrType$11.nil, false]); + e = _tuple$2[0]; + ok = _tuple$2[1]; + $mapDelete(m.dirty, $emptyInterface.keyFor(key)); + m.missLocked(); + } + $r = m.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (ok) { + _tuple$3 = e.delete$(); + value = _tuple$3[0]; + loaded = _tuple$3[1]; + $s = -1; return [value, loaded]; + } + _tmp = $ifaceNil; + _tmp$1 = false; + value = _tmp; + loaded = _tmp$1; + $s = -1; return [value, loaded]; + /* */ } return; } var $f = {$blk: LoadAndDelete, $c: true, $r, _entry, _entry$1, _entry$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, e, key, loaded, m, ok, read, value, $s};return $f; + }; + $ptrType(Map).prototype.Delete = function Delete(key) { + var {_r, key, m, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + _r = m.LoadAndDelete(key); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + $s = -1; return; + /* */ } return; } var $f = {$blk: Delete, $c: true, $r, _r, key, m, $s};return $f; + }; + $ptrType(entry).prototype.delete$ = function delete$1() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, e, ok, p, value; + value = $ifaceNil; + ok = false; + e = this; + while (true) { + p = e.p.Load(); + if (p === ptrType.nil || p === expunged) { + _tmp = $ifaceNil; + _tmp$1 = false; + value = _tmp; + ok = _tmp$1; + return [value, ok]; + } + if (e.p.CompareAndSwap(p, ptrType.nil)) { + _tmp$2 = p.$get(); + _tmp$3 = true; + value = _tmp$2; + ok = _tmp$3; + return [value, ok]; + } + } + }; + $ptrType(entry).prototype.trySwap = function trySwap(i) { + var e, i, p; + e = this; + while (true) { + p = e.p.Load(); + if (p === expunged) { + return [ptrType.nil, false]; + } + if (e.p.CompareAndSwap(p, i)) { + return [p, true]; + } + } + }; + $ptrType(Map).prototype.Swap = function Swap(key, value) { + var {_entry, _entry$1, _entry$2, _key, _key$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, e, e$1, e$2, key, loaded, m, ok, ok$1, ok$2, ok$3, previous, read, v, v$1, v$2, value, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + value = [value]; + previous = $ifaceNil; + loaded = false; + m = this; + read = $clone(m.loadReadOnly(), readOnly); + _tuple = (_entry = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [ptrType$11.nil, false]); + e = _tuple[0]; + ok = _tuple[1]; + if (ok) { + _tuple$1 = e.trySwap((value.$ptr || (value.$ptr = new ptrType(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, value)))); + v = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + if (v === ptrType.nil) { + _tmp = $ifaceNil; + _tmp$1 = false; + previous = _tmp; + loaded = _tmp$1; + $s = -1; return [previous, loaded]; + } + _tmp$2 = v.$get(); + _tmp$3 = true; + previous = _tmp$2; + loaded = _tmp$3; + $s = -1; return [previous, loaded]; + } + } + $r = m.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + readOnly.copy(read, m.loadReadOnly()); + _tuple$2 = (_entry$1 = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$11.nil, false]); + e$1 = _tuple$2[0]; + ok$2 = _tuple$2[1]; + if (ok$2) { + if (e$1.unexpungeLocked()) { + _key = key; (m.dirty || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key), { k: _key, v: e$1 }); + } + v$1 = e$1.swapLocked((value.$ptr || (value.$ptr = new ptrType(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, value)))); + if (!(v$1 === ptrType.nil)) { + loaded = true; + previous = v$1.$get(); + } + } else { + _tuple$3 = (_entry$2 = $mapIndex(m.dirty,$emptyInterface.keyFor(key)), _entry$2 !== undefined ? [_entry$2.v, true] : [ptrType$11.nil, false]); + e$2 = _tuple$3[0]; + ok$3 = _tuple$3[1]; + if (ok$3) { + v$2 = e$2.swapLocked((value.$ptr || (value.$ptr = new ptrType(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, value)))); + if (!(v$2 === ptrType.nil)) { + loaded = true; + previous = v$2.$get(); + } + } else { + if (!read.amended) { + m.dirtyLocked(); + m.read.Store(new readOnly.ptr(read.m, true)); + } + _key$1 = key; (m.dirty || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key$1), { k: _key$1, v: newEntry(value[0]) }); + } + } + $r = m.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$4 = previous; + _tmp$5 = loaded; + previous = _tmp$4; + loaded = _tmp$5; + $s = -1; return [previous, loaded]; + /* */ } return; } var $f = {$blk: Swap, $c: true, $r, _entry, _entry$1, _entry$2, _key, _key$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, e, e$1, e$2, key, loaded, m, ok, ok$1, ok$2, ok$3, previous, read, v, v$1, v$2, value, $s};return $f; + }; + $ptrType(Map).prototype.CompareAndSwap = function CompareAndSwap(key, old, new$1) { + var {$24r, _entry, _entry$1, _entry$2, _tuple, _tuple$1, _tuple$2, e, e$1, e$2, key, m, new$1, ok, ok$1, ok$2, old, read, swapped, $s, $deferred, $r, $c} = $restore(this, {key, old, new$1}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + m = this; + read = $clone(m.loadReadOnly(), readOnly); + _tuple = (_entry = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [ptrType$11.nil, false]); + e = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return e.tryCompareAndSwap(old, new$1); + } else if (!read.amended) { + $s = -1; return false; + } + $r = m.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(m.mu, "Unlock"), []]); + readOnly.copy(read, m.loadReadOnly()); + swapped = false; + _tuple$1 = (_entry$1 = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$11.nil, false]); + e$1 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + swapped = e$1.tryCompareAndSwap(old, new$1); + } else { + _tuple$2 = (_entry$2 = $mapIndex(m.dirty,$emptyInterface.keyFor(key)), _entry$2 !== undefined ? [_entry$2.v, true] : [ptrType$11.nil, false]); + e$2 = _tuple$2[0]; + ok$2 = _tuple$2[1]; + if (ok$2) { + swapped = e$2.tryCompareAndSwap(old, new$1); + m.missLocked(); + } + } + $24r = swapped; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: CompareAndSwap, $c: true, $r, $24r, _entry, _entry$1, _entry$2, _tuple, _tuple$1, _tuple$2, e, e$1, e$2, key, m, new$1, ok, ok$1, ok$2, old, read, swapped, $s, $deferred};return $f; } } + }; + $ptrType(Map).prototype.CompareAndDelete = function CompareAndDelete(key, old) { + var {_entry, _entry$1, _entry$2, _tuple, _tuple$1, _tuple$2, deleted, e, key, m, ok, old, p, read, $s, $r, $c} = $restore(this, {key, old}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + deleted = false; + m = this; + read = $clone(m.loadReadOnly(), readOnly); + _tuple = (_entry = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [ptrType$11.nil, false]); + e = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok && read.amended) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!ok && read.amended) { */ case 1: + $r = m.mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + readOnly.copy(read, m.loadReadOnly()); + _tuple$1 = (_entry$1 = $mapIndex(read.m,$emptyInterface.keyFor(key)), _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$11.nil, false]); + e = _tuple$1[0]; + ok = _tuple$1[1]; + if (!ok && read.amended) { + _tuple$2 = (_entry$2 = $mapIndex(m.dirty,$emptyInterface.keyFor(key)), _entry$2 !== undefined ? [_entry$2.v, true] : [ptrType$11.nil, false]); + e = _tuple$2[0]; + ok = _tuple$2[1]; + m.missLocked(); + } + $r = m.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + while (true) { + if (!(ok)) { break; } + p = e.p.Load(); + if (p === ptrType.nil || p === expunged || !($interfaceIsEqual(p.$get(), old))) { + deleted = false; + $s = -1; return deleted; + } + if (e.p.CompareAndSwap(p, ptrType.nil)) { + deleted = true; + $s = -1; return deleted; + } + } + deleted = false; + $s = -1; return deleted; + /* */ } return; } var $f = {$blk: CompareAndDelete, $c: true, $r, _entry, _entry$1, _entry$2, _tuple, _tuple$1, _tuple$2, deleted, e, key, m, ok, old, p, read, $s};return $f; + }; + $ptrType(Map).prototype.Range = function Range(f) { + var {_entry, _i, _key, _keys, _r, _ref, _size, _tuple, e, f, k, m, ok, read, v, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + read = [read]; + m = this; + read[0] = $clone(m.loadReadOnly(), readOnly); + /* */ if (read[0].amended) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (read[0].amended) { */ case 1: + $r = m.mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + readOnly.copy(read[0], m.loadReadOnly()); + if (read[0].amended) { + readOnly.copy(read[0], new readOnly.ptr(m.dirty, false)); + m.read.Store(read[0]); + m.dirty = false; + m.misses = 0; + } + $r = m.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _ref = read[0].m; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 5: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 6; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 5; continue; + } + k = _entry.k; + e = _entry.v; + _tuple = e.load(); + v = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + _i++; + /* continue; */ $s = 5; continue; + } + _r = f(k, v); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!_r) { */ case 7: + /* break; */ $s = 6; continue; + /* } */ case 8: + _i++; + $s = 5; continue; + case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: Range, $c: true, $r, _entry, _i, _key, _keys, _r, _ref, _size, _tuple, e, f, k, m, ok, read, v, $s};return $f; + }; + $ptrType(Map).prototype.missLocked = function missLocked() { + var m; + m = this; + m.misses = m.misses + (1) >> 0; + if (m.misses < (m.dirty ? m.dirty.size : 0)) { + return; + } + m.read.Store(new readOnly.ptr(m.dirty, false)); + m.dirty = false; + m.misses = 0; + }; + $ptrType(Map).prototype.dirtyLocked = function dirtyLocked() { + var _entry, _i, _key, _key$1, _keys, _ref, _size, e, k, m, read, x; + m = this; + if (!(m.dirty === false)) { + return; + } + read = $clone(m.loadReadOnly(), readOnly); + m.dirty = (x = (read.m ? read.m.size : 0), ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : new $global.Map())); + _ref = read.m; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + k = _entry.k; + e = _entry.v; + if (!e.tryExpungeLocked()) { + _key$1 = k; (m.dirty || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key$1), { k: _key$1, v: e }); + } + _i++; + } + }; + $ptrType(entry).prototype.tryExpungeLocked = function tryExpungeLocked() { + var e, isExpunged, p; + isExpunged = false; + e = this; + p = e.p.Load(); + while (true) { + if (!(p === ptrType.nil)) { break; } + if (e.p.CompareAndSwap(ptrType.nil, expunged)) { + isExpunged = true; + return isExpunged; + } + p = e.p.Load(); + } + isExpunged = p === expunged; + return isExpunged; + }; + $ptrType(WaitGroup).prototype.Add = function Add(delta) { + var delta, wg; + wg = this; + wg.counter = wg.counter + (delta) >> 0; + if (wg.counter < 0) { + $panic(new $String("sync: negative WaitGroup counter")); + } + if (wg.counter > 0 && wg.ch === $chanNil) { + wg.ch = new $Chan(structType, 0); + } + if ((wg.counter === 0) && !(wg.ch === $chanNil)) { + $close(wg.ch); + wg.ch = $chanNil; + } + }; + $ptrType(WaitGroup).prototype.Wait = function Wait() { + var {_r, wg, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + wg = this; + /* */ if (wg.counter > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (wg.counter > 0) { */ case 1: + _r = $recv(wg.ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r[0]; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Wait, $c: true, $r, _r, wg, $s};return $f; + }; + runtime_Semacquire = function runtime_Semacquire$1(s) { + var {s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = runtime_SemacquireMutex(s, false, 1); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: runtime_Semacquire$1, $c: true, $r, s, $s};return $f; + }; + runtime_SemacquireMutex = function runtime_SemacquireMutex$1(s, lifo, skipframes) { + var {_entry, _entry$1, _entry$2, _entry$3, _entry$4, _key, _key$1, _key$2, _r, ch, lifo, s, skipframes, $s, $r, $c} = $restore(this, {s, lifo, skipframes}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (((s.$get() - (_entry = $mapIndex(semAwoken,ptrType$1.keyFor(s)), _entry !== undefined ? _entry.v : 0) >>> 0)) === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (((s.$get() - (_entry = $mapIndex(semAwoken,ptrType$1.keyFor(s)), _entry !== undefined ? _entry.v : 0) >>> 0)) === 0) { */ case 1: + ch = new $Chan($Bool, 0); + if (lifo) { + _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$1.keyFor(_key), { k: _key, v: $appendSlice(new sliceType$1([ch]), (_entry$1 = $mapIndex(semWaiters,ptrType$1.keyFor(s)), _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil)) }); + } else { + _key$1 = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$1.keyFor(_key$1), { k: _key$1, v: $append((_entry$2 = $mapIndex(semWaiters,ptrType$1.keyFor(s)), _entry$2 !== undefined ? _entry$2.v : sliceType$1.nil), ch) }); + } + _r = $recv(ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r[0]; + _key$2 = s; (semAwoken || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$1.keyFor(_key$2), { k: _key$2, v: (_entry$3 = $mapIndex(semAwoken,ptrType$1.keyFor(s)), _entry$3 !== undefined ? _entry$3.v : 0) - (1) >>> 0 }); + if ((_entry$4 = $mapIndex(semAwoken,ptrType$1.keyFor(s)), _entry$4 !== undefined ? _entry$4.v : 0) === 0) { + $mapDelete(semAwoken, ptrType$1.keyFor(s)); + } + /* } */ case 2: + s.$set(s.$get() - (1) >>> 0); + $s = -1; return; + /* */ } return; } var $f = {$blk: runtime_SemacquireMutex$1, $c: true, $r, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _key, _key$1, _key$2, _r, ch, lifo, s, skipframes, $s};return $f; + }; + runtime_SemacquireRWMutexR = function runtime_SemacquireRWMutexR$1(s, lifo, skipframes) { + var {lifo, s, skipframes, $s, $r, $c} = $restore(this, {s, lifo, skipframes}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = runtime_SemacquireMutex(s, lifo, skipframes); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: runtime_SemacquireRWMutexR$1, $c: true, $r, lifo, s, skipframes, $s};return $f; + }; + runtime_SemacquireRWMutex = function runtime_SemacquireRWMutex$1(s, lifo, skipframes) { + var {lifo, s, skipframes, $s, $r, $c} = $restore(this, {s, lifo, skipframes}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = runtime_SemacquireMutex(s, lifo, skipframes); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: runtime_SemacquireRWMutex$1, $c: true, $r, lifo, s, skipframes, $s};return $f; + }; + runtime_Semrelease = function runtime_Semrelease$1(s, handoff, skipframes) { + var {_entry, _entry$1, _key, _key$1, ch, handoff, s, skipframes, w, $s, $r, $c} = $restore(this, {s, handoff, skipframes}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s.$set(s.$get() + (1) >>> 0); + w = (_entry = $mapIndex(semWaiters,ptrType$1.keyFor(s)), _entry !== undefined ? _entry.v : sliceType$1.nil); + if (w.$length === 0) { + $s = -1; return; + } + ch = (0 >= w.$length ? ($throwRuntimeError("index out of range"), undefined) : w.$array[w.$offset + 0]); + w = $subslice(w, 1); + _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$1.keyFor(_key), { k: _key, v: w }); + if (w.$length === 0) { + $mapDelete(semWaiters, ptrType$1.keyFor(s)); + } + _key$1 = s; (semAwoken || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$1.keyFor(_key$1), { k: _key$1, v: (_entry$1 = $mapIndex(semAwoken,ptrType$1.keyFor(s)), _entry$1 !== undefined ? _entry$1.v : 0) + (1) >>> 0 }); + $r = $send(ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: runtime_Semrelease$1, $c: true, $r, _entry, _entry$1, _key, _key$1, ch, handoff, s, skipframes, w, $s};return $f; + }; + runtime_notifyListCheck = function runtime_notifyListCheck$1(size) { + var size; + }; + runtime_canSpin = function runtime_canSpin$1(i) { + var i; + return false; + }; + runtime_nanotime = function() { + $throwRuntimeError("native function not implemented: sync.runtime_nanotime"); + }; + throw$1 = function throw$2(s) { + var s; + $throwRuntimeError($externalize(s, $String)); + }; + $ptrType(Pool).prototype.Get = function Get() { + var {$24r, _r, p, x, x$1, x$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (p.store.$length === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.store.$length === 0) { */ case 1: + /* */ if (!(p.New === $throwNilPointerError)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(p.New === $throwNilPointerError)) { */ case 3: + _r = p.New(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 6; case 6: return $24r; + /* } */ case 4: + $s = -1; return $ifaceNil; + /* } */ case 2: + x$2 = (x = p.store, x$1 = p.store.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0)); + $s = -1; return x$2; + /* */ } return; } var $f = {$blk: Get, $c: true, $r, $24r, _r, p, x, x$1, x$2, $s};return $f; + }; + $ptrType(Pool).prototype.Put = function Put(x) { + var p, x; + p = this; + if ($interfaceIsEqual(x, $ifaceNil)) { + return; + } + p.store = $append(p.store, x); + }; + $ptrType(Cond).prototype.Wait = function Wait$1() { + var {_r, c, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + c.n = c.n + (1) >> 0; + if (c.ch === $chanNil) { + c.ch = new $Chan($Bool, 0); + } + $r = c.L.Unlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = $recv(c.ch); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r[0]; + $r = c.L.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Wait$1, $c: true, $r, _r, c, $s};return $f; + }; + $ptrType(Cond).prototype.Signal = function Signal() { + var {c, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if (c.n === 0) { + $s = -1; return; + } + c.n = c.n - (1) >> 0; + $r = $send(c.ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Signal, $c: true, $r, c, $s};return $f; + }; + $ptrType(Cond).prototype.Broadcast = function Broadcast() { + var {c, i, n, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + n = c.n; + c.n = 0; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } + $r = $send(c.ch, true); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Broadcast, $c: true, $r, c, i, n, $s};return $f; + }; + NewCond = function NewCond$1(l) { + var l; + return new Cond.ptr(new noCopy.ptr(), l, new notifyList.ptr(0, 0, 0, 0, 0), 0, 0, $chanNil); + }; + $pkg.NewCond = NewCond; + $ptrType(noCopy).prototype.Lock = function Lock$3() { + }; + $ptrType(noCopy).prototype.Unlock = function Unlock$3() { + }; + ptrType$3.methods = [{prop: "RLock", name: "RLock", pkg: "", typ: $funcType([], [], false)}, {prop: "TryRLock", name: "TryRLock", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "RUnlock", name: "RUnlock", pkg: "", typ: $funcType([], [], false)}, {prop: "rUnlockSlow", name: "rUnlockSlow", pkg: "sync", typ: $funcType([$Int32], [], false)}, {prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "TryLock", name: "TryLock", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}, {prop: "RLocker", name: "RLocker", pkg: "", typ: $funcType([], [Locker], false)}]; + ptrType$2.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]; + ptrType$15.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "doSlow", name: "doSlow", pkg: "sync", typ: $funcType([funcType], [], false)}]; + ptrType$16.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "TryLock", name: "TryLock", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "lockSlow", name: "lockSlow", pkg: "sync", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}, {prop: "unlockSlow", name: "unlockSlow", pkg: "sync", typ: $funcType([$Int32], [], false)}]; + ptrType$17.methods = [{prop: "loadReadOnly", name: "loadReadOnly", pkg: "sync", typ: $funcType([], [readOnly], false)}, {prop: "Load", name: "Load", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface, $Bool], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [], false)}, {prop: "LoadOrStore", name: "LoadOrStore", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [$emptyInterface, $Bool], false)}, {prop: "LoadAndDelete", name: "LoadAndDelete", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface, $Bool], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [$emptyInterface, $Bool], false)}, {prop: "CompareAndSwap", name: "CompareAndSwap", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface, $emptyInterface], [$Bool], false)}, {prop: "CompareAndDelete", name: "CompareAndDelete", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [$Bool], false)}, {prop: "Range", name: "Range", pkg: "", typ: $funcType([funcType$1], [], false)}, {prop: "missLocked", name: "missLocked", pkg: "sync", typ: $funcType([], [], false)}, {prop: "dirtyLocked", name: "dirtyLocked", pkg: "sync", typ: $funcType([], [], false)}]; + ptrType$11.methods = [{prop: "load", name: "load", pkg: "sync", typ: $funcType([], [$emptyInterface, $Bool], false)}, {prop: "tryCompareAndSwap", name: "tryCompareAndSwap", pkg: "sync", typ: $funcType([$emptyInterface, $emptyInterface], [$Bool], false)}, {prop: "unexpungeLocked", name: "unexpungeLocked", pkg: "sync", typ: $funcType([], [$Bool], false)}, {prop: "swapLocked", name: "swapLocked", pkg: "sync", typ: $funcType([ptrType], [ptrType], false)}, {prop: "tryLoadOrStore", name: "tryLoadOrStore", pkg: "sync", typ: $funcType([$emptyInterface], [$emptyInterface, $Bool, $Bool], false)}, {prop: "delete$", name: "delete", pkg: "sync", typ: $funcType([], [$emptyInterface, $Bool], false)}, {prop: "trySwap", name: "trySwap", pkg: "sync", typ: $funcType([ptrType], [ptrType, $Bool], false)}, {prop: "tryExpungeLocked", name: "tryExpungeLocked", pkg: "sync", typ: $funcType([], [$Bool], false)}]; + ptrType$18.methods = [{prop: "Done", name: "Done", pkg: "", typ: $funcType([], [], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}]; + ptrType$19.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$emptyInterface], [], false)}]; + ptrType$20.methods = [{prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}, {prop: "Signal", name: "Signal", pkg: "", typ: $funcType([], [], false)}, {prop: "Broadcast", name: "Broadcast", pkg: "", typ: $funcType([], [], false)}]; + ptrType$21.methods = [{prop: "check", name: "check", pkg: "sync", typ: $funcType([], [], false)}]; + ptrType$22.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]; + RWMutex.init("sync", [{prop: "w", name: "w", embedded: false, exported: false, typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", embedded: false, exported: false, typ: atomic.Int32, tag: ""}, {prop: "readerWait", name: "readerWait", embedded: false, exported: false, typ: atomic.Int32, tag: ""}]); + rlocker.init("sync", [{prop: "w", name: "w", embedded: false, exported: false, typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", embedded: false, exported: false, typ: atomic.Int32, tag: ""}, {prop: "readerWait", name: "readerWait", embedded: false, exported: false, typ: atomic.Int32, tag: ""}]); + notifyList.init("sync", [{prop: "wait", name: "wait", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "notify", name: "notify", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "lock", name: "lock", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "head", name: "head", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "tail", name: "tail", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}]); + Once.init("sync", [{prop: "done", name: "done", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "m", name: "m", embedded: false, exported: false, typ: Mutex, tag: ""}]); + Mutex.init("sync", [{prop: "state", name: "state", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "sema", name: "sema", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + Locker.init([{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]); + Map.init("sync", [{prop: "mu", name: "mu", embedded: false, exported: false, typ: Mutex, tag: ""}, {prop: "read", name: "read", embedded: false, exported: false, typ: atomic.Pointer[20 /* sync.readOnly */], tag: ""}, {prop: "dirty", name: "dirty", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "misses", name: "misses", embedded: false, exported: false, typ: $Int, tag: ""}]); + readOnly.init("sync", [{prop: "m", name: "m", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "amended", name: "amended", embedded: false, exported: false, typ: $Bool, tag: ""}]); + entry.init("sync", [{prop: "p", name: "p", embedded: false, exported: false, typ: atomic.Pointer[25 /* any */], tag: ""}]); + WaitGroup.init("sync", [{prop: "counter", name: "counter", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "ch", name: "ch", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "state1", name: "state1", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "state2", name: "state2", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + Pool.init("sync", [{prop: "store", name: "store", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "New", name: "New", embedded: false, exported: true, typ: funcType$2, tag: ""}]); + Cond.init("sync", [{prop: "noCopy", name: "noCopy", embedded: false, exported: false, typ: noCopy, tag: ""}, {prop: "L", name: "L", embedded: false, exported: true, typ: Locker, tag: ""}, {prop: "notify", name: "notify", embedded: false, exported: false, typ: notifyList, tag: ""}, {prop: "checker", name: "checker", embedded: false, exported: false, typ: copyChecker, tag: ""}, {prop: "n", name: "n", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "ch", name: "ch", embedded: false, exported: false, typ: chanType, tag: ""}]); + noCopy.init("", []); + $linknames["sync.runtime_Semacquire"] = runtime_Semacquire; + $linknames["sync.runtime_Semrelease"] = runtime_Semrelease; + $pkg.$initLinknames = function() { + runtime_nanotime = $linknames["runtime.nanotime"]; + }; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = race.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + expunged = $newDataPointer($ifaceNil, ptrType); + semWaiters = new $global.Map(); + semAwoken = new $global.Map(); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["unicode"] = (function() { + var $pkg = {}, $init, RangeTable, Range16, Range32, CaseRange, d, foldPair, sliceType, sliceType$1, sliceType$2, sliceType$3, arrayType, ptrType, sliceType$4, _C, _Cc, _Cf, _Co, _Cs, _L, _Ll, _Lm, _Lo, _Lt, _Lu, _M, _Mc, _Me, _Mn, _N, _Nd, _Nl, _No, _P, _Pc, _Pd, _Pe, _Pf, _Pi, _Po, _Ps, _S, _Sc, _Sk, _Sm, _So, _Z, _Zl, _Zp, _Zs, _Adlam, _Ahom, _Anatolian_Hieroglyphs, _Arabic, _Armenian, _Avestan, _Balinese, _Bamum, _Bassa_Vah, _Batak, _Bengali, _Bhaiksuki, _Bopomofo, _Brahmi, _Braille, _Buginese, _Buhid, _Canadian_Aboriginal, _Carian, _Caucasian_Albanian, _Chakma, _Cham, _Cherokee, _Chorasmian, _Common, _Coptic, _Cuneiform, _Cypriot, _Cyrillic, _Deseret, _Devanagari, _Dives_Akuru, _Dogra, _Duployan, _Egyptian_Hieroglyphs, _Elbasan, _Elymaic, _Ethiopic, _Georgian, _Glagolitic, _Gothic, _Grantha, _Greek, _Gujarati, _Gunjala_Gondi, _Gurmukhi, _Han, _Hangul, _Hanifi_Rohingya, _Hanunoo, _Hatran, _Hebrew, _Hiragana, _Imperial_Aramaic, _Inherited, _Inscriptional_Pahlavi, _Inscriptional_Parthian, _Javanese, _Kaithi, _Kannada, _Katakana, _Kayah_Li, _Kharoshthi, _Khitan_Small_Script, _Khmer, _Khojki, _Khudawadi, _Lao, _Latin, _Lepcha, _Limbu, _Linear_A, _Linear_B, _Lisu, _Lycian, _Lydian, _Mahajani, _Makasar, _Malayalam, _Mandaic, _Manichaean, _Marchen, _Masaram_Gondi, _Medefaidrin, _Meetei_Mayek, _Mende_Kikakui, _Meroitic_Cursive, _Meroitic_Hieroglyphs, _Miao, _Modi, _Mongolian, _Mro, _Multani, _Myanmar, _Nabataean, _Nandinagari, _New_Tai_Lue, _Newa, _Nko, _Nushu, _Nyiakeng_Puachue_Hmong, _Ogham, _Ol_Chiki, _Old_Hungarian, _Old_Italic, _Old_North_Arabian, _Old_Permic, _Old_Persian, _Old_Sogdian, _Old_South_Arabian, _Old_Turkic, _Oriya, _Osage, _Osmanya, _Pahawh_Hmong, _Palmyrene, _Pau_Cin_Hau, _Phags_Pa, _Phoenician, _Psalter_Pahlavi, _Rejang, _Runic, _Samaritan, _Saurashtra, _Sharada, _Shavian, _Siddham, _SignWriting, _Sinhala, _Sogdian, _Sora_Sompeng, _Soyombo, _Sundanese, _Syloti_Nagri, _Syriac, _Tagalog, _Tagbanwa, _Tai_Le, _Tai_Tham, _Tai_Viet, _Takri, _Tamil, _Tangut, _Telugu, _Thaana, _Thai, _Tibetan, _Tifinagh, _Tirhuta, _Ugaritic, _Vai, _Wancho, _Warang_Citi, _Yezidi, _Yi, _Zanabazar_Square, _White_Space, caseOrbit, foldL, foldLl, foldLt, foldLu, foldM, foldMn, foldCommon, foldGreek, foldInherited, asciiFold, _CaseRanges, properties, is16, is32, Is, isExcludingLatin, IsUpper, To, ToUpper, ToLower, SimpleFold, IsGraphic, IsPrint, In, IsLetter, IsNumber, IsPunct, IsSpace, to, IsDigit; + RangeTable = $newType(0, $kindStruct, "unicode.RangeTable", true, "unicode", true, function(R16_, R32_, LatinOffset_) { + this.$val = this; + if (arguments.length === 0) { + this.R16 = sliceType.nil; + this.R32 = sliceType$1.nil; + this.LatinOffset = 0; + return; + } + this.R16 = R16_; + this.R32 = R32_; + this.LatinOffset = LatinOffset_; + }); + Range16 = $newType(0, $kindStruct, "unicode.Range16", true, "unicode", true, function(Lo_, Hi_, Stride_) { + this.$val = this; + if (arguments.length === 0) { + this.Lo = 0; + this.Hi = 0; + this.Stride = 0; + return; + } + this.Lo = Lo_; + this.Hi = Hi_; + this.Stride = Stride_; + }); + Range32 = $newType(0, $kindStruct, "unicode.Range32", true, "unicode", true, function(Lo_, Hi_, Stride_) { + this.$val = this; + if (arguments.length === 0) { + this.Lo = 0; + this.Hi = 0; + this.Stride = 0; + return; + } + this.Lo = Lo_; + this.Hi = Hi_; + this.Stride = Stride_; + }); + CaseRange = $newType(0, $kindStruct, "unicode.CaseRange", true, "unicode", true, function(Lo_, Hi_, Delta_) { + this.$val = this; + if (arguments.length === 0) { + this.Lo = 0; + this.Hi = 0; + this.Delta = arrayType.zero(); + return; + } + this.Lo = Lo_; + this.Hi = Hi_; + this.Delta = Delta_; + }); + d = $newType(12, $kindArray, "unicode.d", true, "unicode", false, null); + foldPair = $newType(0, $kindStruct, "unicode.foldPair", true, "unicode", false, function(From_, To_) { + this.$val = this; + if (arguments.length === 0) { + this.From = 0; + this.To = 0; + return; + } + this.From = From_; + this.To = To_; + }); + $pkg.RangeTable = RangeTable; + $pkg.Range16 = Range16; + $pkg.Range32 = Range32; + $pkg.CaseRange = CaseRange; + $pkg.d = d; + $pkg.foldPair = foldPair; + $pkg.$finishSetup = function() { + sliceType = $sliceType(Range16); + sliceType$1 = $sliceType(Range32); + sliceType$2 = $sliceType(foldPair); + sliceType$3 = $sliceType(CaseRange); + arrayType = $arrayType($Int32, 3); + ptrType = $ptrType(RangeTable); + sliceType$4 = $sliceType(ptrType); + is16 = function is16$1(ranges, r) { + var _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges; + if (ranges.$length <= 18 || r <= 255) { + _ref = ranges; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + range_ = ((i < 0 || i >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + i]); + if (r < range_.Lo) { + return false; + } + if (r <= range_.Hi) { + return (range_.Stride === 1) || ((_r = ((r - range_.Lo << 16 >>> 16)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0); + } + _i++; + } + return false; + } + lo = 0; + hi = ranges.$length; + while (true) { + if (!(lo < hi)) { break; } + m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + range_$1 = ((m < 0 || m >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + m]); + if (range_$1.Lo <= r && r <= range_$1.Hi) { + return (range_$1.Stride === 1) || ((_r$1 = ((r - range_$1.Lo << 16 >>> 16)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0); + } + if (r < range_$1.Lo) { + hi = m; + } else { + lo = m + 1 >> 0; + } + } + return false; + }; + is32 = function is32$1(ranges, r) { + var _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges; + if (ranges.$length <= 18) { + _ref = ranges; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + range_ = ((i < 0 || i >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + i]); + if (r < range_.Lo) { + return false; + } + if (r <= range_.Hi) { + return (range_.Stride === 1) || ((_r = ((r - range_.Lo >>> 0)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0); + } + _i++; + } + return false; + } + lo = 0; + hi = ranges.$length; + while (true) { + if (!(lo < hi)) { break; } + m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + range_$1 = $clone(((m < 0 || m >= ranges.$length) ? ($throwRuntimeError("index out of range"), undefined) : ranges.$array[ranges.$offset + m]), Range32); + if (range_$1.Lo <= r && r <= range_$1.Hi) { + return (range_$1.Stride === 1) || ((_r$1 = ((r - range_$1.Lo >>> 0)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0); + } + if (r < range_$1.Lo) { + hi = m; + } else { + lo = m + 1 >> 0; + } + } + return false; + }; + Is = function Is$1(rangeTab, r) { + var r, r16, r32, rangeTab, x; + r16 = rangeTab.R16; + if (r16.$length > 0 && ((r >>> 0)) <= (((x = r16.$length - 1 >> 0, ((x < 0 || x >= r16.$length) ? ($throwRuntimeError("index out of range"), undefined) : r16.$array[r16.$offset + x])).Hi >>> 0))) { + return is16(r16, ((r << 16 >>> 16))); + } + r32 = rangeTab.R32; + if (r32.$length > 0 && r >= (((0 >= r32.$length ? ($throwRuntimeError("index out of range"), undefined) : r32.$array[r32.$offset + 0]).Lo >> 0))) { + return is32(r32, ((r >>> 0))); + } + return false; + }; + $pkg.Is = Is; + isExcludingLatin = function isExcludingLatin$1(rangeTab, r) { + var off, r, r16, r32, rangeTab, x; + r16 = rangeTab.R16; + off = rangeTab.LatinOffset; + if (r16.$length > off && ((r >>> 0)) <= (((x = r16.$length - 1 >> 0, ((x < 0 || x >= r16.$length) ? ($throwRuntimeError("index out of range"), undefined) : r16.$array[r16.$offset + x])).Hi >>> 0))) { + return is16($subslice(r16, off), ((r << 16 >>> 16))); + } + r32 = rangeTab.R32; + if (r32.$length > 0 && r >= (((0 >= r32.$length ? ($throwRuntimeError("index out of range"), undefined) : r32.$array[r32.$offset + 0]).Lo >> 0))) { + return is32(r32, ((r >>> 0))); + } + return false; + }; + IsUpper = function IsUpper$1(r) { + var r, x; + if (((r >>> 0)) <= 255) { + return (((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 96) >>> 0) === 32; + } + return isExcludingLatin($pkg.Upper, r); + }; + $pkg.IsUpper = IsUpper; + To = function To$1(_case, r) { + var _case, _tuple, r; + _tuple = to(_case, r, $pkg.CaseRanges); + r = _tuple[0]; + return r; + }; + $pkg.To = To; + ToUpper = function ToUpper$1(r) { + var r; + if (r <= 127) { + if (97 <= r && r <= 122) { + r = r - (32) >> 0; + } + return r; + } + return To(0, r); + }; + $pkg.ToUpper = ToUpper; + ToLower = function ToLower$1(r) { + var r; + if (r <= 127) { + if (65 <= r && r <= 90) { + r = r + (32) >> 0; + } + return r; + } + return To(1, r); + }; + $pkg.ToLower = ToLower; + SimpleFold = function SimpleFold$1(r) { + var _q, hi, l, lo, m, r; + if (r < 0 || r > 1114111) { + return r; + } + if (((r >> 0)) < 128) { + return ((((r < 0 || r >= asciiFold.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiFold[r]) >> 0)); + } + lo = 0; + hi = caseOrbit.$length; + while (true) { + if (!(lo < hi)) { break; } + m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + if (((((m < 0 || m >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + m]).From >> 0)) < r) { + lo = m + 1 >> 0; + } else { + hi = m; + } + } + if (lo < caseOrbit.$length && (((((lo < 0 || lo >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + lo]).From >> 0)) === r)) { + return ((((lo < 0 || lo >= caseOrbit.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseOrbit.$array[caseOrbit.$offset + lo]).To >> 0)); + } + l = ToLower(r); + if (!((l === r))) { + return l; + } + return ToUpper(r); + }; + $pkg.SimpleFold = SimpleFold; + IsGraphic = function IsGraphic$1(r) { + var r, x; + if (((r >>> 0)) <= 255) { + return !(((((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 144) >>> 0) === 0)); + } + return In(r, $pkg.GraphicRanges); + }; + $pkg.IsGraphic = IsGraphic; + IsPrint = function IsPrint$1(r) { + var r, x; + if (((r >>> 0)) <= 255) { + return !(((((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 128) >>> 0) === 0)); + } + return In(r, $pkg.PrintRanges); + }; + $pkg.IsPrint = IsPrint; + In = function In$1(r, ranges) { + var _i, _ref, inside, r, ranges; + _ref = ranges; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + inside = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (Is(inside, r)) { + return true; + } + _i++; + } + return false; + }; + $pkg.In = In; + IsLetter = function IsLetter$1(r) { + var r, x; + if (((r >>> 0)) <= 255) { + return !(((((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 96) >>> 0) === 0)); + } + return isExcludingLatin($pkg.Letter, r); + }; + $pkg.IsLetter = IsLetter; + IsNumber = function IsNumber$1(r) { + var r, x; + if (((r >>> 0)) <= 255) { + return !(((((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 4) >>> 0) === 0)); + } + return isExcludingLatin($pkg.Number, r); + }; + $pkg.IsNumber = IsNumber; + IsPunct = function IsPunct$1(r) { + var r, x; + if (((r >>> 0)) <= 255) { + return !(((((x = ((r << 24 >>> 24)), ((x < 0 || x >= properties.length) ? ($throwRuntimeError("index out of range"), undefined) : properties[x])) & 2) >>> 0) === 0)); + } + return Is($pkg.Punct, r); + }; + $pkg.IsPunct = IsPunct; + IsSpace = function IsSpace$1(r) { + var _1, r; + if (((r >>> 0)) <= 255) { + _1 = r; + if ((_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12)) || (_1 === (13)) || (_1 === (32)) || (_1 === (133)) || (_1 === (160))) { + return true; + } + return false; + } + return isExcludingLatin($pkg.White_Space, r); + }; + $pkg.IsSpace = IsSpace; + to = function to$1(_case, r, caseRange) { + var _case, _q, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, caseRange, cr, delta, foundMapping, hi, lo, m, mappedRune, r, x; + mappedRune = 0; + foundMapping = false; + if (_case < 0 || 3 <= _case) { + _tmp = 65533; + _tmp$1 = false; + mappedRune = _tmp; + foundMapping = _tmp$1; + return [mappedRune, foundMapping]; + } + lo = 0; + hi = caseRange.$length; + while (true) { + if (!(lo < hi)) { break; } + m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + cr = ((m < 0 || m >= caseRange.$length) ? ($throwRuntimeError("index out of range"), undefined) : caseRange.$array[caseRange.$offset + m]); + if (((cr.Lo >> 0)) <= r && r <= ((cr.Hi >> 0))) { + delta = ((x = cr.Delta, ((_case < 0 || _case >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[_case]))); + if (delta > 1114111) { + _tmp$2 = ((cr.Lo >> 0)) + ((((((r - ((cr.Lo >> 0)) >> 0)) & ~1) >> 0) | (((_case & 1) >> 0)))) >> 0; + _tmp$3 = true; + mappedRune = _tmp$2; + foundMapping = _tmp$3; + return [mappedRune, foundMapping]; + } + _tmp$4 = r + delta >> 0; + _tmp$5 = true; + mappedRune = _tmp$4; + foundMapping = _tmp$5; + return [mappedRune, foundMapping]; + } + if (r < ((cr.Lo >> 0))) { + hi = m; + } else { + lo = m + 1 >> 0; + } + } + _tmp$6 = r; + _tmp$7 = false; + mappedRune = _tmp$6; + foundMapping = _tmp$7; + return [mappedRune, foundMapping]; + }; + IsDigit = function IsDigit$1(r) { + var r; + if (r <= 255) { + return 48 <= r && r <= 57; + } + return isExcludingLatin($pkg.Digit, r); + }; + $pkg.IsDigit = IsDigit; + RangeTable.init("", [{prop: "R16", name: "R16", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "R32", name: "R32", embedded: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "LatinOffset", name: "LatinOffset", embedded: false, exported: true, typ: $Int, tag: ""}]); + Range16.init("", [{prop: "Lo", name: "Lo", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Hi", name: "Hi", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Stride", name: "Stride", embedded: false, exported: true, typ: $Uint16, tag: ""}]); + Range32.init("", [{prop: "Lo", name: "Lo", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Stride", name: "Stride", embedded: false, exported: true, typ: $Uint32, tag: ""}]); + CaseRange.init("", [{prop: "Lo", name: "Lo", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Delta", name: "Delta", embedded: false, exported: true, typ: d, tag: ""}]); + d.init($Int32, 3); + foldPair.init("", [{prop: "From", name: "From", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "To", name: "To", embedded: false, exported: true, typ: $Uint16, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + _C = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(0, 31, 1), Range16), $clone(new Range16.ptr(127, 159, 1), Range16), $clone(new Range16.ptr(173, 1536, 1363), Range16), $clone(new Range16.ptr(1537, 1541, 1), Range16), $clone(new Range16.ptr(1564, 1757, 193), Range16), $clone(new Range16.ptr(1807, 2274, 467), Range16), $clone(new Range16.ptr(6158, 8203, 2045), Range16), $clone(new Range16.ptr(8204, 8207, 1), Range16), $clone(new Range16.ptr(8234, 8238, 1), Range16), $clone(new Range16.ptr(8288, 8292, 1), Range16), $clone(new Range16.ptr(8294, 8303, 1), Range16), $clone(new Range16.ptr(55296, 63743, 1), Range16), $clone(new Range16.ptr(65279, 65529, 250), Range16), $clone(new Range16.ptr(65530, 65531, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(69821, 69837, 16), Range32), $clone(new Range32.ptr(78896, 78904, 1), Range32), $clone(new Range32.ptr(113824, 113827, 1), Range32), $clone(new Range32.ptr(119155, 119162, 1), Range32), $clone(new Range32.ptr(917505, 917536, 31), Range32), $clone(new Range32.ptr(917537, 917631, 1), Range32), $clone(new Range32.ptr(983040, 1048573, 1), Range32), $clone(new Range32.ptr(1048576, 1114109, 1), Range32)]), 2); + _Cc = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(0, 31, 1), Range16), $clone(new Range16.ptr(127, 159, 1), Range16)]), sliceType$1.nil, 2); + _Cf = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(173, 1536, 1363), Range16), $clone(new Range16.ptr(1537, 1541, 1), Range16), $clone(new Range16.ptr(1564, 1757, 193), Range16), $clone(new Range16.ptr(1807, 2274, 467), Range16), $clone(new Range16.ptr(6158, 8203, 2045), Range16), $clone(new Range16.ptr(8204, 8207, 1), Range16), $clone(new Range16.ptr(8234, 8238, 1), Range16), $clone(new Range16.ptr(8288, 8292, 1), Range16), $clone(new Range16.ptr(8294, 8303, 1), Range16), $clone(new Range16.ptr(65279, 65529, 250), Range16), $clone(new Range16.ptr(65530, 65531, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(69821, 69837, 16), Range32), $clone(new Range32.ptr(78896, 78904, 1), Range32), $clone(new Range32.ptr(113824, 113827, 1), Range32), $clone(new Range32.ptr(119155, 119162, 1), Range32), $clone(new Range32.ptr(917505, 917536, 31), Range32), $clone(new Range32.ptr(917537, 917631, 1), Range32)]), 0); + _Co = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(57344, 63743, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(983040, 1048573, 1), Range32), $clone(new Range32.ptr(1048576, 1114109, 1), Range32)]), 0); + _Cs = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(55296, 57343, 1), Range16)]), sliceType$1.nil, 0); + _L = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(65, 90, 1), Range16), $clone(new Range16.ptr(97, 122, 1), Range16), $clone(new Range16.ptr(170, 181, 11), Range16), $clone(new Range16.ptr(186, 192, 6), Range16), $clone(new Range16.ptr(193, 214, 1), Range16), $clone(new Range16.ptr(216, 246, 1), Range16), $clone(new Range16.ptr(248, 705, 1), Range16), $clone(new Range16.ptr(710, 721, 1), Range16), $clone(new Range16.ptr(736, 740, 1), Range16), $clone(new Range16.ptr(748, 750, 2), Range16), $clone(new Range16.ptr(880, 884, 1), Range16), $clone(new Range16.ptr(886, 887, 1), Range16), $clone(new Range16.ptr(890, 893, 1), Range16), $clone(new Range16.ptr(895, 902, 7), Range16), $clone(new Range16.ptr(904, 906, 1), Range16), $clone(new Range16.ptr(908, 910, 2), Range16), $clone(new Range16.ptr(911, 929, 1), Range16), $clone(new Range16.ptr(931, 1013, 1), Range16), $clone(new Range16.ptr(1015, 1153, 1), Range16), $clone(new Range16.ptr(1162, 1327, 1), Range16), $clone(new Range16.ptr(1329, 1366, 1), Range16), $clone(new Range16.ptr(1369, 1376, 7), Range16), $clone(new Range16.ptr(1377, 1416, 1), Range16), $clone(new Range16.ptr(1488, 1514, 1), Range16), $clone(new Range16.ptr(1519, 1522, 1), Range16), $clone(new Range16.ptr(1568, 1610, 1), Range16), $clone(new Range16.ptr(1646, 1647, 1), Range16), $clone(new Range16.ptr(1649, 1747, 1), Range16), $clone(new Range16.ptr(1749, 1765, 16), Range16), $clone(new Range16.ptr(1766, 1774, 8), Range16), $clone(new Range16.ptr(1775, 1786, 11), Range16), $clone(new Range16.ptr(1787, 1788, 1), Range16), $clone(new Range16.ptr(1791, 1808, 17), Range16), $clone(new Range16.ptr(1810, 1839, 1), Range16), $clone(new Range16.ptr(1869, 1957, 1), Range16), $clone(new Range16.ptr(1969, 1994, 25), Range16), $clone(new Range16.ptr(1995, 2026, 1), Range16), $clone(new Range16.ptr(2036, 2037, 1), Range16), $clone(new Range16.ptr(2042, 2048, 6), Range16), $clone(new Range16.ptr(2049, 2069, 1), Range16), $clone(new Range16.ptr(2074, 2084, 10), Range16), $clone(new Range16.ptr(2088, 2112, 24), Range16), $clone(new Range16.ptr(2113, 2136, 1), Range16), $clone(new Range16.ptr(2144, 2154, 1), Range16), $clone(new Range16.ptr(2208, 2228, 1), Range16), $clone(new Range16.ptr(2230, 2247, 1), Range16), $clone(new Range16.ptr(2308, 2361, 1), Range16), $clone(new Range16.ptr(2365, 2384, 19), Range16), $clone(new Range16.ptr(2392, 2401, 1), Range16), $clone(new Range16.ptr(2417, 2432, 1), Range16), $clone(new Range16.ptr(2437, 2444, 1), Range16), $clone(new Range16.ptr(2447, 2448, 1), Range16), $clone(new Range16.ptr(2451, 2472, 1), Range16), $clone(new Range16.ptr(2474, 2480, 1), Range16), $clone(new Range16.ptr(2482, 2486, 4), Range16), $clone(new Range16.ptr(2487, 2489, 1), Range16), $clone(new Range16.ptr(2493, 2510, 17), Range16), $clone(new Range16.ptr(2524, 2525, 1), Range16), $clone(new Range16.ptr(2527, 2529, 1), Range16), $clone(new Range16.ptr(2544, 2545, 1), Range16), $clone(new Range16.ptr(2556, 2565, 9), Range16), $clone(new Range16.ptr(2566, 2570, 1), Range16), $clone(new Range16.ptr(2575, 2576, 1), Range16), $clone(new Range16.ptr(2579, 2600, 1), Range16), $clone(new Range16.ptr(2602, 2608, 1), Range16), $clone(new Range16.ptr(2610, 2611, 1), Range16), $clone(new Range16.ptr(2613, 2614, 1), Range16), $clone(new Range16.ptr(2616, 2617, 1), Range16), $clone(new Range16.ptr(2649, 2652, 1), Range16), $clone(new Range16.ptr(2654, 2674, 20), Range16), $clone(new Range16.ptr(2675, 2676, 1), Range16), $clone(new Range16.ptr(2693, 2701, 1), Range16), $clone(new Range16.ptr(2703, 2705, 1), Range16), $clone(new Range16.ptr(2707, 2728, 1), Range16), $clone(new Range16.ptr(2730, 2736, 1), Range16), $clone(new Range16.ptr(2738, 2739, 1), Range16), $clone(new Range16.ptr(2741, 2745, 1), Range16), $clone(new Range16.ptr(2749, 2768, 19), Range16), $clone(new Range16.ptr(2784, 2785, 1), Range16), $clone(new Range16.ptr(2809, 2821, 12), Range16), $clone(new Range16.ptr(2822, 2828, 1), Range16), $clone(new Range16.ptr(2831, 2832, 1), Range16), $clone(new Range16.ptr(2835, 2856, 1), Range16), $clone(new Range16.ptr(2858, 2864, 1), Range16), $clone(new Range16.ptr(2866, 2867, 1), Range16), $clone(new Range16.ptr(2869, 2873, 1), Range16), $clone(new Range16.ptr(2877, 2908, 31), Range16), $clone(new Range16.ptr(2909, 2911, 2), Range16), $clone(new Range16.ptr(2912, 2913, 1), Range16), $clone(new Range16.ptr(2929, 2947, 18), Range16), $clone(new Range16.ptr(2949, 2954, 1), Range16), $clone(new Range16.ptr(2958, 2960, 1), Range16), $clone(new Range16.ptr(2962, 2965, 1), Range16), $clone(new Range16.ptr(2969, 2970, 1), Range16), $clone(new Range16.ptr(2972, 2974, 2), Range16), $clone(new Range16.ptr(2975, 2979, 4), Range16), $clone(new Range16.ptr(2980, 2984, 4), Range16), $clone(new Range16.ptr(2985, 2986, 1), Range16), $clone(new Range16.ptr(2990, 3001, 1), Range16), $clone(new Range16.ptr(3024, 3077, 53), Range16), $clone(new Range16.ptr(3078, 3084, 1), Range16), $clone(new Range16.ptr(3086, 3088, 1), Range16), $clone(new Range16.ptr(3090, 3112, 1), Range16), $clone(new Range16.ptr(3114, 3129, 1), Range16), $clone(new Range16.ptr(3133, 3160, 27), Range16), $clone(new Range16.ptr(3161, 3162, 1), Range16), $clone(new Range16.ptr(3168, 3169, 1), Range16), $clone(new Range16.ptr(3200, 3205, 5), Range16), $clone(new Range16.ptr(3206, 3212, 1), Range16), $clone(new Range16.ptr(3214, 3216, 1), Range16), $clone(new Range16.ptr(3218, 3240, 1), Range16), $clone(new Range16.ptr(3242, 3251, 1), Range16), $clone(new Range16.ptr(3253, 3257, 1), Range16), $clone(new Range16.ptr(3261, 3294, 33), Range16), $clone(new Range16.ptr(3296, 3297, 1), Range16), $clone(new Range16.ptr(3313, 3314, 1), Range16), $clone(new Range16.ptr(3332, 3340, 1), Range16), $clone(new Range16.ptr(3342, 3344, 1), Range16), $clone(new Range16.ptr(3346, 3386, 1), Range16), $clone(new Range16.ptr(3389, 3406, 17), Range16), $clone(new Range16.ptr(3412, 3414, 1), Range16), $clone(new Range16.ptr(3423, 3425, 1), Range16), $clone(new Range16.ptr(3450, 3455, 1), Range16), $clone(new Range16.ptr(3461, 3478, 1), Range16), $clone(new Range16.ptr(3482, 3505, 1), Range16), $clone(new Range16.ptr(3507, 3515, 1), Range16), $clone(new Range16.ptr(3517, 3520, 3), Range16), $clone(new Range16.ptr(3521, 3526, 1), Range16), $clone(new Range16.ptr(3585, 3632, 1), Range16), $clone(new Range16.ptr(3634, 3635, 1), Range16), $clone(new Range16.ptr(3648, 3654, 1), Range16), $clone(new Range16.ptr(3713, 3714, 1), Range16), $clone(new Range16.ptr(3716, 3718, 2), Range16), $clone(new Range16.ptr(3719, 3722, 1), Range16), $clone(new Range16.ptr(3724, 3747, 1), Range16), $clone(new Range16.ptr(3749, 3751, 2), Range16), $clone(new Range16.ptr(3752, 3760, 1), Range16), $clone(new Range16.ptr(3762, 3763, 1), Range16), $clone(new Range16.ptr(3773, 3776, 3), Range16), $clone(new Range16.ptr(3777, 3780, 1), Range16), $clone(new Range16.ptr(3782, 3804, 22), Range16), $clone(new Range16.ptr(3805, 3807, 1), Range16), $clone(new Range16.ptr(3840, 3904, 64), Range16), $clone(new Range16.ptr(3905, 3911, 1), Range16), $clone(new Range16.ptr(3913, 3948, 1), Range16), $clone(new Range16.ptr(3976, 3980, 1), Range16), $clone(new Range16.ptr(4096, 4138, 1), Range16), $clone(new Range16.ptr(4159, 4176, 17), Range16), $clone(new Range16.ptr(4177, 4181, 1), Range16), $clone(new Range16.ptr(4186, 4189, 1), Range16), $clone(new Range16.ptr(4193, 4197, 4), Range16), $clone(new Range16.ptr(4198, 4206, 8), Range16), $clone(new Range16.ptr(4207, 4208, 1), Range16), $clone(new Range16.ptr(4213, 4225, 1), Range16), $clone(new Range16.ptr(4238, 4256, 18), Range16), $clone(new Range16.ptr(4257, 4293, 1), Range16), $clone(new Range16.ptr(4295, 4301, 6), Range16), $clone(new Range16.ptr(4304, 4346, 1), Range16), $clone(new Range16.ptr(4348, 4680, 1), Range16), $clone(new Range16.ptr(4682, 4685, 1), Range16), $clone(new Range16.ptr(4688, 4694, 1), Range16), $clone(new Range16.ptr(4696, 4698, 2), Range16), $clone(new Range16.ptr(4699, 4701, 1), Range16), $clone(new Range16.ptr(4704, 4744, 1), Range16), $clone(new Range16.ptr(4746, 4749, 1), Range16), $clone(new Range16.ptr(4752, 4784, 1), Range16), $clone(new Range16.ptr(4786, 4789, 1), Range16), $clone(new Range16.ptr(4792, 4798, 1), Range16), $clone(new Range16.ptr(4800, 4802, 2), Range16), $clone(new Range16.ptr(4803, 4805, 1), Range16), $clone(new Range16.ptr(4808, 4822, 1), Range16), $clone(new Range16.ptr(4824, 4880, 1), Range16), $clone(new Range16.ptr(4882, 4885, 1), Range16), $clone(new Range16.ptr(4888, 4954, 1), Range16), $clone(new Range16.ptr(4992, 5007, 1), Range16), $clone(new Range16.ptr(5024, 5109, 1), Range16), $clone(new Range16.ptr(5112, 5117, 1), Range16), $clone(new Range16.ptr(5121, 5740, 1), Range16), $clone(new Range16.ptr(5743, 5759, 1), Range16), $clone(new Range16.ptr(5761, 5786, 1), Range16), $clone(new Range16.ptr(5792, 5866, 1), Range16), $clone(new Range16.ptr(5873, 5880, 1), Range16), $clone(new Range16.ptr(5888, 5900, 1), Range16), $clone(new Range16.ptr(5902, 5905, 1), Range16), $clone(new Range16.ptr(5920, 5937, 1), Range16), $clone(new Range16.ptr(5952, 5969, 1), Range16), $clone(new Range16.ptr(5984, 5996, 1), Range16), $clone(new Range16.ptr(5998, 6000, 1), Range16), $clone(new Range16.ptr(6016, 6067, 1), Range16), $clone(new Range16.ptr(6103, 6108, 5), Range16), $clone(new Range16.ptr(6176, 6264, 1), Range16), $clone(new Range16.ptr(6272, 6276, 1), Range16), $clone(new Range16.ptr(6279, 6312, 1), Range16), $clone(new Range16.ptr(6314, 6320, 6), Range16), $clone(new Range16.ptr(6321, 6389, 1), Range16), $clone(new Range16.ptr(6400, 6430, 1), Range16), $clone(new Range16.ptr(6480, 6509, 1), Range16), $clone(new Range16.ptr(6512, 6516, 1), Range16), $clone(new Range16.ptr(6528, 6571, 1), Range16), $clone(new Range16.ptr(6576, 6601, 1), Range16), $clone(new Range16.ptr(6656, 6678, 1), Range16), $clone(new Range16.ptr(6688, 6740, 1), Range16), $clone(new Range16.ptr(6823, 6917, 94), Range16), $clone(new Range16.ptr(6918, 6963, 1), Range16), $clone(new Range16.ptr(6981, 6987, 1), Range16), $clone(new Range16.ptr(7043, 7072, 1), Range16), $clone(new Range16.ptr(7086, 7087, 1), Range16), $clone(new Range16.ptr(7098, 7141, 1), Range16), $clone(new Range16.ptr(7168, 7203, 1), Range16), $clone(new Range16.ptr(7245, 7247, 1), Range16), $clone(new Range16.ptr(7258, 7293, 1), Range16), $clone(new Range16.ptr(7296, 7304, 1), Range16), $clone(new Range16.ptr(7312, 7354, 1), Range16), $clone(new Range16.ptr(7357, 7359, 1), Range16), $clone(new Range16.ptr(7401, 7404, 1), Range16), $clone(new Range16.ptr(7406, 7411, 1), Range16), $clone(new Range16.ptr(7413, 7414, 1), Range16), $clone(new Range16.ptr(7418, 7424, 6), Range16), $clone(new Range16.ptr(7425, 7615, 1), Range16), $clone(new Range16.ptr(7680, 7957, 1), Range16), $clone(new Range16.ptr(7960, 7965, 1), Range16), $clone(new Range16.ptr(7968, 8005, 1), Range16), $clone(new Range16.ptr(8008, 8013, 1), Range16), $clone(new Range16.ptr(8016, 8023, 1), Range16), $clone(new Range16.ptr(8025, 8031, 2), Range16), $clone(new Range16.ptr(8032, 8061, 1), Range16), $clone(new Range16.ptr(8064, 8116, 1), Range16), $clone(new Range16.ptr(8118, 8124, 1), Range16), $clone(new Range16.ptr(8126, 8130, 4), Range16), $clone(new Range16.ptr(8131, 8132, 1), Range16), $clone(new Range16.ptr(8134, 8140, 1), Range16), $clone(new Range16.ptr(8144, 8147, 1), Range16), $clone(new Range16.ptr(8150, 8155, 1), Range16), $clone(new Range16.ptr(8160, 8172, 1), Range16), $clone(new Range16.ptr(8178, 8180, 1), Range16), $clone(new Range16.ptr(8182, 8188, 1), Range16), $clone(new Range16.ptr(8305, 8319, 14), Range16), $clone(new Range16.ptr(8336, 8348, 1), Range16), $clone(new Range16.ptr(8450, 8455, 5), Range16), $clone(new Range16.ptr(8458, 8467, 1), Range16), $clone(new Range16.ptr(8469, 8473, 4), Range16), $clone(new Range16.ptr(8474, 8477, 1), Range16), $clone(new Range16.ptr(8484, 8490, 2), Range16), $clone(new Range16.ptr(8491, 8493, 1), Range16), $clone(new Range16.ptr(8495, 8505, 1), Range16), $clone(new Range16.ptr(8508, 8511, 1), Range16), $clone(new Range16.ptr(8517, 8521, 1), Range16), $clone(new Range16.ptr(8526, 8579, 53), Range16), $clone(new Range16.ptr(8580, 11264, 2684), Range16), $clone(new Range16.ptr(11265, 11310, 1), Range16), $clone(new Range16.ptr(11312, 11358, 1), Range16), $clone(new Range16.ptr(11360, 11492, 1), Range16), $clone(new Range16.ptr(11499, 11502, 1), Range16), $clone(new Range16.ptr(11506, 11507, 1), Range16), $clone(new Range16.ptr(11520, 11557, 1), Range16), $clone(new Range16.ptr(11559, 11565, 6), Range16), $clone(new Range16.ptr(11568, 11623, 1), Range16), $clone(new Range16.ptr(11631, 11648, 17), Range16), $clone(new Range16.ptr(11649, 11670, 1), Range16), $clone(new Range16.ptr(11680, 11686, 1), Range16), $clone(new Range16.ptr(11688, 11694, 1), Range16), $clone(new Range16.ptr(11696, 11702, 1), Range16), $clone(new Range16.ptr(11704, 11710, 1), Range16), $clone(new Range16.ptr(11712, 11718, 1), Range16), $clone(new Range16.ptr(11720, 11726, 1), Range16), $clone(new Range16.ptr(11728, 11734, 1), Range16), $clone(new Range16.ptr(11736, 11742, 1), Range16), $clone(new Range16.ptr(11823, 12293, 470), Range16), $clone(new Range16.ptr(12294, 12337, 43), Range16), $clone(new Range16.ptr(12338, 12341, 1), Range16), $clone(new Range16.ptr(12347, 12348, 1), Range16), $clone(new Range16.ptr(12353, 12438, 1), Range16), $clone(new Range16.ptr(12445, 12447, 1), Range16), $clone(new Range16.ptr(12449, 12538, 1), Range16), $clone(new Range16.ptr(12540, 12543, 1), Range16), $clone(new Range16.ptr(12549, 12591, 1), Range16), $clone(new Range16.ptr(12593, 12686, 1), Range16), $clone(new Range16.ptr(12704, 12735, 1), Range16), $clone(new Range16.ptr(12784, 12799, 1), Range16), $clone(new Range16.ptr(13312, 19903, 1), Range16), $clone(new Range16.ptr(19968, 40956, 1), Range16), $clone(new Range16.ptr(40960, 42124, 1), Range16), $clone(new Range16.ptr(42192, 42237, 1), Range16), $clone(new Range16.ptr(42240, 42508, 1), Range16), $clone(new Range16.ptr(42512, 42527, 1), Range16), $clone(new Range16.ptr(42538, 42539, 1), Range16), $clone(new Range16.ptr(42560, 42606, 1), Range16), $clone(new Range16.ptr(42623, 42653, 1), Range16), $clone(new Range16.ptr(42656, 42725, 1), Range16), $clone(new Range16.ptr(42775, 42783, 1), Range16), $clone(new Range16.ptr(42786, 42888, 1), Range16), $clone(new Range16.ptr(42891, 42943, 1), Range16), $clone(new Range16.ptr(42946, 42954, 1), Range16), $clone(new Range16.ptr(42997, 43009, 1), Range16), $clone(new Range16.ptr(43011, 43013, 1), Range16), $clone(new Range16.ptr(43015, 43018, 1), Range16), $clone(new Range16.ptr(43020, 43042, 1), Range16), $clone(new Range16.ptr(43072, 43123, 1), Range16), $clone(new Range16.ptr(43138, 43187, 1), Range16), $clone(new Range16.ptr(43250, 43255, 1), Range16), $clone(new Range16.ptr(43259, 43261, 2), Range16), $clone(new Range16.ptr(43262, 43274, 12), Range16), $clone(new Range16.ptr(43275, 43301, 1), Range16), $clone(new Range16.ptr(43312, 43334, 1), Range16), $clone(new Range16.ptr(43360, 43388, 1), Range16), $clone(new Range16.ptr(43396, 43442, 1), Range16), $clone(new Range16.ptr(43471, 43488, 17), Range16), $clone(new Range16.ptr(43489, 43492, 1), Range16), $clone(new Range16.ptr(43494, 43503, 1), Range16), $clone(new Range16.ptr(43514, 43518, 1), Range16), $clone(new Range16.ptr(43520, 43560, 1), Range16), $clone(new Range16.ptr(43584, 43586, 1), Range16), $clone(new Range16.ptr(43588, 43595, 1), Range16), $clone(new Range16.ptr(43616, 43638, 1), Range16), $clone(new Range16.ptr(43642, 43646, 4), Range16), $clone(new Range16.ptr(43647, 43695, 1), Range16), $clone(new Range16.ptr(43697, 43701, 4), Range16), $clone(new Range16.ptr(43702, 43705, 3), Range16), $clone(new Range16.ptr(43706, 43709, 1), Range16), $clone(new Range16.ptr(43712, 43714, 2), Range16), $clone(new Range16.ptr(43739, 43741, 1), Range16), $clone(new Range16.ptr(43744, 43754, 1), Range16), $clone(new Range16.ptr(43762, 43764, 1), Range16), $clone(new Range16.ptr(43777, 43782, 1), Range16), $clone(new Range16.ptr(43785, 43790, 1), Range16), $clone(new Range16.ptr(43793, 43798, 1), Range16), $clone(new Range16.ptr(43808, 43814, 1), Range16), $clone(new Range16.ptr(43816, 43822, 1), Range16), $clone(new Range16.ptr(43824, 43866, 1), Range16), $clone(new Range16.ptr(43868, 43881, 1), Range16), $clone(new Range16.ptr(43888, 44002, 1), Range16), $clone(new Range16.ptr(44032, 55203, 1), Range16), $clone(new Range16.ptr(55216, 55238, 1), Range16), $clone(new Range16.ptr(55243, 55291, 1), Range16), $clone(new Range16.ptr(63744, 64109, 1), Range16), $clone(new Range16.ptr(64112, 64217, 1), Range16), $clone(new Range16.ptr(64256, 64262, 1), Range16), $clone(new Range16.ptr(64275, 64279, 1), Range16), $clone(new Range16.ptr(64285, 64287, 2), Range16), $clone(new Range16.ptr(64288, 64296, 1), Range16), $clone(new Range16.ptr(64298, 64310, 1), Range16), $clone(new Range16.ptr(64312, 64316, 1), Range16), $clone(new Range16.ptr(64318, 64320, 2), Range16), $clone(new Range16.ptr(64321, 64323, 2), Range16), $clone(new Range16.ptr(64324, 64326, 2), Range16), $clone(new Range16.ptr(64327, 64433, 1), Range16), $clone(new Range16.ptr(64467, 64829, 1), Range16), $clone(new Range16.ptr(64848, 64911, 1), Range16), $clone(new Range16.ptr(64914, 64967, 1), Range16), $clone(new Range16.ptr(65008, 65019, 1), Range16), $clone(new Range16.ptr(65136, 65140, 1), Range16), $clone(new Range16.ptr(65142, 65276, 1), Range16), $clone(new Range16.ptr(65313, 65338, 1), Range16), $clone(new Range16.ptr(65345, 65370, 1), Range16), $clone(new Range16.ptr(65382, 65470, 1), Range16), $clone(new Range16.ptr(65474, 65479, 1), Range16), $clone(new Range16.ptr(65482, 65487, 1), Range16), $clone(new Range16.ptr(65490, 65495, 1), Range16), $clone(new Range16.ptr(65498, 65500, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(65536, 65547, 1), Range32), $clone(new Range32.ptr(65549, 65574, 1), Range32), $clone(new Range32.ptr(65576, 65594, 1), Range32), $clone(new Range32.ptr(65596, 65597, 1), Range32), $clone(new Range32.ptr(65599, 65613, 1), Range32), $clone(new Range32.ptr(65616, 65629, 1), Range32), $clone(new Range32.ptr(65664, 65786, 1), Range32), $clone(new Range32.ptr(66176, 66204, 1), Range32), $clone(new Range32.ptr(66208, 66256, 1), Range32), $clone(new Range32.ptr(66304, 66335, 1), Range32), $clone(new Range32.ptr(66349, 66368, 1), Range32), $clone(new Range32.ptr(66370, 66377, 1), Range32), $clone(new Range32.ptr(66384, 66421, 1), Range32), $clone(new Range32.ptr(66432, 66461, 1), Range32), $clone(new Range32.ptr(66464, 66499, 1), Range32), $clone(new Range32.ptr(66504, 66511, 1), Range32), $clone(new Range32.ptr(66560, 66717, 1), Range32), $clone(new Range32.ptr(66736, 66771, 1), Range32), $clone(new Range32.ptr(66776, 66811, 1), Range32), $clone(new Range32.ptr(66816, 66855, 1), Range32), $clone(new Range32.ptr(66864, 66915, 1), Range32), $clone(new Range32.ptr(67072, 67382, 1), Range32), $clone(new Range32.ptr(67392, 67413, 1), Range32), $clone(new Range32.ptr(67424, 67431, 1), Range32), $clone(new Range32.ptr(67584, 67589, 1), Range32), $clone(new Range32.ptr(67592, 67594, 2), Range32), $clone(new Range32.ptr(67595, 67637, 1), Range32), $clone(new Range32.ptr(67639, 67640, 1), Range32), $clone(new Range32.ptr(67644, 67647, 3), Range32), $clone(new Range32.ptr(67648, 67669, 1), Range32), $clone(new Range32.ptr(67680, 67702, 1), Range32), $clone(new Range32.ptr(67712, 67742, 1), Range32), $clone(new Range32.ptr(67808, 67826, 1), Range32), $clone(new Range32.ptr(67828, 67829, 1), Range32), $clone(new Range32.ptr(67840, 67861, 1), Range32), $clone(new Range32.ptr(67872, 67897, 1), Range32), $clone(new Range32.ptr(67968, 68023, 1), Range32), $clone(new Range32.ptr(68030, 68031, 1), Range32), $clone(new Range32.ptr(68096, 68112, 16), Range32), $clone(new Range32.ptr(68113, 68115, 1), Range32), $clone(new Range32.ptr(68117, 68119, 1), Range32), $clone(new Range32.ptr(68121, 68149, 1), Range32), $clone(new Range32.ptr(68192, 68220, 1), Range32), $clone(new Range32.ptr(68224, 68252, 1), Range32), $clone(new Range32.ptr(68288, 68295, 1), Range32), $clone(new Range32.ptr(68297, 68324, 1), Range32), $clone(new Range32.ptr(68352, 68405, 1), Range32), $clone(new Range32.ptr(68416, 68437, 1), Range32), $clone(new Range32.ptr(68448, 68466, 1), Range32), $clone(new Range32.ptr(68480, 68497, 1), Range32), $clone(new Range32.ptr(68608, 68680, 1), Range32), $clone(new Range32.ptr(68736, 68786, 1), Range32), $clone(new Range32.ptr(68800, 68850, 1), Range32), $clone(new Range32.ptr(68864, 68899, 1), Range32), $clone(new Range32.ptr(69248, 69289, 1), Range32), $clone(new Range32.ptr(69296, 69297, 1), Range32), $clone(new Range32.ptr(69376, 69404, 1), Range32), $clone(new Range32.ptr(69415, 69424, 9), Range32), $clone(new Range32.ptr(69425, 69445, 1), Range32), $clone(new Range32.ptr(69552, 69572, 1), Range32), $clone(new Range32.ptr(69600, 69622, 1), Range32), $clone(new Range32.ptr(69635, 69687, 1), Range32), $clone(new Range32.ptr(69763, 69807, 1), Range32), $clone(new Range32.ptr(69840, 69864, 1), Range32), $clone(new Range32.ptr(69891, 69926, 1), Range32), $clone(new Range32.ptr(69956, 69959, 3), Range32), $clone(new Range32.ptr(69968, 70002, 1), Range32), $clone(new Range32.ptr(70006, 70019, 13), Range32), $clone(new Range32.ptr(70020, 70066, 1), Range32), $clone(new Range32.ptr(70081, 70084, 1), Range32), $clone(new Range32.ptr(70106, 70108, 2), Range32), $clone(new Range32.ptr(70144, 70161, 1), Range32), $clone(new Range32.ptr(70163, 70187, 1), Range32), $clone(new Range32.ptr(70272, 70278, 1), Range32), $clone(new Range32.ptr(70280, 70282, 2), Range32), $clone(new Range32.ptr(70283, 70285, 1), Range32), $clone(new Range32.ptr(70287, 70301, 1), Range32), $clone(new Range32.ptr(70303, 70312, 1), Range32), $clone(new Range32.ptr(70320, 70366, 1), Range32), $clone(new Range32.ptr(70405, 70412, 1), Range32), $clone(new Range32.ptr(70415, 70416, 1), Range32), $clone(new Range32.ptr(70419, 70440, 1), Range32), $clone(new Range32.ptr(70442, 70448, 1), Range32), $clone(new Range32.ptr(70450, 70451, 1), Range32), $clone(new Range32.ptr(70453, 70457, 1), Range32), $clone(new Range32.ptr(70461, 70480, 19), Range32), $clone(new Range32.ptr(70493, 70497, 1), Range32), $clone(new Range32.ptr(70656, 70708, 1), Range32), $clone(new Range32.ptr(70727, 70730, 1), Range32), $clone(new Range32.ptr(70751, 70753, 1), Range32), $clone(new Range32.ptr(70784, 70831, 1), Range32), $clone(new Range32.ptr(70852, 70853, 1), Range32), $clone(new Range32.ptr(70855, 71040, 185), Range32), $clone(new Range32.ptr(71041, 71086, 1), Range32), $clone(new Range32.ptr(71128, 71131, 1), Range32), $clone(new Range32.ptr(71168, 71215, 1), Range32), $clone(new Range32.ptr(71236, 71296, 60), Range32), $clone(new Range32.ptr(71297, 71338, 1), Range32), $clone(new Range32.ptr(71352, 71424, 72), Range32), $clone(new Range32.ptr(71425, 71450, 1), Range32), $clone(new Range32.ptr(71680, 71723, 1), Range32), $clone(new Range32.ptr(71840, 71903, 1), Range32), $clone(new Range32.ptr(71935, 71942, 1), Range32), $clone(new Range32.ptr(71945, 71948, 3), Range32), $clone(new Range32.ptr(71949, 71955, 1), Range32), $clone(new Range32.ptr(71957, 71958, 1), Range32), $clone(new Range32.ptr(71960, 71983, 1), Range32), $clone(new Range32.ptr(71999, 72001, 2), Range32), $clone(new Range32.ptr(72096, 72103, 1), Range32), $clone(new Range32.ptr(72106, 72144, 1), Range32), $clone(new Range32.ptr(72161, 72163, 2), Range32), $clone(new Range32.ptr(72192, 72203, 11), Range32), $clone(new Range32.ptr(72204, 72242, 1), Range32), $clone(new Range32.ptr(72250, 72272, 22), Range32), $clone(new Range32.ptr(72284, 72329, 1), Range32), $clone(new Range32.ptr(72349, 72384, 35), Range32), $clone(new Range32.ptr(72385, 72440, 1), Range32), $clone(new Range32.ptr(72704, 72712, 1), Range32), $clone(new Range32.ptr(72714, 72750, 1), Range32), $clone(new Range32.ptr(72768, 72818, 50), Range32), $clone(new Range32.ptr(72819, 72847, 1), Range32), $clone(new Range32.ptr(72960, 72966, 1), Range32), $clone(new Range32.ptr(72968, 72969, 1), Range32), $clone(new Range32.ptr(72971, 73008, 1), Range32), $clone(new Range32.ptr(73030, 73056, 26), Range32), $clone(new Range32.ptr(73057, 73061, 1), Range32), $clone(new Range32.ptr(73063, 73064, 1), Range32), $clone(new Range32.ptr(73066, 73097, 1), Range32), $clone(new Range32.ptr(73112, 73440, 328), Range32), $clone(new Range32.ptr(73441, 73458, 1), Range32), $clone(new Range32.ptr(73648, 73728, 80), Range32), $clone(new Range32.ptr(73729, 74649, 1), Range32), $clone(new Range32.ptr(74880, 75075, 1), Range32), $clone(new Range32.ptr(77824, 78894, 1), Range32), $clone(new Range32.ptr(82944, 83526, 1), Range32), $clone(new Range32.ptr(92160, 92728, 1), Range32), $clone(new Range32.ptr(92736, 92766, 1), Range32), $clone(new Range32.ptr(92880, 92909, 1), Range32), $clone(new Range32.ptr(92928, 92975, 1), Range32), $clone(new Range32.ptr(92992, 92995, 1), Range32), $clone(new Range32.ptr(93027, 93047, 1), Range32), $clone(new Range32.ptr(93053, 93071, 1), Range32), $clone(new Range32.ptr(93760, 93823, 1), Range32), $clone(new Range32.ptr(93952, 94026, 1), Range32), $clone(new Range32.ptr(94032, 94099, 67), Range32), $clone(new Range32.ptr(94100, 94111, 1), Range32), $clone(new Range32.ptr(94176, 94177, 1), Range32), $clone(new Range32.ptr(94179, 94208, 29), Range32), $clone(new Range32.ptr(94209, 100343, 1), Range32), $clone(new Range32.ptr(100352, 101589, 1), Range32), $clone(new Range32.ptr(101632, 101640, 1), Range32), $clone(new Range32.ptr(110592, 110878, 1), Range32), $clone(new Range32.ptr(110928, 110930, 1), Range32), $clone(new Range32.ptr(110948, 110951, 1), Range32), $clone(new Range32.ptr(110960, 111355, 1), Range32), $clone(new Range32.ptr(113664, 113770, 1), Range32), $clone(new Range32.ptr(113776, 113788, 1), Range32), $clone(new Range32.ptr(113792, 113800, 1), Range32), $clone(new Range32.ptr(113808, 113817, 1), Range32), $clone(new Range32.ptr(119808, 119892, 1), Range32), $clone(new Range32.ptr(119894, 119964, 1), Range32), $clone(new Range32.ptr(119966, 119967, 1), Range32), $clone(new Range32.ptr(119970, 119973, 3), Range32), $clone(new Range32.ptr(119974, 119977, 3), Range32), $clone(new Range32.ptr(119978, 119980, 1), Range32), $clone(new Range32.ptr(119982, 119993, 1), Range32), $clone(new Range32.ptr(119995, 119997, 2), Range32), $clone(new Range32.ptr(119998, 120003, 1), Range32), $clone(new Range32.ptr(120005, 120069, 1), Range32), $clone(new Range32.ptr(120071, 120074, 1), Range32), $clone(new Range32.ptr(120077, 120084, 1), Range32), $clone(new Range32.ptr(120086, 120092, 1), Range32), $clone(new Range32.ptr(120094, 120121, 1), Range32), $clone(new Range32.ptr(120123, 120126, 1), Range32), $clone(new Range32.ptr(120128, 120132, 1), Range32), $clone(new Range32.ptr(120134, 120138, 4), Range32), $clone(new Range32.ptr(120139, 120144, 1), Range32), $clone(new Range32.ptr(120146, 120485, 1), Range32), $clone(new Range32.ptr(120488, 120512, 1), Range32), $clone(new Range32.ptr(120514, 120538, 1), Range32), $clone(new Range32.ptr(120540, 120570, 1), Range32), $clone(new Range32.ptr(120572, 120596, 1), Range32), $clone(new Range32.ptr(120598, 120628, 1), Range32), $clone(new Range32.ptr(120630, 120654, 1), Range32), $clone(new Range32.ptr(120656, 120686, 1), Range32), $clone(new Range32.ptr(120688, 120712, 1), Range32), $clone(new Range32.ptr(120714, 120744, 1), Range32), $clone(new Range32.ptr(120746, 120770, 1), Range32), $clone(new Range32.ptr(120772, 120779, 1), Range32), $clone(new Range32.ptr(123136, 123180, 1), Range32), $clone(new Range32.ptr(123191, 123197, 1), Range32), $clone(new Range32.ptr(123214, 123584, 370), Range32), $clone(new Range32.ptr(123585, 123627, 1), Range32), $clone(new Range32.ptr(124928, 125124, 1), Range32), $clone(new Range32.ptr(125184, 125251, 1), Range32), $clone(new Range32.ptr(125259, 126464, 1205), Range32), $clone(new Range32.ptr(126465, 126467, 1), Range32), $clone(new Range32.ptr(126469, 126495, 1), Range32), $clone(new Range32.ptr(126497, 126498, 1), Range32), $clone(new Range32.ptr(126500, 126503, 3), Range32), $clone(new Range32.ptr(126505, 126514, 1), Range32), $clone(new Range32.ptr(126516, 126519, 1), Range32), $clone(new Range32.ptr(126521, 126523, 2), Range32), $clone(new Range32.ptr(126530, 126535, 5), Range32), $clone(new Range32.ptr(126537, 126541, 2), Range32), $clone(new Range32.ptr(126542, 126543, 1), Range32), $clone(new Range32.ptr(126545, 126546, 1), Range32), $clone(new Range32.ptr(126548, 126551, 3), Range32), $clone(new Range32.ptr(126553, 126561, 2), Range32), $clone(new Range32.ptr(126562, 126564, 2), Range32), $clone(new Range32.ptr(126567, 126570, 1), Range32), $clone(new Range32.ptr(126572, 126578, 1), Range32), $clone(new Range32.ptr(126580, 126583, 1), Range32), $clone(new Range32.ptr(126585, 126588, 1), Range32), $clone(new Range32.ptr(126590, 126592, 2), Range32), $clone(new Range32.ptr(126593, 126601, 1), Range32), $clone(new Range32.ptr(126603, 126619, 1), Range32), $clone(new Range32.ptr(126625, 126627, 1), Range32), $clone(new Range32.ptr(126629, 126633, 1), Range32), $clone(new Range32.ptr(126635, 126651, 1), Range32), $clone(new Range32.ptr(131072, 173789, 1), Range32), $clone(new Range32.ptr(173824, 177972, 1), Range32), $clone(new Range32.ptr(177984, 178205, 1), Range32), $clone(new Range32.ptr(178208, 183969, 1), Range32), $clone(new Range32.ptr(183984, 191456, 1), Range32), $clone(new Range32.ptr(194560, 195101, 1), Range32), $clone(new Range32.ptr(196608, 201546, 1), Range32)]), 6); + _Ll = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(97, 122, 1), Range16), $clone(new Range16.ptr(181, 223, 42), Range16), $clone(new Range16.ptr(224, 246, 1), Range16), $clone(new Range16.ptr(248, 255, 1), Range16), $clone(new Range16.ptr(257, 311, 2), Range16), $clone(new Range16.ptr(312, 328, 2), Range16), $clone(new Range16.ptr(329, 375, 2), Range16), $clone(new Range16.ptr(378, 382, 2), Range16), $clone(new Range16.ptr(383, 384, 1), Range16), $clone(new Range16.ptr(387, 389, 2), Range16), $clone(new Range16.ptr(392, 396, 4), Range16), $clone(new Range16.ptr(397, 402, 5), Range16), $clone(new Range16.ptr(405, 409, 4), Range16), $clone(new Range16.ptr(410, 411, 1), Range16), $clone(new Range16.ptr(414, 417, 3), Range16), $clone(new Range16.ptr(419, 421, 2), Range16), $clone(new Range16.ptr(424, 426, 2), Range16), $clone(new Range16.ptr(427, 429, 2), Range16), $clone(new Range16.ptr(432, 436, 4), Range16), $clone(new Range16.ptr(438, 441, 3), Range16), $clone(new Range16.ptr(442, 445, 3), Range16), $clone(new Range16.ptr(446, 447, 1), Range16), $clone(new Range16.ptr(454, 460, 3), Range16), $clone(new Range16.ptr(462, 476, 2), Range16), $clone(new Range16.ptr(477, 495, 2), Range16), $clone(new Range16.ptr(496, 499, 3), Range16), $clone(new Range16.ptr(501, 505, 4), Range16), $clone(new Range16.ptr(507, 563, 2), Range16), $clone(new Range16.ptr(564, 569, 1), Range16), $clone(new Range16.ptr(572, 575, 3), Range16), $clone(new Range16.ptr(576, 578, 2), Range16), $clone(new Range16.ptr(583, 591, 2), Range16), $clone(new Range16.ptr(592, 659, 1), Range16), $clone(new Range16.ptr(661, 687, 1), Range16), $clone(new Range16.ptr(881, 883, 2), Range16), $clone(new Range16.ptr(887, 891, 4), Range16), $clone(new Range16.ptr(892, 893, 1), Range16), $clone(new Range16.ptr(912, 940, 28), Range16), $clone(new Range16.ptr(941, 974, 1), Range16), $clone(new Range16.ptr(976, 977, 1), Range16), $clone(new Range16.ptr(981, 983, 1), Range16), $clone(new Range16.ptr(985, 1007, 2), Range16), $clone(new Range16.ptr(1008, 1011, 1), Range16), $clone(new Range16.ptr(1013, 1019, 3), Range16), $clone(new Range16.ptr(1020, 1072, 52), Range16), $clone(new Range16.ptr(1073, 1119, 1), Range16), $clone(new Range16.ptr(1121, 1153, 2), Range16), $clone(new Range16.ptr(1163, 1215, 2), Range16), $clone(new Range16.ptr(1218, 1230, 2), Range16), $clone(new Range16.ptr(1231, 1327, 2), Range16), $clone(new Range16.ptr(1376, 1416, 1), Range16), $clone(new Range16.ptr(4304, 4346, 1), Range16), $clone(new Range16.ptr(4349, 4351, 1), Range16), $clone(new Range16.ptr(5112, 5117, 1), Range16), $clone(new Range16.ptr(7296, 7304, 1), Range16), $clone(new Range16.ptr(7424, 7467, 1), Range16), $clone(new Range16.ptr(7531, 7543, 1), Range16), $clone(new Range16.ptr(7545, 7578, 1), Range16), $clone(new Range16.ptr(7681, 7829, 2), Range16), $clone(new Range16.ptr(7830, 7837, 1), Range16), $clone(new Range16.ptr(7839, 7935, 2), Range16), $clone(new Range16.ptr(7936, 7943, 1), Range16), $clone(new Range16.ptr(7952, 7957, 1), Range16), $clone(new Range16.ptr(7968, 7975, 1), Range16), $clone(new Range16.ptr(7984, 7991, 1), Range16), $clone(new Range16.ptr(8000, 8005, 1), Range16), $clone(new Range16.ptr(8016, 8023, 1), Range16), $clone(new Range16.ptr(8032, 8039, 1), Range16), $clone(new Range16.ptr(8048, 8061, 1), Range16), $clone(new Range16.ptr(8064, 8071, 1), Range16), $clone(new Range16.ptr(8080, 8087, 1), Range16), $clone(new Range16.ptr(8096, 8103, 1), Range16), $clone(new Range16.ptr(8112, 8116, 1), Range16), $clone(new Range16.ptr(8118, 8119, 1), Range16), $clone(new Range16.ptr(8126, 8130, 4), Range16), $clone(new Range16.ptr(8131, 8132, 1), Range16), $clone(new Range16.ptr(8134, 8135, 1), Range16), $clone(new Range16.ptr(8144, 8147, 1), Range16), $clone(new Range16.ptr(8150, 8151, 1), Range16), $clone(new Range16.ptr(8160, 8167, 1), Range16), $clone(new Range16.ptr(8178, 8180, 1), Range16), $clone(new Range16.ptr(8182, 8183, 1), Range16), $clone(new Range16.ptr(8458, 8462, 4), Range16), $clone(new Range16.ptr(8463, 8467, 4), Range16), $clone(new Range16.ptr(8495, 8505, 5), Range16), $clone(new Range16.ptr(8508, 8509, 1), Range16), $clone(new Range16.ptr(8518, 8521, 1), Range16), $clone(new Range16.ptr(8526, 8580, 54), Range16), $clone(new Range16.ptr(11312, 11358, 1), Range16), $clone(new Range16.ptr(11361, 11365, 4), Range16), $clone(new Range16.ptr(11366, 11372, 2), Range16), $clone(new Range16.ptr(11377, 11379, 2), Range16), $clone(new Range16.ptr(11380, 11382, 2), Range16), $clone(new Range16.ptr(11383, 11387, 1), Range16), $clone(new Range16.ptr(11393, 11491, 2), Range16), $clone(new Range16.ptr(11492, 11500, 8), Range16), $clone(new Range16.ptr(11502, 11507, 5), Range16), $clone(new Range16.ptr(11520, 11557, 1), Range16), $clone(new Range16.ptr(11559, 11565, 6), Range16), $clone(new Range16.ptr(42561, 42605, 2), Range16), $clone(new Range16.ptr(42625, 42651, 2), Range16), $clone(new Range16.ptr(42787, 42799, 2), Range16), $clone(new Range16.ptr(42800, 42801, 1), Range16), $clone(new Range16.ptr(42803, 42865, 2), Range16), $clone(new Range16.ptr(42866, 42872, 1), Range16), $clone(new Range16.ptr(42874, 42876, 2), Range16), $clone(new Range16.ptr(42879, 42887, 2), Range16), $clone(new Range16.ptr(42892, 42894, 2), Range16), $clone(new Range16.ptr(42897, 42899, 2), Range16), $clone(new Range16.ptr(42900, 42901, 1), Range16), $clone(new Range16.ptr(42903, 42921, 2), Range16), $clone(new Range16.ptr(42927, 42933, 6), Range16), $clone(new Range16.ptr(42935, 42943, 2), Range16), $clone(new Range16.ptr(42947, 42952, 5), Range16), $clone(new Range16.ptr(42954, 42998, 44), Range16), $clone(new Range16.ptr(43002, 43824, 822), Range16), $clone(new Range16.ptr(43825, 43866, 1), Range16), $clone(new Range16.ptr(43872, 43880, 1), Range16), $clone(new Range16.ptr(43888, 43967, 1), Range16), $clone(new Range16.ptr(64256, 64262, 1), Range16), $clone(new Range16.ptr(64275, 64279, 1), Range16), $clone(new Range16.ptr(65345, 65370, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(66600, 66639, 1), Range32), $clone(new Range32.ptr(66776, 66811, 1), Range32), $clone(new Range32.ptr(68800, 68850, 1), Range32), $clone(new Range32.ptr(71872, 71903, 1), Range32), $clone(new Range32.ptr(93792, 93823, 1), Range32), $clone(new Range32.ptr(119834, 119859, 1), Range32), $clone(new Range32.ptr(119886, 119892, 1), Range32), $clone(new Range32.ptr(119894, 119911, 1), Range32), $clone(new Range32.ptr(119938, 119963, 1), Range32), $clone(new Range32.ptr(119990, 119993, 1), Range32), $clone(new Range32.ptr(119995, 119997, 2), Range32), $clone(new Range32.ptr(119998, 120003, 1), Range32), $clone(new Range32.ptr(120005, 120015, 1), Range32), $clone(new Range32.ptr(120042, 120067, 1), Range32), $clone(new Range32.ptr(120094, 120119, 1), Range32), $clone(new Range32.ptr(120146, 120171, 1), Range32), $clone(new Range32.ptr(120198, 120223, 1), Range32), $clone(new Range32.ptr(120250, 120275, 1), Range32), $clone(new Range32.ptr(120302, 120327, 1), Range32), $clone(new Range32.ptr(120354, 120379, 1), Range32), $clone(new Range32.ptr(120406, 120431, 1), Range32), $clone(new Range32.ptr(120458, 120485, 1), Range32), $clone(new Range32.ptr(120514, 120538, 1), Range32), $clone(new Range32.ptr(120540, 120545, 1), Range32), $clone(new Range32.ptr(120572, 120596, 1), Range32), $clone(new Range32.ptr(120598, 120603, 1), Range32), $clone(new Range32.ptr(120630, 120654, 1), Range32), $clone(new Range32.ptr(120656, 120661, 1), Range32), $clone(new Range32.ptr(120688, 120712, 1), Range32), $clone(new Range32.ptr(120714, 120719, 1), Range32), $clone(new Range32.ptr(120746, 120770, 1), Range32), $clone(new Range32.ptr(120772, 120777, 1), Range32), $clone(new Range32.ptr(120779, 125218, 4439), Range32), $clone(new Range32.ptr(125219, 125251, 1), Range32)]), 4); + _Lm = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(688, 705, 1), Range16), $clone(new Range16.ptr(710, 721, 1), Range16), $clone(new Range16.ptr(736, 740, 1), Range16), $clone(new Range16.ptr(748, 750, 2), Range16), $clone(new Range16.ptr(884, 890, 6), Range16), $clone(new Range16.ptr(1369, 1600, 231), Range16), $clone(new Range16.ptr(1765, 1766, 1), Range16), $clone(new Range16.ptr(2036, 2037, 1), Range16), $clone(new Range16.ptr(2042, 2074, 32), Range16), $clone(new Range16.ptr(2084, 2088, 4), Range16), $clone(new Range16.ptr(2417, 3654, 1237), Range16), $clone(new Range16.ptr(3782, 4348, 566), Range16), $clone(new Range16.ptr(6103, 6211, 108), Range16), $clone(new Range16.ptr(6823, 7288, 465), Range16), $clone(new Range16.ptr(7289, 7293, 1), Range16), $clone(new Range16.ptr(7468, 7530, 1), Range16), $clone(new Range16.ptr(7544, 7579, 35), Range16), $clone(new Range16.ptr(7580, 7615, 1), Range16), $clone(new Range16.ptr(8305, 8319, 14), Range16), $clone(new Range16.ptr(8336, 8348, 1), Range16), $clone(new Range16.ptr(11388, 11389, 1), Range16), $clone(new Range16.ptr(11631, 11823, 192), Range16), $clone(new Range16.ptr(12293, 12337, 44), Range16), $clone(new Range16.ptr(12338, 12341, 1), Range16), $clone(new Range16.ptr(12347, 12445, 98), Range16), $clone(new Range16.ptr(12446, 12540, 94), Range16), $clone(new Range16.ptr(12541, 12542, 1), Range16), $clone(new Range16.ptr(40981, 42232, 1251), Range16), $clone(new Range16.ptr(42233, 42237, 1), Range16), $clone(new Range16.ptr(42508, 42623, 115), Range16), $clone(new Range16.ptr(42652, 42653, 1), Range16), $clone(new Range16.ptr(42775, 42783, 1), Range16), $clone(new Range16.ptr(42864, 42888, 24), Range16), $clone(new Range16.ptr(43000, 43001, 1), Range16), $clone(new Range16.ptr(43471, 43494, 23), Range16), $clone(new Range16.ptr(43632, 43741, 109), Range16), $clone(new Range16.ptr(43763, 43764, 1), Range16), $clone(new Range16.ptr(43868, 43871, 1), Range16), $clone(new Range16.ptr(43881, 65392, 21511), Range16), $clone(new Range16.ptr(65438, 65439, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(92992, 92995, 1), Range32), $clone(new Range32.ptr(94099, 94111, 1), Range32), $clone(new Range32.ptr(94176, 94177, 1), Range32), $clone(new Range32.ptr(94179, 123191, 29012), Range32), $clone(new Range32.ptr(123192, 123197, 1), Range32), $clone(new Range32.ptr(125259, 125259, 1), Range32)]), 0); + _Lo = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(170, 186, 16), Range16), $clone(new Range16.ptr(443, 448, 5), Range16), $clone(new Range16.ptr(449, 451, 1), Range16), $clone(new Range16.ptr(660, 1488, 828), Range16), $clone(new Range16.ptr(1489, 1514, 1), Range16), $clone(new Range16.ptr(1519, 1522, 1), Range16), $clone(new Range16.ptr(1568, 1599, 1), Range16), $clone(new Range16.ptr(1601, 1610, 1), Range16), $clone(new Range16.ptr(1646, 1647, 1), Range16), $clone(new Range16.ptr(1649, 1747, 1), Range16), $clone(new Range16.ptr(1749, 1774, 25), Range16), $clone(new Range16.ptr(1775, 1786, 11), Range16), $clone(new Range16.ptr(1787, 1788, 1), Range16), $clone(new Range16.ptr(1791, 1808, 17), Range16), $clone(new Range16.ptr(1810, 1839, 1), Range16), $clone(new Range16.ptr(1869, 1957, 1), Range16), $clone(new Range16.ptr(1969, 1994, 25), Range16), $clone(new Range16.ptr(1995, 2026, 1), Range16), $clone(new Range16.ptr(2048, 2069, 1), Range16), $clone(new Range16.ptr(2112, 2136, 1), Range16), $clone(new Range16.ptr(2144, 2154, 1), Range16), $clone(new Range16.ptr(2208, 2228, 1), Range16), $clone(new Range16.ptr(2230, 2247, 1), Range16), $clone(new Range16.ptr(2308, 2361, 1), Range16), $clone(new Range16.ptr(2365, 2384, 19), Range16), $clone(new Range16.ptr(2392, 2401, 1), Range16), $clone(new Range16.ptr(2418, 2432, 1), Range16), $clone(new Range16.ptr(2437, 2444, 1), Range16), $clone(new Range16.ptr(2447, 2448, 1), Range16), $clone(new Range16.ptr(2451, 2472, 1), Range16), $clone(new Range16.ptr(2474, 2480, 1), Range16), $clone(new Range16.ptr(2482, 2486, 4), Range16), $clone(new Range16.ptr(2487, 2489, 1), Range16), $clone(new Range16.ptr(2493, 2510, 17), Range16), $clone(new Range16.ptr(2524, 2525, 1), Range16), $clone(new Range16.ptr(2527, 2529, 1), Range16), $clone(new Range16.ptr(2544, 2545, 1), Range16), $clone(new Range16.ptr(2556, 2565, 9), Range16), $clone(new Range16.ptr(2566, 2570, 1), Range16), $clone(new Range16.ptr(2575, 2576, 1), Range16), $clone(new Range16.ptr(2579, 2600, 1), Range16), $clone(new Range16.ptr(2602, 2608, 1), Range16), $clone(new Range16.ptr(2610, 2611, 1), Range16), $clone(new Range16.ptr(2613, 2614, 1), Range16), $clone(new Range16.ptr(2616, 2617, 1), Range16), $clone(new Range16.ptr(2649, 2652, 1), Range16), $clone(new Range16.ptr(2654, 2674, 20), Range16), $clone(new Range16.ptr(2675, 2676, 1), Range16), $clone(new Range16.ptr(2693, 2701, 1), Range16), $clone(new Range16.ptr(2703, 2705, 1), Range16), $clone(new Range16.ptr(2707, 2728, 1), Range16), $clone(new Range16.ptr(2730, 2736, 1), Range16), $clone(new Range16.ptr(2738, 2739, 1), Range16), $clone(new Range16.ptr(2741, 2745, 1), Range16), $clone(new Range16.ptr(2749, 2768, 19), Range16), $clone(new Range16.ptr(2784, 2785, 1), Range16), $clone(new Range16.ptr(2809, 2821, 12), Range16), $clone(new Range16.ptr(2822, 2828, 1), Range16), $clone(new Range16.ptr(2831, 2832, 1), Range16), $clone(new Range16.ptr(2835, 2856, 1), Range16), $clone(new Range16.ptr(2858, 2864, 1), Range16), $clone(new Range16.ptr(2866, 2867, 1), Range16), $clone(new Range16.ptr(2869, 2873, 1), Range16), $clone(new Range16.ptr(2877, 2908, 31), Range16), $clone(new Range16.ptr(2909, 2911, 2), Range16), $clone(new Range16.ptr(2912, 2913, 1), Range16), $clone(new Range16.ptr(2929, 2947, 18), Range16), $clone(new Range16.ptr(2949, 2954, 1), Range16), $clone(new Range16.ptr(2958, 2960, 1), Range16), $clone(new Range16.ptr(2962, 2965, 1), Range16), $clone(new Range16.ptr(2969, 2970, 1), Range16), $clone(new Range16.ptr(2972, 2974, 2), Range16), $clone(new Range16.ptr(2975, 2979, 4), Range16), $clone(new Range16.ptr(2980, 2984, 4), Range16), $clone(new Range16.ptr(2985, 2986, 1), Range16), $clone(new Range16.ptr(2990, 3001, 1), Range16), $clone(new Range16.ptr(3024, 3077, 53), Range16), $clone(new Range16.ptr(3078, 3084, 1), Range16), $clone(new Range16.ptr(3086, 3088, 1), Range16), $clone(new Range16.ptr(3090, 3112, 1), Range16), $clone(new Range16.ptr(3114, 3129, 1), Range16), $clone(new Range16.ptr(3133, 3160, 27), Range16), $clone(new Range16.ptr(3161, 3162, 1), Range16), $clone(new Range16.ptr(3168, 3169, 1), Range16), $clone(new Range16.ptr(3200, 3205, 5), Range16), $clone(new Range16.ptr(3206, 3212, 1), Range16), $clone(new Range16.ptr(3214, 3216, 1), Range16), $clone(new Range16.ptr(3218, 3240, 1), Range16), $clone(new Range16.ptr(3242, 3251, 1), Range16), $clone(new Range16.ptr(3253, 3257, 1), Range16), $clone(new Range16.ptr(3261, 3294, 33), Range16), $clone(new Range16.ptr(3296, 3297, 1), Range16), $clone(new Range16.ptr(3313, 3314, 1), Range16), $clone(new Range16.ptr(3332, 3340, 1), Range16), $clone(new Range16.ptr(3342, 3344, 1), Range16), $clone(new Range16.ptr(3346, 3386, 1), Range16), $clone(new Range16.ptr(3389, 3406, 17), Range16), $clone(new Range16.ptr(3412, 3414, 1), Range16), $clone(new Range16.ptr(3423, 3425, 1), Range16), $clone(new Range16.ptr(3450, 3455, 1), Range16), $clone(new Range16.ptr(3461, 3478, 1), Range16), $clone(new Range16.ptr(3482, 3505, 1), Range16), $clone(new Range16.ptr(3507, 3515, 1), Range16), $clone(new Range16.ptr(3517, 3520, 3), Range16), $clone(new Range16.ptr(3521, 3526, 1), Range16), $clone(new Range16.ptr(3585, 3632, 1), Range16), $clone(new Range16.ptr(3634, 3635, 1), Range16), $clone(new Range16.ptr(3648, 3653, 1), Range16), $clone(new Range16.ptr(3713, 3714, 1), Range16), $clone(new Range16.ptr(3716, 3718, 2), Range16), $clone(new Range16.ptr(3719, 3722, 1), Range16), $clone(new Range16.ptr(3724, 3747, 1), Range16), $clone(new Range16.ptr(3749, 3751, 2), Range16), $clone(new Range16.ptr(3752, 3760, 1), Range16), $clone(new Range16.ptr(3762, 3763, 1), Range16), $clone(new Range16.ptr(3773, 3776, 3), Range16), $clone(new Range16.ptr(3777, 3780, 1), Range16), $clone(new Range16.ptr(3804, 3807, 1), Range16), $clone(new Range16.ptr(3840, 3904, 64), Range16), $clone(new Range16.ptr(3905, 3911, 1), Range16), $clone(new Range16.ptr(3913, 3948, 1), Range16), $clone(new Range16.ptr(3976, 3980, 1), Range16), $clone(new Range16.ptr(4096, 4138, 1), Range16), $clone(new Range16.ptr(4159, 4176, 17), Range16), $clone(new Range16.ptr(4177, 4181, 1), Range16), $clone(new Range16.ptr(4186, 4189, 1), Range16), $clone(new Range16.ptr(4193, 4197, 4), Range16), $clone(new Range16.ptr(4198, 4206, 8), Range16), $clone(new Range16.ptr(4207, 4208, 1), Range16), $clone(new Range16.ptr(4213, 4225, 1), Range16), $clone(new Range16.ptr(4238, 4352, 114), Range16), $clone(new Range16.ptr(4353, 4680, 1), Range16), $clone(new Range16.ptr(4682, 4685, 1), Range16), $clone(new Range16.ptr(4688, 4694, 1), Range16), $clone(new Range16.ptr(4696, 4698, 2), Range16), $clone(new Range16.ptr(4699, 4701, 1), Range16), $clone(new Range16.ptr(4704, 4744, 1), Range16), $clone(new Range16.ptr(4746, 4749, 1), Range16), $clone(new Range16.ptr(4752, 4784, 1), Range16), $clone(new Range16.ptr(4786, 4789, 1), Range16), $clone(new Range16.ptr(4792, 4798, 1), Range16), $clone(new Range16.ptr(4800, 4802, 2), Range16), $clone(new Range16.ptr(4803, 4805, 1), Range16), $clone(new Range16.ptr(4808, 4822, 1), Range16), $clone(new Range16.ptr(4824, 4880, 1), Range16), $clone(new Range16.ptr(4882, 4885, 1), Range16), $clone(new Range16.ptr(4888, 4954, 1), Range16), $clone(new Range16.ptr(4992, 5007, 1), Range16), $clone(new Range16.ptr(5121, 5740, 1), Range16), $clone(new Range16.ptr(5743, 5759, 1), Range16), $clone(new Range16.ptr(5761, 5786, 1), Range16), $clone(new Range16.ptr(5792, 5866, 1), Range16), $clone(new Range16.ptr(5873, 5880, 1), Range16), $clone(new Range16.ptr(5888, 5900, 1), Range16), $clone(new Range16.ptr(5902, 5905, 1), Range16), $clone(new Range16.ptr(5920, 5937, 1), Range16), $clone(new Range16.ptr(5952, 5969, 1), Range16), $clone(new Range16.ptr(5984, 5996, 1), Range16), $clone(new Range16.ptr(5998, 6000, 1), Range16), $clone(new Range16.ptr(6016, 6067, 1), Range16), $clone(new Range16.ptr(6108, 6176, 68), Range16), $clone(new Range16.ptr(6177, 6210, 1), Range16), $clone(new Range16.ptr(6212, 6264, 1), Range16), $clone(new Range16.ptr(6272, 6276, 1), Range16), $clone(new Range16.ptr(6279, 6312, 1), Range16), $clone(new Range16.ptr(6314, 6320, 6), Range16), $clone(new Range16.ptr(6321, 6389, 1), Range16), $clone(new Range16.ptr(6400, 6430, 1), Range16), $clone(new Range16.ptr(6480, 6509, 1), Range16), $clone(new Range16.ptr(6512, 6516, 1), Range16), $clone(new Range16.ptr(6528, 6571, 1), Range16), $clone(new Range16.ptr(6576, 6601, 1), Range16), $clone(new Range16.ptr(6656, 6678, 1), Range16), $clone(new Range16.ptr(6688, 6740, 1), Range16), $clone(new Range16.ptr(6917, 6963, 1), Range16), $clone(new Range16.ptr(6981, 6987, 1), Range16), $clone(new Range16.ptr(7043, 7072, 1), Range16), $clone(new Range16.ptr(7086, 7087, 1), Range16), $clone(new Range16.ptr(7098, 7141, 1), Range16), $clone(new Range16.ptr(7168, 7203, 1), Range16), $clone(new Range16.ptr(7245, 7247, 1), Range16), $clone(new Range16.ptr(7258, 7287, 1), Range16), $clone(new Range16.ptr(7401, 7404, 1), Range16), $clone(new Range16.ptr(7406, 7411, 1), Range16), $clone(new Range16.ptr(7413, 7414, 1), Range16), $clone(new Range16.ptr(7418, 8501, 1083), Range16), $clone(new Range16.ptr(8502, 8504, 1), Range16), $clone(new Range16.ptr(11568, 11623, 1), Range16), $clone(new Range16.ptr(11648, 11670, 1), Range16), $clone(new Range16.ptr(11680, 11686, 1), Range16), $clone(new Range16.ptr(11688, 11694, 1), Range16), $clone(new Range16.ptr(11696, 11702, 1), Range16), $clone(new Range16.ptr(11704, 11710, 1), Range16), $clone(new Range16.ptr(11712, 11718, 1), Range16), $clone(new Range16.ptr(11720, 11726, 1), Range16), $clone(new Range16.ptr(11728, 11734, 1), Range16), $clone(new Range16.ptr(11736, 11742, 1), Range16), $clone(new Range16.ptr(12294, 12348, 54), Range16), $clone(new Range16.ptr(12353, 12438, 1), Range16), $clone(new Range16.ptr(12447, 12449, 2), Range16), $clone(new Range16.ptr(12450, 12538, 1), Range16), $clone(new Range16.ptr(12543, 12549, 6), Range16), $clone(new Range16.ptr(12550, 12591, 1), Range16), $clone(new Range16.ptr(12593, 12686, 1), Range16), $clone(new Range16.ptr(12704, 12735, 1), Range16), $clone(new Range16.ptr(12784, 12799, 1), Range16), $clone(new Range16.ptr(13312, 19903, 1), Range16), $clone(new Range16.ptr(19968, 40956, 1), Range16), $clone(new Range16.ptr(40960, 40980, 1), Range16), $clone(new Range16.ptr(40982, 42124, 1), Range16), $clone(new Range16.ptr(42192, 42231, 1), Range16), $clone(new Range16.ptr(42240, 42507, 1), Range16), $clone(new Range16.ptr(42512, 42527, 1), Range16), $clone(new Range16.ptr(42538, 42539, 1), Range16), $clone(new Range16.ptr(42606, 42656, 50), Range16), $clone(new Range16.ptr(42657, 42725, 1), Range16), $clone(new Range16.ptr(42895, 42999, 104), Range16), $clone(new Range16.ptr(43003, 43009, 1), Range16), $clone(new Range16.ptr(43011, 43013, 1), Range16), $clone(new Range16.ptr(43015, 43018, 1), Range16), $clone(new Range16.ptr(43020, 43042, 1), Range16), $clone(new Range16.ptr(43072, 43123, 1), Range16), $clone(new Range16.ptr(43138, 43187, 1), Range16), $clone(new Range16.ptr(43250, 43255, 1), Range16), $clone(new Range16.ptr(43259, 43261, 2), Range16), $clone(new Range16.ptr(43262, 43274, 12), Range16), $clone(new Range16.ptr(43275, 43301, 1), Range16), $clone(new Range16.ptr(43312, 43334, 1), Range16), $clone(new Range16.ptr(43360, 43388, 1), Range16), $clone(new Range16.ptr(43396, 43442, 1), Range16), $clone(new Range16.ptr(43488, 43492, 1), Range16), $clone(new Range16.ptr(43495, 43503, 1), Range16), $clone(new Range16.ptr(43514, 43518, 1), Range16), $clone(new Range16.ptr(43520, 43560, 1), Range16), $clone(new Range16.ptr(43584, 43586, 1), Range16), $clone(new Range16.ptr(43588, 43595, 1), Range16), $clone(new Range16.ptr(43616, 43631, 1), Range16), $clone(new Range16.ptr(43633, 43638, 1), Range16), $clone(new Range16.ptr(43642, 43646, 4), Range16), $clone(new Range16.ptr(43647, 43695, 1), Range16), $clone(new Range16.ptr(43697, 43701, 4), Range16), $clone(new Range16.ptr(43702, 43705, 3), Range16), $clone(new Range16.ptr(43706, 43709, 1), Range16), $clone(new Range16.ptr(43712, 43714, 2), Range16), $clone(new Range16.ptr(43739, 43740, 1), Range16), $clone(new Range16.ptr(43744, 43754, 1), Range16), $clone(new Range16.ptr(43762, 43777, 15), Range16), $clone(new Range16.ptr(43778, 43782, 1), Range16), $clone(new Range16.ptr(43785, 43790, 1), Range16), $clone(new Range16.ptr(43793, 43798, 1), Range16), $clone(new Range16.ptr(43808, 43814, 1), Range16), $clone(new Range16.ptr(43816, 43822, 1), Range16), $clone(new Range16.ptr(43968, 44002, 1), Range16), $clone(new Range16.ptr(44032, 55203, 1), Range16), $clone(new Range16.ptr(55216, 55238, 1), Range16), $clone(new Range16.ptr(55243, 55291, 1), Range16), $clone(new Range16.ptr(63744, 64109, 1), Range16), $clone(new Range16.ptr(64112, 64217, 1), Range16), $clone(new Range16.ptr(64285, 64287, 2), Range16), $clone(new Range16.ptr(64288, 64296, 1), Range16), $clone(new Range16.ptr(64298, 64310, 1), Range16), $clone(new Range16.ptr(64312, 64316, 1), Range16), $clone(new Range16.ptr(64318, 64320, 2), Range16), $clone(new Range16.ptr(64321, 64323, 2), Range16), $clone(new Range16.ptr(64324, 64326, 2), Range16), $clone(new Range16.ptr(64327, 64433, 1), Range16), $clone(new Range16.ptr(64467, 64829, 1), Range16), $clone(new Range16.ptr(64848, 64911, 1), Range16), $clone(new Range16.ptr(64914, 64967, 1), Range16), $clone(new Range16.ptr(65008, 65019, 1), Range16), $clone(new Range16.ptr(65136, 65140, 1), Range16), $clone(new Range16.ptr(65142, 65276, 1), Range16), $clone(new Range16.ptr(65382, 65391, 1), Range16), $clone(new Range16.ptr(65393, 65437, 1), Range16), $clone(new Range16.ptr(65440, 65470, 1), Range16), $clone(new Range16.ptr(65474, 65479, 1), Range16), $clone(new Range16.ptr(65482, 65487, 1), Range16), $clone(new Range16.ptr(65490, 65495, 1), Range16), $clone(new Range16.ptr(65498, 65500, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(65536, 65547, 1), Range32), $clone(new Range32.ptr(65549, 65574, 1), Range32), $clone(new Range32.ptr(65576, 65594, 1), Range32), $clone(new Range32.ptr(65596, 65597, 1), Range32), $clone(new Range32.ptr(65599, 65613, 1), Range32), $clone(new Range32.ptr(65616, 65629, 1), Range32), $clone(new Range32.ptr(65664, 65786, 1), Range32), $clone(new Range32.ptr(66176, 66204, 1), Range32), $clone(new Range32.ptr(66208, 66256, 1), Range32), $clone(new Range32.ptr(66304, 66335, 1), Range32), $clone(new Range32.ptr(66349, 66368, 1), Range32), $clone(new Range32.ptr(66370, 66377, 1), Range32), $clone(new Range32.ptr(66384, 66421, 1), Range32), $clone(new Range32.ptr(66432, 66461, 1), Range32), $clone(new Range32.ptr(66464, 66499, 1), Range32), $clone(new Range32.ptr(66504, 66511, 1), Range32), $clone(new Range32.ptr(66640, 66717, 1), Range32), $clone(new Range32.ptr(66816, 66855, 1), Range32), $clone(new Range32.ptr(66864, 66915, 1), Range32), $clone(new Range32.ptr(67072, 67382, 1), Range32), $clone(new Range32.ptr(67392, 67413, 1), Range32), $clone(new Range32.ptr(67424, 67431, 1), Range32), $clone(new Range32.ptr(67584, 67589, 1), Range32), $clone(new Range32.ptr(67592, 67594, 2), Range32), $clone(new Range32.ptr(67595, 67637, 1), Range32), $clone(new Range32.ptr(67639, 67640, 1), Range32), $clone(new Range32.ptr(67644, 67647, 3), Range32), $clone(new Range32.ptr(67648, 67669, 1), Range32), $clone(new Range32.ptr(67680, 67702, 1), Range32), $clone(new Range32.ptr(67712, 67742, 1), Range32), $clone(new Range32.ptr(67808, 67826, 1), Range32), $clone(new Range32.ptr(67828, 67829, 1), Range32), $clone(new Range32.ptr(67840, 67861, 1), Range32), $clone(new Range32.ptr(67872, 67897, 1), Range32), $clone(new Range32.ptr(67968, 68023, 1), Range32), $clone(new Range32.ptr(68030, 68031, 1), Range32), $clone(new Range32.ptr(68096, 68112, 16), Range32), $clone(new Range32.ptr(68113, 68115, 1), Range32), $clone(new Range32.ptr(68117, 68119, 1), Range32), $clone(new Range32.ptr(68121, 68149, 1), Range32), $clone(new Range32.ptr(68192, 68220, 1), Range32), $clone(new Range32.ptr(68224, 68252, 1), Range32), $clone(new Range32.ptr(68288, 68295, 1), Range32), $clone(new Range32.ptr(68297, 68324, 1), Range32), $clone(new Range32.ptr(68352, 68405, 1), Range32), $clone(new Range32.ptr(68416, 68437, 1), Range32), $clone(new Range32.ptr(68448, 68466, 1), Range32), $clone(new Range32.ptr(68480, 68497, 1), Range32), $clone(new Range32.ptr(68608, 68680, 1), Range32), $clone(new Range32.ptr(68864, 68899, 1), Range32), $clone(new Range32.ptr(69248, 69289, 1), Range32), $clone(new Range32.ptr(69296, 69297, 1), Range32), $clone(new Range32.ptr(69376, 69404, 1), Range32), $clone(new Range32.ptr(69415, 69424, 9), Range32), $clone(new Range32.ptr(69425, 69445, 1), Range32), $clone(new Range32.ptr(69552, 69572, 1), Range32), $clone(new Range32.ptr(69600, 69622, 1), Range32), $clone(new Range32.ptr(69635, 69687, 1), Range32), $clone(new Range32.ptr(69763, 69807, 1), Range32), $clone(new Range32.ptr(69840, 69864, 1), Range32), $clone(new Range32.ptr(69891, 69926, 1), Range32), $clone(new Range32.ptr(69956, 69959, 3), Range32), $clone(new Range32.ptr(69968, 70002, 1), Range32), $clone(new Range32.ptr(70006, 70019, 13), Range32), $clone(new Range32.ptr(70020, 70066, 1), Range32), $clone(new Range32.ptr(70081, 70084, 1), Range32), $clone(new Range32.ptr(70106, 70108, 2), Range32), $clone(new Range32.ptr(70144, 70161, 1), Range32), $clone(new Range32.ptr(70163, 70187, 1), Range32), $clone(new Range32.ptr(70272, 70278, 1), Range32), $clone(new Range32.ptr(70280, 70282, 2), Range32), $clone(new Range32.ptr(70283, 70285, 1), Range32), $clone(new Range32.ptr(70287, 70301, 1), Range32), $clone(new Range32.ptr(70303, 70312, 1), Range32), $clone(new Range32.ptr(70320, 70366, 1), Range32), $clone(new Range32.ptr(70405, 70412, 1), Range32), $clone(new Range32.ptr(70415, 70416, 1), Range32), $clone(new Range32.ptr(70419, 70440, 1), Range32), $clone(new Range32.ptr(70442, 70448, 1), Range32), $clone(new Range32.ptr(70450, 70451, 1), Range32), $clone(new Range32.ptr(70453, 70457, 1), Range32), $clone(new Range32.ptr(70461, 70480, 19), Range32), $clone(new Range32.ptr(70493, 70497, 1), Range32), $clone(new Range32.ptr(70656, 70708, 1), Range32), $clone(new Range32.ptr(70727, 70730, 1), Range32), $clone(new Range32.ptr(70751, 70753, 1), Range32), $clone(new Range32.ptr(70784, 70831, 1), Range32), $clone(new Range32.ptr(70852, 70853, 1), Range32), $clone(new Range32.ptr(70855, 71040, 185), Range32), $clone(new Range32.ptr(71041, 71086, 1), Range32), $clone(new Range32.ptr(71128, 71131, 1), Range32), $clone(new Range32.ptr(71168, 71215, 1), Range32), $clone(new Range32.ptr(71236, 71296, 60), Range32), $clone(new Range32.ptr(71297, 71338, 1), Range32), $clone(new Range32.ptr(71352, 71424, 72), Range32), $clone(new Range32.ptr(71425, 71450, 1), Range32), $clone(new Range32.ptr(71680, 71723, 1), Range32), $clone(new Range32.ptr(71935, 71942, 1), Range32), $clone(new Range32.ptr(71945, 71948, 3), Range32), $clone(new Range32.ptr(71949, 71955, 1), Range32), $clone(new Range32.ptr(71957, 71958, 1), Range32), $clone(new Range32.ptr(71960, 71983, 1), Range32), $clone(new Range32.ptr(71999, 72001, 2), Range32), $clone(new Range32.ptr(72096, 72103, 1), Range32), $clone(new Range32.ptr(72106, 72144, 1), Range32), $clone(new Range32.ptr(72161, 72163, 2), Range32), $clone(new Range32.ptr(72192, 72203, 11), Range32), $clone(new Range32.ptr(72204, 72242, 1), Range32), $clone(new Range32.ptr(72250, 72272, 22), Range32), $clone(new Range32.ptr(72284, 72329, 1), Range32), $clone(new Range32.ptr(72349, 72384, 35), Range32), $clone(new Range32.ptr(72385, 72440, 1), Range32), $clone(new Range32.ptr(72704, 72712, 1), Range32), $clone(new Range32.ptr(72714, 72750, 1), Range32), $clone(new Range32.ptr(72768, 72818, 50), Range32), $clone(new Range32.ptr(72819, 72847, 1), Range32), $clone(new Range32.ptr(72960, 72966, 1), Range32), $clone(new Range32.ptr(72968, 72969, 1), Range32), $clone(new Range32.ptr(72971, 73008, 1), Range32), $clone(new Range32.ptr(73030, 73056, 26), Range32), $clone(new Range32.ptr(73057, 73061, 1), Range32), $clone(new Range32.ptr(73063, 73064, 1), Range32), $clone(new Range32.ptr(73066, 73097, 1), Range32), $clone(new Range32.ptr(73112, 73440, 328), Range32), $clone(new Range32.ptr(73441, 73458, 1), Range32), $clone(new Range32.ptr(73648, 73728, 80), Range32), $clone(new Range32.ptr(73729, 74649, 1), Range32), $clone(new Range32.ptr(74880, 75075, 1), Range32), $clone(new Range32.ptr(77824, 78894, 1), Range32), $clone(new Range32.ptr(82944, 83526, 1), Range32), $clone(new Range32.ptr(92160, 92728, 1), Range32), $clone(new Range32.ptr(92736, 92766, 1), Range32), $clone(new Range32.ptr(92880, 92909, 1), Range32), $clone(new Range32.ptr(92928, 92975, 1), Range32), $clone(new Range32.ptr(93027, 93047, 1), Range32), $clone(new Range32.ptr(93053, 93071, 1), Range32), $clone(new Range32.ptr(93952, 94026, 1), Range32), $clone(new Range32.ptr(94032, 94208, 176), Range32), $clone(new Range32.ptr(94209, 100343, 1), Range32), $clone(new Range32.ptr(100352, 101589, 1), Range32), $clone(new Range32.ptr(101632, 101640, 1), Range32), $clone(new Range32.ptr(110592, 110878, 1), Range32), $clone(new Range32.ptr(110928, 110930, 1), Range32), $clone(new Range32.ptr(110948, 110951, 1), Range32), $clone(new Range32.ptr(110960, 111355, 1), Range32), $clone(new Range32.ptr(113664, 113770, 1), Range32), $clone(new Range32.ptr(113776, 113788, 1), Range32), $clone(new Range32.ptr(113792, 113800, 1), Range32), $clone(new Range32.ptr(113808, 113817, 1), Range32), $clone(new Range32.ptr(123136, 123180, 1), Range32), $clone(new Range32.ptr(123214, 123584, 370), Range32), $clone(new Range32.ptr(123585, 123627, 1), Range32), $clone(new Range32.ptr(124928, 125124, 1), Range32), $clone(new Range32.ptr(126464, 126467, 1), Range32), $clone(new Range32.ptr(126469, 126495, 1), Range32), $clone(new Range32.ptr(126497, 126498, 1), Range32), $clone(new Range32.ptr(126500, 126503, 3), Range32), $clone(new Range32.ptr(126505, 126514, 1), Range32), $clone(new Range32.ptr(126516, 126519, 1), Range32), $clone(new Range32.ptr(126521, 126523, 2), Range32), $clone(new Range32.ptr(126530, 126535, 5), Range32), $clone(new Range32.ptr(126537, 126541, 2), Range32), $clone(new Range32.ptr(126542, 126543, 1), Range32), $clone(new Range32.ptr(126545, 126546, 1), Range32), $clone(new Range32.ptr(126548, 126551, 3), Range32), $clone(new Range32.ptr(126553, 126561, 2), Range32), $clone(new Range32.ptr(126562, 126564, 2), Range32), $clone(new Range32.ptr(126567, 126570, 1), Range32), $clone(new Range32.ptr(126572, 126578, 1), Range32), $clone(new Range32.ptr(126580, 126583, 1), Range32), $clone(new Range32.ptr(126585, 126588, 1), Range32), $clone(new Range32.ptr(126590, 126592, 2), Range32), $clone(new Range32.ptr(126593, 126601, 1), Range32), $clone(new Range32.ptr(126603, 126619, 1), Range32), $clone(new Range32.ptr(126625, 126627, 1), Range32), $clone(new Range32.ptr(126629, 126633, 1), Range32), $clone(new Range32.ptr(126635, 126651, 1), Range32), $clone(new Range32.ptr(131072, 173789, 1), Range32), $clone(new Range32.ptr(173824, 177972, 1), Range32), $clone(new Range32.ptr(177984, 178205, 1), Range32), $clone(new Range32.ptr(178208, 183969, 1), Range32), $clone(new Range32.ptr(183984, 191456, 1), Range32), $clone(new Range32.ptr(194560, 195101, 1), Range32), $clone(new Range32.ptr(196608, 201546, 1), Range32)]), 1); + _Lt = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(453, 459, 3), Range16), $clone(new Range16.ptr(498, 8072, 7574), Range16), $clone(new Range16.ptr(8073, 8079, 1), Range16), $clone(new Range16.ptr(8088, 8095, 1), Range16), $clone(new Range16.ptr(8104, 8111, 1), Range16), $clone(new Range16.ptr(8124, 8140, 16), Range16), $clone(new Range16.ptr(8188, 8188, 1), Range16)]), sliceType$1.nil, 0); + _Lu = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(65, 90, 1), Range16), $clone(new Range16.ptr(192, 214, 1), Range16), $clone(new Range16.ptr(216, 222, 1), Range16), $clone(new Range16.ptr(256, 310, 2), Range16), $clone(new Range16.ptr(313, 327, 2), Range16), $clone(new Range16.ptr(330, 376, 2), Range16), $clone(new Range16.ptr(377, 381, 2), Range16), $clone(new Range16.ptr(385, 386, 1), Range16), $clone(new Range16.ptr(388, 390, 2), Range16), $clone(new Range16.ptr(391, 393, 2), Range16), $clone(new Range16.ptr(394, 395, 1), Range16), $clone(new Range16.ptr(398, 401, 1), Range16), $clone(new Range16.ptr(403, 404, 1), Range16), $clone(new Range16.ptr(406, 408, 1), Range16), $clone(new Range16.ptr(412, 413, 1), Range16), $clone(new Range16.ptr(415, 416, 1), Range16), $clone(new Range16.ptr(418, 422, 2), Range16), $clone(new Range16.ptr(423, 425, 2), Range16), $clone(new Range16.ptr(428, 430, 2), Range16), $clone(new Range16.ptr(431, 433, 2), Range16), $clone(new Range16.ptr(434, 435, 1), Range16), $clone(new Range16.ptr(437, 439, 2), Range16), $clone(new Range16.ptr(440, 444, 4), Range16), $clone(new Range16.ptr(452, 461, 3), Range16), $clone(new Range16.ptr(463, 475, 2), Range16), $clone(new Range16.ptr(478, 494, 2), Range16), $clone(new Range16.ptr(497, 500, 3), Range16), $clone(new Range16.ptr(502, 504, 1), Range16), $clone(new Range16.ptr(506, 562, 2), Range16), $clone(new Range16.ptr(570, 571, 1), Range16), $clone(new Range16.ptr(573, 574, 1), Range16), $clone(new Range16.ptr(577, 579, 2), Range16), $clone(new Range16.ptr(580, 582, 1), Range16), $clone(new Range16.ptr(584, 590, 2), Range16), $clone(new Range16.ptr(880, 882, 2), Range16), $clone(new Range16.ptr(886, 895, 9), Range16), $clone(new Range16.ptr(902, 904, 2), Range16), $clone(new Range16.ptr(905, 906, 1), Range16), $clone(new Range16.ptr(908, 910, 2), Range16), $clone(new Range16.ptr(911, 913, 2), Range16), $clone(new Range16.ptr(914, 929, 1), Range16), $clone(new Range16.ptr(931, 939, 1), Range16), $clone(new Range16.ptr(975, 978, 3), Range16), $clone(new Range16.ptr(979, 980, 1), Range16), $clone(new Range16.ptr(984, 1006, 2), Range16), $clone(new Range16.ptr(1012, 1015, 3), Range16), $clone(new Range16.ptr(1017, 1018, 1), Range16), $clone(new Range16.ptr(1021, 1071, 1), Range16), $clone(new Range16.ptr(1120, 1152, 2), Range16), $clone(new Range16.ptr(1162, 1216, 2), Range16), $clone(new Range16.ptr(1217, 1229, 2), Range16), $clone(new Range16.ptr(1232, 1326, 2), Range16), $clone(new Range16.ptr(1329, 1366, 1), Range16), $clone(new Range16.ptr(4256, 4293, 1), Range16), $clone(new Range16.ptr(4295, 4301, 6), Range16), $clone(new Range16.ptr(5024, 5109, 1), Range16), $clone(new Range16.ptr(7312, 7354, 1), Range16), $clone(new Range16.ptr(7357, 7359, 1), Range16), $clone(new Range16.ptr(7680, 7828, 2), Range16), $clone(new Range16.ptr(7838, 7934, 2), Range16), $clone(new Range16.ptr(7944, 7951, 1), Range16), $clone(new Range16.ptr(7960, 7965, 1), Range16), $clone(new Range16.ptr(7976, 7983, 1), Range16), $clone(new Range16.ptr(7992, 7999, 1), Range16), $clone(new Range16.ptr(8008, 8013, 1), Range16), $clone(new Range16.ptr(8025, 8031, 2), Range16), $clone(new Range16.ptr(8040, 8047, 1), Range16), $clone(new Range16.ptr(8120, 8123, 1), Range16), $clone(new Range16.ptr(8136, 8139, 1), Range16), $clone(new Range16.ptr(8152, 8155, 1), Range16), $clone(new Range16.ptr(8168, 8172, 1), Range16), $clone(new Range16.ptr(8184, 8187, 1), Range16), $clone(new Range16.ptr(8450, 8455, 5), Range16), $clone(new Range16.ptr(8459, 8461, 1), Range16), $clone(new Range16.ptr(8464, 8466, 1), Range16), $clone(new Range16.ptr(8469, 8473, 4), Range16), $clone(new Range16.ptr(8474, 8477, 1), Range16), $clone(new Range16.ptr(8484, 8490, 2), Range16), $clone(new Range16.ptr(8491, 8493, 1), Range16), $clone(new Range16.ptr(8496, 8499, 1), Range16), $clone(new Range16.ptr(8510, 8511, 1), Range16), $clone(new Range16.ptr(8517, 8579, 62), Range16), $clone(new Range16.ptr(11264, 11310, 1), Range16), $clone(new Range16.ptr(11360, 11362, 2), Range16), $clone(new Range16.ptr(11363, 11364, 1), Range16), $clone(new Range16.ptr(11367, 11373, 2), Range16), $clone(new Range16.ptr(11374, 11376, 1), Range16), $clone(new Range16.ptr(11378, 11381, 3), Range16), $clone(new Range16.ptr(11390, 11392, 1), Range16), $clone(new Range16.ptr(11394, 11490, 2), Range16), $clone(new Range16.ptr(11499, 11501, 2), Range16), $clone(new Range16.ptr(11506, 42560, 31054), Range16), $clone(new Range16.ptr(42562, 42604, 2), Range16), $clone(new Range16.ptr(42624, 42650, 2), Range16), $clone(new Range16.ptr(42786, 42798, 2), Range16), $clone(new Range16.ptr(42802, 42862, 2), Range16), $clone(new Range16.ptr(42873, 42877, 2), Range16), $clone(new Range16.ptr(42878, 42886, 2), Range16), $clone(new Range16.ptr(42891, 42893, 2), Range16), $clone(new Range16.ptr(42896, 42898, 2), Range16), $clone(new Range16.ptr(42902, 42922, 2), Range16), $clone(new Range16.ptr(42923, 42926, 1), Range16), $clone(new Range16.ptr(42928, 42932, 1), Range16), $clone(new Range16.ptr(42934, 42942, 2), Range16), $clone(new Range16.ptr(42946, 42948, 2), Range16), $clone(new Range16.ptr(42949, 42951, 1), Range16), $clone(new Range16.ptr(42953, 42997, 44), Range16), $clone(new Range16.ptr(65313, 65338, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(66560, 66599, 1), Range32), $clone(new Range32.ptr(66736, 66771, 1), Range32), $clone(new Range32.ptr(68736, 68786, 1), Range32), $clone(new Range32.ptr(71840, 71871, 1), Range32), $clone(new Range32.ptr(93760, 93791, 1), Range32), $clone(new Range32.ptr(119808, 119833, 1), Range32), $clone(new Range32.ptr(119860, 119885, 1), Range32), $clone(new Range32.ptr(119912, 119937, 1), Range32), $clone(new Range32.ptr(119964, 119966, 2), Range32), $clone(new Range32.ptr(119967, 119973, 3), Range32), $clone(new Range32.ptr(119974, 119977, 3), Range32), $clone(new Range32.ptr(119978, 119980, 1), Range32), $clone(new Range32.ptr(119982, 119989, 1), Range32), $clone(new Range32.ptr(120016, 120041, 1), Range32), $clone(new Range32.ptr(120068, 120069, 1), Range32), $clone(new Range32.ptr(120071, 120074, 1), Range32), $clone(new Range32.ptr(120077, 120084, 1), Range32), $clone(new Range32.ptr(120086, 120092, 1), Range32), $clone(new Range32.ptr(120120, 120121, 1), Range32), $clone(new Range32.ptr(120123, 120126, 1), Range32), $clone(new Range32.ptr(120128, 120132, 1), Range32), $clone(new Range32.ptr(120134, 120138, 4), Range32), $clone(new Range32.ptr(120139, 120144, 1), Range32), $clone(new Range32.ptr(120172, 120197, 1), Range32), $clone(new Range32.ptr(120224, 120249, 1), Range32), $clone(new Range32.ptr(120276, 120301, 1), Range32), $clone(new Range32.ptr(120328, 120353, 1), Range32), $clone(new Range32.ptr(120380, 120405, 1), Range32), $clone(new Range32.ptr(120432, 120457, 1), Range32), $clone(new Range32.ptr(120488, 120512, 1), Range32), $clone(new Range32.ptr(120546, 120570, 1), Range32), $clone(new Range32.ptr(120604, 120628, 1), Range32), $clone(new Range32.ptr(120662, 120686, 1), Range32), $clone(new Range32.ptr(120720, 120744, 1), Range32), $clone(new Range32.ptr(120778, 125184, 4406), Range32), $clone(new Range32.ptr(125185, 125217, 1), Range32)]), 3); + _M = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(768, 879, 1), Range16), $clone(new Range16.ptr(1155, 1161, 1), Range16), $clone(new Range16.ptr(1425, 1469, 1), Range16), $clone(new Range16.ptr(1471, 1473, 2), Range16), $clone(new Range16.ptr(1474, 1476, 2), Range16), $clone(new Range16.ptr(1477, 1479, 2), Range16), $clone(new Range16.ptr(1552, 1562, 1), Range16), $clone(new Range16.ptr(1611, 1631, 1), Range16), $clone(new Range16.ptr(1648, 1750, 102), Range16), $clone(new Range16.ptr(1751, 1756, 1), Range16), $clone(new Range16.ptr(1759, 1764, 1), Range16), $clone(new Range16.ptr(1767, 1768, 1), Range16), $clone(new Range16.ptr(1770, 1773, 1), Range16), $clone(new Range16.ptr(1809, 1840, 31), Range16), $clone(new Range16.ptr(1841, 1866, 1), Range16), $clone(new Range16.ptr(1958, 1968, 1), Range16), $clone(new Range16.ptr(2027, 2035, 1), Range16), $clone(new Range16.ptr(2045, 2070, 25), Range16), $clone(new Range16.ptr(2071, 2073, 1), Range16), $clone(new Range16.ptr(2075, 2083, 1), Range16), $clone(new Range16.ptr(2085, 2087, 1), Range16), $clone(new Range16.ptr(2089, 2093, 1), Range16), $clone(new Range16.ptr(2137, 2139, 1), Range16), $clone(new Range16.ptr(2259, 2273, 1), Range16), $clone(new Range16.ptr(2275, 2307, 1), Range16), $clone(new Range16.ptr(2362, 2364, 1), Range16), $clone(new Range16.ptr(2366, 2383, 1), Range16), $clone(new Range16.ptr(2385, 2391, 1), Range16), $clone(new Range16.ptr(2402, 2403, 1), Range16), $clone(new Range16.ptr(2433, 2435, 1), Range16), $clone(new Range16.ptr(2492, 2494, 2), Range16), $clone(new Range16.ptr(2495, 2500, 1), Range16), $clone(new Range16.ptr(2503, 2504, 1), Range16), $clone(new Range16.ptr(2507, 2509, 1), Range16), $clone(new Range16.ptr(2519, 2530, 11), Range16), $clone(new Range16.ptr(2531, 2558, 27), Range16), $clone(new Range16.ptr(2561, 2563, 1), Range16), $clone(new Range16.ptr(2620, 2622, 2), Range16), $clone(new Range16.ptr(2623, 2626, 1), Range16), $clone(new Range16.ptr(2631, 2632, 1), Range16), $clone(new Range16.ptr(2635, 2637, 1), Range16), $clone(new Range16.ptr(2641, 2672, 31), Range16), $clone(new Range16.ptr(2673, 2677, 4), Range16), $clone(new Range16.ptr(2689, 2691, 1), Range16), $clone(new Range16.ptr(2748, 2750, 2), Range16), $clone(new Range16.ptr(2751, 2757, 1), Range16), $clone(new Range16.ptr(2759, 2761, 1), Range16), $clone(new Range16.ptr(2763, 2765, 1), Range16), $clone(new Range16.ptr(2786, 2787, 1), Range16), $clone(new Range16.ptr(2810, 2815, 1), Range16), $clone(new Range16.ptr(2817, 2819, 1), Range16), $clone(new Range16.ptr(2876, 2878, 2), Range16), $clone(new Range16.ptr(2879, 2884, 1), Range16), $clone(new Range16.ptr(2887, 2888, 1), Range16), $clone(new Range16.ptr(2891, 2893, 1), Range16), $clone(new Range16.ptr(2901, 2903, 1), Range16), $clone(new Range16.ptr(2914, 2915, 1), Range16), $clone(new Range16.ptr(2946, 3006, 60), Range16), $clone(new Range16.ptr(3007, 3010, 1), Range16), $clone(new Range16.ptr(3014, 3016, 1), Range16), $clone(new Range16.ptr(3018, 3021, 1), Range16), $clone(new Range16.ptr(3031, 3072, 41), Range16), $clone(new Range16.ptr(3073, 3076, 1), Range16), $clone(new Range16.ptr(3134, 3140, 1), Range16), $clone(new Range16.ptr(3142, 3144, 1), Range16), $clone(new Range16.ptr(3146, 3149, 1), Range16), $clone(new Range16.ptr(3157, 3158, 1), Range16), $clone(new Range16.ptr(3170, 3171, 1), Range16), $clone(new Range16.ptr(3201, 3203, 1), Range16), $clone(new Range16.ptr(3260, 3262, 2), Range16), $clone(new Range16.ptr(3263, 3268, 1), Range16), $clone(new Range16.ptr(3270, 3272, 1), Range16), $clone(new Range16.ptr(3274, 3277, 1), Range16), $clone(new Range16.ptr(3285, 3286, 1), Range16), $clone(new Range16.ptr(3298, 3299, 1), Range16), $clone(new Range16.ptr(3328, 3331, 1), Range16), $clone(new Range16.ptr(3387, 3388, 1), Range16), $clone(new Range16.ptr(3390, 3396, 1), Range16), $clone(new Range16.ptr(3398, 3400, 1), Range16), $clone(new Range16.ptr(3402, 3405, 1), Range16), $clone(new Range16.ptr(3415, 3426, 11), Range16), $clone(new Range16.ptr(3427, 3457, 30), Range16), $clone(new Range16.ptr(3458, 3459, 1), Range16), $clone(new Range16.ptr(3530, 3535, 5), Range16), $clone(new Range16.ptr(3536, 3540, 1), Range16), $clone(new Range16.ptr(3542, 3544, 2), Range16), $clone(new Range16.ptr(3545, 3551, 1), Range16), $clone(new Range16.ptr(3570, 3571, 1), Range16), $clone(new Range16.ptr(3633, 3636, 3), Range16), $clone(new Range16.ptr(3637, 3642, 1), Range16), $clone(new Range16.ptr(3655, 3662, 1), Range16), $clone(new Range16.ptr(3761, 3764, 3), Range16), $clone(new Range16.ptr(3765, 3772, 1), Range16), $clone(new Range16.ptr(3784, 3789, 1), Range16), $clone(new Range16.ptr(3864, 3865, 1), Range16), $clone(new Range16.ptr(3893, 3897, 2), Range16), $clone(new Range16.ptr(3902, 3903, 1), Range16), $clone(new Range16.ptr(3953, 3972, 1), Range16), $clone(new Range16.ptr(3974, 3975, 1), Range16), $clone(new Range16.ptr(3981, 3991, 1), Range16), $clone(new Range16.ptr(3993, 4028, 1), Range16), $clone(new Range16.ptr(4038, 4139, 101), Range16), $clone(new Range16.ptr(4140, 4158, 1), Range16), $clone(new Range16.ptr(4182, 4185, 1), Range16), $clone(new Range16.ptr(4190, 4192, 1), Range16), $clone(new Range16.ptr(4194, 4196, 1), Range16), $clone(new Range16.ptr(4199, 4205, 1), Range16), $clone(new Range16.ptr(4209, 4212, 1), Range16), $clone(new Range16.ptr(4226, 4237, 1), Range16), $clone(new Range16.ptr(4239, 4250, 11), Range16), $clone(new Range16.ptr(4251, 4253, 1), Range16), $clone(new Range16.ptr(4957, 4959, 1), Range16), $clone(new Range16.ptr(5906, 5908, 1), Range16), $clone(new Range16.ptr(5938, 5940, 1), Range16), $clone(new Range16.ptr(5970, 5971, 1), Range16), $clone(new Range16.ptr(6002, 6003, 1), Range16), $clone(new Range16.ptr(6068, 6099, 1), Range16), $clone(new Range16.ptr(6109, 6155, 46), Range16), $clone(new Range16.ptr(6156, 6157, 1), Range16), $clone(new Range16.ptr(6277, 6278, 1), Range16), $clone(new Range16.ptr(6313, 6432, 119), Range16), $clone(new Range16.ptr(6433, 6443, 1), Range16), $clone(new Range16.ptr(6448, 6459, 1), Range16), $clone(new Range16.ptr(6679, 6683, 1), Range16), $clone(new Range16.ptr(6741, 6750, 1), Range16), $clone(new Range16.ptr(6752, 6780, 1), Range16), $clone(new Range16.ptr(6783, 6832, 49), Range16), $clone(new Range16.ptr(6833, 6848, 1), Range16), $clone(new Range16.ptr(6912, 6916, 1), Range16), $clone(new Range16.ptr(6964, 6980, 1), Range16), $clone(new Range16.ptr(7019, 7027, 1), Range16), $clone(new Range16.ptr(7040, 7042, 1), Range16), $clone(new Range16.ptr(7073, 7085, 1), Range16), $clone(new Range16.ptr(7142, 7155, 1), Range16), $clone(new Range16.ptr(7204, 7223, 1), Range16), $clone(new Range16.ptr(7376, 7378, 1), Range16), $clone(new Range16.ptr(7380, 7400, 1), Range16), $clone(new Range16.ptr(7405, 7412, 7), Range16), $clone(new Range16.ptr(7415, 7417, 1), Range16), $clone(new Range16.ptr(7616, 7673, 1), Range16), $clone(new Range16.ptr(7675, 7679, 1), Range16), $clone(new Range16.ptr(8400, 8432, 1), Range16), $clone(new Range16.ptr(11503, 11505, 1), Range16), $clone(new Range16.ptr(11647, 11744, 97), Range16), $clone(new Range16.ptr(11745, 11775, 1), Range16), $clone(new Range16.ptr(12330, 12335, 1), Range16), $clone(new Range16.ptr(12441, 12442, 1), Range16), $clone(new Range16.ptr(42607, 42610, 1), Range16), $clone(new Range16.ptr(42612, 42621, 1), Range16), $clone(new Range16.ptr(42654, 42655, 1), Range16), $clone(new Range16.ptr(42736, 42737, 1), Range16), $clone(new Range16.ptr(43010, 43014, 4), Range16), $clone(new Range16.ptr(43019, 43043, 24), Range16), $clone(new Range16.ptr(43044, 43047, 1), Range16), $clone(new Range16.ptr(43052, 43136, 84), Range16), $clone(new Range16.ptr(43137, 43188, 51), Range16), $clone(new Range16.ptr(43189, 43205, 1), Range16), $clone(new Range16.ptr(43232, 43249, 1), Range16), $clone(new Range16.ptr(43263, 43302, 39), Range16), $clone(new Range16.ptr(43303, 43309, 1), Range16), $clone(new Range16.ptr(43335, 43347, 1), Range16), $clone(new Range16.ptr(43392, 43395, 1), Range16), $clone(new Range16.ptr(43443, 43456, 1), Range16), $clone(new Range16.ptr(43493, 43561, 68), Range16), $clone(new Range16.ptr(43562, 43574, 1), Range16), $clone(new Range16.ptr(43587, 43596, 9), Range16), $clone(new Range16.ptr(43597, 43643, 46), Range16), $clone(new Range16.ptr(43644, 43645, 1), Range16), $clone(new Range16.ptr(43696, 43698, 2), Range16), $clone(new Range16.ptr(43699, 43700, 1), Range16), $clone(new Range16.ptr(43703, 43704, 1), Range16), $clone(new Range16.ptr(43710, 43711, 1), Range16), $clone(new Range16.ptr(43713, 43755, 42), Range16), $clone(new Range16.ptr(43756, 43759, 1), Range16), $clone(new Range16.ptr(43765, 43766, 1), Range16), $clone(new Range16.ptr(44003, 44010, 1), Range16), $clone(new Range16.ptr(44012, 44013, 1), Range16), $clone(new Range16.ptr(64286, 65024, 738), Range16), $clone(new Range16.ptr(65025, 65039, 1), Range16), $clone(new Range16.ptr(65056, 65071, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(66045, 66272, 227), Range32), $clone(new Range32.ptr(66422, 66426, 1), Range32), $clone(new Range32.ptr(68097, 68099, 1), Range32), $clone(new Range32.ptr(68101, 68102, 1), Range32), $clone(new Range32.ptr(68108, 68111, 1), Range32), $clone(new Range32.ptr(68152, 68154, 1), Range32), $clone(new Range32.ptr(68159, 68325, 166), Range32), $clone(new Range32.ptr(68326, 68900, 574), Range32), $clone(new Range32.ptr(68901, 68903, 1), Range32), $clone(new Range32.ptr(69291, 69292, 1), Range32), $clone(new Range32.ptr(69446, 69456, 1), Range32), $clone(new Range32.ptr(69632, 69634, 1), Range32), $clone(new Range32.ptr(69688, 69702, 1), Range32), $clone(new Range32.ptr(69759, 69762, 1), Range32), $clone(new Range32.ptr(69808, 69818, 1), Range32), $clone(new Range32.ptr(69888, 69890, 1), Range32), $clone(new Range32.ptr(69927, 69940, 1), Range32), $clone(new Range32.ptr(69957, 69958, 1), Range32), $clone(new Range32.ptr(70003, 70016, 13), Range32), $clone(new Range32.ptr(70017, 70018, 1), Range32), $clone(new Range32.ptr(70067, 70080, 1), Range32), $clone(new Range32.ptr(70089, 70092, 1), Range32), $clone(new Range32.ptr(70094, 70095, 1), Range32), $clone(new Range32.ptr(70188, 70199, 1), Range32), $clone(new Range32.ptr(70206, 70367, 161), Range32), $clone(new Range32.ptr(70368, 70378, 1), Range32), $clone(new Range32.ptr(70400, 70403, 1), Range32), $clone(new Range32.ptr(70459, 70460, 1), Range32), $clone(new Range32.ptr(70462, 70468, 1), Range32), $clone(new Range32.ptr(70471, 70472, 1), Range32), $clone(new Range32.ptr(70475, 70477, 1), Range32), $clone(new Range32.ptr(70487, 70498, 11), Range32), $clone(new Range32.ptr(70499, 70502, 3), Range32), $clone(new Range32.ptr(70503, 70508, 1), Range32), $clone(new Range32.ptr(70512, 70516, 1), Range32), $clone(new Range32.ptr(70709, 70726, 1), Range32), $clone(new Range32.ptr(70750, 70832, 82), Range32), $clone(new Range32.ptr(70833, 70851, 1), Range32), $clone(new Range32.ptr(71087, 71093, 1), Range32), $clone(new Range32.ptr(71096, 71104, 1), Range32), $clone(new Range32.ptr(71132, 71133, 1), Range32), $clone(new Range32.ptr(71216, 71232, 1), Range32), $clone(new Range32.ptr(71339, 71351, 1), Range32), $clone(new Range32.ptr(71453, 71467, 1), Range32), $clone(new Range32.ptr(71724, 71738, 1), Range32), $clone(new Range32.ptr(71984, 71989, 1), Range32), $clone(new Range32.ptr(71991, 71992, 1), Range32), $clone(new Range32.ptr(71995, 71998, 1), Range32), $clone(new Range32.ptr(72000, 72002, 2), Range32), $clone(new Range32.ptr(72003, 72145, 142), Range32), $clone(new Range32.ptr(72146, 72151, 1), Range32), $clone(new Range32.ptr(72154, 72160, 1), Range32), $clone(new Range32.ptr(72164, 72193, 29), Range32), $clone(new Range32.ptr(72194, 72202, 1), Range32), $clone(new Range32.ptr(72243, 72249, 1), Range32), $clone(new Range32.ptr(72251, 72254, 1), Range32), $clone(new Range32.ptr(72263, 72273, 10), Range32), $clone(new Range32.ptr(72274, 72283, 1), Range32), $clone(new Range32.ptr(72330, 72345, 1), Range32), $clone(new Range32.ptr(72751, 72758, 1), Range32), $clone(new Range32.ptr(72760, 72767, 1), Range32), $clone(new Range32.ptr(72850, 72871, 1), Range32), $clone(new Range32.ptr(72873, 72886, 1), Range32), $clone(new Range32.ptr(73009, 73014, 1), Range32), $clone(new Range32.ptr(73018, 73020, 2), Range32), $clone(new Range32.ptr(73021, 73023, 2), Range32), $clone(new Range32.ptr(73024, 73029, 1), Range32), $clone(new Range32.ptr(73031, 73098, 67), Range32), $clone(new Range32.ptr(73099, 73102, 1), Range32), $clone(new Range32.ptr(73104, 73105, 1), Range32), $clone(new Range32.ptr(73107, 73111, 1), Range32), $clone(new Range32.ptr(73459, 73462, 1), Range32), $clone(new Range32.ptr(92912, 92916, 1), Range32), $clone(new Range32.ptr(92976, 92982, 1), Range32), $clone(new Range32.ptr(94031, 94033, 2), Range32), $clone(new Range32.ptr(94034, 94087, 1), Range32), $clone(new Range32.ptr(94095, 94098, 1), Range32), $clone(new Range32.ptr(94180, 94192, 12), Range32), $clone(new Range32.ptr(94193, 113821, 19628), Range32), $clone(new Range32.ptr(113822, 119141, 5319), Range32), $clone(new Range32.ptr(119142, 119145, 1), Range32), $clone(new Range32.ptr(119149, 119154, 1), Range32), $clone(new Range32.ptr(119163, 119170, 1), Range32), $clone(new Range32.ptr(119173, 119179, 1), Range32), $clone(new Range32.ptr(119210, 119213, 1), Range32), $clone(new Range32.ptr(119362, 119364, 1), Range32), $clone(new Range32.ptr(121344, 121398, 1), Range32), $clone(new Range32.ptr(121403, 121452, 1), Range32), $clone(new Range32.ptr(121461, 121476, 15), Range32), $clone(new Range32.ptr(121499, 121503, 1), Range32), $clone(new Range32.ptr(121505, 121519, 1), Range32), $clone(new Range32.ptr(122880, 122886, 1), Range32), $clone(new Range32.ptr(122888, 122904, 1), Range32), $clone(new Range32.ptr(122907, 122913, 1), Range32), $clone(new Range32.ptr(122915, 122916, 1), Range32), $clone(new Range32.ptr(122918, 122922, 1), Range32), $clone(new Range32.ptr(123184, 123190, 1), Range32), $clone(new Range32.ptr(123628, 123631, 1), Range32), $clone(new Range32.ptr(125136, 125142, 1), Range32), $clone(new Range32.ptr(125252, 125258, 1), Range32), $clone(new Range32.ptr(917760, 917999, 1), Range32)]), 0); + _Mc = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(2307, 2363, 56), Range16), $clone(new Range16.ptr(2366, 2368, 1), Range16), $clone(new Range16.ptr(2377, 2380, 1), Range16), $clone(new Range16.ptr(2382, 2383, 1), Range16), $clone(new Range16.ptr(2434, 2435, 1), Range16), $clone(new Range16.ptr(2494, 2496, 1), Range16), $clone(new Range16.ptr(2503, 2504, 1), Range16), $clone(new Range16.ptr(2507, 2508, 1), Range16), $clone(new Range16.ptr(2519, 2563, 44), Range16), $clone(new Range16.ptr(2622, 2624, 1), Range16), $clone(new Range16.ptr(2691, 2750, 59), Range16), $clone(new Range16.ptr(2751, 2752, 1), Range16), $clone(new Range16.ptr(2761, 2763, 2), Range16), $clone(new Range16.ptr(2764, 2818, 54), Range16), $clone(new Range16.ptr(2819, 2878, 59), Range16), $clone(new Range16.ptr(2880, 2887, 7), Range16), $clone(new Range16.ptr(2888, 2891, 3), Range16), $clone(new Range16.ptr(2892, 2903, 11), Range16), $clone(new Range16.ptr(3006, 3007, 1), Range16), $clone(new Range16.ptr(3009, 3010, 1), Range16), $clone(new Range16.ptr(3014, 3016, 1), Range16), $clone(new Range16.ptr(3018, 3020, 1), Range16), $clone(new Range16.ptr(3031, 3073, 42), Range16), $clone(new Range16.ptr(3074, 3075, 1), Range16), $clone(new Range16.ptr(3137, 3140, 1), Range16), $clone(new Range16.ptr(3202, 3203, 1), Range16), $clone(new Range16.ptr(3262, 3264, 2), Range16), $clone(new Range16.ptr(3265, 3268, 1), Range16), $clone(new Range16.ptr(3271, 3272, 1), Range16), $clone(new Range16.ptr(3274, 3275, 1), Range16), $clone(new Range16.ptr(3285, 3286, 1), Range16), $clone(new Range16.ptr(3330, 3331, 1), Range16), $clone(new Range16.ptr(3390, 3392, 1), Range16), $clone(new Range16.ptr(3398, 3400, 1), Range16), $clone(new Range16.ptr(3402, 3404, 1), Range16), $clone(new Range16.ptr(3415, 3458, 43), Range16), $clone(new Range16.ptr(3459, 3535, 76), Range16), $clone(new Range16.ptr(3536, 3537, 1), Range16), $clone(new Range16.ptr(3544, 3551, 1), Range16), $clone(new Range16.ptr(3570, 3571, 1), Range16), $clone(new Range16.ptr(3902, 3903, 1), Range16), $clone(new Range16.ptr(3967, 4139, 172), Range16), $clone(new Range16.ptr(4140, 4145, 5), Range16), $clone(new Range16.ptr(4152, 4155, 3), Range16), $clone(new Range16.ptr(4156, 4182, 26), Range16), $clone(new Range16.ptr(4183, 4194, 11), Range16), $clone(new Range16.ptr(4195, 4196, 1), Range16), $clone(new Range16.ptr(4199, 4205, 1), Range16), $clone(new Range16.ptr(4227, 4228, 1), Range16), $clone(new Range16.ptr(4231, 4236, 1), Range16), $clone(new Range16.ptr(4239, 4250, 11), Range16), $clone(new Range16.ptr(4251, 4252, 1), Range16), $clone(new Range16.ptr(6070, 6078, 8), Range16), $clone(new Range16.ptr(6079, 6085, 1), Range16), $clone(new Range16.ptr(6087, 6088, 1), Range16), $clone(new Range16.ptr(6435, 6438, 1), Range16), $clone(new Range16.ptr(6441, 6443, 1), Range16), $clone(new Range16.ptr(6448, 6449, 1), Range16), $clone(new Range16.ptr(6451, 6456, 1), Range16), $clone(new Range16.ptr(6681, 6682, 1), Range16), $clone(new Range16.ptr(6741, 6743, 2), Range16), $clone(new Range16.ptr(6753, 6755, 2), Range16), $clone(new Range16.ptr(6756, 6765, 9), Range16), $clone(new Range16.ptr(6766, 6770, 1), Range16), $clone(new Range16.ptr(6916, 6965, 49), Range16), $clone(new Range16.ptr(6971, 6973, 2), Range16), $clone(new Range16.ptr(6974, 6977, 1), Range16), $clone(new Range16.ptr(6979, 6980, 1), Range16), $clone(new Range16.ptr(7042, 7073, 31), Range16), $clone(new Range16.ptr(7078, 7079, 1), Range16), $clone(new Range16.ptr(7082, 7143, 61), Range16), $clone(new Range16.ptr(7146, 7148, 1), Range16), $clone(new Range16.ptr(7150, 7154, 4), Range16), $clone(new Range16.ptr(7155, 7204, 49), Range16), $clone(new Range16.ptr(7205, 7211, 1), Range16), $clone(new Range16.ptr(7220, 7221, 1), Range16), $clone(new Range16.ptr(7393, 7415, 22), Range16), $clone(new Range16.ptr(12334, 12335, 1), Range16), $clone(new Range16.ptr(43043, 43044, 1), Range16), $clone(new Range16.ptr(43047, 43136, 89), Range16), $clone(new Range16.ptr(43137, 43188, 51), Range16), $clone(new Range16.ptr(43189, 43203, 1), Range16), $clone(new Range16.ptr(43346, 43347, 1), Range16), $clone(new Range16.ptr(43395, 43444, 49), Range16), $clone(new Range16.ptr(43445, 43450, 5), Range16), $clone(new Range16.ptr(43451, 43454, 3), Range16), $clone(new Range16.ptr(43455, 43456, 1), Range16), $clone(new Range16.ptr(43567, 43568, 1), Range16), $clone(new Range16.ptr(43571, 43572, 1), Range16), $clone(new Range16.ptr(43597, 43643, 46), Range16), $clone(new Range16.ptr(43645, 43755, 110), Range16), $clone(new Range16.ptr(43758, 43759, 1), Range16), $clone(new Range16.ptr(43765, 44003, 238), Range16), $clone(new Range16.ptr(44004, 44006, 2), Range16), $clone(new Range16.ptr(44007, 44009, 2), Range16), $clone(new Range16.ptr(44010, 44012, 2), Range16)]), new sliceType$1([$clone(new Range32.ptr(69632, 69634, 2), Range32), $clone(new Range32.ptr(69762, 69808, 46), Range32), $clone(new Range32.ptr(69809, 69810, 1), Range32), $clone(new Range32.ptr(69815, 69816, 1), Range32), $clone(new Range32.ptr(69932, 69957, 25), Range32), $clone(new Range32.ptr(69958, 70018, 60), Range32), $clone(new Range32.ptr(70067, 70069, 1), Range32), $clone(new Range32.ptr(70079, 70080, 1), Range32), $clone(new Range32.ptr(70094, 70188, 94), Range32), $clone(new Range32.ptr(70189, 70190, 1), Range32), $clone(new Range32.ptr(70194, 70195, 1), Range32), $clone(new Range32.ptr(70197, 70368, 171), Range32), $clone(new Range32.ptr(70369, 70370, 1), Range32), $clone(new Range32.ptr(70402, 70403, 1), Range32), $clone(new Range32.ptr(70462, 70463, 1), Range32), $clone(new Range32.ptr(70465, 70468, 1), Range32), $clone(new Range32.ptr(70471, 70472, 1), Range32), $clone(new Range32.ptr(70475, 70477, 1), Range32), $clone(new Range32.ptr(70487, 70498, 11), Range32), $clone(new Range32.ptr(70499, 70709, 210), Range32), $clone(new Range32.ptr(70710, 70711, 1), Range32), $clone(new Range32.ptr(70720, 70721, 1), Range32), $clone(new Range32.ptr(70725, 70832, 107), Range32), $clone(new Range32.ptr(70833, 70834, 1), Range32), $clone(new Range32.ptr(70841, 70843, 2), Range32), $clone(new Range32.ptr(70844, 70846, 1), Range32), $clone(new Range32.ptr(70849, 71087, 238), Range32), $clone(new Range32.ptr(71088, 71089, 1), Range32), $clone(new Range32.ptr(71096, 71099, 1), Range32), $clone(new Range32.ptr(71102, 71216, 114), Range32), $clone(new Range32.ptr(71217, 71218, 1), Range32), $clone(new Range32.ptr(71227, 71228, 1), Range32), $clone(new Range32.ptr(71230, 71340, 110), Range32), $clone(new Range32.ptr(71342, 71343, 1), Range32), $clone(new Range32.ptr(71350, 71456, 106), Range32), $clone(new Range32.ptr(71457, 71462, 5), Range32), $clone(new Range32.ptr(71724, 71726, 1), Range32), $clone(new Range32.ptr(71736, 71984, 248), Range32), $clone(new Range32.ptr(71985, 71989, 1), Range32), $clone(new Range32.ptr(71991, 71992, 1), Range32), $clone(new Range32.ptr(71997, 72000, 3), Range32), $clone(new Range32.ptr(72002, 72145, 143), Range32), $clone(new Range32.ptr(72146, 72147, 1), Range32), $clone(new Range32.ptr(72156, 72159, 1), Range32), $clone(new Range32.ptr(72164, 72249, 85), Range32), $clone(new Range32.ptr(72279, 72280, 1), Range32), $clone(new Range32.ptr(72343, 72751, 408), Range32), $clone(new Range32.ptr(72766, 72873, 107), Range32), $clone(new Range32.ptr(72881, 72884, 3), Range32), $clone(new Range32.ptr(73098, 73102, 1), Range32), $clone(new Range32.ptr(73107, 73108, 1), Range32), $clone(new Range32.ptr(73110, 73461, 351), Range32), $clone(new Range32.ptr(73462, 94033, 20571), Range32), $clone(new Range32.ptr(94034, 94087, 1), Range32), $clone(new Range32.ptr(94192, 94193, 1), Range32), $clone(new Range32.ptr(119141, 119142, 1), Range32), $clone(new Range32.ptr(119149, 119154, 1), Range32)]), 0); + _Me = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(1160, 1161, 1), Range16), $clone(new Range16.ptr(6846, 8413, 1567), Range16), $clone(new Range16.ptr(8414, 8416, 1), Range16), $clone(new Range16.ptr(8418, 8420, 1), Range16), $clone(new Range16.ptr(42608, 42610, 1), Range16)]), sliceType$1.nil, 0); + _Mn = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(768, 879, 1), Range16), $clone(new Range16.ptr(1155, 1159, 1), Range16), $clone(new Range16.ptr(1425, 1469, 1), Range16), $clone(new Range16.ptr(1471, 1473, 2), Range16), $clone(new Range16.ptr(1474, 1476, 2), Range16), $clone(new Range16.ptr(1477, 1479, 2), Range16), $clone(new Range16.ptr(1552, 1562, 1), Range16), $clone(new Range16.ptr(1611, 1631, 1), Range16), $clone(new Range16.ptr(1648, 1750, 102), Range16), $clone(new Range16.ptr(1751, 1756, 1), Range16), $clone(new Range16.ptr(1759, 1764, 1), Range16), $clone(new Range16.ptr(1767, 1768, 1), Range16), $clone(new Range16.ptr(1770, 1773, 1), Range16), $clone(new Range16.ptr(1809, 1840, 31), Range16), $clone(new Range16.ptr(1841, 1866, 1), Range16), $clone(new Range16.ptr(1958, 1968, 1), Range16), $clone(new Range16.ptr(2027, 2035, 1), Range16), $clone(new Range16.ptr(2045, 2070, 25), Range16), $clone(new Range16.ptr(2071, 2073, 1), Range16), $clone(new Range16.ptr(2075, 2083, 1), Range16), $clone(new Range16.ptr(2085, 2087, 1), Range16), $clone(new Range16.ptr(2089, 2093, 1), Range16), $clone(new Range16.ptr(2137, 2139, 1), Range16), $clone(new Range16.ptr(2259, 2273, 1), Range16), $clone(new Range16.ptr(2275, 2306, 1), Range16), $clone(new Range16.ptr(2362, 2364, 2), Range16), $clone(new Range16.ptr(2369, 2376, 1), Range16), $clone(new Range16.ptr(2381, 2385, 4), Range16), $clone(new Range16.ptr(2386, 2391, 1), Range16), $clone(new Range16.ptr(2402, 2403, 1), Range16), $clone(new Range16.ptr(2433, 2492, 59), Range16), $clone(new Range16.ptr(2497, 2500, 1), Range16), $clone(new Range16.ptr(2509, 2530, 21), Range16), $clone(new Range16.ptr(2531, 2558, 27), Range16), $clone(new Range16.ptr(2561, 2562, 1), Range16), $clone(new Range16.ptr(2620, 2625, 5), Range16), $clone(new Range16.ptr(2626, 2631, 5), Range16), $clone(new Range16.ptr(2632, 2635, 3), Range16), $clone(new Range16.ptr(2636, 2637, 1), Range16), $clone(new Range16.ptr(2641, 2672, 31), Range16), $clone(new Range16.ptr(2673, 2677, 4), Range16), $clone(new Range16.ptr(2689, 2690, 1), Range16), $clone(new Range16.ptr(2748, 2753, 5), Range16), $clone(new Range16.ptr(2754, 2757, 1), Range16), $clone(new Range16.ptr(2759, 2760, 1), Range16), $clone(new Range16.ptr(2765, 2786, 21), Range16), $clone(new Range16.ptr(2787, 2810, 23), Range16), $clone(new Range16.ptr(2811, 2815, 1), Range16), $clone(new Range16.ptr(2817, 2876, 59), Range16), $clone(new Range16.ptr(2879, 2881, 2), Range16), $clone(new Range16.ptr(2882, 2884, 1), Range16), $clone(new Range16.ptr(2893, 2901, 8), Range16), $clone(new Range16.ptr(2902, 2914, 12), Range16), $clone(new Range16.ptr(2915, 2946, 31), Range16), $clone(new Range16.ptr(3008, 3021, 13), Range16), $clone(new Range16.ptr(3072, 3076, 4), Range16), $clone(new Range16.ptr(3134, 3136, 1), Range16), $clone(new Range16.ptr(3142, 3144, 1), Range16), $clone(new Range16.ptr(3146, 3149, 1), Range16), $clone(new Range16.ptr(3157, 3158, 1), Range16), $clone(new Range16.ptr(3170, 3171, 1), Range16), $clone(new Range16.ptr(3201, 3260, 59), Range16), $clone(new Range16.ptr(3263, 3270, 7), Range16), $clone(new Range16.ptr(3276, 3277, 1), Range16), $clone(new Range16.ptr(3298, 3299, 1), Range16), $clone(new Range16.ptr(3328, 3329, 1), Range16), $clone(new Range16.ptr(3387, 3388, 1), Range16), $clone(new Range16.ptr(3393, 3396, 1), Range16), $clone(new Range16.ptr(3405, 3426, 21), Range16), $clone(new Range16.ptr(3427, 3457, 30), Range16), $clone(new Range16.ptr(3530, 3538, 8), Range16), $clone(new Range16.ptr(3539, 3540, 1), Range16), $clone(new Range16.ptr(3542, 3633, 91), Range16), $clone(new Range16.ptr(3636, 3642, 1), Range16), $clone(new Range16.ptr(3655, 3662, 1), Range16), $clone(new Range16.ptr(3761, 3764, 3), Range16), $clone(new Range16.ptr(3765, 3772, 1), Range16), $clone(new Range16.ptr(3784, 3789, 1), Range16), $clone(new Range16.ptr(3864, 3865, 1), Range16), $clone(new Range16.ptr(3893, 3897, 2), Range16), $clone(new Range16.ptr(3953, 3966, 1), Range16), $clone(new Range16.ptr(3968, 3972, 1), Range16), $clone(new Range16.ptr(3974, 3975, 1), Range16), $clone(new Range16.ptr(3981, 3991, 1), Range16), $clone(new Range16.ptr(3993, 4028, 1), Range16), $clone(new Range16.ptr(4038, 4141, 103), Range16), $clone(new Range16.ptr(4142, 4144, 1), Range16), $clone(new Range16.ptr(4146, 4151, 1), Range16), $clone(new Range16.ptr(4153, 4154, 1), Range16), $clone(new Range16.ptr(4157, 4158, 1), Range16), $clone(new Range16.ptr(4184, 4185, 1), Range16), $clone(new Range16.ptr(4190, 4192, 1), Range16), $clone(new Range16.ptr(4209, 4212, 1), Range16), $clone(new Range16.ptr(4226, 4229, 3), Range16), $clone(new Range16.ptr(4230, 4237, 7), Range16), $clone(new Range16.ptr(4253, 4957, 704), Range16), $clone(new Range16.ptr(4958, 4959, 1), Range16), $clone(new Range16.ptr(5906, 5908, 1), Range16), $clone(new Range16.ptr(5938, 5940, 1), Range16), $clone(new Range16.ptr(5970, 5971, 1), Range16), $clone(new Range16.ptr(6002, 6003, 1), Range16), $clone(new Range16.ptr(6068, 6069, 1), Range16), $clone(new Range16.ptr(6071, 6077, 1), Range16), $clone(new Range16.ptr(6086, 6089, 3), Range16), $clone(new Range16.ptr(6090, 6099, 1), Range16), $clone(new Range16.ptr(6109, 6155, 46), Range16), $clone(new Range16.ptr(6156, 6157, 1), Range16), $clone(new Range16.ptr(6277, 6278, 1), Range16), $clone(new Range16.ptr(6313, 6432, 119), Range16), $clone(new Range16.ptr(6433, 6434, 1), Range16), $clone(new Range16.ptr(6439, 6440, 1), Range16), $clone(new Range16.ptr(6450, 6457, 7), Range16), $clone(new Range16.ptr(6458, 6459, 1), Range16), $clone(new Range16.ptr(6679, 6680, 1), Range16), $clone(new Range16.ptr(6683, 6742, 59), Range16), $clone(new Range16.ptr(6744, 6750, 1), Range16), $clone(new Range16.ptr(6752, 6754, 2), Range16), $clone(new Range16.ptr(6757, 6764, 1), Range16), $clone(new Range16.ptr(6771, 6780, 1), Range16), $clone(new Range16.ptr(6783, 6832, 49), Range16), $clone(new Range16.ptr(6833, 6845, 1), Range16), $clone(new Range16.ptr(6847, 6848, 1), Range16), $clone(new Range16.ptr(6912, 6915, 1), Range16), $clone(new Range16.ptr(6964, 6966, 2), Range16), $clone(new Range16.ptr(6967, 6970, 1), Range16), $clone(new Range16.ptr(6972, 6978, 6), Range16), $clone(new Range16.ptr(7019, 7027, 1), Range16), $clone(new Range16.ptr(7040, 7041, 1), Range16), $clone(new Range16.ptr(7074, 7077, 1), Range16), $clone(new Range16.ptr(7080, 7081, 1), Range16), $clone(new Range16.ptr(7083, 7085, 1), Range16), $clone(new Range16.ptr(7142, 7144, 2), Range16), $clone(new Range16.ptr(7145, 7149, 4), Range16), $clone(new Range16.ptr(7151, 7153, 1), Range16), $clone(new Range16.ptr(7212, 7219, 1), Range16), $clone(new Range16.ptr(7222, 7223, 1), Range16), $clone(new Range16.ptr(7376, 7378, 1), Range16), $clone(new Range16.ptr(7380, 7392, 1), Range16), $clone(new Range16.ptr(7394, 7400, 1), Range16), $clone(new Range16.ptr(7405, 7412, 7), Range16), $clone(new Range16.ptr(7416, 7417, 1), Range16), $clone(new Range16.ptr(7616, 7673, 1), Range16), $clone(new Range16.ptr(7675, 7679, 1), Range16), $clone(new Range16.ptr(8400, 8412, 1), Range16), $clone(new Range16.ptr(8417, 8421, 4), Range16), $clone(new Range16.ptr(8422, 8432, 1), Range16), $clone(new Range16.ptr(11503, 11505, 1), Range16), $clone(new Range16.ptr(11647, 11744, 97), Range16), $clone(new Range16.ptr(11745, 11775, 1), Range16), $clone(new Range16.ptr(12330, 12333, 1), Range16), $clone(new Range16.ptr(12441, 12442, 1), Range16), $clone(new Range16.ptr(42607, 42612, 5), Range16), $clone(new Range16.ptr(42613, 42621, 1), Range16), $clone(new Range16.ptr(42654, 42655, 1), Range16), $clone(new Range16.ptr(42736, 42737, 1), Range16), $clone(new Range16.ptr(43010, 43014, 4), Range16), $clone(new Range16.ptr(43019, 43045, 26), Range16), $clone(new Range16.ptr(43046, 43052, 6), Range16), $clone(new Range16.ptr(43204, 43205, 1), Range16), $clone(new Range16.ptr(43232, 43249, 1), Range16), $clone(new Range16.ptr(43263, 43302, 39), Range16), $clone(new Range16.ptr(43303, 43309, 1), Range16), $clone(new Range16.ptr(43335, 43345, 1), Range16), $clone(new Range16.ptr(43392, 43394, 1), Range16), $clone(new Range16.ptr(43443, 43446, 3), Range16), $clone(new Range16.ptr(43447, 43449, 1), Range16), $clone(new Range16.ptr(43452, 43453, 1), Range16), $clone(new Range16.ptr(43493, 43561, 68), Range16), $clone(new Range16.ptr(43562, 43566, 1), Range16), $clone(new Range16.ptr(43569, 43570, 1), Range16), $clone(new Range16.ptr(43573, 43574, 1), Range16), $clone(new Range16.ptr(43587, 43596, 9), Range16), $clone(new Range16.ptr(43644, 43696, 52), Range16), $clone(new Range16.ptr(43698, 43700, 1), Range16), $clone(new Range16.ptr(43703, 43704, 1), Range16), $clone(new Range16.ptr(43710, 43711, 1), Range16), $clone(new Range16.ptr(43713, 43756, 43), Range16), $clone(new Range16.ptr(43757, 43766, 9), Range16), $clone(new Range16.ptr(44005, 44008, 3), Range16), $clone(new Range16.ptr(44013, 64286, 20273), Range16), $clone(new Range16.ptr(65024, 65039, 1), Range16), $clone(new Range16.ptr(65056, 65071, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(66045, 66272, 227), Range32), $clone(new Range32.ptr(66422, 66426, 1), Range32), $clone(new Range32.ptr(68097, 68099, 1), Range32), $clone(new Range32.ptr(68101, 68102, 1), Range32), $clone(new Range32.ptr(68108, 68111, 1), Range32), $clone(new Range32.ptr(68152, 68154, 1), Range32), $clone(new Range32.ptr(68159, 68325, 166), Range32), $clone(new Range32.ptr(68326, 68900, 574), Range32), $clone(new Range32.ptr(68901, 68903, 1), Range32), $clone(new Range32.ptr(69291, 69292, 1), Range32), $clone(new Range32.ptr(69446, 69456, 1), Range32), $clone(new Range32.ptr(69633, 69688, 55), Range32), $clone(new Range32.ptr(69689, 69702, 1), Range32), $clone(new Range32.ptr(69759, 69761, 1), Range32), $clone(new Range32.ptr(69811, 69814, 1), Range32), $clone(new Range32.ptr(69817, 69818, 1), Range32), $clone(new Range32.ptr(69888, 69890, 1), Range32), $clone(new Range32.ptr(69927, 69931, 1), Range32), $clone(new Range32.ptr(69933, 69940, 1), Range32), $clone(new Range32.ptr(70003, 70016, 13), Range32), $clone(new Range32.ptr(70017, 70070, 53), Range32), $clone(new Range32.ptr(70071, 70078, 1), Range32), $clone(new Range32.ptr(70089, 70092, 1), Range32), $clone(new Range32.ptr(70095, 70191, 96), Range32), $clone(new Range32.ptr(70192, 70193, 1), Range32), $clone(new Range32.ptr(70196, 70198, 2), Range32), $clone(new Range32.ptr(70199, 70206, 7), Range32), $clone(new Range32.ptr(70367, 70371, 4), Range32), $clone(new Range32.ptr(70372, 70378, 1), Range32), $clone(new Range32.ptr(70400, 70401, 1), Range32), $clone(new Range32.ptr(70459, 70460, 1), Range32), $clone(new Range32.ptr(70464, 70502, 38), Range32), $clone(new Range32.ptr(70503, 70508, 1), Range32), $clone(new Range32.ptr(70512, 70516, 1), Range32), $clone(new Range32.ptr(70712, 70719, 1), Range32), $clone(new Range32.ptr(70722, 70724, 1), Range32), $clone(new Range32.ptr(70726, 70750, 24), Range32), $clone(new Range32.ptr(70835, 70840, 1), Range32), $clone(new Range32.ptr(70842, 70847, 5), Range32), $clone(new Range32.ptr(70848, 70850, 2), Range32), $clone(new Range32.ptr(70851, 71090, 239), Range32), $clone(new Range32.ptr(71091, 71093, 1), Range32), $clone(new Range32.ptr(71100, 71101, 1), Range32), $clone(new Range32.ptr(71103, 71104, 1), Range32), $clone(new Range32.ptr(71132, 71133, 1), Range32), $clone(new Range32.ptr(71219, 71226, 1), Range32), $clone(new Range32.ptr(71229, 71231, 2), Range32), $clone(new Range32.ptr(71232, 71339, 107), Range32), $clone(new Range32.ptr(71341, 71344, 3), Range32), $clone(new Range32.ptr(71345, 71349, 1), Range32), $clone(new Range32.ptr(71351, 71453, 102), Range32), $clone(new Range32.ptr(71454, 71455, 1), Range32), $clone(new Range32.ptr(71458, 71461, 1), Range32), $clone(new Range32.ptr(71463, 71467, 1), Range32), $clone(new Range32.ptr(71727, 71735, 1), Range32), $clone(new Range32.ptr(71737, 71738, 1), Range32), $clone(new Range32.ptr(71995, 71996, 1), Range32), $clone(new Range32.ptr(71998, 72003, 5), Range32), $clone(new Range32.ptr(72148, 72151, 1), Range32), $clone(new Range32.ptr(72154, 72155, 1), Range32), $clone(new Range32.ptr(72160, 72193, 33), Range32), $clone(new Range32.ptr(72194, 72202, 1), Range32), $clone(new Range32.ptr(72243, 72248, 1), Range32), $clone(new Range32.ptr(72251, 72254, 1), Range32), $clone(new Range32.ptr(72263, 72273, 10), Range32), $clone(new Range32.ptr(72274, 72278, 1), Range32), $clone(new Range32.ptr(72281, 72283, 1), Range32), $clone(new Range32.ptr(72330, 72342, 1), Range32), $clone(new Range32.ptr(72344, 72345, 1), Range32), $clone(new Range32.ptr(72752, 72758, 1), Range32), $clone(new Range32.ptr(72760, 72765, 1), Range32), $clone(new Range32.ptr(72767, 72850, 83), Range32), $clone(new Range32.ptr(72851, 72871, 1), Range32), $clone(new Range32.ptr(72874, 72880, 1), Range32), $clone(new Range32.ptr(72882, 72883, 1), Range32), $clone(new Range32.ptr(72885, 72886, 1), Range32), $clone(new Range32.ptr(73009, 73014, 1), Range32), $clone(new Range32.ptr(73018, 73020, 2), Range32), $clone(new Range32.ptr(73021, 73023, 2), Range32), $clone(new Range32.ptr(73024, 73029, 1), Range32), $clone(new Range32.ptr(73031, 73104, 73), Range32), $clone(new Range32.ptr(73105, 73109, 4), Range32), $clone(new Range32.ptr(73111, 73459, 348), Range32), $clone(new Range32.ptr(73460, 92912, 19452), Range32), $clone(new Range32.ptr(92913, 92916, 1), Range32), $clone(new Range32.ptr(92976, 92982, 1), Range32), $clone(new Range32.ptr(94031, 94095, 64), Range32), $clone(new Range32.ptr(94096, 94098, 1), Range32), $clone(new Range32.ptr(94180, 113821, 19641), Range32), $clone(new Range32.ptr(113822, 119143, 5321), Range32), $clone(new Range32.ptr(119144, 119145, 1), Range32), $clone(new Range32.ptr(119163, 119170, 1), Range32), $clone(new Range32.ptr(119173, 119179, 1), Range32), $clone(new Range32.ptr(119210, 119213, 1), Range32), $clone(new Range32.ptr(119362, 119364, 1), Range32), $clone(new Range32.ptr(121344, 121398, 1), Range32), $clone(new Range32.ptr(121403, 121452, 1), Range32), $clone(new Range32.ptr(121461, 121476, 15), Range32), $clone(new Range32.ptr(121499, 121503, 1), Range32), $clone(new Range32.ptr(121505, 121519, 1), Range32), $clone(new Range32.ptr(122880, 122886, 1), Range32), $clone(new Range32.ptr(122888, 122904, 1), Range32), $clone(new Range32.ptr(122907, 122913, 1), Range32), $clone(new Range32.ptr(122915, 122916, 1), Range32), $clone(new Range32.ptr(122918, 122922, 1), Range32), $clone(new Range32.ptr(123184, 123190, 1), Range32), $clone(new Range32.ptr(123628, 123631, 1), Range32), $clone(new Range32.ptr(125136, 125142, 1), Range32), $clone(new Range32.ptr(125252, 125258, 1), Range32), $clone(new Range32.ptr(917760, 917999, 1), Range32)]), 0); + _N = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(48, 57, 1), Range16), $clone(new Range16.ptr(178, 179, 1), Range16), $clone(new Range16.ptr(185, 188, 3), Range16), $clone(new Range16.ptr(189, 190, 1), Range16), $clone(new Range16.ptr(1632, 1641, 1), Range16), $clone(new Range16.ptr(1776, 1785, 1), Range16), $clone(new Range16.ptr(1984, 1993, 1), Range16), $clone(new Range16.ptr(2406, 2415, 1), Range16), $clone(new Range16.ptr(2534, 2543, 1), Range16), $clone(new Range16.ptr(2548, 2553, 1), Range16), $clone(new Range16.ptr(2662, 2671, 1), Range16), $clone(new Range16.ptr(2790, 2799, 1), Range16), $clone(new Range16.ptr(2918, 2927, 1), Range16), $clone(new Range16.ptr(2930, 2935, 1), Range16), $clone(new Range16.ptr(3046, 3058, 1), Range16), $clone(new Range16.ptr(3174, 3183, 1), Range16), $clone(new Range16.ptr(3192, 3198, 1), Range16), $clone(new Range16.ptr(3302, 3311, 1), Range16), $clone(new Range16.ptr(3416, 3422, 1), Range16), $clone(new Range16.ptr(3430, 3448, 1), Range16), $clone(new Range16.ptr(3558, 3567, 1), Range16), $clone(new Range16.ptr(3664, 3673, 1), Range16), $clone(new Range16.ptr(3792, 3801, 1), Range16), $clone(new Range16.ptr(3872, 3891, 1), Range16), $clone(new Range16.ptr(4160, 4169, 1), Range16), $clone(new Range16.ptr(4240, 4249, 1), Range16), $clone(new Range16.ptr(4969, 4988, 1), Range16), $clone(new Range16.ptr(5870, 5872, 1), Range16), $clone(new Range16.ptr(6112, 6121, 1), Range16), $clone(new Range16.ptr(6128, 6137, 1), Range16), $clone(new Range16.ptr(6160, 6169, 1), Range16), $clone(new Range16.ptr(6470, 6479, 1), Range16), $clone(new Range16.ptr(6608, 6618, 1), Range16), $clone(new Range16.ptr(6784, 6793, 1), Range16), $clone(new Range16.ptr(6800, 6809, 1), Range16), $clone(new Range16.ptr(6992, 7001, 1), Range16), $clone(new Range16.ptr(7088, 7097, 1), Range16), $clone(new Range16.ptr(7232, 7241, 1), Range16), $clone(new Range16.ptr(7248, 7257, 1), Range16), $clone(new Range16.ptr(8304, 8308, 4), Range16), $clone(new Range16.ptr(8309, 8313, 1), Range16), $clone(new Range16.ptr(8320, 8329, 1), Range16), $clone(new Range16.ptr(8528, 8578, 1), Range16), $clone(new Range16.ptr(8581, 8585, 1), Range16), $clone(new Range16.ptr(9312, 9371, 1), Range16), $clone(new Range16.ptr(9450, 9471, 1), Range16), $clone(new Range16.ptr(10102, 10131, 1), Range16), $clone(new Range16.ptr(11517, 12295, 778), Range16), $clone(new Range16.ptr(12321, 12329, 1), Range16), $clone(new Range16.ptr(12344, 12346, 1), Range16), $clone(new Range16.ptr(12690, 12693, 1), Range16), $clone(new Range16.ptr(12832, 12841, 1), Range16), $clone(new Range16.ptr(12872, 12879, 1), Range16), $clone(new Range16.ptr(12881, 12895, 1), Range16), $clone(new Range16.ptr(12928, 12937, 1), Range16), $clone(new Range16.ptr(12977, 12991, 1), Range16), $clone(new Range16.ptr(42528, 42537, 1), Range16), $clone(new Range16.ptr(42726, 42735, 1), Range16), $clone(new Range16.ptr(43056, 43061, 1), Range16), $clone(new Range16.ptr(43216, 43225, 1), Range16), $clone(new Range16.ptr(43264, 43273, 1), Range16), $clone(new Range16.ptr(43472, 43481, 1), Range16), $clone(new Range16.ptr(43504, 43513, 1), Range16), $clone(new Range16.ptr(43600, 43609, 1), Range16), $clone(new Range16.ptr(44016, 44025, 1), Range16), $clone(new Range16.ptr(65296, 65305, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(65799, 65843, 1), Range32), $clone(new Range32.ptr(65856, 65912, 1), Range32), $clone(new Range32.ptr(65930, 65931, 1), Range32), $clone(new Range32.ptr(66273, 66299, 1), Range32), $clone(new Range32.ptr(66336, 66339, 1), Range32), $clone(new Range32.ptr(66369, 66378, 9), Range32), $clone(new Range32.ptr(66513, 66517, 1), Range32), $clone(new Range32.ptr(66720, 66729, 1), Range32), $clone(new Range32.ptr(67672, 67679, 1), Range32), $clone(new Range32.ptr(67705, 67711, 1), Range32), $clone(new Range32.ptr(67751, 67759, 1), Range32), $clone(new Range32.ptr(67835, 67839, 1), Range32), $clone(new Range32.ptr(67862, 67867, 1), Range32), $clone(new Range32.ptr(68028, 68029, 1), Range32), $clone(new Range32.ptr(68032, 68047, 1), Range32), $clone(new Range32.ptr(68050, 68095, 1), Range32), $clone(new Range32.ptr(68160, 68168, 1), Range32), $clone(new Range32.ptr(68221, 68222, 1), Range32), $clone(new Range32.ptr(68253, 68255, 1), Range32), $clone(new Range32.ptr(68331, 68335, 1), Range32), $clone(new Range32.ptr(68440, 68447, 1), Range32), $clone(new Range32.ptr(68472, 68479, 1), Range32), $clone(new Range32.ptr(68521, 68527, 1), Range32), $clone(new Range32.ptr(68858, 68863, 1), Range32), $clone(new Range32.ptr(68912, 68921, 1), Range32), $clone(new Range32.ptr(69216, 69246, 1), Range32), $clone(new Range32.ptr(69405, 69414, 1), Range32), $clone(new Range32.ptr(69457, 69460, 1), Range32), $clone(new Range32.ptr(69573, 69579, 1), Range32), $clone(new Range32.ptr(69714, 69743, 1), Range32), $clone(new Range32.ptr(69872, 69881, 1), Range32), $clone(new Range32.ptr(69942, 69951, 1), Range32), $clone(new Range32.ptr(70096, 70105, 1), Range32), $clone(new Range32.ptr(70113, 70132, 1), Range32), $clone(new Range32.ptr(70384, 70393, 1), Range32), $clone(new Range32.ptr(70736, 70745, 1), Range32), $clone(new Range32.ptr(70864, 70873, 1), Range32), $clone(new Range32.ptr(71248, 71257, 1), Range32), $clone(new Range32.ptr(71360, 71369, 1), Range32), $clone(new Range32.ptr(71472, 71483, 1), Range32), $clone(new Range32.ptr(71904, 71922, 1), Range32), $clone(new Range32.ptr(72016, 72025, 1), Range32), $clone(new Range32.ptr(72784, 72812, 1), Range32), $clone(new Range32.ptr(73040, 73049, 1), Range32), $clone(new Range32.ptr(73120, 73129, 1), Range32), $clone(new Range32.ptr(73664, 73684, 1), Range32), $clone(new Range32.ptr(74752, 74862, 1), Range32), $clone(new Range32.ptr(92768, 92777, 1), Range32), $clone(new Range32.ptr(93008, 93017, 1), Range32), $clone(new Range32.ptr(93019, 93025, 1), Range32), $clone(new Range32.ptr(93824, 93846, 1), Range32), $clone(new Range32.ptr(119520, 119539, 1), Range32), $clone(new Range32.ptr(119648, 119672, 1), Range32), $clone(new Range32.ptr(120782, 120831, 1), Range32), $clone(new Range32.ptr(123200, 123209, 1), Range32), $clone(new Range32.ptr(123632, 123641, 1), Range32), $clone(new Range32.ptr(125127, 125135, 1), Range32), $clone(new Range32.ptr(125264, 125273, 1), Range32), $clone(new Range32.ptr(126065, 126123, 1), Range32), $clone(new Range32.ptr(126125, 126127, 1), Range32), $clone(new Range32.ptr(126129, 126132, 1), Range32), $clone(new Range32.ptr(126209, 126253, 1), Range32), $clone(new Range32.ptr(126255, 126269, 1), Range32), $clone(new Range32.ptr(127232, 127244, 1), Range32), $clone(new Range32.ptr(130032, 130041, 1), Range32)]), 4); + _Nd = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(48, 57, 1), Range16), $clone(new Range16.ptr(1632, 1641, 1), Range16), $clone(new Range16.ptr(1776, 1785, 1), Range16), $clone(new Range16.ptr(1984, 1993, 1), Range16), $clone(new Range16.ptr(2406, 2415, 1), Range16), $clone(new Range16.ptr(2534, 2543, 1), Range16), $clone(new Range16.ptr(2662, 2671, 1), Range16), $clone(new Range16.ptr(2790, 2799, 1), Range16), $clone(new Range16.ptr(2918, 2927, 1), Range16), $clone(new Range16.ptr(3046, 3055, 1), Range16), $clone(new Range16.ptr(3174, 3183, 1), Range16), $clone(new Range16.ptr(3302, 3311, 1), Range16), $clone(new Range16.ptr(3430, 3439, 1), Range16), $clone(new Range16.ptr(3558, 3567, 1), Range16), $clone(new Range16.ptr(3664, 3673, 1), Range16), $clone(new Range16.ptr(3792, 3801, 1), Range16), $clone(new Range16.ptr(3872, 3881, 1), Range16), $clone(new Range16.ptr(4160, 4169, 1), Range16), $clone(new Range16.ptr(4240, 4249, 1), Range16), $clone(new Range16.ptr(6112, 6121, 1), Range16), $clone(new Range16.ptr(6160, 6169, 1), Range16), $clone(new Range16.ptr(6470, 6479, 1), Range16), $clone(new Range16.ptr(6608, 6617, 1), Range16), $clone(new Range16.ptr(6784, 6793, 1), Range16), $clone(new Range16.ptr(6800, 6809, 1), Range16), $clone(new Range16.ptr(6992, 7001, 1), Range16), $clone(new Range16.ptr(7088, 7097, 1), Range16), $clone(new Range16.ptr(7232, 7241, 1), Range16), $clone(new Range16.ptr(7248, 7257, 1), Range16), $clone(new Range16.ptr(42528, 42537, 1), Range16), $clone(new Range16.ptr(43216, 43225, 1), Range16), $clone(new Range16.ptr(43264, 43273, 1), Range16), $clone(new Range16.ptr(43472, 43481, 1), Range16), $clone(new Range16.ptr(43504, 43513, 1), Range16), $clone(new Range16.ptr(43600, 43609, 1), Range16), $clone(new Range16.ptr(44016, 44025, 1), Range16), $clone(new Range16.ptr(65296, 65305, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(66720, 66729, 1), Range32), $clone(new Range32.ptr(68912, 68921, 1), Range32), $clone(new Range32.ptr(69734, 69743, 1), Range32), $clone(new Range32.ptr(69872, 69881, 1), Range32), $clone(new Range32.ptr(69942, 69951, 1), Range32), $clone(new Range32.ptr(70096, 70105, 1), Range32), $clone(new Range32.ptr(70384, 70393, 1), Range32), $clone(new Range32.ptr(70736, 70745, 1), Range32), $clone(new Range32.ptr(70864, 70873, 1), Range32), $clone(new Range32.ptr(71248, 71257, 1), Range32), $clone(new Range32.ptr(71360, 71369, 1), Range32), $clone(new Range32.ptr(71472, 71481, 1), Range32), $clone(new Range32.ptr(71904, 71913, 1), Range32), $clone(new Range32.ptr(72016, 72025, 1), Range32), $clone(new Range32.ptr(72784, 72793, 1), Range32), $clone(new Range32.ptr(73040, 73049, 1), Range32), $clone(new Range32.ptr(73120, 73129, 1), Range32), $clone(new Range32.ptr(92768, 92777, 1), Range32), $clone(new Range32.ptr(93008, 93017, 1), Range32), $clone(new Range32.ptr(120782, 120831, 1), Range32), $clone(new Range32.ptr(123200, 123209, 1), Range32), $clone(new Range32.ptr(123632, 123641, 1), Range32), $clone(new Range32.ptr(125264, 125273, 1), Range32), $clone(new Range32.ptr(130032, 130041, 1), Range32)]), 1); + _Nl = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(5870, 5872, 1), Range16), $clone(new Range16.ptr(8544, 8578, 1), Range16), $clone(new Range16.ptr(8581, 8584, 1), Range16), $clone(new Range16.ptr(12295, 12321, 26), Range16), $clone(new Range16.ptr(12322, 12329, 1), Range16), $clone(new Range16.ptr(12344, 12346, 1), Range16), $clone(new Range16.ptr(42726, 42735, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(65856, 65908, 1), Range32), $clone(new Range32.ptr(66369, 66378, 9), Range32), $clone(new Range32.ptr(66513, 66517, 1), Range32), $clone(new Range32.ptr(74752, 74862, 1), Range32)]), 0); + _No = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(178, 179, 1), Range16), $clone(new Range16.ptr(185, 188, 3), Range16), $clone(new Range16.ptr(189, 190, 1), Range16), $clone(new Range16.ptr(2548, 2553, 1), Range16), $clone(new Range16.ptr(2930, 2935, 1), Range16), $clone(new Range16.ptr(3056, 3058, 1), Range16), $clone(new Range16.ptr(3192, 3198, 1), Range16), $clone(new Range16.ptr(3416, 3422, 1), Range16), $clone(new Range16.ptr(3440, 3448, 1), Range16), $clone(new Range16.ptr(3882, 3891, 1), Range16), $clone(new Range16.ptr(4969, 4988, 1), Range16), $clone(new Range16.ptr(6128, 6137, 1), Range16), $clone(new Range16.ptr(6618, 8304, 1686), Range16), $clone(new Range16.ptr(8308, 8313, 1), Range16), $clone(new Range16.ptr(8320, 8329, 1), Range16), $clone(new Range16.ptr(8528, 8543, 1), Range16), $clone(new Range16.ptr(8585, 9312, 727), Range16), $clone(new Range16.ptr(9313, 9371, 1), Range16), $clone(new Range16.ptr(9450, 9471, 1), Range16), $clone(new Range16.ptr(10102, 10131, 1), Range16), $clone(new Range16.ptr(11517, 12690, 1173), Range16), $clone(new Range16.ptr(12691, 12693, 1), Range16), $clone(new Range16.ptr(12832, 12841, 1), Range16), $clone(new Range16.ptr(12872, 12879, 1), Range16), $clone(new Range16.ptr(12881, 12895, 1), Range16), $clone(new Range16.ptr(12928, 12937, 1), Range16), $clone(new Range16.ptr(12977, 12991, 1), Range16), $clone(new Range16.ptr(43056, 43061, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(65799, 65843, 1), Range32), $clone(new Range32.ptr(65909, 65912, 1), Range32), $clone(new Range32.ptr(65930, 65931, 1), Range32), $clone(new Range32.ptr(66273, 66299, 1), Range32), $clone(new Range32.ptr(66336, 66339, 1), Range32), $clone(new Range32.ptr(67672, 67679, 1), Range32), $clone(new Range32.ptr(67705, 67711, 1), Range32), $clone(new Range32.ptr(67751, 67759, 1), Range32), $clone(new Range32.ptr(67835, 67839, 1), Range32), $clone(new Range32.ptr(67862, 67867, 1), Range32), $clone(new Range32.ptr(68028, 68029, 1), Range32), $clone(new Range32.ptr(68032, 68047, 1), Range32), $clone(new Range32.ptr(68050, 68095, 1), Range32), $clone(new Range32.ptr(68160, 68168, 1), Range32), $clone(new Range32.ptr(68221, 68222, 1), Range32), $clone(new Range32.ptr(68253, 68255, 1), Range32), $clone(new Range32.ptr(68331, 68335, 1), Range32), $clone(new Range32.ptr(68440, 68447, 1), Range32), $clone(new Range32.ptr(68472, 68479, 1), Range32), $clone(new Range32.ptr(68521, 68527, 1), Range32), $clone(new Range32.ptr(68858, 68863, 1), Range32), $clone(new Range32.ptr(69216, 69246, 1), Range32), $clone(new Range32.ptr(69405, 69414, 1), Range32), $clone(new Range32.ptr(69457, 69460, 1), Range32), $clone(new Range32.ptr(69573, 69579, 1), Range32), $clone(new Range32.ptr(69714, 69733, 1), Range32), $clone(new Range32.ptr(70113, 70132, 1), Range32), $clone(new Range32.ptr(71482, 71483, 1), Range32), $clone(new Range32.ptr(71914, 71922, 1), Range32), $clone(new Range32.ptr(72794, 72812, 1), Range32), $clone(new Range32.ptr(73664, 73684, 1), Range32), $clone(new Range32.ptr(93019, 93025, 1), Range32), $clone(new Range32.ptr(93824, 93846, 1), Range32), $clone(new Range32.ptr(119520, 119539, 1), Range32), $clone(new Range32.ptr(119648, 119672, 1), Range32), $clone(new Range32.ptr(125127, 125135, 1), Range32), $clone(new Range32.ptr(126065, 126123, 1), Range32), $clone(new Range32.ptr(126125, 126127, 1), Range32), $clone(new Range32.ptr(126129, 126132, 1), Range32), $clone(new Range32.ptr(126209, 126253, 1), Range32), $clone(new Range32.ptr(126255, 126269, 1), Range32), $clone(new Range32.ptr(127232, 127244, 1), Range32)]), 3); + _P = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(33, 35, 1), Range16), $clone(new Range16.ptr(37, 42, 1), Range16), $clone(new Range16.ptr(44, 47, 1), Range16), $clone(new Range16.ptr(58, 59, 1), Range16), $clone(new Range16.ptr(63, 64, 1), Range16), $clone(new Range16.ptr(91, 93, 1), Range16), $clone(new Range16.ptr(95, 123, 28), Range16), $clone(new Range16.ptr(125, 161, 36), Range16), $clone(new Range16.ptr(167, 171, 4), Range16), $clone(new Range16.ptr(182, 183, 1), Range16), $clone(new Range16.ptr(187, 191, 4), Range16), $clone(new Range16.ptr(894, 903, 9), Range16), $clone(new Range16.ptr(1370, 1375, 1), Range16), $clone(new Range16.ptr(1417, 1418, 1), Range16), $clone(new Range16.ptr(1470, 1472, 2), Range16), $clone(new Range16.ptr(1475, 1478, 3), Range16), $clone(new Range16.ptr(1523, 1524, 1), Range16), $clone(new Range16.ptr(1545, 1546, 1), Range16), $clone(new Range16.ptr(1548, 1549, 1), Range16), $clone(new Range16.ptr(1563, 1566, 3), Range16), $clone(new Range16.ptr(1567, 1642, 75), Range16), $clone(new Range16.ptr(1643, 1645, 1), Range16), $clone(new Range16.ptr(1748, 1792, 44), Range16), $clone(new Range16.ptr(1793, 1805, 1), Range16), $clone(new Range16.ptr(2039, 2041, 1), Range16), $clone(new Range16.ptr(2096, 2110, 1), Range16), $clone(new Range16.ptr(2142, 2404, 262), Range16), $clone(new Range16.ptr(2405, 2416, 11), Range16), $clone(new Range16.ptr(2557, 2678, 121), Range16), $clone(new Range16.ptr(2800, 3191, 391), Range16), $clone(new Range16.ptr(3204, 3572, 368), Range16), $clone(new Range16.ptr(3663, 3674, 11), Range16), $clone(new Range16.ptr(3675, 3844, 169), Range16), $clone(new Range16.ptr(3845, 3858, 1), Range16), $clone(new Range16.ptr(3860, 3898, 38), Range16), $clone(new Range16.ptr(3899, 3901, 1), Range16), $clone(new Range16.ptr(3973, 4048, 75), Range16), $clone(new Range16.ptr(4049, 4052, 1), Range16), $clone(new Range16.ptr(4057, 4058, 1), Range16), $clone(new Range16.ptr(4170, 4175, 1), Range16), $clone(new Range16.ptr(4347, 4960, 613), Range16), $clone(new Range16.ptr(4961, 4968, 1), Range16), $clone(new Range16.ptr(5120, 5742, 622), Range16), $clone(new Range16.ptr(5787, 5788, 1), Range16), $clone(new Range16.ptr(5867, 5869, 1), Range16), $clone(new Range16.ptr(5941, 5942, 1), Range16), $clone(new Range16.ptr(6100, 6102, 1), Range16), $clone(new Range16.ptr(6104, 6106, 1), Range16), $clone(new Range16.ptr(6144, 6154, 1), Range16), $clone(new Range16.ptr(6468, 6469, 1), Range16), $clone(new Range16.ptr(6686, 6687, 1), Range16), $clone(new Range16.ptr(6816, 6822, 1), Range16), $clone(new Range16.ptr(6824, 6829, 1), Range16), $clone(new Range16.ptr(7002, 7008, 1), Range16), $clone(new Range16.ptr(7164, 7167, 1), Range16), $clone(new Range16.ptr(7227, 7231, 1), Range16), $clone(new Range16.ptr(7294, 7295, 1), Range16), $clone(new Range16.ptr(7360, 7367, 1), Range16), $clone(new Range16.ptr(7379, 8208, 829), Range16), $clone(new Range16.ptr(8209, 8231, 1), Range16), $clone(new Range16.ptr(8240, 8259, 1), Range16), $clone(new Range16.ptr(8261, 8273, 1), Range16), $clone(new Range16.ptr(8275, 8286, 1), Range16), $clone(new Range16.ptr(8317, 8318, 1), Range16), $clone(new Range16.ptr(8333, 8334, 1), Range16), $clone(new Range16.ptr(8968, 8971, 1), Range16), $clone(new Range16.ptr(9001, 9002, 1), Range16), $clone(new Range16.ptr(10088, 10101, 1), Range16), $clone(new Range16.ptr(10181, 10182, 1), Range16), $clone(new Range16.ptr(10214, 10223, 1), Range16), $clone(new Range16.ptr(10627, 10648, 1), Range16), $clone(new Range16.ptr(10712, 10715, 1), Range16), $clone(new Range16.ptr(10748, 10749, 1), Range16), $clone(new Range16.ptr(11513, 11516, 1), Range16), $clone(new Range16.ptr(11518, 11519, 1), Range16), $clone(new Range16.ptr(11632, 11776, 144), Range16), $clone(new Range16.ptr(11777, 11822, 1), Range16), $clone(new Range16.ptr(11824, 11855, 1), Range16), $clone(new Range16.ptr(11858, 12289, 431), Range16), $clone(new Range16.ptr(12290, 12291, 1), Range16), $clone(new Range16.ptr(12296, 12305, 1), Range16), $clone(new Range16.ptr(12308, 12319, 1), Range16), $clone(new Range16.ptr(12336, 12349, 13), Range16), $clone(new Range16.ptr(12448, 12539, 91), Range16), $clone(new Range16.ptr(42238, 42239, 1), Range16), $clone(new Range16.ptr(42509, 42511, 1), Range16), $clone(new Range16.ptr(42611, 42622, 11), Range16), $clone(new Range16.ptr(42738, 42743, 1), Range16), $clone(new Range16.ptr(43124, 43127, 1), Range16), $clone(new Range16.ptr(43214, 43215, 1), Range16), $clone(new Range16.ptr(43256, 43258, 1), Range16), $clone(new Range16.ptr(43260, 43310, 50), Range16), $clone(new Range16.ptr(43311, 43359, 48), Range16), $clone(new Range16.ptr(43457, 43469, 1), Range16), $clone(new Range16.ptr(43486, 43487, 1), Range16), $clone(new Range16.ptr(43612, 43615, 1), Range16), $clone(new Range16.ptr(43742, 43743, 1), Range16), $clone(new Range16.ptr(43760, 43761, 1), Range16), $clone(new Range16.ptr(44011, 64830, 20819), Range16), $clone(new Range16.ptr(64831, 65040, 209), Range16), $clone(new Range16.ptr(65041, 65049, 1), Range16), $clone(new Range16.ptr(65072, 65106, 1), Range16), $clone(new Range16.ptr(65108, 65121, 1), Range16), $clone(new Range16.ptr(65123, 65128, 5), Range16), $clone(new Range16.ptr(65130, 65131, 1), Range16), $clone(new Range16.ptr(65281, 65283, 1), Range16), $clone(new Range16.ptr(65285, 65290, 1), Range16), $clone(new Range16.ptr(65292, 65295, 1), Range16), $clone(new Range16.ptr(65306, 65307, 1), Range16), $clone(new Range16.ptr(65311, 65312, 1), Range16), $clone(new Range16.ptr(65339, 65341, 1), Range16), $clone(new Range16.ptr(65343, 65371, 28), Range16), $clone(new Range16.ptr(65373, 65375, 2), Range16), $clone(new Range16.ptr(65376, 65381, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(65792, 65794, 1), Range32), $clone(new Range32.ptr(66463, 66512, 49), Range32), $clone(new Range32.ptr(66927, 67671, 744), Range32), $clone(new Range32.ptr(67871, 67903, 32), Range32), $clone(new Range32.ptr(68176, 68184, 1), Range32), $clone(new Range32.ptr(68223, 68336, 113), Range32), $clone(new Range32.ptr(68337, 68342, 1), Range32), $clone(new Range32.ptr(68409, 68415, 1), Range32), $clone(new Range32.ptr(68505, 68508, 1), Range32), $clone(new Range32.ptr(69293, 69461, 168), Range32), $clone(new Range32.ptr(69462, 69465, 1), Range32), $clone(new Range32.ptr(69703, 69709, 1), Range32), $clone(new Range32.ptr(69819, 69820, 1), Range32), $clone(new Range32.ptr(69822, 69825, 1), Range32), $clone(new Range32.ptr(69952, 69955, 1), Range32), $clone(new Range32.ptr(70004, 70005, 1), Range32), $clone(new Range32.ptr(70085, 70088, 1), Range32), $clone(new Range32.ptr(70093, 70107, 14), Range32), $clone(new Range32.ptr(70109, 70111, 1), Range32), $clone(new Range32.ptr(70200, 70205, 1), Range32), $clone(new Range32.ptr(70313, 70731, 418), Range32), $clone(new Range32.ptr(70732, 70735, 1), Range32), $clone(new Range32.ptr(70746, 70747, 1), Range32), $clone(new Range32.ptr(70749, 70854, 105), Range32), $clone(new Range32.ptr(71105, 71127, 1), Range32), $clone(new Range32.ptr(71233, 71235, 1), Range32), $clone(new Range32.ptr(71264, 71276, 1), Range32), $clone(new Range32.ptr(71484, 71486, 1), Range32), $clone(new Range32.ptr(71739, 72004, 265), Range32), $clone(new Range32.ptr(72005, 72006, 1), Range32), $clone(new Range32.ptr(72162, 72255, 93), Range32), $clone(new Range32.ptr(72256, 72262, 1), Range32), $clone(new Range32.ptr(72346, 72348, 1), Range32), $clone(new Range32.ptr(72350, 72354, 1), Range32), $clone(new Range32.ptr(72769, 72773, 1), Range32), $clone(new Range32.ptr(72816, 72817, 1), Range32), $clone(new Range32.ptr(73463, 73464, 1), Range32), $clone(new Range32.ptr(73727, 74864, 1137), Range32), $clone(new Range32.ptr(74865, 74868, 1), Range32), $clone(new Range32.ptr(92782, 92783, 1), Range32), $clone(new Range32.ptr(92917, 92983, 66), Range32), $clone(new Range32.ptr(92984, 92987, 1), Range32), $clone(new Range32.ptr(92996, 93847, 851), Range32), $clone(new Range32.ptr(93848, 93850, 1), Range32), $clone(new Range32.ptr(94178, 113823, 19645), Range32), $clone(new Range32.ptr(121479, 121483, 1), Range32), $clone(new Range32.ptr(125278, 125279, 1), Range32)]), 11); + _Pc = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(95, 8255, 8160), Range16), $clone(new Range16.ptr(8256, 8276, 20), Range16), $clone(new Range16.ptr(65075, 65076, 1), Range16), $clone(new Range16.ptr(65101, 65103, 1), Range16), $clone(new Range16.ptr(65343, 65343, 1), Range16)]), sliceType$1.nil, 0); + _Pd = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(45, 1418, 1373), Range16), $clone(new Range16.ptr(1470, 5120, 3650), Range16), $clone(new Range16.ptr(6150, 8208, 2058), Range16), $clone(new Range16.ptr(8209, 8213, 1), Range16), $clone(new Range16.ptr(11799, 11802, 3), Range16), $clone(new Range16.ptr(11834, 11835, 1), Range16), $clone(new Range16.ptr(11840, 12316, 476), Range16), $clone(new Range16.ptr(12336, 12448, 112), Range16), $clone(new Range16.ptr(65073, 65074, 1), Range16), $clone(new Range16.ptr(65112, 65123, 11), Range16), $clone(new Range16.ptr(65293, 65293, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(69293, 69293, 1), Range32)]), 0); + _Pe = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(41, 93, 52), Range16), $clone(new Range16.ptr(125, 3899, 3774), Range16), $clone(new Range16.ptr(3901, 5788, 1887), Range16), $clone(new Range16.ptr(8262, 8318, 56), Range16), $clone(new Range16.ptr(8334, 8969, 635), Range16), $clone(new Range16.ptr(8971, 9002, 31), Range16), $clone(new Range16.ptr(10089, 10101, 2), Range16), $clone(new Range16.ptr(10182, 10215, 33), Range16), $clone(new Range16.ptr(10217, 10223, 2), Range16), $clone(new Range16.ptr(10628, 10648, 2), Range16), $clone(new Range16.ptr(10713, 10715, 2), Range16), $clone(new Range16.ptr(10749, 11811, 1062), Range16), $clone(new Range16.ptr(11813, 11817, 2), Range16), $clone(new Range16.ptr(12297, 12305, 2), Range16), $clone(new Range16.ptr(12309, 12315, 2), Range16), $clone(new Range16.ptr(12318, 12319, 1), Range16), $clone(new Range16.ptr(64830, 65048, 218), Range16), $clone(new Range16.ptr(65078, 65092, 2), Range16), $clone(new Range16.ptr(65096, 65114, 18), Range16), $clone(new Range16.ptr(65116, 65118, 2), Range16), $clone(new Range16.ptr(65289, 65341, 52), Range16), $clone(new Range16.ptr(65373, 65379, 3), Range16)]), sliceType$1.nil, 1); + _Pf = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(187, 8217, 8030), Range16), $clone(new Range16.ptr(8221, 8250, 29), Range16), $clone(new Range16.ptr(11779, 11781, 2), Range16), $clone(new Range16.ptr(11786, 11789, 3), Range16), $clone(new Range16.ptr(11805, 11809, 4), Range16)]), sliceType$1.nil, 0); + _Pi = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(171, 8216, 8045), Range16), $clone(new Range16.ptr(8219, 8220, 1), Range16), $clone(new Range16.ptr(8223, 8249, 26), Range16), $clone(new Range16.ptr(11778, 11780, 2), Range16), $clone(new Range16.ptr(11785, 11788, 3), Range16), $clone(new Range16.ptr(11804, 11808, 4), Range16)]), sliceType$1.nil, 0); + _Po = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(33, 35, 1), Range16), $clone(new Range16.ptr(37, 39, 1), Range16), $clone(new Range16.ptr(42, 46, 2), Range16), $clone(new Range16.ptr(47, 58, 11), Range16), $clone(new Range16.ptr(59, 63, 4), Range16), $clone(new Range16.ptr(64, 92, 28), Range16), $clone(new Range16.ptr(161, 167, 6), Range16), $clone(new Range16.ptr(182, 183, 1), Range16), $clone(new Range16.ptr(191, 894, 703), Range16), $clone(new Range16.ptr(903, 1370, 467), Range16), $clone(new Range16.ptr(1371, 1375, 1), Range16), $clone(new Range16.ptr(1417, 1472, 55), Range16), $clone(new Range16.ptr(1475, 1478, 3), Range16), $clone(new Range16.ptr(1523, 1524, 1), Range16), $clone(new Range16.ptr(1545, 1546, 1), Range16), $clone(new Range16.ptr(1548, 1549, 1), Range16), $clone(new Range16.ptr(1563, 1566, 3), Range16), $clone(new Range16.ptr(1567, 1642, 75), Range16), $clone(new Range16.ptr(1643, 1645, 1), Range16), $clone(new Range16.ptr(1748, 1792, 44), Range16), $clone(new Range16.ptr(1793, 1805, 1), Range16), $clone(new Range16.ptr(2039, 2041, 1), Range16), $clone(new Range16.ptr(2096, 2110, 1), Range16), $clone(new Range16.ptr(2142, 2404, 262), Range16), $clone(new Range16.ptr(2405, 2416, 11), Range16), $clone(new Range16.ptr(2557, 2678, 121), Range16), $clone(new Range16.ptr(2800, 3191, 391), Range16), $clone(new Range16.ptr(3204, 3572, 368), Range16), $clone(new Range16.ptr(3663, 3674, 11), Range16), $clone(new Range16.ptr(3675, 3844, 169), Range16), $clone(new Range16.ptr(3845, 3858, 1), Range16), $clone(new Range16.ptr(3860, 3973, 113), Range16), $clone(new Range16.ptr(4048, 4052, 1), Range16), $clone(new Range16.ptr(4057, 4058, 1), Range16), $clone(new Range16.ptr(4170, 4175, 1), Range16), $clone(new Range16.ptr(4347, 4960, 613), Range16), $clone(new Range16.ptr(4961, 4968, 1), Range16), $clone(new Range16.ptr(5742, 5867, 125), Range16), $clone(new Range16.ptr(5868, 5869, 1), Range16), $clone(new Range16.ptr(5941, 5942, 1), Range16), $clone(new Range16.ptr(6100, 6102, 1), Range16), $clone(new Range16.ptr(6104, 6106, 1), Range16), $clone(new Range16.ptr(6144, 6149, 1), Range16), $clone(new Range16.ptr(6151, 6154, 1), Range16), $clone(new Range16.ptr(6468, 6469, 1), Range16), $clone(new Range16.ptr(6686, 6687, 1), Range16), $clone(new Range16.ptr(6816, 6822, 1), Range16), $clone(new Range16.ptr(6824, 6829, 1), Range16), $clone(new Range16.ptr(7002, 7008, 1), Range16), $clone(new Range16.ptr(7164, 7167, 1), Range16), $clone(new Range16.ptr(7227, 7231, 1), Range16), $clone(new Range16.ptr(7294, 7295, 1), Range16), $clone(new Range16.ptr(7360, 7367, 1), Range16), $clone(new Range16.ptr(7379, 8214, 835), Range16), $clone(new Range16.ptr(8215, 8224, 9), Range16), $clone(new Range16.ptr(8225, 8231, 1), Range16), $clone(new Range16.ptr(8240, 8248, 1), Range16), $clone(new Range16.ptr(8251, 8254, 1), Range16), $clone(new Range16.ptr(8257, 8259, 1), Range16), $clone(new Range16.ptr(8263, 8273, 1), Range16), $clone(new Range16.ptr(8275, 8277, 2), Range16), $clone(new Range16.ptr(8278, 8286, 1), Range16), $clone(new Range16.ptr(11513, 11516, 1), Range16), $clone(new Range16.ptr(11518, 11519, 1), Range16), $clone(new Range16.ptr(11632, 11776, 144), Range16), $clone(new Range16.ptr(11777, 11782, 5), Range16), $clone(new Range16.ptr(11783, 11784, 1), Range16), $clone(new Range16.ptr(11787, 11790, 3), Range16), $clone(new Range16.ptr(11791, 11798, 1), Range16), $clone(new Range16.ptr(11800, 11801, 1), Range16), $clone(new Range16.ptr(11803, 11806, 3), Range16), $clone(new Range16.ptr(11807, 11818, 11), Range16), $clone(new Range16.ptr(11819, 11822, 1), Range16), $clone(new Range16.ptr(11824, 11833, 1), Range16), $clone(new Range16.ptr(11836, 11839, 1), Range16), $clone(new Range16.ptr(11841, 11843, 2), Range16), $clone(new Range16.ptr(11844, 11855, 1), Range16), $clone(new Range16.ptr(11858, 12289, 431), Range16), $clone(new Range16.ptr(12290, 12291, 1), Range16), $clone(new Range16.ptr(12349, 12539, 190), Range16), $clone(new Range16.ptr(42238, 42239, 1), Range16), $clone(new Range16.ptr(42509, 42511, 1), Range16), $clone(new Range16.ptr(42611, 42622, 11), Range16), $clone(new Range16.ptr(42738, 42743, 1), Range16), $clone(new Range16.ptr(43124, 43127, 1), Range16), $clone(new Range16.ptr(43214, 43215, 1), Range16), $clone(new Range16.ptr(43256, 43258, 1), Range16), $clone(new Range16.ptr(43260, 43310, 50), Range16), $clone(new Range16.ptr(43311, 43359, 48), Range16), $clone(new Range16.ptr(43457, 43469, 1), Range16), $clone(new Range16.ptr(43486, 43487, 1), Range16), $clone(new Range16.ptr(43612, 43615, 1), Range16), $clone(new Range16.ptr(43742, 43743, 1), Range16), $clone(new Range16.ptr(43760, 43761, 1), Range16), $clone(new Range16.ptr(44011, 65040, 21029), Range16), $clone(new Range16.ptr(65041, 65046, 1), Range16), $clone(new Range16.ptr(65049, 65072, 23), Range16), $clone(new Range16.ptr(65093, 65094, 1), Range16), $clone(new Range16.ptr(65097, 65100, 1), Range16), $clone(new Range16.ptr(65104, 65106, 1), Range16), $clone(new Range16.ptr(65108, 65111, 1), Range16), $clone(new Range16.ptr(65119, 65121, 1), Range16), $clone(new Range16.ptr(65128, 65130, 2), Range16), $clone(new Range16.ptr(65131, 65281, 150), Range16), $clone(new Range16.ptr(65282, 65283, 1), Range16), $clone(new Range16.ptr(65285, 65287, 1), Range16), $clone(new Range16.ptr(65290, 65294, 2), Range16), $clone(new Range16.ptr(65295, 65306, 11), Range16), $clone(new Range16.ptr(65307, 65311, 4), Range16), $clone(new Range16.ptr(65312, 65340, 28), Range16), $clone(new Range16.ptr(65377, 65380, 3), Range16), $clone(new Range16.ptr(65381, 65381, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(65792, 65794, 1), Range32), $clone(new Range32.ptr(66463, 66512, 49), Range32), $clone(new Range32.ptr(66927, 67671, 744), Range32), $clone(new Range32.ptr(67871, 67903, 32), Range32), $clone(new Range32.ptr(68176, 68184, 1), Range32), $clone(new Range32.ptr(68223, 68336, 113), Range32), $clone(new Range32.ptr(68337, 68342, 1), Range32), $clone(new Range32.ptr(68409, 68415, 1), Range32), $clone(new Range32.ptr(68505, 68508, 1), Range32), $clone(new Range32.ptr(69461, 69465, 1), Range32), $clone(new Range32.ptr(69703, 69709, 1), Range32), $clone(new Range32.ptr(69819, 69820, 1), Range32), $clone(new Range32.ptr(69822, 69825, 1), Range32), $clone(new Range32.ptr(69952, 69955, 1), Range32), $clone(new Range32.ptr(70004, 70005, 1), Range32), $clone(new Range32.ptr(70085, 70088, 1), Range32), $clone(new Range32.ptr(70093, 70107, 14), Range32), $clone(new Range32.ptr(70109, 70111, 1), Range32), $clone(new Range32.ptr(70200, 70205, 1), Range32), $clone(new Range32.ptr(70313, 70731, 418), Range32), $clone(new Range32.ptr(70732, 70735, 1), Range32), $clone(new Range32.ptr(70746, 70747, 1), Range32), $clone(new Range32.ptr(70749, 70854, 105), Range32), $clone(new Range32.ptr(71105, 71127, 1), Range32), $clone(new Range32.ptr(71233, 71235, 1), Range32), $clone(new Range32.ptr(71264, 71276, 1), Range32), $clone(new Range32.ptr(71484, 71486, 1), Range32), $clone(new Range32.ptr(71739, 72004, 265), Range32), $clone(new Range32.ptr(72005, 72006, 1), Range32), $clone(new Range32.ptr(72162, 72255, 93), Range32), $clone(new Range32.ptr(72256, 72262, 1), Range32), $clone(new Range32.ptr(72346, 72348, 1), Range32), $clone(new Range32.ptr(72350, 72354, 1), Range32), $clone(new Range32.ptr(72769, 72773, 1), Range32), $clone(new Range32.ptr(72816, 72817, 1), Range32), $clone(new Range32.ptr(73463, 73464, 1), Range32), $clone(new Range32.ptr(73727, 74864, 1137), Range32), $clone(new Range32.ptr(74865, 74868, 1), Range32), $clone(new Range32.ptr(92782, 92783, 1), Range32), $clone(new Range32.ptr(92917, 92983, 66), Range32), $clone(new Range32.ptr(92984, 92987, 1), Range32), $clone(new Range32.ptr(92996, 93847, 851), Range32), $clone(new Range32.ptr(93848, 93850, 1), Range32), $clone(new Range32.ptr(94178, 113823, 19645), Range32), $clone(new Range32.ptr(121479, 121483, 1), Range32), $clone(new Range32.ptr(125278, 125279, 1), Range32)]), 8); + _Ps = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(40, 91, 51), Range16), $clone(new Range16.ptr(123, 3898, 3775), Range16), $clone(new Range16.ptr(3900, 5787, 1887), Range16), $clone(new Range16.ptr(8218, 8222, 4), Range16), $clone(new Range16.ptr(8261, 8317, 56), Range16), $clone(new Range16.ptr(8333, 8968, 635), Range16), $clone(new Range16.ptr(8970, 9001, 31), Range16), $clone(new Range16.ptr(10088, 10100, 2), Range16), $clone(new Range16.ptr(10181, 10214, 33), Range16), $clone(new Range16.ptr(10216, 10222, 2), Range16), $clone(new Range16.ptr(10627, 10647, 2), Range16), $clone(new Range16.ptr(10712, 10714, 2), Range16), $clone(new Range16.ptr(10748, 11810, 1062), Range16), $clone(new Range16.ptr(11812, 11816, 2), Range16), $clone(new Range16.ptr(11842, 12296, 454), Range16), $clone(new Range16.ptr(12298, 12304, 2), Range16), $clone(new Range16.ptr(12308, 12314, 2), Range16), $clone(new Range16.ptr(12317, 64831, 52514), Range16), $clone(new Range16.ptr(65047, 65077, 30), Range16), $clone(new Range16.ptr(65079, 65091, 2), Range16), $clone(new Range16.ptr(65095, 65113, 18), Range16), $clone(new Range16.ptr(65115, 65117, 2), Range16), $clone(new Range16.ptr(65288, 65339, 51), Range16), $clone(new Range16.ptr(65371, 65375, 4), Range16), $clone(new Range16.ptr(65378, 65378, 1), Range16)]), sliceType$1.nil, 1); + _S = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(36, 43, 7), Range16), $clone(new Range16.ptr(60, 62, 1), Range16), $clone(new Range16.ptr(94, 96, 2), Range16), $clone(new Range16.ptr(124, 126, 2), Range16), $clone(new Range16.ptr(162, 166, 1), Range16), $clone(new Range16.ptr(168, 169, 1), Range16), $clone(new Range16.ptr(172, 174, 2), Range16), $clone(new Range16.ptr(175, 177, 1), Range16), $clone(new Range16.ptr(180, 184, 4), Range16), $clone(new Range16.ptr(215, 247, 32), Range16), $clone(new Range16.ptr(706, 709, 1), Range16), $clone(new Range16.ptr(722, 735, 1), Range16), $clone(new Range16.ptr(741, 747, 1), Range16), $clone(new Range16.ptr(749, 751, 2), Range16), $clone(new Range16.ptr(752, 767, 1), Range16), $clone(new Range16.ptr(885, 900, 15), Range16), $clone(new Range16.ptr(901, 1014, 113), Range16), $clone(new Range16.ptr(1154, 1421, 267), Range16), $clone(new Range16.ptr(1422, 1423, 1), Range16), $clone(new Range16.ptr(1542, 1544, 1), Range16), $clone(new Range16.ptr(1547, 1550, 3), Range16), $clone(new Range16.ptr(1551, 1758, 207), Range16), $clone(new Range16.ptr(1769, 1789, 20), Range16), $clone(new Range16.ptr(1790, 2038, 248), Range16), $clone(new Range16.ptr(2046, 2047, 1), Range16), $clone(new Range16.ptr(2546, 2547, 1), Range16), $clone(new Range16.ptr(2554, 2555, 1), Range16), $clone(new Range16.ptr(2801, 2928, 127), Range16), $clone(new Range16.ptr(3059, 3066, 1), Range16), $clone(new Range16.ptr(3199, 3407, 208), Range16), $clone(new Range16.ptr(3449, 3647, 198), Range16), $clone(new Range16.ptr(3841, 3843, 1), Range16), $clone(new Range16.ptr(3859, 3861, 2), Range16), $clone(new Range16.ptr(3862, 3863, 1), Range16), $clone(new Range16.ptr(3866, 3871, 1), Range16), $clone(new Range16.ptr(3892, 3896, 2), Range16), $clone(new Range16.ptr(4030, 4037, 1), Range16), $clone(new Range16.ptr(4039, 4044, 1), Range16), $clone(new Range16.ptr(4046, 4047, 1), Range16), $clone(new Range16.ptr(4053, 4056, 1), Range16), $clone(new Range16.ptr(4254, 4255, 1), Range16), $clone(new Range16.ptr(5008, 5017, 1), Range16), $clone(new Range16.ptr(5741, 6107, 366), Range16), $clone(new Range16.ptr(6464, 6622, 158), Range16), $clone(new Range16.ptr(6623, 6655, 1), Range16), $clone(new Range16.ptr(7009, 7018, 1), Range16), $clone(new Range16.ptr(7028, 7036, 1), Range16), $clone(new Range16.ptr(8125, 8127, 2), Range16), $clone(new Range16.ptr(8128, 8129, 1), Range16), $clone(new Range16.ptr(8141, 8143, 1), Range16), $clone(new Range16.ptr(8157, 8159, 1), Range16), $clone(new Range16.ptr(8173, 8175, 1), Range16), $clone(new Range16.ptr(8189, 8190, 1), Range16), $clone(new Range16.ptr(8260, 8274, 14), Range16), $clone(new Range16.ptr(8314, 8316, 1), Range16), $clone(new Range16.ptr(8330, 8332, 1), Range16), $clone(new Range16.ptr(8352, 8383, 1), Range16), $clone(new Range16.ptr(8448, 8449, 1), Range16), $clone(new Range16.ptr(8451, 8454, 1), Range16), $clone(new Range16.ptr(8456, 8457, 1), Range16), $clone(new Range16.ptr(8468, 8470, 2), Range16), $clone(new Range16.ptr(8471, 8472, 1), Range16), $clone(new Range16.ptr(8478, 8483, 1), Range16), $clone(new Range16.ptr(8485, 8489, 2), Range16), $clone(new Range16.ptr(8494, 8506, 12), Range16), $clone(new Range16.ptr(8507, 8512, 5), Range16), $clone(new Range16.ptr(8513, 8516, 1), Range16), $clone(new Range16.ptr(8522, 8525, 1), Range16), $clone(new Range16.ptr(8527, 8586, 59), Range16), $clone(new Range16.ptr(8587, 8592, 5), Range16), $clone(new Range16.ptr(8593, 8967, 1), Range16), $clone(new Range16.ptr(8972, 9000, 1), Range16), $clone(new Range16.ptr(9003, 9254, 1), Range16), $clone(new Range16.ptr(9280, 9290, 1), Range16), $clone(new Range16.ptr(9372, 9449, 1), Range16), $clone(new Range16.ptr(9472, 10087, 1), Range16), $clone(new Range16.ptr(10132, 10180, 1), Range16), $clone(new Range16.ptr(10183, 10213, 1), Range16), $clone(new Range16.ptr(10224, 10626, 1), Range16), $clone(new Range16.ptr(10649, 10711, 1), Range16), $clone(new Range16.ptr(10716, 10747, 1), Range16), $clone(new Range16.ptr(10750, 11123, 1), Range16), $clone(new Range16.ptr(11126, 11157, 1), Range16), $clone(new Range16.ptr(11159, 11263, 1), Range16), $clone(new Range16.ptr(11493, 11498, 1), Range16), $clone(new Range16.ptr(11856, 11857, 1), Range16), $clone(new Range16.ptr(11904, 11929, 1), Range16), $clone(new Range16.ptr(11931, 12019, 1), Range16), $clone(new Range16.ptr(12032, 12245, 1), Range16), $clone(new Range16.ptr(12272, 12283, 1), Range16), $clone(new Range16.ptr(12292, 12306, 14), Range16), $clone(new Range16.ptr(12307, 12320, 13), Range16), $clone(new Range16.ptr(12342, 12343, 1), Range16), $clone(new Range16.ptr(12350, 12351, 1), Range16), $clone(new Range16.ptr(12443, 12444, 1), Range16), $clone(new Range16.ptr(12688, 12689, 1), Range16), $clone(new Range16.ptr(12694, 12703, 1), Range16), $clone(new Range16.ptr(12736, 12771, 1), Range16), $clone(new Range16.ptr(12800, 12830, 1), Range16), $clone(new Range16.ptr(12842, 12871, 1), Range16), $clone(new Range16.ptr(12880, 12896, 16), Range16), $clone(new Range16.ptr(12897, 12927, 1), Range16), $clone(new Range16.ptr(12938, 12976, 1), Range16), $clone(new Range16.ptr(12992, 13311, 1), Range16), $clone(new Range16.ptr(19904, 19967, 1), Range16), $clone(new Range16.ptr(42128, 42182, 1), Range16), $clone(new Range16.ptr(42752, 42774, 1), Range16), $clone(new Range16.ptr(42784, 42785, 1), Range16), $clone(new Range16.ptr(42889, 42890, 1), Range16), $clone(new Range16.ptr(43048, 43051, 1), Range16), $clone(new Range16.ptr(43062, 43065, 1), Range16), $clone(new Range16.ptr(43639, 43641, 1), Range16), $clone(new Range16.ptr(43867, 43882, 15), Range16), $clone(new Range16.ptr(43883, 64297, 20414), Range16), $clone(new Range16.ptr(64434, 64449, 1), Range16), $clone(new Range16.ptr(65020, 65021, 1), Range16), $clone(new Range16.ptr(65122, 65124, 2), Range16), $clone(new Range16.ptr(65125, 65126, 1), Range16), $clone(new Range16.ptr(65129, 65284, 155), Range16), $clone(new Range16.ptr(65291, 65308, 17), Range16), $clone(new Range16.ptr(65309, 65310, 1), Range16), $clone(new Range16.ptr(65342, 65344, 2), Range16), $clone(new Range16.ptr(65372, 65374, 2), Range16), $clone(new Range16.ptr(65504, 65510, 1), Range16), $clone(new Range16.ptr(65512, 65518, 1), Range16), $clone(new Range16.ptr(65532, 65533, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(65847, 65855, 1), Range32), $clone(new Range32.ptr(65913, 65929, 1), Range32), $clone(new Range32.ptr(65932, 65934, 1), Range32), $clone(new Range32.ptr(65936, 65948, 1), Range32), $clone(new Range32.ptr(65952, 66000, 48), Range32), $clone(new Range32.ptr(66001, 66044, 1), Range32), $clone(new Range32.ptr(67703, 67704, 1), Range32), $clone(new Range32.ptr(68296, 71487, 3191), Range32), $clone(new Range32.ptr(73685, 73713, 1), Range32), $clone(new Range32.ptr(92988, 92991, 1), Range32), $clone(new Range32.ptr(92997, 113820, 20823), Range32), $clone(new Range32.ptr(118784, 119029, 1), Range32), $clone(new Range32.ptr(119040, 119078, 1), Range32), $clone(new Range32.ptr(119081, 119140, 1), Range32), $clone(new Range32.ptr(119146, 119148, 1), Range32), $clone(new Range32.ptr(119171, 119172, 1), Range32), $clone(new Range32.ptr(119180, 119209, 1), Range32), $clone(new Range32.ptr(119214, 119272, 1), Range32), $clone(new Range32.ptr(119296, 119361, 1), Range32), $clone(new Range32.ptr(119365, 119552, 187), Range32), $clone(new Range32.ptr(119553, 119638, 1), Range32), $clone(new Range32.ptr(120513, 120539, 26), Range32), $clone(new Range32.ptr(120571, 120597, 26), Range32), $clone(new Range32.ptr(120629, 120655, 26), Range32), $clone(new Range32.ptr(120687, 120713, 26), Range32), $clone(new Range32.ptr(120745, 120771, 26), Range32), $clone(new Range32.ptr(120832, 121343, 1), Range32), $clone(new Range32.ptr(121399, 121402, 1), Range32), $clone(new Range32.ptr(121453, 121460, 1), Range32), $clone(new Range32.ptr(121462, 121475, 1), Range32), $clone(new Range32.ptr(121477, 121478, 1), Range32), $clone(new Range32.ptr(123215, 123647, 432), Range32), $clone(new Range32.ptr(126124, 126128, 4), Range32), $clone(new Range32.ptr(126254, 126704, 450), Range32), $clone(new Range32.ptr(126705, 126976, 271), Range32), $clone(new Range32.ptr(126977, 127019, 1), Range32), $clone(new Range32.ptr(127024, 127123, 1), Range32), $clone(new Range32.ptr(127136, 127150, 1), Range32), $clone(new Range32.ptr(127153, 127167, 1), Range32), $clone(new Range32.ptr(127169, 127183, 1), Range32), $clone(new Range32.ptr(127185, 127221, 1), Range32), $clone(new Range32.ptr(127245, 127405, 1), Range32), $clone(new Range32.ptr(127462, 127490, 1), Range32), $clone(new Range32.ptr(127504, 127547, 1), Range32), $clone(new Range32.ptr(127552, 127560, 1), Range32), $clone(new Range32.ptr(127568, 127569, 1), Range32), $clone(new Range32.ptr(127584, 127589, 1), Range32), $clone(new Range32.ptr(127744, 128727, 1), Range32), $clone(new Range32.ptr(128736, 128748, 1), Range32), $clone(new Range32.ptr(128752, 128764, 1), Range32), $clone(new Range32.ptr(128768, 128883, 1), Range32), $clone(new Range32.ptr(128896, 128984, 1), Range32), $clone(new Range32.ptr(128992, 129003, 1), Range32), $clone(new Range32.ptr(129024, 129035, 1), Range32), $clone(new Range32.ptr(129040, 129095, 1), Range32), $clone(new Range32.ptr(129104, 129113, 1), Range32), $clone(new Range32.ptr(129120, 129159, 1), Range32), $clone(new Range32.ptr(129168, 129197, 1), Range32), $clone(new Range32.ptr(129200, 129201, 1), Range32), $clone(new Range32.ptr(129280, 129400, 1), Range32), $clone(new Range32.ptr(129402, 129483, 1), Range32), $clone(new Range32.ptr(129485, 129619, 1), Range32), $clone(new Range32.ptr(129632, 129645, 1), Range32), $clone(new Range32.ptr(129648, 129652, 1), Range32), $clone(new Range32.ptr(129656, 129658, 1), Range32), $clone(new Range32.ptr(129664, 129670, 1), Range32), $clone(new Range32.ptr(129680, 129704, 1), Range32), $clone(new Range32.ptr(129712, 129718, 1), Range32), $clone(new Range32.ptr(129728, 129730, 1), Range32), $clone(new Range32.ptr(129744, 129750, 1), Range32), $clone(new Range32.ptr(129792, 129938, 1), Range32), $clone(new Range32.ptr(129940, 129994, 1), Range32)]), 10); + _Sc = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(36, 162, 126), Range16), $clone(new Range16.ptr(163, 165, 1), Range16), $clone(new Range16.ptr(1423, 1547, 124), Range16), $clone(new Range16.ptr(2046, 2047, 1), Range16), $clone(new Range16.ptr(2546, 2547, 1), Range16), $clone(new Range16.ptr(2555, 2801, 246), Range16), $clone(new Range16.ptr(3065, 3647, 582), Range16), $clone(new Range16.ptr(6107, 8352, 2245), Range16), $clone(new Range16.ptr(8353, 8383, 1), Range16), $clone(new Range16.ptr(43064, 65020, 21956), Range16), $clone(new Range16.ptr(65129, 65284, 155), Range16), $clone(new Range16.ptr(65504, 65505, 1), Range16), $clone(new Range16.ptr(65509, 65510, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(73693, 73696, 1), Range32), $clone(new Range32.ptr(123647, 126128, 2481), Range32)]), 2); + _Sk = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(94, 96, 2), Range16), $clone(new Range16.ptr(168, 175, 7), Range16), $clone(new Range16.ptr(180, 184, 4), Range16), $clone(new Range16.ptr(706, 709, 1), Range16), $clone(new Range16.ptr(722, 735, 1), Range16), $clone(new Range16.ptr(741, 747, 1), Range16), $clone(new Range16.ptr(749, 751, 2), Range16), $clone(new Range16.ptr(752, 767, 1), Range16), $clone(new Range16.ptr(885, 900, 15), Range16), $clone(new Range16.ptr(901, 8125, 7224), Range16), $clone(new Range16.ptr(8127, 8129, 1), Range16), $clone(new Range16.ptr(8141, 8143, 1), Range16), $clone(new Range16.ptr(8157, 8159, 1), Range16), $clone(new Range16.ptr(8173, 8175, 1), Range16), $clone(new Range16.ptr(8189, 8190, 1), Range16), $clone(new Range16.ptr(12443, 12444, 1), Range16), $clone(new Range16.ptr(42752, 42774, 1), Range16), $clone(new Range16.ptr(42784, 42785, 1), Range16), $clone(new Range16.ptr(42889, 42890, 1), Range16), $clone(new Range16.ptr(43867, 43882, 15), Range16), $clone(new Range16.ptr(43883, 64434, 20551), Range16), $clone(new Range16.ptr(64435, 64449, 1), Range16), $clone(new Range16.ptr(65342, 65344, 2), Range16), $clone(new Range16.ptr(65507, 65507, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(127995, 127999, 1), Range32)]), 3); + _Sm = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(43, 60, 17), Range16), $clone(new Range16.ptr(61, 62, 1), Range16), $clone(new Range16.ptr(124, 126, 2), Range16), $clone(new Range16.ptr(172, 177, 5), Range16), $clone(new Range16.ptr(215, 247, 32), Range16), $clone(new Range16.ptr(1014, 1542, 528), Range16), $clone(new Range16.ptr(1543, 1544, 1), Range16), $clone(new Range16.ptr(8260, 8274, 14), Range16), $clone(new Range16.ptr(8314, 8316, 1), Range16), $clone(new Range16.ptr(8330, 8332, 1), Range16), $clone(new Range16.ptr(8472, 8512, 40), Range16), $clone(new Range16.ptr(8513, 8516, 1), Range16), $clone(new Range16.ptr(8523, 8592, 69), Range16), $clone(new Range16.ptr(8593, 8596, 1), Range16), $clone(new Range16.ptr(8602, 8603, 1), Range16), $clone(new Range16.ptr(8608, 8614, 3), Range16), $clone(new Range16.ptr(8622, 8654, 32), Range16), $clone(new Range16.ptr(8655, 8658, 3), Range16), $clone(new Range16.ptr(8660, 8692, 32), Range16), $clone(new Range16.ptr(8693, 8959, 1), Range16), $clone(new Range16.ptr(8992, 8993, 1), Range16), $clone(new Range16.ptr(9084, 9115, 31), Range16), $clone(new Range16.ptr(9116, 9139, 1), Range16), $clone(new Range16.ptr(9180, 9185, 1), Range16), $clone(new Range16.ptr(9655, 9665, 10), Range16), $clone(new Range16.ptr(9720, 9727, 1), Range16), $clone(new Range16.ptr(9839, 10176, 337), Range16), $clone(new Range16.ptr(10177, 10180, 1), Range16), $clone(new Range16.ptr(10183, 10213, 1), Range16), $clone(new Range16.ptr(10224, 10239, 1), Range16), $clone(new Range16.ptr(10496, 10626, 1), Range16), $clone(new Range16.ptr(10649, 10711, 1), Range16), $clone(new Range16.ptr(10716, 10747, 1), Range16), $clone(new Range16.ptr(10750, 11007, 1), Range16), $clone(new Range16.ptr(11056, 11076, 1), Range16), $clone(new Range16.ptr(11079, 11084, 1), Range16), $clone(new Range16.ptr(64297, 65122, 825), Range16), $clone(new Range16.ptr(65124, 65126, 1), Range16), $clone(new Range16.ptr(65291, 65308, 17), Range16), $clone(new Range16.ptr(65309, 65310, 1), Range16), $clone(new Range16.ptr(65372, 65374, 2), Range16), $clone(new Range16.ptr(65506, 65513, 7), Range16), $clone(new Range16.ptr(65514, 65516, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(120513, 120539, 26), Range32), $clone(new Range32.ptr(120571, 120597, 26), Range32), $clone(new Range32.ptr(120629, 120655, 26), Range32), $clone(new Range32.ptr(120687, 120713, 26), Range32), $clone(new Range32.ptr(120745, 120771, 26), Range32), $clone(new Range32.ptr(126704, 126705, 1), Range32)]), 5); + _So = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(166, 169, 3), Range16), $clone(new Range16.ptr(174, 176, 2), Range16), $clone(new Range16.ptr(1154, 1421, 267), Range16), $clone(new Range16.ptr(1422, 1550, 128), Range16), $clone(new Range16.ptr(1551, 1758, 207), Range16), $clone(new Range16.ptr(1769, 1789, 20), Range16), $clone(new Range16.ptr(1790, 2038, 248), Range16), $clone(new Range16.ptr(2554, 2928, 374), Range16), $clone(new Range16.ptr(3059, 3064, 1), Range16), $clone(new Range16.ptr(3066, 3199, 133), Range16), $clone(new Range16.ptr(3407, 3449, 42), Range16), $clone(new Range16.ptr(3841, 3843, 1), Range16), $clone(new Range16.ptr(3859, 3861, 2), Range16), $clone(new Range16.ptr(3862, 3863, 1), Range16), $clone(new Range16.ptr(3866, 3871, 1), Range16), $clone(new Range16.ptr(3892, 3896, 2), Range16), $clone(new Range16.ptr(4030, 4037, 1), Range16), $clone(new Range16.ptr(4039, 4044, 1), Range16), $clone(new Range16.ptr(4046, 4047, 1), Range16), $clone(new Range16.ptr(4053, 4056, 1), Range16), $clone(new Range16.ptr(4254, 4255, 1), Range16), $clone(new Range16.ptr(5008, 5017, 1), Range16), $clone(new Range16.ptr(5741, 6464, 723), Range16), $clone(new Range16.ptr(6622, 6655, 1), Range16), $clone(new Range16.ptr(7009, 7018, 1), Range16), $clone(new Range16.ptr(7028, 7036, 1), Range16), $clone(new Range16.ptr(8448, 8449, 1), Range16), $clone(new Range16.ptr(8451, 8454, 1), Range16), $clone(new Range16.ptr(8456, 8457, 1), Range16), $clone(new Range16.ptr(8468, 8470, 2), Range16), $clone(new Range16.ptr(8471, 8478, 7), Range16), $clone(new Range16.ptr(8479, 8483, 1), Range16), $clone(new Range16.ptr(8485, 8489, 2), Range16), $clone(new Range16.ptr(8494, 8506, 12), Range16), $clone(new Range16.ptr(8507, 8522, 15), Range16), $clone(new Range16.ptr(8524, 8525, 1), Range16), $clone(new Range16.ptr(8527, 8586, 59), Range16), $clone(new Range16.ptr(8587, 8597, 10), Range16), $clone(new Range16.ptr(8598, 8601, 1), Range16), $clone(new Range16.ptr(8604, 8607, 1), Range16), $clone(new Range16.ptr(8609, 8610, 1), Range16), $clone(new Range16.ptr(8612, 8613, 1), Range16), $clone(new Range16.ptr(8615, 8621, 1), Range16), $clone(new Range16.ptr(8623, 8653, 1), Range16), $clone(new Range16.ptr(8656, 8657, 1), Range16), $clone(new Range16.ptr(8659, 8661, 2), Range16), $clone(new Range16.ptr(8662, 8691, 1), Range16), $clone(new Range16.ptr(8960, 8967, 1), Range16), $clone(new Range16.ptr(8972, 8991, 1), Range16), $clone(new Range16.ptr(8994, 9000, 1), Range16), $clone(new Range16.ptr(9003, 9083, 1), Range16), $clone(new Range16.ptr(9085, 9114, 1), Range16), $clone(new Range16.ptr(9140, 9179, 1), Range16), $clone(new Range16.ptr(9186, 9254, 1), Range16), $clone(new Range16.ptr(9280, 9290, 1), Range16), $clone(new Range16.ptr(9372, 9449, 1), Range16), $clone(new Range16.ptr(9472, 9654, 1), Range16), $clone(new Range16.ptr(9656, 9664, 1), Range16), $clone(new Range16.ptr(9666, 9719, 1), Range16), $clone(new Range16.ptr(9728, 9838, 1), Range16), $clone(new Range16.ptr(9840, 10087, 1), Range16), $clone(new Range16.ptr(10132, 10175, 1), Range16), $clone(new Range16.ptr(10240, 10495, 1), Range16), $clone(new Range16.ptr(11008, 11055, 1), Range16), $clone(new Range16.ptr(11077, 11078, 1), Range16), $clone(new Range16.ptr(11085, 11123, 1), Range16), $clone(new Range16.ptr(11126, 11157, 1), Range16), $clone(new Range16.ptr(11159, 11263, 1), Range16), $clone(new Range16.ptr(11493, 11498, 1), Range16), $clone(new Range16.ptr(11856, 11857, 1), Range16), $clone(new Range16.ptr(11904, 11929, 1), Range16), $clone(new Range16.ptr(11931, 12019, 1), Range16), $clone(new Range16.ptr(12032, 12245, 1), Range16), $clone(new Range16.ptr(12272, 12283, 1), Range16), $clone(new Range16.ptr(12292, 12306, 14), Range16), $clone(new Range16.ptr(12307, 12320, 13), Range16), $clone(new Range16.ptr(12342, 12343, 1), Range16), $clone(new Range16.ptr(12350, 12351, 1), Range16), $clone(new Range16.ptr(12688, 12689, 1), Range16), $clone(new Range16.ptr(12694, 12703, 1), Range16), $clone(new Range16.ptr(12736, 12771, 1), Range16), $clone(new Range16.ptr(12800, 12830, 1), Range16), $clone(new Range16.ptr(12842, 12871, 1), Range16), $clone(new Range16.ptr(12880, 12896, 16), Range16), $clone(new Range16.ptr(12897, 12927, 1), Range16), $clone(new Range16.ptr(12938, 12976, 1), Range16), $clone(new Range16.ptr(12992, 13311, 1), Range16), $clone(new Range16.ptr(19904, 19967, 1), Range16), $clone(new Range16.ptr(42128, 42182, 1), Range16), $clone(new Range16.ptr(43048, 43051, 1), Range16), $clone(new Range16.ptr(43062, 43063, 1), Range16), $clone(new Range16.ptr(43065, 43639, 574), Range16), $clone(new Range16.ptr(43640, 43641, 1), Range16), $clone(new Range16.ptr(65021, 65508, 487), Range16), $clone(new Range16.ptr(65512, 65517, 5), Range16), $clone(new Range16.ptr(65518, 65532, 14), Range16), $clone(new Range16.ptr(65533, 65533, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(65847, 65855, 1), Range32), $clone(new Range32.ptr(65913, 65929, 1), Range32), $clone(new Range32.ptr(65932, 65934, 1), Range32), $clone(new Range32.ptr(65936, 65948, 1), Range32), $clone(new Range32.ptr(65952, 66000, 48), Range32), $clone(new Range32.ptr(66001, 66044, 1), Range32), $clone(new Range32.ptr(67703, 67704, 1), Range32), $clone(new Range32.ptr(68296, 71487, 3191), Range32), $clone(new Range32.ptr(73685, 73692, 1), Range32), $clone(new Range32.ptr(73697, 73713, 1), Range32), $clone(new Range32.ptr(92988, 92991, 1), Range32), $clone(new Range32.ptr(92997, 113820, 20823), Range32), $clone(new Range32.ptr(118784, 119029, 1), Range32), $clone(new Range32.ptr(119040, 119078, 1), Range32), $clone(new Range32.ptr(119081, 119140, 1), Range32), $clone(new Range32.ptr(119146, 119148, 1), Range32), $clone(new Range32.ptr(119171, 119172, 1), Range32), $clone(new Range32.ptr(119180, 119209, 1), Range32), $clone(new Range32.ptr(119214, 119272, 1), Range32), $clone(new Range32.ptr(119296, 119361, 1), Range32), $clone(new Range32.ptr(119365, 119552, 187), Range32), $clone(new Range32.ptr(119553, 119638, 1), Range32), $clone(new Range32.ptr(120832, 121343, 1), Range32), $clone(new Range32.ptr(121399, 121402, 1), Range32), $clone(new Range32.ptr(121453, 121460, 1), Range32), $clone(new Range32.ptr(121462, 121475, 1), Range32), $clone(new Range32.ptr(121477, 121478, 1), Range32), $clone(new Range32.ptr(123215, 126124, 2909), Range32), $clone(new Range32.ptr(126254, 126976, 722), Range32), $clone(new Range32.ptr(126977, 127019, 1), Range32), $clone(new Range32.ptr(127024, 127123, 1), Range32), $clone(new Range32.ptr(127136, 127150, 1), Range32), $clone(new Range32.ptr(127153, 127167, 1), Range32), $clone(new Range32.ptr(127169, 127183, 1), Range32), $clone(new Range32.ptr(127185, 127221, 1), Range32), $clone(new Range32.ptr(127245, 127405, 1), Range32), $clone(new Range32.ptr(127462, 127490, 1), Range32), $clone(new Range32.ptr(127504, 127547, 1), Range32), $clone(new Range32.ptr(127552, 127560, 1), Range32), $clone(new Range32.ptr(127568, 127569, 1), Range32), $clone(new Range32.ptr(127584, 127589, 1), Range32), $clone(new Range32.ptr(127744, 127994, 1), Range32), $clone(new Range32.ptr(128000, 128727, 1), Range32), $clone(new Range32.ptr(128736, 128748, 1), Range32), $clone(new Range32.ptr(128752, 128764, 1), Range32), $clone(new Range32.ptr(128768, 128883, 1), Range32), $clone(new Range32.ptr(128896, 128984, 1), Range32), $clone(new Range32.ptr(128992, 129003, 1), Range32), $clone(new Range32.ptr(129024, 129035, 1), Range32), $clone(new Range32.ptr(129040, 129095, 1), Range32), $clone(new Range32.ptr(129104, 129113, 1), Range32), $clone(new Range32.ptr(129120, 129159, 1), Range32), $clone(new Range32.ptr(129168, 129197, 1), Range32), $clone(new Range32.ptr(129200, 129201, 1), Range32), $clone(new Range32.ptr(129280, 129400, 1), Range32), $clone(new Range32.ptr(129402, 129483, 1), Range32), $clone(new Range32.ptr(129485, 129619, 1), Range32), $clone(new Range32.ptr(129632, 129645, 1), Range32), $clone(new Range32.ptr(129648, 129652, 1), Range32), $clone(new Range32.ptr(129656, 129658, 1), Range32), $clone(new Range32.ptr(129664, 129670, 1), Range32), $clone(new Range32.ptr(129680, 129704, 1), Range32), $clone(new Range32.ptr(129712, 129718, 1), Range32), $clone(new Range32.ptr(129728, 129730, 1), Range32), $clone(new Range32.ptr(129744, 129750, 1), Range32), $clone(new Range32.ptr(129792, 129938, 1), Range32), $clone(new Range32.ptr(129940, 129994, 1), Range32)]), 2); + _Z = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(32, 160, 128), Range16), $clone(new Range16.ptr(5760, 8192, 2432), Range16), $clone(new Range16.ptr(8193, 8202, 1), Range16), $clone(new Range16.ptr(8232, 8233, 1), Range16), $clone(new Range16.ptr(8239, 8287, 48), Range16), $clone(new Range16.ptr(12288, 12288, 1), Range16)]), sliceType$1.nil, 1); + _Zl = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(8232, 8232, 1), Range16)]), sliceType$1.nil, 0); + _Zp = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(8233, 8233, 1), Range16)]), sliceType$1.nil, 0); + _Zs = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(32, 160, 128), Range16), $clone(new Range16.ptr(5760, 8192, 2432), Range16), $clone(new Range16.ptr(8193, 8202, 1), Range16), $clone(new Range16.ptr(8239, 8287, 48), Range16), $clone(new Range16.ptr(12288, 12288, 1), Range16)]), sliceType$1.nil, 1); + $pkg.Cc = _Cc; + $pkg.Cf = _Cf; + $pkg.Co = _Co; + $pkg.Cs = _Cs; + $pkg.Digit = _Nd; + $pkg.Nd = _Nd; + $pkg.Letter = _L; + $pkg.L = _L; + $pkg.Lm = _Lm; + $pkg.Lo = _Lo; + $pkg.Ll = _Ll; + $pkg.M = _M; + $pkg.Mc = _Mc; + $pkg.Me = _Me; + $pkg.Mn = _Mn; + $pkg.Nl = _Nl; + $pkg.No = _No; + $pkg.Number = _N; + $pkg.N = _N; + $pkg.C = _C; + $pkg.Pc = _Pc; + $pkg.Pd = _Pd; + $pkg.Pe = _Pe; + $pkg.Pf = _Pf; + $pkg.Pi = _Pi; + $pkg.Po = _Po; + $pkg.Ps = _Ps; + $pkg.Punct = _P; + $pkg.P = _P; + $pkg.Sc = _Sc; + $pkg.Sk = _Sk; + $pkg.Sm = _Sm; + $pkg.So = _So; + $pkg.Z = _Z; + $pkg.S = _S; + $pkg.Lt = _Lt; + $pkg.Upper = _Lu; + $pkg.Lu = _Lu; + $pkg.Zl = _Zl; + $pkg.Zp = _Zp; + $pkg.Zs = _Zs; + $pkg.Categories = $makeMap($String.keyFor, [{ k: "C", v: $pkg.C }, { k: "Cc", v: $pkg.Cc }, { k: "Cf", v: $pkg.Cf }, { k: "Co", v: $pkg.Co }, { k: "Cs", v: $pkg.Cs }, { k: "L", v: $pkg.L }, { k: "Ll", v: $pkg.Ll }, { k: "Lm", v: $pkg.Lm }, { k: "Lo", v: $pkg.Lo }, { k: "Lt", v: $pkg.Lt }, { k: "Lu", v: $pkg.Lu }, { k: "M", v: $pkg.M }, { k: "Mc", v: $pkg.Mc }, { k: "Me", v: $pkg.Me }, { k: "Mn", v: $pkg.Mn }, { k: "N", v: $pkg.N }, { k: "Nd", v: $pkg.Nd }, { k: "Nl", v: $pkg.Nl }, { k: "No", v: $pkg.No }, { k: "P", v: $pkg.P }, { k: "Pc", v: $pkg.Pc }, { k: "Pd", v: $pkg.Pd }, { k: "Pe", v: $pkg.Pe }, { k: "Pf", v: $pkg.Pf }, { k: "Pi", v: $pkg.Pi }, { k: "Po", v: $pkg.Po }, { k: "Ps", v: $pkg.Ps }, { k: "S", v: $pkg.S }, { k: "Sc", v: $pkg.Sc }, { k: "Sk", v: $pkg.Sk }, { k: "Sm", v: $pkg.Sm }, { k: "So", v: $pkg.So }, { k: "Z", v: $pkg.Z }, { k: "Zl", v: $pkg.Zl }, { k: "Zp", v: $pkg.Zp }, { k: "Zs", v: $pkg.Zs }]); + _Adlam = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(125184, 125259, 1), Range32), $clone(new Range32.ptr(125264, 125273, 1), Range32), $clone(new Range32.ptr(125278, 125279, 1), Range32)]), 0); + _Ahom = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(71424, 71450, 1), Range32), $clone(new Range32.ptr(71453, 71467, 1), Range32), $clone(new Range32.ptr(71472, 71487, 1), Range32)]), 0); + _Anatolian_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(82944, 83526, 1), Range32)]), 0); + _Arabic = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(1536, 1540, 1), Range16), $clone(new Range16.ptr(1542, 1547, 1), Range16), $clone(new Range16.ptr(1549, 1562, 1), Range16), $clone(new Range16.ptr(1564, 1568, 2), Range16), $clone(new Range16.ptr(1569, 1599, 1), Range16), $clone(new Range16.ptr(1601, 1610, 1), Range16), $clone(new Range16.ptr(1622, 1647, 1), Range16), $clone(new Range16.ptr(1649, 1756, 1), Range16), $clone(new Range16.ptr(1758, 1791, 1), Range16), $clone(new Range16.ptr(1872, 1919, 1), Range16), $clone(new Range16.ptr(2208, 2228, 1), Range16), $clone(new Range16.ptr(2230, 2247, 1), Range16), $clone(new Range16.ptr(2259, 2273, 1), Range16), $clone(new Range16.ptr(2275, 2303, 1), Range16), $clone(new Range16.ptr(64336, 64449, 1), Range16), $clone(new Range16.ptr(64467, 64829, 1), Range16), $clone(new Range16.ptr(64848, 64911, 1), Range16), $clone(new Range16.ptr(64914, 64967, 1), Range16), $clone(new Range16.ptr(65008, 65021, 1), Range16), $clone(new Range16.ptr(65136, 65140, 1), Range16), $clone(new Range16.ptr(65142, 65276, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(69216, 69246, 1), Range32), $clone(new Range32.ptr(126464, 126467, 1), Range32), $clone(new Range32.ptr(126469, 126495, 1), Range32), $clone(new Range32.ptr(126497, 126498, 1), Range32), $clone(new Range32.ptr(126500, 126503, 3), Range32), $clone(new Range32.ptr(126505, 126514, 1), Range32), $clone(new Range32.ptr(126516, 126519, 1), Range32), $clone(new Range32.ptr(126521, 126523, 2), Range32), $clone(new Range32.ptr(126530, 126535, 5), Range32), $clone(new Range32.ptr(126537, 126541, 2), Range32), $clone(new Range32.ptr(126542, 126543, 1), Range32), $clone(new Range32.ptr(126545, 126546, 1), Range32), $clone(new Range32.ptr(126548, 126551, 3), Range32), $clone(new Range32.ptr(126553, 126561, 2), Range32), $clone(new Range32.ptr(126562, 126564, 2), Range32), $clone(new Range32.ptr(126567, 126570, 1), Range32), $clone(new Range32.ptr(126572, 126578, 1), Range32), $clone(new Range32.ptr(126580, 126583, 1), Range32), $clone(new Range32.ptr(126585, 126588, 1), Range32), $clone(new Range32.ptr(126590, 126592, 2), Range32), $clone(new Range32.ptr(126593, 126601, 1), Range32), $clone(new Range32.ptr(126603, 126619, 1), Range32), $clone(new Range32.ptr(126625, 126627, 1), Range32), $clone(new Range32.ptr(126629, 126633, 1), Range32), $clone(new Range32.ptr(126635, 126651, 1), Range32), $clone(new Range32.ptr(126704, 126705, 1), Range32)]), 0); + _Armenian = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(1329, 1366, 1), Range16), $clone(new Range16.ptr(1369, 1418, 1), Range16), $clone(new Range16.ptr(1421, 1423, 1), Range16), $clone(new Range16.ptr(64275, 64279, 1), Range16)]), sliceType$1.nil, 0); + _Avestan = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68352, 68405, 1), Range32), $clone(new Range32.ptr(68409, 68415, 1), Range32)]), 0); + _Balinese = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(6912, 6987, 1), Range16), $clone(new Range16.ptr(6992, 7036, 1), Range16)]), sliceType$1.nil, 0); + _Bamum = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(42656, 42743, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(92160, 92728, 1), Range32)]), 0); + _Bassa_Vah = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(92880, 92909, 1), Range32), $clone(new Range32.ptr(92912, 92917, 1), Range32)]), 0); + _Batak = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(7104, 7155, 1), Range16), $clone(new Range16.ptr(7164, 7167, 1), Range16)]), sliceType$1.nil, 0); + _Bengali = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(2432, 2435, 1), Range16), $clone(new Range16.ptr(2437, 2444, 1), Range16), $clone(new Range16.ptr(2447, 2448, 1), Range16), $clone(new Range16.ptr(2451, 2472, 1), Range16), $clone(new Range16.ptr(2474, 2480, 1), Range16), $clone(new Range16.ptr(2482, 2486, 4), Range16), $clone(new Range16.ptr(2487, 2489, 1), Range16), $clone(new Range16.ptr(2492, 2500, 1), Range16), $clone(new Range16.ptr(2503, 2504, 1), Range16), $clone(new Range16.ptr(2507, 2510, 1), Range16), $clone(new Range16.ptr(2519, 2524, 5), Range16), $clone(new Range16.ptr(2525, 2527, 2), Range16), $clone(new Range16.ptr(2528, 2531, 1), Range16), $clone(new Range16.ptr(2534, 2558, 1), Range16)]), sliceType$1.nil, 0); + _Bhaiksuki = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(72704, 72712, 1), Range32), $clone(new Range32.ptr(72714, 72758, 1), Range32), $clone(new Range32.ptr(72760, 72773, 1), Range32), $clone(new Range32.ptr(72784, 72812, 1), Range32)]), 0); + _Bopomofo = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(746, 747, 1), Range16), $clone(new Range16.ptr(12549, 12591, 1), Range16), $clone(new Range16.ptr(12704, 12735, 1), Range16)]), sliceType$1.nil, 0); + _Brahmi = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(69632, 69709, 1), Range32), $clone(new Range32.ptr(69714, 69743, 1), Range32), $clone(new Range32.ptr(69759, 69759, 1), Range32)]), 0); + _Braille = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(10240, 10495, 1), Range16)]), sliceType$1.nil, 0); + _Buginese = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(6656, 6683, 1), Range16), $clone(new Range16.ptr(6686, 6687, 1), Range16)]), sliceType$1.nil, 0); + _Buhid = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(5952, 5971, 1), Range16)]), sliceType$1.nil, 0); + _Canadian_Aboriginal = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(5120, 5759, 1), Range16), $clone(new Range16.ptr(6320, 6389, 1), Range16)]), sliceType$1.nil, 0); + _Carian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66208, 66256, 1), Range32)]), 0); + _Caucasian_Albanian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66864, 66915, 1), Range32), $clone(new Range32.ptr(66927, 66927, 1), Range32)]), 0); + _Chakma = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(69888, 69940, 1), Range32), $clone(new Range32.ptr(69942, 69959, 1), Range32)]), 0); + _Cham = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(43520, 43574, 1), Range16), $clone(new Range16.ptr(43584, 43597, 1), Range16), $clone(new Range16.ptr(43600, 43609, 1), Range16), $clone(new Range16.ptr(43612, 43615, 1), Range16)]), sliceType$1.nil, 0); + _Cherokee = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(5024, 5109, 1), Range16), $clone(new Range16.ptr(5112, 5117, 1), Range16), $clone(new Range16.ptr(43888, 43967, 1), Range16)]), sliceType$1.nil, 0); + _Chorasmian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(69552, 69579, 1), Range32)]), 0); + _Common = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(0, 64, 1), Range16), $clone(new Range16.ptr(91, 96, 1), Range16), $clone(new Range16.ptr(123, 169, 1), Range16), $clone(new Range16.ptr(171, 185, 1), Range16), $clone(new Range16.ptr(187, 191, 1), Range16), $clone(new Range16.ptr(215, 247, 32), Range16), $clone(new Range16.ptr(697, 735, 1), Range16), $clone(new Range16.ptr(741, 745, 1), Range16), $clone(new Range16.ptr(748, 767, 1), Range16), $clone(new Range16.ptr(884, 894, 10), Range16), $clone(new Range16.ptr(901, 903, 2), Range16), $clone(new Range16.ptr(1541, 1548, 7), Range16), $clone(new Range16.ptr(1563, 1567, 4), Range16), $clone(new Range16.ptr(1600, 1757, 157), Range16), $clone(new Range16.ptr(2274, 2404, 130), Range16), $clone(new Range16.ptr(2405, 3647, 1242), Range16), $clone(new Range16.ptr(4053, 4056, 1), Range16), $clone(new Range16.ptr(4347, 5867, 1520), Range16), $clone(new Range16.ptr(5868, 5869, 1), Range16), $clone(new Range16.ptr(5941, 5942, 1), Range16), $clone(new Range16.ptr(6146, 6147, 1), Range16), $clone(new Range16.ptr(6149, 7379, 1230), Range16), $clone(new Range16.ptr(7393, 7401, 8), Range16), $clone(new Range16.ptr(7402, 7404, 1), Range16), $clone(new Range16.ptr(7406, 7411, 1), Range16), $clone(new Range16.ptr(7413, 7415, 1), Range16), $clone(new Range16.ptr(7418, 8192, 774), Range16), $clone(new Range16.ptr(8193, 8203, 1), Range16), $clone(new Range16.ptr(8206, 8292, 1), Range16), $clone(new Range16.ptr(8294, 8304, 1), Range16), $clone(new Range16.ptr(8308, 8318, 1), Range16), $clone(new Range16.ptr(8320, 8334, 1), Range16), $clone(new Range16.ptr(8352, 8383, 1), Range16), $clone(new Range16.ptr(8448, 8485, 1), Range16), $clone(new Range16.ptr(8487, 8489, 1), Range16), $clone(new Range16.ptr(8492, 8497, 1), Range16), $clone(new Range16.ptr(8499, 8525, 1), Range16), $clone(new Range16.ptr(8527, 8543, 1), Range16), $clone(new Range16.ptr(8585, 8587, 1), Range16), $clone(new Range16.ptr(8592, 9254, 1), Range16), $clone(new Range16.ptr(9280, 9290, 1), Range16), $clone(new Range16.ptr(9312, 10239, 1), Range16), $clone(new Range16.ptr(10496, 11123, 1), Range16), $clone(new Range16.ptr(11126, 11157, 1), Range16), $clone(new Range16.ptr(11159, 11263, 1), Range16), $clone(new Range16.ptr(11776, 11858, 1), Range16), $clone(new Range16.ptr(12272, 12283, 1), Range16), $clone(new Range16.ptr(12288, 12292, 1), Range16), $clone(new Range16.ptr(12294, 12296, 2), Range16), $clone(new Range16.ptr(12297, 12320, 1), Range16), $clone(new Range16.ptr(12336, 12343, 1), Range16), $clone(new Range16.ptr(12348, 12351, 1), Range16), $clone(new Range16.ptr(12443, 12444, 1), Range16), $clone(new Range16.ptr(12448, 12539, 91), Range16), $clone(new Range16.ptr(12540, 12688, 148), Range16), $clone(new Range16.ptr(12689, 12703, 1), Range16), $clone(new Range16.ptr(12736, 12771, 1), Range16), $clone(new Range16.ptr(12832, 12895, 1), Range16), $clone(new Range16.ptr(12927, 13007, 1), Range16), $clone(new Range16.ptr(13055, 13144, 89), Range16), $clone(new Range16.ptr(13145, 13311, 1), Range16), $clone(new Range16.ptr(19904, 19967, 1), Range16), $clone(new Range16.ptr(42752, 42785, 1), Range16), $clone(new Range16.ptr(42888, 42890, 1), Range16), $clone(new Range16.ptr(43056, 43065, 1), Range16), $clone(new Range16.ptr(43310, 43471, 161), Range16), $clone(new Range16.ptr(43867, 43882, 15), Range16), $clone(new Range16.ptr(43883, 64830, 20947), Range16), $clone(new Range16.ptr(64831, 65040, 209), Range16), $clone(new Range16.ptr(65041, 65049, 1), Range16), $clone(new Range16.ptr(65072, 65106, 1), Range16), $clone(new Range16.ptr(65108, 65126, 1), Range16), $clone(new Range16.ptr(65128, 65131, 1), Range16), $clone(new Range16.ptr(65279, 65281, 2), Range16), $clone(new Range16.ptr(65282, 65312, 1), Range16), $clone(new Range16.ptr(65339, 65344, 1), Range16), $clone(new Range16.ptr(65371, 65381, 1), Range16), $clone(new Range16.ptr(65392, 65438, 46), Range16), $clone(new Range16.ptr(65439, 65504, 65), Range16), $clone(new Range16.ptr(65505, 65510, 1), Range16), $clone(new Range16.ptr(65512, 65518, 1), Range16), $clone(new Range16.ptr(65529, 65533, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(65792, 65794, 1), Range32), $clone(new Range32.ptr(65799, 65843, 1), Range32), $clone(new Range32.ptr(65847, 65855, 1), Range32), $clone(new Range32.ptr(65936, 65948, 1), Range32), $clone(new Range32.ptr(66000, 66044, 1), Range32), $clone(new Range32.ptr(66273, 66299, 1), Range32), $clone(new Range32.ptr(94178, 94179, 1), Range32), $clone(new Range32.ptr(113824, 113827, 1), Range32), $clone(new Range32.ptr(118784, 119029, 1), Range32), $clone(new Range32.ptr(119040, 119078, 1), Range32), $clone(new Range32.ptr(119081, 119142, 1), Range32), $clone(new Range32.ptr(119146, 119162, 1), Range32), $clone(new Range32.ptr(119171, 119172, 1), Range32), $clone(new Range32.ptr(119180, 119209, 1), Range32), $clone(new Range32.ptr(119214, 119272, 1), Range32), $clone(new Range32.ptr(119520, 119539, 1), Range32), $clone(new Range32.ptr(119552, 119638, 1), Range32), $clone(new Range32.ptr(119648, 119672, 1), Range32), $clone(new Range32.ptr(119808, 119892, 1), Range32), $clone(new Range32.ptr(119894, 119964, 1), Range32), $clone(new Range32.ptr(119966, 119967, 1), Range32), $clone(new Range32.ptr(119970, 119973, 3), Range32), $clone(new Range32.ptr(119974, 119977, 3), Range32), $clone(new Range32.ptr(119978, 119980, 1), Range32), $clone(new Range32.ptr(119982, 119993, 1), Range32), $clone(new Range32.ptr(119995, 119997, 2), Range32), $clone(new Range32.ptr(119998, 120003, 1), Range32), $clone(new Range32.ptr(120005, 120069, 1), Range32), $clone(new Range32.ptr(120071, 120074, 1), Range32), $clone(new Range32.ptr(120077, 120084, 1), Range32), $clone(new Range32.ptr(120086, 120092, 1), Range32), $clone(new Range32.ptr(120094, 120121, 1), Range32), $clone(new Range32.ptr(120123, 120126, 1), Range32), $clone(new Range32.ptr(120128, 120132, 1), Range32), $clone(new Range32.ptr(120134, 120138, 4), Range32), $clone(new Range32.ptr(120139, 120144, 1), Range32), $clone(new Range32.ptr(120146, 120485, 1), Range32), $clone(new Range32.ptr(120488, 120779, 1), Range32), $clone(new Range32.ptr(120782, 120831, 1), Range32), $clone(new Range32.ptr(126065, 126132, 1), Range32), $clone(new Range32.ptr(126209, 126269, 1), Range32), $clone(new Range32.ptr(126976, 127019, 1), Range32), $clone(new Range32.ptr(127024, 127123, 1), Range32), $clone(new Range32.ptr(127136, 127150, 1), Range32), $clone(new Range32.ptr(127153, 127167, 1), Range32), $clone(new Range32.ptr(127169, 127183, 1), Range32), $clone(new Range32.ptr(127185, 127221, 1), Range32), $clone(new Range32.ptr(127232, 127405, 1), Range32), $clone(new Range32.ptr(127462, 127487, 1), Range32), $clone(new Range32.ptr(127489, 127490, 1), Range32), $clone(new Range32.ptr(127504, 127547, 1), Range32), $clone(new Range32.ptr(127552, 127560, 1), Range32), $clone(new Range32.ptr(127568, 127569, 1), Range32), $clone(new Range32.ptr(127584, 127589, 1), Range32), $clone(new Range32.ptr(127744, 128727, 1), Range32), $clone(new Range32.ptr(128736, 128748, 1), Range32), $clone(new Range32.ptr(128752, 128764, 1), Range32), $clone(new Range32.ptr(128768, 128883, 1), Range32), $clone(new Range32.ptr(128896, 128984, 1), Range32), $clone(new Range32.ptr(128992, 129003, 1), Range32), $clone(new Range32.ptr(129024, 129035, 1), Range32), $clone(new Range32.ptr(129040, 129095, 1), Range32), $clone(new Range32.ptr(129104, 129113, 1), Range32), $clone(new Range32.ptr(129120, 129159, 1), Range32), $clone(new Range32.ptr(129168, 129197, 1), Range32), $clone(new Range32.ptr(129200, 129201, 1), Range32), $clone(new Range32.ptr(129280, 129400, 1), Range32), $clone(new Range32.ptr(129402, 129483, 1), Range32), $clone(new Range32.ptr(129485, 129619, 1), Range32), $clone(new Range32.ptr(129632, 129645, 1), Range32), $clone(new Range32.ptr(129648, 129652, 1), Range32), $clone(new Range32.ptr(129656, 129658, 1), Range32), $clone(new Range32.ptr(129664, 129670, 1), Range32), $clone(new Range32.ptr(129680, 129704, 1), Range32), $clone(new Range32.ptr(129712, 129718, 1), Range32), $clone(new Range32.ptr(129728, 129730, 1), Range32), $clone(new Range32.ptr(129744, 129750, 1), Range32), $clone(new Range32.ptr(129792, 129938, 1), Range32), $clone(new Range32.ptr(129940, 129994, 1), Range32), $clone(new Range32.ptr(130032, 130041, 1), Range32), $clone(new Range32.ptr(917505, 917536, 31), Range32), $clone(new Range32.ptr(917537, 917631, 1), Range32)]), 6); + _Coptic = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(994, 1007, 1), Range16), $clone(new Range16.ptr(11392, 11507, 1), Range16), $clone(new Range16.ptr(11513, 11519, 1), Range16)]), sliceType$1.nil, 0); + _Cuneiform = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(73728, 74649, 1), Range32), $clone(new Range32.ptr(74752, 74862, 1), Range32), $clone(new Range32.ptr(74864, 74868, 1), Range32), $clone(new Range32.ptr(74880, 75075, 1), Range32)]), 0); + _Cypriot = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(67584, 67589, 1), Range32), $clone(new Range32.ptr(67592, 67594, 2), Range32), $clone(new Range32.ptr(67595, 67637, 1), Range32), $clone(new Range32.ptr(67639, 67640, 1), Range32), $clone(new Range32.ptr(67644, 67647, 3), Range32)]), 0); + _Cyrillic = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(1024, 1156, 1), Range16), $clone(new Range16.ptr(1159, 1327, 1), Range16), $clone(new Range16.ptr(7296, 7304, 1), Range16), $clone(new Range16.ptr(7467, 7544, 77), Range16), $clone(new Range16.ptr(11744, 11775, 1), Range16), $clone(new Range16.ptr(42560, 42655, 1), Range16), $clone(new Range16.ptr(65070, 65071, 1), Range16)]), sliceType$1.nil, 0); + _Deseret = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66560, 66639, 1), Range32)]), 0); + _Devanagari = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(2304, 2384, 1), Range16), $clone(new Range16.ptr(2389, 2403, 1), Range16), $clone(new Range16.ptr(2406, 2431, 1), Range16), $clone(new Range16.ptr(43232, 43263, 1), Range16)]), sliceType$1.nil, 0); + _Dives_Akuru = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(71936, 71942, 1), Range32), $clone(new Range32.ptr(71945, 71948, 3), Range32), $clone(new Range32.ptr(71949, 71955, 1), Range32), $clone(new Range32.ptr(71957, 71958, 1), Range32), $clone(new Range32.ptr(71960, 71989, 1), Range32), $clone(new Range32.ptr(71991, 71992, 1), Range32), $clone(new Range32.ptr(71995, 72006, 1), Range32), $clone(new Range32.ptr(72016, 72025, 1), Range32)]), 0); + _Dogra = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(71680, 71739, 1), Range32)]), 0); + _Duployan = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(113664, 113770, 1), Range32), $clone(new Range32.ptr(113776, 113788, 1), Range32), $clone(new Range32.ptr(113792, 113800, 1), Range32), $clone(new Range32.ptr(113808, 113817, 1), Range32), $clone(new Range32.ptr(113820, 113823, 1), Range32)]), 0); + _Egyptian_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(77824, 78894, 1), Range32), $clone(new Range32.ptr(78896, 78904, 1), Range32)]), 0); + _Elbasan = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66816, 66855, 1), Range32)]), 0); + _Elymaic = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(69600, 69622, 1), Range32)]), 0); + _Ethiopic = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(4608, 4680, 1), Range16), $clone(new Range16.ptr(4682, 4685, 1), Range16), $clone(new Range16.ptr(4688, 4694, 1), Range16), $clone(new Range16.ptr(4696, 4698, 2), Range16), $clone(new Range16.ptr(4699, 4701, 1), Range16), $clone(new Range16.ptr(4704, 4744, 1), Range16), $clone(new Range16.ptr(4746, 4749, 1), Range16), $clone(new Range16.ptr(4752, 4784, 1), Range16), $clone(new Range16.ptr(4786, 4789, 1), Range16), $clone(new Range16.ptr(4792, 4798, 1), Range16), $clone(new Range16.ptr(4800, 4802, 2), Range16), $clone(new Range16.ptr(4803, 4805, 1), Range16), $clone(new Range16.ptr(4808, 4822, 1), Range16), $clone(new Range16.ptr(4824, 4880, 1), Range16), $clone(new Range16.ptr(4882, 4885, 1), Range16), $clone(new Range16.ptr(4888, 4954, 1), Range16), $clone(new Range16.ptr(4957, 4988, 1), Range16), $clone(new Range16.ptr(4992, 5017, 1), Range16), $clone(new Range16.ptr(11648, 11670, 1), Range16), $clone(new Range16.ptr(11680, 11686, 1), Range16), $clone(new Range16.ptr(11688, 11694, 1), Range16), $clone(new Range16.ptr(11696, 11702, 1), Range16), $clone(new Range16.ptr(11704, 11710, 1), Range16), $clone(new Range16.ptr(11712, 11718, 1), Range16), $clone(new Range16.ptr(11720, 11726, 1), Range16), $clone(new Range16.ptr(11728, 11734, 1), Range16), $clone(new Range16.ptr(11736, 11742, 1), Range16), $clone(new Range16.ptr(43777, 43782, 1), Range16), $clone(new Range16.ptr(43785, 43790, 1), Range16), $clone(new Range16.ptr(43793, 43798, 1), Range16), $clone(new Range16.ptr(43808, 43814, 1), Range16), $clone(new Range16.ptr(43816, 43822, 1), Range16)]), sliceType$1.nil, 0); + _Georgian = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(4256, 4293, 1), Range16), $clone(new Range16.ptr(4295, 4301, 6), Range16), $clone(new Range16.ptr(4304, 4346, 1), Range16), $clone(new Range16.ptr(4348, 4351, 1), Range16), $clone(new Range16.ptr(7312, 7354, 1), Range16), $clone(new Range16.ptr(7357, 7359, 1), Range16), $clone(new Range16.ptr(11520, 11557, 1), Range16), $clone(new Range16.ptr(11559, 11565, 6), Range16)]), sliceType$1.nil, 0); + _Glagolitic = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(11264, 11310, 1), Range16), $clone(new Range16.ptr(11312, 11358, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(122880, 122886, 1), Range32), $clone(new Range32.ptr(122888, 122904, 1), Range32), $clone(new Range32.ptr(122907, 122913, 1), Range32), $clone(new Range32.ptr(122915, 122916, 1), Range32), $clone(new Range32.ptr(122918, 122922, 1), Range32)]), 0); + _Gothic = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66352, 66378, 1), Range32)]), 0); + _Grantha = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(70400, 70403, 1), Range32), $clone(new Range32.ptr(70405, 70412, 1), Range32), $clone(new Range32.ptr(70415, 70416, 1), Range32), $clone(new Range32.ptr(70419, 70440, 1), Range32), $clone(new Range32.ptr(70442, 70448, 1), Range32), $clone(new Range32.ptr(70450, 70451, 1), Range32), $clone(new Range32.ptr(70453, 70457, 1), Range32), $clone(new Range32.ptr(70460, 70468, 1), Range32), $clone(new Range32.ptr(70471, 70472, 1), Range32), $clone(new Range32.ptr(70475, 70477, 1), Range32), $clone(new Range32.ptr(70480, 70487, 7), Range32), $clone(new Range32.ptr(70493, 70499, 1), Range32), $clone(new Range32.ptr(70502, 70508, 1), Range32), $clone(new Range32.ptr(70512, 70516, 1), Range32)]), 0); + _Greek = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(880, 883, 1), Range16), $clone(new Range16.ptr(885, 887, 1), Range16), $clone(new Range16.ptr(890, 893, 1), Range16), $clone(new Range16.ptr(895, 900, 5), Range16), $clone(new Range16.ptr(902, 904, 2), Range16), $clone(new Range16.ptr(905, 906, 1), Range16), $clone(new Range16.ptr(908, 910, 2), Range16), $clone(new Range16.ptr(911, 929, 1), Range16), $clone(new Range16.ptr(931, 993, 1), Range16), $clone(new Range16.ptr(1008, 1023, 1), Range16), $clone(new Range16.ptr(7462, 7466, 1), Range16), $clone(new Range16.ptr(7517, 7521, 1), Range16), $clone(new Range16.ptr(7526, 7530, 1), Range16), $clone(new Range16.ptr(7615, 7936, 321), Range16), $clone(new Range16.ptr(7937, 7957, 1), Range16), $clone(new Range16.ptr(7960, 7965, 1), Range16), $clone(new Range16.ptr(7968, 8005, 1), Range16), $clone(new Range16.ptr(8008, 8013, 1), Range16), $clone(new Range16.ptr(8016, 8023, 1), Range16), $clone(new Range16.ptr(8025, 8031, 2), Range16), $clone(new Range16.ptr(8032, 8061, 1), Range16), $clone(new Range16.ptr(8064, 8116, 1), Range16), $clone(new Range16.ptr(8118, 8132, 1), Range16), $clone(new Range16.ptr(8134, 8147, 1), Range16), $clone(new Range16.ptr(8150, 8155, 1), Range16), $clone(new Range16.ptr(8157, 8175, 1), Range16), $clone(new Range16.ptr(8178, 8180, 1), Range16), $clone(new Range16.ptr(8182, 8190, 1), Range16), $clone(new Range16.ptr(8486, 43877, 35391), Range16)]), new sliceType$1([$clone(new Range32.ptr(65856, 65934, 1), Range32), $clone(new Range32.ptr(65952, 119296, 53344), Range32), $clone(new Range32.ptr(119297, 119365, 1), Range32)]), 0); + _Gujarati = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(2689, 2691, 1), Range16), $clone(new Range16.ptr(2693, 2701, 1), Range16), $clone(new Range16.ptr(2703, 2705, 1), Range16), $clone(new Range16.ptr(2707, 2728, 1), Range16), $clone(new Range16.ptr(2730, 2736, 1), Range16), $clone(new Range16.ptr(2738, 2739, 1), Range16), $clone(new Range16.ptr(2741, 2745, 1), Range16), $clone(new Range16.ptr(2748, 2757, 1), Range16), $clone(new Range16.ptr(2759, 2761, 1), Range16), $clone(new Range16.ptr(2763, 2765, 1), Range16), $clone(new Range16.ptr(2768, 2784, 16), Range16), $clone(new Range16.ptr(2785, 2787, 1), Range16), $clone(new Range16.ptr(2790, 2801, 1), Range16), $clone(new Range16.ptr(2809, 2815, 1), Range16)]), sliceType$1.nil, 0); + _Gunjala_Gondi = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(73056, 73061, 1), Range32), $clone(new Range32.ptr(73063, 73064, 1), Range32), $clone(new Range32.ptr(73066, 73102, 1), Range32), $clone(new Range32.ptr(73104, 73105, 1), Range32), $clone(new Range32.ptr(73107, 73112, 1), Range32), $clone(new Range32.ptr(73120, 73129, 1), Range32)]), 0); + _Gurmukhi = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(2561, 2563, 1), Range16), $clone(new Range16.ptr(2565, 2570, 1), Range16), $clone(new Range16.ptr(2575, 2576, 1), Range16), $clone(new Range16.ptr(2579, 2600, 1), Range16), $clone(new Range16.ptr(2602, 2608, 1), Range16), $clone(new Range16.ptr(2610, 2611, 1), Range16), $clone(new Range16.ptr(2613, 2614, 1), Range16), $clone(new Range16.ptr(2616, 2617, 1), Range16), $clone(new Range16.ptr(2620, 2622, 2), Range16), $clone(new Range16.ptr(2623, 2626, 1), Range16), $clone(new Range16.ptr(2631, 2632, 1), Range16), $clone(new Range16.ptr(2635, 2637, 1), Range16), $clone(new Range16.ptr(2641, 2649, 8), Range16), $clone(new Range16.ptr(2650, 2652, 1), Range16), $clone(new Range16.ptr(2654, 2662, 8), Range16), $clone(new Range16.ptr(2663, 2678, 1), Range16)]), sliceType$1.nil, 0); + _Han = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(11904, 11929, 1), Range16), $clone(new Range16.ptr(11931, 12019, 1), Range16), $clone(new Range16.ptr(12032, 12245, 1), Range16), $clone(new Range16.ptr(12293, 12295, 2), Range16), $clone(new Range16.ptr(12321, 12329, 1), Range16), $clone(new Range16.ptr(12344, 12347, 1), Range16), $clone(new Range16.ptr(13312, 19903, 1), Range16), $clone(new Range16.ptr(19968, 40956, 1), Range16), $clone(new Range16.ptr(63744, 64109, 1), Range16), $clone(new Range16.ptr(64112, 64217, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(94192, 94193, 1), Range32), $clone(new Range32.ptr(131072, 173789, 1), Range32), $clone(new Range32.ptr(173824, 177972, 1), Range32), $clone(new Range32.ptr(177984, 178205, 1), Range32), $clone(new Range32.ptr(178208, 183969, 1), Range32), $clone(new Range32.ptr(183984, 191456, 1), Range32), $clone(new Range32.ptr(194560, 195101, 1), Range32), $clone(new Range32.ptr(196608, 201546, 1), Range32)]), 0); + _Hangul = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(4352, 4607, 1), Range16), $clone(new Range16.ptr(12334, 12335, 1), Range16), $clone(new Range16.ptr(12593, 12686, 1), Range16), $clone(new Range16.ptr(12800, 12830, 1), Range16), $clone(new Range16.ptr(12896, 12926, 1), Range16), $clone(new Range16.ptr(43360, 43388, 1), Range16), $clone(new Range16.ptr(44032, 55203, 1), Range16), $clone(new Range16.ptr(55216, 55238, 1), Range16), $clone(new Range16.ptr(55243, 55291, 1), Range16), $clone(new Range16.ptr(65440, 65470, 1), Range16), $clone(new Range16.ptr(65474, 65479, 1), Range16), $clone(new Range16.ptr(65482, 65487, 1), Range16), $clone(new Range16.ptr(65490, 65495, 1), Range16), $clone(new Range16.ptr(65498, 65500, 1), Range16)]), sliceType$1.nil, 0); + _Hanifi_Rohingya = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68864, 68903, 1), Range32), $clone(new Range32.ptr(68912, 68921, 1), Range32)]), 0); + _Hanunoo = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(5920, 5940, 1), Range16)]), sliceType$1.nil, 0); + _Hatran = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(67808, 67826, 1), Range32), $clone(new Range32.ptr(67828, 67829, 1), Range32), $clone(new Range32.ptr(67835, 67839, 1), Range32)]), 0); + _Hebrew = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(1425, 1479, 1), Range16), $clone(new Range16.ptr(1488, 1514, 1), Range16), $clone(new Range16.ptr(1519, 1524, 1), Range16), $clone(new Range16.ptr(64285, 64310, 1), Range16), $clone(new Range16.ptr(64312, 64316, 1), Range16), $clone(new Range16.ptr(64318, 64320, 2), Range16), $clone(new Range16.ptr(64321, 64323, 2), Range16), $clone(new Range16.ptr(64324, 64326, 2), Range16), $clone(new Range16.ptr(64327, 64335, 1), Range16)]), sliceType$1.nil, 0); + _Hiragana = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(12353, 12438, 1), Range16), $clone(new Range16.ptr(12445, 12447, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(110593, 110878, 1), Range32), $clone(new Range32.ptr(110928, 110930, 1), Range32), $clone(new Range32.ptr(127488, 127488, 1), Range32)]), 0); + _Imperial_Aramaic = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(67648, 67669, 1), Range32), $clone(new Range32.ptr(67671, 67679, 1), Range32)]), 0); + _Inherited = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(768, 879, 1), Range16), $clone(new Range16.ptr(1157, 1158, 1), Range16), $clone(new Range16.ptr(1611, 1621, 1), Range16), $clone(new Range16.ptr(1648, 2385, 737), Range16), $clone(new Range16.ptr(2386, 2388, 1), Range16), $clone(new Range16.ptr(6832, 6848, 1), Range16), $clone(new Range16.ptr(7376, 7378, 1), Range16), $clone(new Range16.ptr(7380, 7392, 1), Range16), $clone(new Range16.ptr(7394, 7400, 1), Range16), $clone(new Range16.ptr(7405, 7412, 7), Range16), $clone(new Range16.ptr(7416, 7417, 1), Range16), $clone(new Range16.ptr(7616, 7673, 1), Range16), $clone(new Range16.ptr(7675, 7679, 1), Range16), $clone(new Range16.ptr(8204, 8205, 1), Range16), $clone(new Range16.ptr(8400, 8432, 1), Range16), $clone(new Range16.ptr(12330, 12333, 1), Range16), $clone(new Range16.ptr(12441, 12442, 1), Range16), $clone(new Range16.ptr(65024, 65039, 1), Range16), $clone(new Range16.ptr(65056, 65069, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(66045, 66272, 227), Range32), $clone(new Range32.ptr(70459, 119143, 48684), Range32), $clone(new Range32.ptr(119144, 119145, 1), Range32), $clone(new Range32.ptr(119163, 119170, 1), Range32), $clone(new Range32.ptr(119173, 119179, 1), Range32), $clone(new Range32.ptr(119210, 119213, 1), Range32), $clone(new Range32.ptr(917760, 917999, 1), Range32)]), 0); + _Inscriptional_Pahlavi = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68448, 68466, 1), Range32), $clone(new Range32.ptr(68472, 68479, 1), Range32)]), 0); + _Inscriptional_Parthian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68416, 68437, 1), Range32), $clone(new Range32.ptr(68440, 68447, 1), Range32)]), 0); + _Javanese = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(43392, 43469, 1), Range16), $clone(new Range16.ptr(43472, 43481, 1), Range16), $clone(new Range16.ptr(43486, 43487, 1), Range16)]), sliceType$1.nil, 0); + _Kaithi = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(69760, 69825, 1), Range32), $clone(new Range32.ptr(69837, 69837, 1), Range32)]), 0); + _Kannada = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(3200, 3212, 1), Range16), $clone(new Range16.ptr(3214, 3216, 1), Range16), $clone(new Range16.ptr(3218, 3240, 1), Range16), $clone(new Range16.ptr(3242, 3251, 1), Range16), $clone(new Range16.ptr(3253, 3257, 1), Range16), $clone(new Range16.ptr(3260, 3268, 1), Range16), $clone(new Range16.ptr(3270, 3272, 1), Range16), $clone(new Range16.ptr(3274, 3277, 1), Range16), $clone(new Range16.ptr(3285, 3286, 1), Range16), $clone(new Range16.ptr(3294, 3296, 2), Range16), $clone(new Range16.ptr(3297, 3299, 1), Range16), $clone(new Range16.ptr(3302, 3311, 1), Range16), $clone(new Range16.ptr(3313, 3314, 1), Range16)]), sliceType$1.nil, 0); + _Katakana = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(12449, 12538, 1), Range16), $clone(new Range16.ptr(12541, 12543, 1), Range16), $clone(new Range16.ptr(12784, 12799, 1), Range16), $clone(new Range16.ptr(13008, 13054, 1), Range16), $clone(new Range16.ptr(13056, 13143, 1), Range16), $clone(new Range16.ptr(65382, 65391, 1), Range16), $clone(new Range16.ptr(65393, 65437, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(110592, 110948, 356), Range32), $clone(new Range32.ptr(110949, 110951, 1), Range32)]), 0); + _Kayah_Li = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(43264, 43309, 1), Range16), $clone(new Range16.ptr(43311, 43311, 1), Range16)]), sliceType$1.nil, 0); + _Kharoshthi = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68096, 68099, 1), Range32), $clone(new Range32.ptr(68101, 68102, 1), Range32), $clone(new Range32.ptr(68108, 68115, 1), Range32), $clone(new Range32.ptr(68117, 68119, 1), Range32), $clone(new Range32.ptr(68121, 68149, 1), Range32), $clone(new Range32.ptr(68152, 68154, 1), Range32), $clone(new Range32.ptr(68159, 68168, 1), Range32), $clone(new Range32.ptr(68176, 68184, 1), Range32)]), 0); + _Khitan_Small_Script = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(94180, 101120, 6940), Range32), $clone(new Range32.ptr(101121, 101589, 1), Range32)]), 0); + _Khmer = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(6016, 6109, 1), Range16), $clone(new Range16.ptr(6112, 6121, 1), Range16), $clone(new Range16.ptr(6128, 6137, 1), Range16), $clone(new Range16.ptr(6624, 6655, 1), Range16)]), sliceType$1.nil, 0); + _Khojki = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(70144, 70161, 1), Range32), $clone(new Range32.ptr(70163, 70206, 1), Range32)]), 0); + _Khudawadi = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(70320, 70378, 1), Range32), $clone(new Range32.ptr(70384, 70393, 1), Range32)]), 0); + _Lao = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(3713, 3714, 1), Range16), $clone(new Range16.ptr(3716, 3718, 2), Range16), $clone(new Range16.ptr(3719, 3722, 1), Range16), $clone(new Range16.ptr(3724, 3747, 1), Range16), $clone(new Range16.ptr(3749, 3751, 2), Range16), $clone(new Range16.ptr(3752, 3773, 1), Range16), $clone(new Range16.ptr(3776, 3780, 1), Range16), $clone(new Range16.ptr(3782, 3784, 2), Range16), $clone(new Range16.ptr(3785, 3789, 1), Range16), $clone(new Range16.ptr(3792, 3801, 1), Range16), $clone(new Range16.ptr(3804, 3807, 1), Range16)]), sliceType$1.nil, 0); + _Latin = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(65, 90, 1), Range16), $clone(new Range16.ptr(97, 122, 1), Range16), $clone(new Range16.ptr(170, 186, 16), Range16), $clone(new Range16.ptr(192, 214, 1), Range16), $clone(new Range16.ptr(216, 246, 1), Range16), $clone(new Range16.ptr(248, 696, 1), Range16), $clone(new Range16.ptr(736, 740, 1), Range16), $clone(new Range16.ptr(7424, 7461, 1), Range16), $clone(new Range16.ptr(7468, 7516, 1), Range16), $clone(new Range16.ptr(7522, 7525, 1), Range16), $clone(new Range16.ptr(7531, 7543, 1), Range16), $clone(new Range16.ptr(7545, 7614, 1), Range16), $clone(new Range16.ptr(7680, 7935, 1), Range16), $clone(new Range16.ptr(8305, 8319, 14), Range16), $clone(new Range16.ptr(8336, 8348, 1), Range16), $clone(new Range16.ptr(8490, 8491, 1), Range16), $clone(new Range16.ptr(8498, 8526, 28), Range16), $clone(new Range16.ptr(8544, 8584, 1), Range16), $clone(new Range16.ptr(11360, 11391, 1), Range16), $clone(new Range16.ptr(42786, 42887, 1), Range16), $clone(new Range16.ptr(42891, 42943, 1), Range16), $clone(new Range16.ptr(42946, 42954, 1), Range16), $clone(new Range16.ptr(42997, 43007, 1), Range16), $clone(new Range16.ptr(43824, 43866, 1), Range16), $clone(new Range16.ptr(43868, 43876, 1), Range16), $clone(new Range16.ptr(43878, 43881, 1), Range16), $clone(new Range16.ptr(64256, 64262, 1), Range16), $clone(new Range16.ptr(65313, 65338, 1), Range16), $clone(new Range16.ptr(65345, 65370, 1), Range16)]), sliceType$1.nil, 5); + _Lepcha = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(7168, 7223, 1), Range16), $clone(new Range16.ptr(7227, 7241, 1), Range16), $clone(new Range16.ptr(7245, 7247, 1), Range16)]), sliceType$1.nil, 0); + _Limbu = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(6400, 6430, 1), Range16), $clone(new Range16.ptr(6432, 6443, 1), Range16), $clone(new Range16.ptr(6448, 6459, 1), Range16), $clone(new Range16.ptr(6464, 6468, 4), Range16), $clone(new Range16.ptr(6469, 6479, 1), Range16)]), sliceType$1.nil, 0); + _Linear_A = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(67072, 67382, 1), Range32), $clone(new Range32.ptr(67392, 67413, 1), Range32), $clone(new Range32.ptr(67424, 67431, 1), Range32)]), 0); + _Linear_B = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(65536, 65547, 1), Range32), $clone(new Range32.ptr(65549, 65574, 1), Range32), $clone(new Range32.ptr(65576, 65594, 1), Range32), $clone(new Range32.ptr(65596, 65597, 1), Range32), $clone(new Range32.ptr(65599, 65613, 1), Range32), $clone(new Range32.ptr(65616, 65629, 1), Range32), $clone(new Range32.ptr(65664, 65786, 1), Range32)]), 0); + _Lisu = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(42192, 42239, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(73648, 73648, 1), Range32)]), 0); + _Lycian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66176, 66204, 1), Range32)]), 0); + _Lydian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(67872, 67897, 1), Range32), $clone(new Range32.ptr(67903, 67903, 1), Range32)]), 0); + _Mahajani = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(69968, 70006, 1), Range32)]), 0); + _Makasar = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(73440, 73464, 1), Range32)]), 0); + _Malayalam = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(3328, 3340, 1), Range16), $clone(new Range16.ptr(3342, 3344, 1), Range16), $clone(new Range16.ptr(3346, 3396, 1), Range16), $clone(new Range16.ptr(3398, 3400, 1), Range16), $clone(new Range16.ptr(3402, 3407, 1), Range16), $clone(new Range16.ptr(3412, 3427, 1), Range16), $clone(new Range16.ptr(3430, 3455, 1), Range16)]), sliceType$1.nil, 0); + _Mandaic = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(2112, 2139, 1), Range16), $clone(new Range16.ptr(2142, 2142, 1), Range16)]), sliceType$1.nil, 0); + _Manichaean = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68288, 68326, 1), Range32), $clone(new Range32.ptr(68331, 68342, 1), Range32)]), 0); + _Marchen = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(72816, 72847, 1), Range32), $clone(new Range32.ptr(72850, 72871, 1), Range32), $clone(new Range32.ptr(72873, 72886, 1), Range32)]), 0); + _Masaram_Gondi = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(72960, 72966, 1), Range32), $clone(new Range32.ptr(72968, 72969, 1), Range32), $clone(new Range32.ptr(72971, 73014, 1), Range32), $clone(new Range32.ptr(73018, 73020, 2), Range32), $clone(new Range32.ptr(73021, 73023, 2), Range32), $clone(new Range32.ptr(73024, 73031, 1), Range32), $clone(new Range32.ptr(73040, 73049, 1), Range32)]), 0); + _Medefaidrin = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(93760, 93850, 1), Range32)]), 0); + _Meetei_Mayek = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(43744, 43766, 1), Range16), $clone(new Range16.ptr(43968, 44013, 1), Range16), $clone(new Range16.ptr(44016, 44025, 1), Range16)]), sliceType$1.nil, 0); + _Mende_Kikakui = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(124928, 125124, 1), Range32), $clone(new Range32.ptr(125127, 125142, 1), Range32)]), 0); + _Meroitic_Cursive = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68000, 68023, 1), Range32), $clone(new Range32.ptr(68028, 68047, 1), Range32), $clone(new Range32.ptr(68050, 68095, 1), Range32)]), 0); + _Meroitic_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(67968, 67999, 1), Range32)]), 0); + _Miao = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(93952, 94026, 1), Range32), $clone(new Range32.ptr(94031, 94087, 1), Range32), $clone(new Range32.ptr(94095, 94111, 1), Range32)]), 0); + _Modi = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(71168, 71236, 1), Range32), $clone(new Range32.ptr(71248, 71257, 1), Range32)]), 0); + _Mongolian = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(6144, 6145, 1), Range16), $clone(new Range16.ptr(6148, 6150, 2), Range16), $clone(new Range16.ptr(6151, 6158, 1), Range16), $clone(new Range16.ptr(6160, 6169, 1), Range16), $clone(new Range16.ptr(6176, 6264, 1), Range16), $clone(new Range16.ptr(6272, 6314, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(71264, 71276, 1), Range32)]), 0); + _Mro = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(92736, 92766, 1), Range32), $clone(new Range32.ptr(92768, 92777, 1), Range32), $clone(new Range32.ptr(92782, 92783, 1), Range32)]), 0); + _Multani = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(70272, 70278, 1), Range32), $clone(new Range32.ptr(70280, 70282, 2), Range32), $clone(new Range32.ptr(70283, 70285, 1), Range32), $clone(new Range32.ptr(70287, 70301, 1), Range32), $clone(new Range32.ptr(70303, 70313, 1), Range32)]), 0); + _Myanmar = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(4096, 4255, 1), Range16), $clone(new Range16.ptr(43488, 43518, 1), Range16), $clone(new Range16.ptr(43616, 43647, 1), Range16)]), sliceType$1.nil, 0); + _Nabataean = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(67712, 67742, 1), Range32), $clone(new Range32.ptr(67751, 67759, 1), Range32)]), 0); + _Nandinagari = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(72096, 72103, 1), Range32), $clone(new Range32.ptr(72106, 72151, 1), Range32), $clone(new Range32.ptr(72154, 72164, 1), Range32)]), 0); + _New_Tai_Lue = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(6528, 6571, 1), Range16), $clone(new Range16.ptr(6576, 6601, 1), Range16), $clone(new Range16.ptr(6608, 6618, 1), Range16), $clone(new Range16.ptr(6622, 6623, 1), Range16)]), sliceType$1.nil, 0); + _Newa = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(70656, 70747, 1), Range32), $clone(new Range32.ptr(70749, 70753, 1), Range32)]), 0); + _Nko = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(1984, 2042, 1), Range16), $clone(new Range16.ptr(2045, 2047, 1), Range16)]), sliceType$1.nil, 0); + _Nushu = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(94177, 110960, 16783), Range32), $clone(new Range32.ptr(110961, 111355, 1), Range32)]), 0); + _Nyiakeng_Puachue_Hmong = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(123136, 123180, 1), Range32), $clone(new Range32.ptr(123184, 123197, 1), Range32), $clone(new Range32.ptr(123200, 123209, 1), Range32), $clone(new Range32.ptr(123214, 123215, 1), Range32)]), 0); + _Ogham = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(5760, 5788, 1), Range16)]), sliceType$1.nil, 0); + _Ol_Chiki = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(7248, 7295, 1), Range16)]), sliceType$1.nil, 0); + _Old_Hungarian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68736, 68786, 1), Range32), $clone(new Range32.ptr(68800, 68850, 1), Range32), $clone(new Range32.ptr(68858, 68863, 1), Range32)]), 0); + _Old_Italic = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66304, 66339, 1), Range32), $clone(new Range32.ptr(66349, 66351, 1), Range32)]), 0); + _Old_North_Arabian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68224, 68255, 1), Range32)]), 0); + _Old_Permic = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66384, 66426, 1), Range32)]), 0); + _Old_Persian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66464, 66499, 1), Range32), $clone(new Range32.ptr(66504, 66517, 1), Range32)]), 0); + _Old_Sogdian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(69376, 69415, 1), Range32)]), 0); + _Old_South_Arabian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68192, 68223, 1), Range32)]), 0); + _Old_Turkic = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68608, 68680, 1), Range32)]), 0); + _Oriya = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(2817, 2819, 1), Range16), $clone(new Range16.ptr(2821, 2828, 1), Range16), $clone(new Range16.ptr(2831, 2832, 1), Range16), $clone(new Range16.ptr(2835, 2856, 1), Range16), $clone(new Range16.ptr(2858, 2864, 1), Range16), $clone(new Range16.ptr(2866, 2867, 1), Range16), $clone(new Range16.ptr(2869, 2873, 1), Range16), $clone(new Range16.ptr(2876, 2884, 1), Range16), $clone(new Range16.ptr(2887, 2888, 1), Range16), $clone(new Range16.ptr(2891, 2893, 1), Range16), $clone(new Range16.ptr(2901, 2903, 1), Range16), $clone(new Range16.ptr(2908, 2909, 1), Range16), $clone(new Range16.ptr(2911, 2915, 1), Range16), $clone(new Range16.ptr(2918, 2935, 1), Range16)]), sliceType$1.nil, 0); + _Osage = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66736, 66771, 1), Range32), $clone(new Range32.ptr(66776, 66811, 1), Range32)]), 0); + _Osmanya = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66688, 66717, 1), Range32), $clone(new Range32.ptr(66720, 66729, 1), Range32)]), 0); + _Pahawh_Hmong = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(92928, 92997, 1), Range32), $clone(new Range32.ptr(93008, 93017, 1), Range32), $clone(new Range32.ptr(93019, 93025, 1), Range32), $clone(new Range32.ptr(93027, 93047, 1), Range32), $clone(new Range32.ptr(93053, 93071, 1), Range32)]), 0); + _Palmyrene = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(67680, 67711, 1), Range32)]), 0); + _Pau_Cin_Hau = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(72384, 72440, 1), Range32)]), 0); + _Phags_Pa = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(43072, 43127, 1), Range16)]), sliceType$1.nil, 0); + _Phoenician = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(67840, 67867, 1), Range32), $clone(new Range32.ptr(67871, 67871, 1), Range32)]), 0); + _Psalter_Pahlavi = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(68480, 68497, 1), Range32), $clone(new Range32.ptr(68505, 68508, 1), Range32), $clone(new Range32.ptr(68521, 68527, 1), Range32)]), 0); + _Rejang = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(43312, 43347, 1), Range16), $clone(new Range16.ptr(43359, 43359, 1), Range16)]), sliceType$1.nil, 0); + _Runic = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(5792, 5866, 1), Range16), $clone(new Range16.ptr(5870, 5880, 1), Range16)]), sliceType$1.nil, 0); + _Samaritan = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(2048, 2093, 1), Range16), $clone(new Range16.ptr(2096, 2110, 1), Range16)]), sliceType$1.nil, 0); + _Saurashtra = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(43136, 43205, 1), Range16), $clone(new Range16.ptr(43214, 43225, 1), Range16)]), sliceType$1.nil, 0); + _Sharada = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(70016, 70111, 1), Range32)]), 0); + _Shavian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66640, 66687, 1), Range32)]), 0); + _Siddham = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(71040, 71093, 1), Range32), $clone(new Range32.ptr(71096, 71133, 1), Range32)]), 0); + _SignWriting = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(120832, 121483, 1), Range32), $clone(new Range32.ptr(121499, 121503, 1), Range32), $clone(new Range32.ptr(121505, 121519, 1), Range32)]), 0); + _Sinhala = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(3457, 3459, 1), Range16), $clone(new Range16.ptr(3461, 3478, 1), Range16), $clone(new Range16.ptr(3482, 3505, 1), Range16), $clone(new Range16.ptr(3507, 3515, 1), Range16), $clone(new Range16.ptr(3517, 3520, 3), Range16), $clone(new Range16.ptr(3521, 3526, 1), Range16), $clone(new Range16.ptr(3530, 3535, 5), Range16), $clone(new Range16.ptr(3536, 3540, 1), Range16), $clone(new Range16.ptr(3542, 3544, 2), Range16), $clone(new Range16.ptr(3545, 3551, 1), Range16), $clone(new Range16.ptr(3558, 3567, 1), Range16), $clone(new Range16.ptr(3570, 3572, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(70113, 70132, 1), Range32)]), 0); + _Sogdian = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(69424, 69465, 1), Range32)]), 0); + _Sora_Sompeng = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(69840, 69864, 1), Range32), $clone(new Range32.ptr(69872, 69881, 1), Range32)]), 0); + _Soyombo = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(72272, 72354, 1), Range32)]), 0); + _Sundanese = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(7040, 7103, 1), Range16), $clone(new Range16.ptr(7360, 7367, 1), Range16)]), sliceType$1.nil, 0); + _Syloti_Nagri = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(43008, 43052, 1), Range16)]), sliceType$1.nil, 0); + _Syriac = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(1792, 1805, 1), Range16), $clone(new Range16.ptr(1807, 1866, 1), Range16), $clone(new Range16.ptr(1869, 1871, 1), Range16), $clone(new Range16.ptr(2144, 2154, 1), Range16)]), sliceType$1.nil, 0); + _Tagalog = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(5888, 5900, 1), Range16), $clone(new Range16.ptr(5902, 5908, 1), Range16)]), sliceType$1.nil, 0); + _Tagbanwa = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(5984, 5996, 1), Range16), $clone(new Range16.ptr(5998, 6000, 1), Range16), $clone(new Range16.ptr(6002, 6003, 1), Range16)]), sliceType$1.nil, 0); + _Tai_Le = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(6480, 6509, 1), Range16), $clone(new Range16.ptr(6512, 6516, 1), Range16)]), sliceType$1.nil, 0); + _Tai_Tham = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(6688, 6750, 1), Range16), $clone(new Range16.ptr(6752, 6780, 1), Range16), $clone(new Range16.ptr(6783, 6793, 1), Range16), $clone(new Range16.ptr(6800, 6809, 1), Range16), $clone(new Range16.ptr(6816, 6829, 1), Range16)]), sliceType$1.nil, 0); + _Tai_Viet = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(43648, 43714, 1), Range16), $clone(new Range16.ptr(43739, 43743, 1), Range16)]), sliceType$1.nil, 0); + _Takri = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(71296, 71352, 1), Range32), $clone(new Range32.ptr(71360, 71369, 1), Range32)]), 0); + _Tamil = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(2946, 2947, 1), Range16), $clone(new Range16.ptr(2949, 2954, 1), Range16), $clone(new Range16.ptr(2958, 2960, 1), Range16), $clone(new Range16.ptr(2962, 2965, 1), Range16), $clone(new Range16.ptr(2969, 2970, 1), Range16), $clone(new Range16.ptr(2972, 2974, 2), Range16), $clone(new Range16.ptr(2975, 2979, 4), Range16), $clone(new Range16.ptr(2980, 2984, 4), Range16), $clone(new Range16.ptr(2985, 2986, 1), Range16), $clone(new Range16.ptr(2990, 3001, 1), Range16), $clone(new Range16.ptr(3006, 3010, 1), Range16), $clone(new Range16.ptr(3014, 3016, 1), Range16), $clone(new Range16.ptr(3018, 3021, 1), Range16), $clone(new Range16.ptr(3024, 3031, 7), Range16), $clone(new Range16.ptr(3046, 3066, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(73664, 73713, 1), Range32), $clone(new Range32.ptr(73727, 73727, 1), Range32)]), 0); + _Tangut = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(94176, 94208, 32), Range32), $clone(new Range32.ptr(94209, 100343, 1), Range32), $clone(new Range32.ptr(100352, 101119, 1), Range32), $clone(new Range32.ptr(101632, 101640, 1), Range32)]), 0); + _Telugu = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(3072, 3084, 1), Range16), $clone(new Range16.ptr(3086, 3088, 1), Range16), $clone(new Range16.ptr(3090, 3112, 1), Range16), $clone(new Range16.ptr(3114, 3129, 1), Range16), $clone(new Range16.ptr(3133, 3140, 1), Range16), $clone(new Range16.ptr(3142, 3144, 1), Range16), $clone(new Range16.ptr(3146, 3149, 1), Range16), $clone(new Range16.ptr(3157, 3158, 1), Range16), $clone(new Range16.ptr(3160, 3162, 1), Range16), $clone(new Range16.ptr(3168, 3171, 1), Range16), $clone(new Range16.ptr(3174, 3183, 1), Range16), $clone(new Range16.ptr(3191, 3199, 1), Range16)]), sliceType$1.nil, 0); + _Thaana = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(1920, 1969, 1), Range16)]), sliceType$1.nil, 0); + _Thai = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(3585, 3642, 1), Range16), $clone(new Range16.ptr(3648, 3675, 1), Range16)]), sliceType$1.nil, 0); + _Tibetan = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(3840, 3911, 1), Range16), $clone(new Range16.ptr(3913, 3948, 1), Range16), $clone(new Range16.ptr(3953, 3991, 1), Range16), $clone(new Range16.ptr(3993, 4028, 1), Range16), $clone(new Range16.ptr(4030, 4044, 1), Range16), $clone(new Range16.ptr(4046, 4052, 1), Range16), $clone(new Range16.ptr(4057, 4058, 1), Range16)]), sliceType$1.nil, 0); + _Tifinagh = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(11568, 11623, 1), Range16), $clone(new Range16.ptr(11631, 11632, 1), Range16), $clone(new Range16.ptr(11647, 11647, 1), Range16)]), sliceType$1.nil, 0); + _Tirhuta = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(70784, 70855, 1), Range32), $clone(new Range32.ptr(70864, 70873, 1), Range32)]), 0); + _Ugaritic = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(66432, 66461, 1), Range32), $clone(new Range32.ptr(66463, 66463, 1), Range32)]), 0); + _Vai = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(42240, 42539, 1), Range16)]), sliceType$1.nil, 0); + _Wancho = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(123584, 123641, 1), Range32), $clone(new Range32.ptr(123647, 123647, 1), Range32)]), 0); + _Warang_Citi = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(71840, 71922, 1), Range32), $clone(new Range32.ptr(71935, 71935, 1), Range32)]), 0); + _Yezidi = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(69248, 69289, 1), Range32), $clone(new Range32.ptr(69291, 69293, 1), Range32), $clone(new Range32.ptr(69296, 69297, 1), Range32)]), 0); + _Yi = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(40960, 42124, 1), Range16), $clone(new Range16.ptr(42128, 42182, 1), Range16)]), sliceType$1.nil, 0); + _Zanabazar_Square = new RangeTable.ptr(new sliceType([]), new sliceType$1([$clone(new Range32.ptr(72192, 72263, 1), Range32)]), 0); + $pkg.Adlam = _Adlam; + $pkg.Ahom = _Ahom; + $pkg.Anatolian_Hieroglyphs = _Anatolian_Hieroglyphs; + $pkg.Arabic = _Arabic; + $pkg.Armenian = _Armenian; + $pkg.Avestan = _Avestan; + $pkg.Balinese = _Balinese; + $pkg.Bamum = _Bamum; + $pkg.Bassa_Vah = _Bassa_Vah; + $pkg.Batak = _Batak; + $pkg.Bengali = _Bengali; + $pkg.Bhaiksuki = _Bhaiksuki; + $pkg.Bopomofo = _Bopomofo; + $pkg.Brahmi = _Brahmi; + $pkg.Braille = _Braille; + $pkg.Buginese = _Buginese; + $pkg.Buhid = _Buhid; + $pkg.Canadian_Aboriginal = _Canadian_Aboriginal; + $pkg.Carian = _Carian; + $pkg.Caucasian_Albanian = _Caucasian_Albanian; + $pkg.Chakma = _Chakma; + $pkg.Cham = _Cham; + $pkg.Cherokee = _Cherokee; + $pkg.Chorasmian = _Chorasmian; + $pkg.Common = _Common; + $pkg.Coptic = _Coptic; + $pkg.Cuneiform = _Cuneiform; + $pkg.Cypriot = _Cypriot; + $pkg.Cyrillic = _Cyrillic; + $pkg.Deseret = _Deseret; + $pkg.Devanagari = _Devanagari; + $pkg.Dives_Akuru = _Dives_Akuru; + $pkg.Dogra = _Dogra; + $pkg.Duployan = _Duployan; + $pkg.Egyptian_Hieroglyphs = _Egyptian_Hieroglyphs; + $pkg.Elbasan = _Elbasan; + $pkg.Elymaic = _Elymaic; + $pkg.Ethiopic = _Ethiopic; + $pkg.Georgian = _Georgian; + $pkg.Glagolitic = _Glagolitic; + $pkg.Gothic = _Gothic; + $pkg.Grantha = _Grantha; + $pkg.Greek = _Greek; + $pkg.Gujarati = _Gujarati; + $pkg.Gunjala_Gondi = _Gunjala_Gondi; + $pkg.Gurmukhi = _Gurmukhi; + $pkg.Han = _Han; + $pkg.Hangul = _Hangul; + $pkg.Hanifi_Rohingya = _Hanifi_Rohingya; + $pkg.Hanunoo = _Hanunoo; + $pkg.Hatran = _Hatran; + $pkg.Hebrew = _Hebrew; + $pkg.Hiragana = _Hiragana; + $pkg.Imperial_Aramaic = _Imperial_Aramaic; + $pkg.Inherited = _Inherited; + $pkg.Inscriptional_Pahlavi = _Inscriptional_Pahlavi; + $pkg.Inscriptional_Parthian = _Inscriptional_Parthian; + $pkg.Javanese = _Javanese; + $pkg.Kaithi = _Kaithi; + $pkg.Kannada = _Kannada; + $pkg.Katakana = _Katakana; + $pkg.Kayah_Li = _Kayah_Li; + $pkg.Kharoshthi = _Kharoshthi; + $pkg.Khitan_Small_Script = _Khitan_Small_Script; + $pkg.Khmer = _Khmer; + $pkg.Khojki = _Khojki; + $pkg.Khudawadi = _Khudawadi; + $pkg.Lao = _Lao; + $pkg.Latin = _Latin; + $pkg.Lepcha = _Lepcha; + $pkg.Limbu = _Limbu; + $pkg.Linear_A = _Linear_A; + $pkg.Linear_B = _Linear_B; + $pkg.Lisu = _Lisu; + $pkg.Lycian = _Lycian; + $pkg.Lydian = _Lydian; + $pkg.Mahajani = _Mahajani; + $pkg.Makasar = _Makasar; + $pkg.Malayalam = _Malayalam; + $pkg.Mandaic = _Mandaic; + $pkg.Manichaean = _Manichaean; + $pkg.Marchen = _Marchen; + $pkg.Masaram_Gondi = _Masaram_Gondi; + $pkg.Medefaidrin = _Medefaidrin; + $pkg.Meetei_Mayek = _Meetei_Mayek; + $pkg.Mende_Kikakui = _Mende_Kikakui; + $pkg.Meroitic_Cursive = _Meroitic_Cursive; + $pkg.Meroitic_Hieroglyphs = _Meroitic_Hieroglyphs; + $pkg.Miao = _Miao; + $pkg.Modi = _Modi; + $pkg.Mongolian = _Mongolian; + $pkg.Mro = _Mro; + $pkg.Multani = _Multani; + $pkg.Myanmar = _Myanmar; + $pkg.Nabataean = _Nabataean; + $pkg.Nandinagari = _Nandinagari; + $pkg.New_Tai_Lue = _New_Tai_Lue; + $pkg.Newa = _Newa; + $pkg.Nko = _Nko; + $pkg.Nushu = _Nushu; + $pkg.Nyiakeng_Puachue_Hmong = _Nyiakeng_Puachue_Hmong; + $pkg.Ogham = _Ogham; + $pkg.Ol_Chiki = _Ol_Chiki; + $pkg.Old_Hungarian = _Old_Hungarian; + $pkg.Old_Italic = _Old_Italic; + $pkg.Old_North_Arabian = _Old_North_Arabian; + $pkg.Old_Permic = _Old_Permic; + $pkg.Old_Persian = _Old_Persian; + $pkg.Old_Sogdian = _Old_Sogdian; + $pkg.Old_South_Arabian = _Old_South_Arabian; + $pkg.Old_Turkic = _Old_Turkic; + $pkg.Oriya = _Oriya; + $pkg.Osage = _Osage; + $pkg.Osmanya = _Osmanya; + $pkg.Pahawh_Hmong = _Pahawh_Hmong; + $pkg.Palmyrene = _Palmyrene; + $pkg.Pau_Cin_Hau = _Pau_Cin_Hau; + $pkg.Phags_Pa = _Phags_Pa; + $pkg.Phoenician = _Phoenician; + $pkg.Psalter_Pahlavi = _Psalter_Pahlavi; + $pkg.Rejang = _Rejang; + $pkg.Runic = _Runic; + $pkg.Samaritan = _Samaritan; + $pkg.Saurashtra = _Saurashtra; + $pkg.Sharada = _Sharada; + $pkg.Shavian = _Shavian; + $pkg.Siddham = _Siddham; + $pkg.SignWriting = _SignWriting; + $pkg.Sinhala = _Sinhala; + $pkg.Sogdian = _Sogdian; + $pkg.Sora_Sompeng = _Sora_Sompeng; + $pkg.Soyombo = _Soyombo; + $pkg.Sundanese = _Sundanese; + $pkg.Syloti_Nagri = _Syloti_Nagri; + $pkg.Syriac = _Syriac; + $pkg.Tagalog = _Tagalog; + $pkg.Tagbanwa = _Tagbanwa; + $pkg.Tai_Le = _Tai_Le; + $pkg.Tai_Tham = _Tai_Tham; + $pkg.Tai_Viet = _Tai_Viet; + $pkg.Takri = _Takri; + $pkg.Tamil = _Tamil; + $pkg.Tangut = _Tangut; + $pkg.Telugu = _Telugu; + $pkg.Thaana = _Thaana; + $pkg.Thai = _Thai; + $pkg.Tibetan = _Tibetan; + $pkg.Tifinagh = _Tifinagh; + $pkg.Tirhuta = _Tirhuta; + $pkg.Ugaritic = _Ugaritic; + $pkg.Vai = _Vai; + $pkg.Wancho = _Wancho; + $pkg.Warang_Citi = _Warang_Citi; + $pkg.Yezidi = _Yezidi; + $pkg.Yi = _Yi; + $pkg.Zanabazar_Square = _Zanabazar_Square; + $pkg.Scripts = $makeMap($String.keyFor, [{ k: "Adlam", v: $pkg.Adlam }, { k: "Ahom", v: $pkg.Ahom }, { k: "Anatolian_Hieroglyphs", v: $pkg.Anatolian_Hieroglyphs }, { k: "Arabic", v: $pkg.Arabic }, { k: "Armenian", v: $pkg.Armenian }, { k: "Avestan", v: $pkg.Avestan }, { k: "Balinese", v: $pkg.Balinese }, { k: "Bamum", v: $pkg.Bamum }, { k: "Bassa_Vah", v: $pkg.Bassa_Vah }, { k: "Batak", v: $pkg.Batak }, { k: "Bengali", v: $pkg.Bengali }, { k: "Bhaiksuki", v: $pkg.Bhaiksuki }, { k: "Bopomofo", v: $pkg.Bopomofo }, { k: "Brahmi", v: $pkg.Brahmi }, { k: "Braille", v: $pkg.Braille }, { k: "Buginese", v: $pkg.Buginese }, { k: "Buhid", v: $pkg.Buhid }, { k: "Canadian_Aboriginal", v: $pkg.Canadian_Aboriginal }, { k: "Carian", v: $pkg.Carian }, { k: "Caucasian_Albanian", v: $pkg.Caucasian_Albanian }, { k: "Chakma", v: $pkg.Chakma }, { k: "Cham", v: $pkg.Cham }, { k: "Cherokee", v: $pkg.Cherokee }, { k: "Chorasmian", v: $pkg.Chorasmian }, { k: "Common", v: $pkg.Common }, { k: "Coptic", v: $pkg.Coptic }, { k: "Cuneiform", v: $pkg.Cuneiform }, { k: "Cypriot", v: $pkg.Cypriot }, { k: "Cyrillic", v: $pkg.Cyrillic }, { k: "Deseret", v: $pkg.Deseret }, { k: "Devanagari", v: $pkg.Devanagari }, { k: "Dives_Akuru", v: $pkg.Dives_Akuru }, { k: "Dogra", v: $pkg.Dogra }, { k: "Duployan", v: $pkg.Duployan }, { k: "Egyptian_Hieroglyphs", v: $pkg.Egyptian_Hieroglyphs }, { k: "Elbasan", v: $pkg.Elbasan }, { k: "Elymaic", v: $pkg.Elymaic }, { k: "Ethiopic", v: $pkg.Ethiopic }, { k: "Georgian", v: $pkg.Georgian }, { k: "Glagolitic", v: $pkg.Glagolitic }, { k: "Gothic", v: $pkg.Gothic }, { k: "Grantha", v: $pkg.Grantha }, { k: "Greek", v: $pkg.Greek }, { k: "Gujarati", v: $pkg.Gujarati }, { k: "Gunjala_Gondi", v: $pkg.Gunjala_Gondi }, { k: "Gurmukhi", v: $pkg.Gurmukhi }, { k: "Han", v: $pkg.Han }, { k: "Hangul", v: $pkg.Hangul }, { k: "Hanifi_Rohingya", v: $pkg.Hanifi_Rohingya }, { k: "Hanunoo", v: $pkg.Hanunoo }, { k: "Hatran", v: $pkg.Hatran }, { k: "Hebrew", v: $pkg.Hebrew }, { k: "Hiragana", v: $pkg.Hiragana }, { k: "Imperial_Aramaic", v: $pkg.Imperial_Aramaic }, { k: "Inherited", v: $pkg.Inherited }, { k: "Inscriptional_Pahlavi", v: $pkg.Inscriptional_Pahlavi }, { k: "Inscriptional_Parthian", v: $pkg.Inscriptional_Parthian }, { k: "Javanese", v: $pkg.Javanese }, { k: "Kaithi", v: $pkg.Kaithi }, { k: "Kannada", v: $pkg.Kannada }, { k: "Katakana", v: $pkg.Katakana }, { k: "Kayah_Li", v: $pkg.Kayah_Li }, { k: "Kharoshthi", v: $pkg.Kharoshthi }, { k: "Khitan_Small_Script", v: $pkg.Khitan_Small_Script }, { k: "Khmer", v: $pkg.Khmer }, { k: "Khojki", v: $pkg.Khojki }, { k: "Khudawadi", v: $pkg.Khudawadi }, { k: "Lao", v: $pkg.Lao }, { k: "Latin", v: $pkg.Latin }, { k: "Lepcha", v: $pkg.Lepcha }, { k: "Limbu", v: $pkg.Limbu }, { k: "Linear_A", v: $pkg.Linear_A }, { k: "Linear_B", v: $pkg.Linear_B }, { k: "Lisu", v: $pkg.Lisu }, { k: "Lycian", v: $pkg.Lycian }, { k: "Lydian", v: $pkg.Lydian }, { k: "Mahajani", v: $pkg.Mahajani }, { k: "Makasar", v: $pkg.Makasar }, { k: "Malayalam", v: $pkg.Malayalam }, { k: "Mandaic", v: $pkg.Mandaic }, { k: "Manichaean", v: $pkg.Manichaean }, { k: "Marchen", v: $pkg.Marchen }, { k: "Masaram_Gondi", v: $pkg.Masaram_Gondi }, { k: "Medefaidrin", v: $pkg.Medefaidrin }, { k: "Meetei_Mayek", v: $pkg.Meetei_Mayek }, { k: "Mende_Kikakui", v: $pkg.Mende_Kikakui }, { k: "Meroitic_Cursive", v: $pkg.Meroitic_Cursive }, { k: "Meroitic_Hieroglyphs", v: $pkg.Meroitic_Hieroglyphs }, { k: "Miao", v: $pkg.Miao }, { k: "Modi", v: $pkg.Modi }, { k: "Mongolian", v: $pkg.Mongolian }, { k: "Mro", v: $pkg.Mro }, { k: "Multani", v: $pkg.Multani }, { k: "Myanmar", v: $pkg.Myanmar }, { k: "Nabataean", v: $pkg.Nabataean }, { k: "Nandinagari", v: $pkg.Nandinagari }, { k: "New_Tai_Lue", v: $pkg.New_Tai_Lue }, { k: "Newa", v: $pkg.Newa }, { k: "Nko", v: $pkg.Nko }, { k: "Nushu", v: $pkg.Nushu }, { k: "Nyiakeng_Puachue_Hmong", v: $pkg.Nyiakeng_Puachue_Hmong }, { k: "Ogham", v: $pkg.Ogham }, { k: "Ol_Chiki", v: $pkg.Ol_Chiki }, { k: "Old_Hungarian", v: $pkg.Old_Hungarian }, { k: "Old_Italic", v: $pkg.Old_Italic }, { k: "Old_North_Arabian", v: $pkg.Old_North_Arabian }, { k: "Old_Permic", v: $pkg.Old_Permic }, { k: "Old_Persian", v: $pkg.Old_Persian }, { k: "Old_Sogdian", v: $pkg.Old_Sogdian }, { k: "Old_South_Arabian", v: $pkg.Old_South_Arabian }, { k: "Old_Turkic", v: $pkg.Old_Turkic }, { k: "Oriya", v: $pkg.Oriya }, { k: "Osage", v: $pkg.Osage }, { k: "Osmanya", v: $pkg.Osmanya }, { k: "Pahawh_Hmong", v: $pkg.Pahawh_Hmong }, { k: "Palmyrene", v: $pkg.Palmyrene }, { k: "Pau_Cin_Hau", v: $pkg.Pau_Cin_Hau }, { k: "Phags_Pa", v: $pkg.Phags_Pa }, { k: "Phoenician", v: $pkg.Phoenician }, { k: "Psalter_Pahlavi", v: $pkg.Psalter_Pahlavi }, { k: "Rejang", v: $pkg.Rejang }, { k: "Runic", v: $pkg.Runic }, { k: "Samaritan", v: $pkg.Samaritan }, { k: "Saurashtra", v: $pkg.Saurashtra }, { k: "Sharada", v: $pkg.Sharada }, { k: "Shavian", v: $pkg.Shavian }, { k: "Siddham", v: $pkg.Siddham }, { k: "SignWriting", v: $pkg.SignWriting }, { k: "Sinhala", v: $pkg.Sinhala }, { k: "Sogdian", v: $pkg.Sogdian }, { k: "Sora_Sompeng", v: $pkg.Sora_Sompeng }, { k: "Soyombo", v: $pkg.Soyombo }, { k: "Sundanese", v: $pkg.Sundanese }, { k: "Syloti_Nagri", v: $pkg.Syloti_Nagri }, { k: "Syriac", v: $pkg.Syriac }, { k: "Tagalog", v: $pkg.Tagalog }, { k: "Tagbanwa", v: $pkg.Tagbanwa }, { k: "Tai_Le", v: $pkg.Tai_Le }, { k: "Tai_Tham", v: $pkg.Tai_Tham }, { k: "Tai_Viet", v: $pkg.Tai_Viet }, { k: "Takri", v: $pkg.Takri }, { k: "Tamil", v: $pkg.Tamil }, { k: "Tangut", v: $pkg.Tangut }, { k: "Telugu", v: $pkg.Telugu }, { k: "Thaana", v: $pkg.Thaana }, { k: "Thai", v: $pkg.Thai }, { k: "Tibetan", v: $pkg.Tibetan }, { k: "Tifinagh", v: $pkg.Tifinagh }, { k: "Tirhuta", v: $pkg.Tirhuta }, { k: "Ugaritic", v: $pkg.Ugaritic }, { k: "Vai", v: $pkg.Vai }, { k: "Wancho", v: $pkg.Wancho }, { k: "Warang_Citi", v: $pkg.Warang_Citi }, { k: "Yezidi", v: $pkg.Yezidi }, { k: "Yi", v: $pkg.Yi }, { k: "Zanabazar_Square", v: $pkg.Zanabazar_Square }]); + _White_Space = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(9, 13, 1), Range16), $clone(new Range16.ptr(32, 133, 101), Range16), $clone(new Range16.ptr(160, 5760, 5600), Range16), $clone(new Range16.ptr(8192, 8202, 1), Range16), $clone(new Range16.ptr(8232, 8233, 1), Range16), $clone(new Range16.ptr(8239, 8287, 48), Range16), $clone(new Range16.ptr(12288, 12288, 1), Range16)]), sliceType$1.nil, 2); + $pkg.White_Space = _White_Space; + caseOrbit = new sliceType$2([$clone(new foldPair.ptr(75, 107), foldPair), $clone(new foldPair.ptr(83, 115), foldPair), $clone(new foldPair.ptr(107, 8490), foldPair), $clone(new foldPair.ptr(115, 383), foldPair), $clone(new foldPair.ptr(181, 924), foldPair), $clone(new foldPair.ptr(197, 229), foldPair), $clone(new foldPair.ptr(223, 7838), foldPair), $clone(new foldPair.ptr(229, 8491), foldPair), $clone(new foldPair.ptr(304, 304), foldPair), $clone(new foldPair.ptr(305, 305), foldPair), $clone(new foldPair.ptr(383, 83), foldPair), $clone(new foldPair.ptr(452, 453), foldPair), $clone(new foldPair.ptr(453, 454), foldPair), $clone(new foldPair.ptr(454, 452), foldPair), $clone(new foldPair.ptr(455, 456), foldPair), $clone(new foldPair.ptr(456, 457), foldPair), $clone(new foldPair.ptr(457, 455), foldPair), $clone(new foldPair.ptr(458, 459), foldPair), $clone(new foldPair.ptr(459, 460), foldPair), $clone(new foldPair.ptr(460, 458), foldPair), $clone(new foldPair.ptr(497, 498), foldPair), $clone(new foldPair.ptr(498, 499), foldPair), $clone(new foldPair.ptr(499, 497), foldPair), $clone(new foldPair.ptr(837, 921), foldPair), $clone(new foldPair.ptr(914, 946), foldPair), $clone(new foldPair.ptr(917, 949), foldPair), $clone(new foldPair.ptr(920, 952), foldPair), $clone(new foldPair.ptr(921, 953), foldPair), $clone(new foldPair.ptr(922, 954), foldPair), $clone(new foldPair.ptr(924, 956), foldPair), $clone(new foldPair.ptr(928, 960), foldPair), $clone(new foldPair.ptr(929, 961), foldPair), $clone(new foldPair.ptr(931, 962), foldPair), $clone(new foldPair.ptr(934, 966), foldPair), $clone(new foldPair.ptr(937, 969), foldPair), $clone(new foldPair.ptr(946, 976), foldPair), $clone(new foldPair.ptr(949, 1013), foldPair), $clone(new foldPair.ptr(952, 977), foldPair), $clone(new foldPair.ptr(953, 8126), foldPair), $clone(new foldPair.ptr(954, 1008), foldPair), $clone(new foldPair.ptr(956, 181), foldPair), $clone(new foldPair.ptr(960, 982), foldPair), $clone(new foldPair.ptr(961, 1009), foldPair), $clone(new foldPair.ptr(962, 963), foldPair), $clone(new foldPair.ptr(963, 931), foldPair), $clone(new foldPair.ptr(966, 981), foldPair), $clone(new foldPair.ptr(969, 8486), foldPair), $clone(new foldPair.ptr(976, 914), foldPair), $clone(new foldPair.ptr(977, 1012), foldPair), $clone(new foldPair.ptr(981, 934), foldPair), $clone(new foldPair.ptr(982, 928), foldPair), $clone(new foldPair.ptr(1008, 922), foldPair), $clone(new foldPair.ptr(1009, 929), foldPair), $clone(new foldPair.ptr(1012, 920), foldPair), $clone(new foldPair.ptr(1013, 917), foldPair), $clone(new foldPair.ptr(1042, 1074), foldPair), $clone(new foldPair.ptr(1044, 1076), foldPair), $clone(new foldPair.ptr(1054, 1086), foldPair), $clone(new foldPair.ptr(1057, 1089), foldPair), $clone(new foldPair.ptr(1058, 1090), foldPair), $clone(new foldPair.ptr(1066, 1098), foldPair), $clone(new foldPair.ptr(1074, 7296), foldPair), $clone(new foldPair.ptr(1076, 7297), foldPair), $clone(new foldPair.ptr(1086, 7298), foldPair), $clone(new foldPair.ptr(1089, 7299), foldPair), $clone(new foldPair.ptr(1090, 7300), foldPair), $clone(new foldPair.ptr(1098, 7302), foldPair), $clone(new foldPair.ptr(1122, 1123), foldPair), $clone(new foldPair.ptr(1123, 7303), foldPair), $clone(new foldPair.ptr(7296, 1042), foldPair), $clone(new foldPair.ptr(7297, 1044), foldPair), $clone(new foldPair.ptr(7298, 1054), foldPair), $clone(new foldPair.ptr(7299, 1057), foldPair), $clone(new foldPair.ptr(7300, 7301), foldPair), $clone(new foldPair.ptr(7301, 1058), foldPair), $clone(new foldPair.ptr(7302, 1066), foldPair), $clone(new foldPair.ptr(7303, 1122), foldPair), $clone(new foldPair.ptr(7304, 42570), foldPair), $clone(new foldPair.ptr(7776, 7777), foldPair), $clone(new foldPair.ptr(7777, 7835), foldPair), $clone(new foldPair.ptr(7835, 7776), foldPair), $clone(new foldPair.ptr(7838, 223), foldPair), $clone(new foldPair.ptr(8126, 837), foldPair), $clone(new foldPair.ptr(8486, 937), foldPair), $clone(new foldPair.ptr(8490, 75), foldPair), $clone(new foldPair.ptr(8491, 197), foldPair), $clone(new foldPair.ptr(42570, 42571), foldPair), $clone(new foldPair.ptr(42571, 7304), foldPair)]); + foldL = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(837, 837, 1), Range16)]), sliceType$1.nil, 0); + foldLl = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(65, 90, 1), Range16), $clone(new Range16.ptr(192, 214, 1), Range16), $clone(new Range16.ptr(216, 222, 1), Range16), $clone(new Range16.ptr(256, 302, 2), Range16), $clone(new Range16.ptr(306, 310, 2), Range16), $clone(new Range16.ptr(313, 327, 2), Range16), $clone(new Range16.ptr(330, 376, 2), Range16), $clone(new Range16.ptr(377, 381, 2), Range16), $clone(new Range16.ptr(385, 386, 1), Range16), $clone(new Range16.ptr(388, 390, 2), Range16), $clone(new Range16.ptr(391, 393, 2), Range16), $clone(new Range16.ptr(394, 395, 1), Range16), $clone(new Range16.ptr(398, 401, 1), Range16), $clone(new Range16.ptr(403, 404, 1), Range16), $clone(new Range16.ptr(406, 408, 1), Range16), $clone(new Range16.ptr(412, 413, 1), Range16), $clone(new Range16.ptr(415, 416, 1), Range16), $clone(new Range16.ptr(418, 422, 2), Range16), $clone(new Range16.ptr(423, 425, 2), Range16), $clone(new Range16.ptr(428, 430, 2), Range16), $clone(new Range16.ptr(431, 433, 2), Range16), $clone(new Range16.ptr(434, 435, 1), Range16), $clone(new Range16.ptr(437, 439, 2), Range16), $clone(new Range16.ptr(440, 444, 4), Range16), $clone(new Range16.ptr(452, 453, 1), Range16), $clone(new Range16.ptr(455, 456, 1), Range16), $clone(new Range16.ptr(458, 459, 1), Range16), $clone(new Range16.ptr(461, 475, 2), Range16), $clone(new Range16.ptr(478, 494, 2), Range16), $clone(new Range16.ptr(497, 498, 1), Range16), $clone(new Range16.ptr(500, 502, 2), Range16), $clone(new Range16.ptr(503, 504, 1), Range16), $clone(new Range16.ptr(506, 562, 2), Range16), $clone(new Range16.ptr(570, 571, 1), Range16), $clone(new Range16.ptr(573, 574, 1), Range16), $clone(new Range16.ptr(577, 579, 2), Range16), $clone(new Range16.ptr(580, 582, 1), Range16), $clone(new Range16.ptr(584, 590, 2), Range16), $clone(new Range16.ptr(837, 880, 43), Range16), $clone(new Range16.ptr(882, 886, 4), Range16), $clone(new Range16.ptr(895, 902, 7), Range16), $clone(new Range16.ptr(904, 906, 1), Range16), $clone(new Range16.ptr(908, 910, 2), Range16), $clone(new Range16.ptr(911, 913, 2), Range16), $clone(new Range16.ptr(914, 929, 1), Range16), $clone(new Range16.ptr(931, 939, 1), Range16), $clone(new Range16.ptr(975, 984, 9), Range16), $clone(new Range16.ptr(986, 1006, 2), Range16), $clone(new Range16.ptr(1012, 1015, 3), Range16), $clone(new Range16.ptr(1017, 1018, 1), Range16), $clone(new Range16.ptr(1021, 1071, 1), Range16), $clone(new Range16.ptr(1120, 1152, 2), Range16), $clone(new Range16.ptr(1162, 1216, 2), Range16), $clone(new Range16.ptr(1217, 1229, 2), Range16), $clone(new Range16.ptr(1232, 1326, 2), Range16), $clone(new Range16.ptr(1329, 1366, 1), Range16), $clone(new Range16.ptr(4256, 4293, 1), Range16), $clone(new Range16.ptr(4295, 4301, 6), Range16), $clone(new Range16.ptr(5024, 5109, 1), Range16), $clone(new Range16.ptr(7312, 7354, 1), Range16), $clone(new Range16.ptr(7357, 7359, 1), Range16), $clone(new Range16.ptr(7680, 7828, 2), Range16), $clone(new Range16.ptr(7838, 7934, 2), Range16), $clone(new Range16.ptr(7944, 7951, 1), Range16), $clone(new Range16.ptr(7960, 7965, 1), Range16), $clone(new Range16.ptr(7976, 7983, 1), Range16), $clone(new Range16.ptr(7992, 7999, 1), Range16), $clone(new Range16.ptr(8008, 8013, 1), Range16), $clone(new Range16.ptr(8025, 8031, 2), Range16), $clone(new Range16.ptr(8040, 8047, 1), Range16), $clone(new Range16.ptr(8072, 8079, 1), Range16), $clone(new Range16.ptr(8088, 8095, 1), Range16), $clone(new Range16.ptr(8104, 8111, 1), Range16), $clone(new Range16.ptr(8120, 8124, 1), Range16), $clone(new Range16.ptr(8136, 8140, 1), Range16), $clone(new Range16.ptr(8152, 8155, 1), Range16), $clone(new Range16.ptr(8168, 8172, 1), Range16), $clone(new Range16.ptr(8184, 8188, 1), Range16), $clone(new Range16.ptr(8486, 8490, 4), Range16), $clone(new Range16.ptr(8491, 8498, 7), Range16), $clone(new Range16.ptr(8579, 11264, 2685), Range16), $clone(new Range16.ptr(11265, 11310, 1), Range16), $clone(new Range16.ptr(11360, 11362, 2), Range16), $clone(new Range16.ptr(11363, 11364, 1), Range16), $clone(new Range16.ptr(11367, 11373, 2), Range16), $clone(new Range16.ptr(11374, 11376, 1), Range16), $clone(new Range16.ptr(11378, 11381, 3), Range16), $clone(new Range16.ptr(11390, 11392, 1), Range16), $clone(new Range16.ptr(11394, 11490, 2), Range16), $clone(new Range16.ptr(11499, 11501, 2), Range16), $clone(new Range16.ptr(11506, 42560, 31054), Range16), $clone(new Range16.ptr(42562, 42604, 2), Range16), $clone(new Range16.ptr(42624, 42650, 2), Range16), $clone(new Range16.ptr(42786, 42798, 2), Range16), $clone(new Range16.ptr(42802, 42862, 2), Range16), $clone(new Range16.ptr(42873, 42877, 2), Range16), $clone(new Range16.ptr(42878, 42886, 2), Range16), $clone(new Range16.ptr(42891, 42893, 2), Range16), $clone(new Range16.ptr(42896, 42898, 2), Range16), $clone(new Range16.ptr(42902, 42922, 2), Range16), $clone(new Range16.ptr(42923, 42926, 1), Range16), $clone(new Range16.ptr(42928, 42932, 1), Range16), $clone(new Range16.ptr(42934, 42942, 2), Range16), $clone(new Range16.ptr(42946, 42948, 2), Range16), $clone(new Range16.ptr(42949, 42951, 1), Range16), $clone(new Range16.ptr(42953, 42997, 44), Range16), $clone(new Range16.ptr(65313, 65338, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(66560, 66599, 1), Range32), $clone(new Range32.ptr(66736, 66771, 1), Range32), $clone(new Range32.ptr(68736, 68786, 1), Range32), $clone(new Range32.ptr(71840, 71871, 1), Range32), $clone(new Range32.ptr(93760, 93791, 1), Range32), $clone(new Range32.ptr(125184, 125217, 1), Range32)]), 3); + foldLt = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(452, 454, 2), Range16), $clone(new Range16.ptr(455, 457, 2), Range16), $clone(new Range16.ptr(458, 460, 2), Range16), $clone(new Range16.ptr(497, 499, 2), Range16), $clone(new Range16.ptr(8064, 8071, 1), Range16), $clone(new Range16.ptr(8080, 8087, 1), Range16), $clone(new Range16.ptr(8096, 8103, 1), Range16), $clone(new Range16.ptr(8115, 8131, 16), Range16), $clone(new Range16.ptr(8179, 8179, 1), Range16)]), sliceType$1.nil, 0); + foldLu = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(97, 122, 1), Range16), $clone(new Range16.ptr(181, 223, 42), Range16), $clone(new Range16.ptr(224, 246, 1), Range16), $clone(new Range16.ptr(248, 255, 1), Range16), $clone(new Range16.ptr(257, 303, 2), Range16), $clone(new Range16.ptr(307, 311, 2), Range16), $clone(new Range16.ptr(314, 328, 2), Range16), $clone(new Range16.ptr(331, 375, 2), Range16), $clone(new Range16.ptr(378, 382, 2), Range16), $clone(new Range16.ptr(383, 384, 1), Range16), $clone(new Range16.ptr(387, 389, 2), Range16), $clone(new Range16.ptr(392, 396, 4), Range16), $clone(new Range16.ptr(402, 405, 3), Range16), $clone(new Range16.ptr(409, 410, 1), Range16), $clone(new Range16.ptr(414, 417, 3), Range16), $clone(new Range16.ptr(419, 421, 2), Range16), $clone(new Range16.ptr(424, 429, 5), Range16), $clone(new Range16.ptr(432, 436, 4), Range16), $clone(new Range16.ptr(438, 441, 3), Range16), $clone(new Range16.ptr(445, 447, 2), Range16), $clone(new Range16.ptr(453, 454, 1), Range16), $clone(new Range16.ptr(456, 457, 1), Range16), $clone(new Range16.ptr(459, 460, 1), Range16), $clone(new Range16.ptr(462, 476, 2), Range16), $clone(new Range16.ptr(477, 495, 2), Range16), $clone(new Range16.ptr(498, 499, 1), Range16), $clone(new Range16.ptr(501, 505, 4), Range16), $clone(new Range16.ptr(507, 543, 2), Range16), $clone(new Range16.ptr(547, 563, 2), Range16), $clone(new Range16.ptr(572, 575, 3), Range16), $clone(new Range16.ptr(576, 578, 2), Range16), $clone(new Range16.ptr(583, 591, 2), Range16), $clone(new Range16.ptr(592, 596, 1), Range16), $clone(new Range16.ptr(598, 599, 1), Range16), $clone(new Range16.ptr(601, 603, 2), Range16), $clone(new Range16.ptr(604, 608, 4), Range16), $clone(new Range16.ptr(609, 613, 2), Range16), $clone(new Range16.ptr(614, 616, 2), Range16), $clone(new Range16.ptr(617, 620, 1), Range16), $clone(new Range16.ptr(623, 625, 2), Range16), $clone(new Range16.ptr(626, 629, 3), Range16), $clone(new Range16.ptr(637, 640, 3), Range16), $clone(new Range16.ptr(642, 643, 1), Range16), $clone(new Range16.ptr(647, 652, 1), Range16), $clone(new Range16.ptr(658, 669, 11), Range16), $clone(new Range16.ptr(670, 837, 167), Range16), $clone(new Range16.ptr(881, 883, 2), Range16), $clone(new Range16.ptr(887, 891, 4), Range16), $clone(new Range16.ptr(892, 893, 1), Range16), $clone(new Range16.ptr(940, 943, 1), Range16), $clone(new Range16.ptr(945, 974, 1), Range16), $clone(new Range16.ptr(976, 977, 1), Range16), $clone(new Range16.ptr(981, 983, 1), Range16), $clone(new Range16.ptr(985, 1007, 2), Range16), $clone(new Range16.ptr(1008, 1011, 1), Range16), $clone(new Range16.ptr(1013, 1019, 3), Range16), $clone(new Range16.ptr(1072, 1119, 1), Range16), $clone(new Range16.ptr(1121, 1153, 2), Range16), $clone(new Range16.ptr(1163, 1215, 2), Range16), $clone(new Range16.ptr(1218, 1230, 2), Range16), $clone(new Range16.ptr(1231, 1327, 2), Range16), $clone(new Range16.ptr(1377, 1414, 1), Range16), $clone(new Range16.ptr(4304, 4346, 1), Range16), $clone(new Range16.ptr(4349, 4351, 1), Range16), $clone(new Range16.ptr(5112, 5117, 1), Range16), $clone(new Range16.ptr(7296, 7304, 1), Range16), $clone(new Range16.ptr(7545, 7549, 4), Range16), $clone(new Range16.ptr(7566, 7681, 115), Range16), $clone(new Range16.ptr(7683, 7829, 2), Range16), $clone(new Range16.ptr(7835, 7841, 6), Range16), $clone(new Range16.ptr(7843, 7935, 2), Range16), $clone(new Range16.ptr(7936, 7943, 1), Range16), $clone(new Range16.ptr(7952, 7957, 1), Range16), $clone(new Range16.ptr(7968, 7975, 1), Range16), $clone(new Range16.ptr(7984, 7991, 1), Range16), $clone(new Range16.ptr(8000, 8005, 1), Range16), $clone(new Range16.ptr(8017, 8023, 2), Range16), $clone(new Range16.ptr(8032, 8039, 1), Range16), $clone(new Range16.ptr(8048, 8061, 1), Range16), $clone(new Range16.ptr(8112, 8113, 1), Range16), $clone(new Range16.ptr(8126, 8144, 18), Range16), $clone(new Range16.ptr(8145, 8160, 15), Range16), $clone(new Range16.ptr(8161, 8165, 4), Range16), $clone(new Range16.ptr(8526, 8580, 54), Range16), $clone(new Range16.ptr(11312, 11358, 1), Range16), $clone(new Range16.ptr(11361, 11365, 4), Range16), $clone(new Range16.ptr(11366, 11372, 2), Range16), $clone(new Range16.ptr(11379, 11382, 3), Range16), $clone(new Range16.ptr(11393, 11491, 2), Range16), $clone(new Range16.ptr(11500, 11502, 2), Range16), $clone(new Range16.ptr(11507, 11520, 13), Range16), $clone(new Range16.ptr(11521, 11557, 1), Range16), $clone(new Range16.ptr(11559, 11565, 6), Range16), $clone(new Range16.ptr(42561, 42605, 2), Range16), $clone(new Range16.ptr(42625, 42651, 2), Range16), $clone(new Range16.ptr(42787, 42799, 2), Range16), $clone(new Range16.ptr(42803, 42863, 2), Range16), $clone(new Range16.ptr(42874, 42876, 2), Range16), $clone(new Range16.ptr(42879, 42887, 2), Range16), $clone(new Range16.ptr(42892, 42897, 5), Range16), $clone(new Range16.ptr(42899, 42900, 1), Range16), $clone(new Range16.ptr(42903, 42921, 2), Range16), $clone(new Range16.ptr(42933, 42943, 2), Range16), $clone(new Range16.ptr(42947, 42952, 5), Range16), $clone(new Range16.ptr(42954, 42998, 44), Range16), $clone(new Range16.ptr(43859, 43888, 29), Range16), $clone(new Range16.ptr(43889, 43967, 1), Range16), $clone(new Range16.ptr(65345, 65370, 1), Range16)]), new sliceType$1([$clone(new Range32.ptr(66600, 66639, 1), Range32), $clone(new Range32.ptr(66776, 66811, 1), Range32), $clone(new Range32.ptr(68800, 68850, 1), Range32), $clone(new Range32.ptr(71872, 71903, 1), Range32), $clone(new Range32.ptr(93792, 93823, 1), Range32), $clone(new Range32.ptr(125218, 125251, 1), Range32)]), 4); + foldM = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(921, 953, 32), Range16), $clone(new Range16.ptr(8126, 8126, 1), Range16)]), sliceType$1.nil, 0); + foldMn = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(921, 953, 32), Range16), $clone(new Range16.ptr(8126, 8126, 1), Range16)]), sliceType$1.nil, 0); + $pkg.FoldCategory = $makeMap($String.keyFor, [{ k: "L", v: foldL }, { k: "Ll", v: foldLl }, { k: "Lt", v: foldLt }, { k: "Lu", v: foldLu }, { k: "M", v: foldM }, { k: "Mn", v: foldMn }]); + foldCommon = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(924, 956, 32), Range16)]), sliceType$1.nil, 0); + foldGreek = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(181, 837, 656), Range16)]), sliceType$1.nil, 0); + foldInherited = new RangeTable.ptr(new sliceType([$clone(new Range16.ptr(921, 953, 32), Range16), $clone(new Range16.ptr(8126, 8126, 1), Range16)]), sliceType$1.nil, 0); + $pkg.FoldScript = $makeMap($String.keyFor, [{ k: "Common", v: foldCommon }, { k: "Greek", v: foldGreek }, { k: "Inherited", v: foldInherited }]); + asciiFold = $toNativeArray($kindUint16, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 91, 92, 93, 94, 95, 96, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 8490, 76, 77, 78, 79, 80, 81, 82, 383, 84, 85, 86, 87, 88, 89, 90, 123, 124, 125, 126, 127]); + _CaseRanges = new sliceType$3([$clone(new CaseRange.ptr(65, 90, $clone($toNativeArray($kindInt32, [0, 32, 0]), d)), CaseRange), $clone(new CaseRange.ptr(97, 122, $clone($toNativeArray($kindInt32, [-32, 0, -32]), d)), CaseRange), $clone(new CaseRange.ptr(181, 181, $clone($toNativeArray($kindInt32, [743, 0, 743]), d)), CaseRange), $clone(new CaseRange.ptr(192, 214, $clone($toNativeArray($kindInt32, [0, 32, 0]), d)), CaseRange), $clone(new CaseRange.ptr(216, 222, $clone($toNativeArray($kindInt32, [0, 32, 0]), d)), CaseRange), $clone(new CaseRange.ptr(224, 246, $clone($toNativeArray($kindInt32, [-32, 0, -32]), d)), CaseRange), $clone(new CaseRange.ptr(248, 254, $clone($toNativeArray($kindInt32, [-32, 0, -32]), d)), CaseRange), $clone(new CaseRange.ptr(255, 255, $clone($toNativeArray($kindInt32, [121, 0, 121]), d)), CaseRange), $clone(new CaseRange.ptr(256, 303, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(304, 304, $clone($toNativeArray($kindInt32, [0, -199, 0]), d)), CaseRange), $clone(new CaseRange.ptr(305, 305, $clone($toNativeArray($kindInt32, [-232, 0, -232]), d)), CaseRange), $clone(new CaseRange.ptr(306, 311, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(313, 328, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(330, 375, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(376, 376, $clone($toNativeArray($kindInt32, [0, -121, 0]), d)), CaseRange), $clone(new CaseRange.ptr(377, 382, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(383, 383, $clone($toNativeArray($kindInt32, [-300, 0, -300]), d)), CaseRange), $clone(new CaseRange.ptr(384, 384, $clone($toNativeArray($kindInt32, [195, 0, 195]), d)), CaseRange), $clone(new CaseRange.ptr(385, 385, $clone($toNativeArray($kindInt32, [0, 210, 0]), d)), CaseRange), $clone(new CaseRange.ptr(386, 389, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(390, 390, $clone($toNativeArray($kindInt32, [0, 206, 0]), d)), CaseRange), $clone(new CaseRange.ptr(391, 392, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(393, 394, $clone($toNativeArray($kindInt32, [0, 205, 0]), d)), CaseRange), $clone(new CaseRange.ptr(395, 396, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(398, 398, $clone($toNativeArray($kindInt32, [0, 79, 0]), d)), CaseRange), $clone(new CaseRange.ptr(399, 399, $clone($toNativeArray($kindInt32, [0, 202, 0]), d)), CaseRange), $clone(new CaseRange.ptr(400, 400, $clone($toNativeArray($kindInt32, [0, 203, 0]), d)), CaseRange), $clone(new CaseRange.ptr(401, 402, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(403, 403, $clone($toNativeArray($kindInt32, [0, 205, 0]), d)), CaseRange), $clone(new CaseRange.ptr(404, 404, $clone($toNativeArray($kindInt32, [0, 207, 0]), d)), CaseRange), $clone(new CaseRange.ptr(405, 405, $clone($toNativeArray($kindInt32, [97, 0, 97]), d)), CaseRange), $clone(new CaseRange.ptr(406, 406, $clone($toNativeArray($kindInt32, [0, 211, 0]), d)), CaseRange), $clone(new CaseRange.ptr(407, 407, $clone($toNativeArray($kindInt32, [0, 209, 0]), d)), CaseRange), $clone(new CaseRange.ptr(408, 409, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(410, 410, $clone($toNativeArray($kindInt32, [163, 0, 163]), d)), CaseRange), $clone(new CaseRange.ptr(412, 412, $clone($toNativeArray($kindInt32, [0, 211, 0]), d)), CaseRange), $clone(new CaseRange.ptr(413, 413, $clone($toNativeArray($kindInt32, [0, 213, 0]), d)), CaseRange), $clone(new CaseRange.ptr(414, 414, $clone($toNativeArray($kindInt32, [130, 0, 130]), d)), CaseRange), $clone(new CaseRange.ptr(415, 415, $clone($toNativeArray($kindInt32, [0, 214, 0]), d)), CaseRange), $clone(new CaseRange.ptr(416, 421, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(422, 422, $clone($toNativeArray($kindInt32, [0, 218, 0]), d)), CaseRange), $clone(new CaseRange.ptr(423, 424, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(425, 425, $clone($toNativeArray($kindInt32, [0, 218, 0]), d)), CaseRange), $clone(new CaseRange.ptr(428, 429, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(430, 430, $clone($toNativeArray($kindInt32, [0, 218, 0]), d)), CaseRange), $clone(new CaseRange.ptr(431, 432, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(433, 434, $clone($toNativeArray($kindInt32, [0, 217, 0]), d)), CaseRange), $clone(new CaseRange.ptr(435, 438, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(439, 439, $clone($toNativeArray($kindInt32, [0, 219, 0]), d)), CaseRange), $clone(new CaseRange.ptr(440, 441, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(444, 445, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(447, 447, $clone($toNativeArray($kindInt32, [56, 0, 56]), d)), CaseRange), $clone(new CaseRange.ptr(452, 452, $clone($toNativeArray($kindInt32, [0, 2, 1]), d)), CaseRange), $clone(new CaseRange.ptr(453, 453, $clone($toNativeArray($kindInt32, [-1, 1, 0]), d)), CaseRange), $clone(new CaseRange.ptr(454, 454, $clone($toNativeArray($kindInt32, [-2, 0, -1]), d)), CaseRange), $clone(new CaseRange.ptr(455, 455, $clone($toNativeArray($kindInt32, [0, 2, 1]), d)), CaseRange), $clone(new CaseRange.ptr(456, 456, $clone($toNativeArray($kindInt32, [-1, 1, 0]), d)), CaseRange), $clone(new CaseRange.ptr(457, 457, $clone($toNativeArray($kindInt32, [-2, 0, -1]), d)), CaseRange), $clone(new CaseRange.ptr(458, 458, $clone($toNativeArray($kindInt32, [0, 2, 1]), d)), CaseRange), $clone(new CaseRange.ptr(459, 459, $clone($toNativeArray($kindInt32, [-1, 1, 0]), d)), CaseRange), $clone(new CaseRange.ptr(460, 460, $clone($toNativeArray($kindInt32, [-2, 0, -1]), d)), CaseRange), $clone(new CaseRange.ptr(461, 476, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(477, 477, $clone($toNativeArray($kindInt32, [-79, 0, -79]), d)), CaseRange), $clone(new CaseRange.ptr(478, 495, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(497, 497, $clone($toNativeArray($kindInt32, [0, 2, 1]), d)), CaseRange), $clone(new CaseRange.ptr(498, 498, $clone($toNativeArray($kindInt32, [-1, 1, 0]), d)), CaseRange), $clone(new CaseRange.ptr(499, 499, $clone($toNativeArray($kindInt32, [-2, 0, -1]), d)), CaseRange), $clone(new CaseRange.ptr(500, 501, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(502, 502, $clone($toNativeArray($kindInt32, [0, -97, 0]), d)), CaseRange), $clone(new CaseRange.ptr(503, 503, $clone($toNativeArray($kindInt32, [0, -56, 0]), d)), CaseRange), $clone(new CaseRange.ptr(504, 543, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(544, 544, $clone($toNativeArray($kindInt32, [0, -130, 0]), d)), CaseRange), $clone(new CaseRange.ptr(546, 563, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(570, 570, $clone($toNativeArray($kindInt32, [0, 10795, 0]), d)), CaseRange), $clone(new CaseRange.ptr(571, 572, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(573, 573, $clone($toNativeArray($kindInt32, [0, -163, 0]), d)), CaseRange), $clone(new CaseRange.ptr(574, 574, $clone($toNativeArray($kindInt32, [0, 10792, 0]), d)), CaseRange), $clone(new CaseRange.ptr(575, 576, $clone($toNativeArray($kindInt32, [10815, 0, 10815]), d)), CaseRange), $clone(new CaseRange.ptr(577, 578, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(579, 579, $clone($toNativeArray($kindInt32, [0, -195, 0]), d)), CaseRange), $clone(new CaseRange.ptr(580, 580, $clone($toNativeArray($kindInt32, [0, 69, 0]), d)), CaseRange), $clone(new CaseRange.ptr(581, 581, $clone($toNativeArray($kindInt32, [0, 71, 0]), d)), CaseRange), $clone(new CaseRange.ptr(582, 591, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(592, 592, $clone($toNativeArray($kindInt32, [10783, 0, 10783]), d)), CaseRange), $clone(new CaseRange.ptr(593, 593, $clone($toNativeArray($kindInt32, [10780, 0, 10780]), d)), CaseRange), $clone(new CaseRange.ptr(594, 594, $clone($toNativeArray($kindInt32, [10782, 0, 10782]), d)), CaseRange), $clone(new CaseRange.ptr(595, 595, $clone($toNativeArray($kindInt32, [-210, 0, -210]), d)), CaseRange), $clone(new CaseRange.ptr(596, 596, $clone($toNativeArray($kindInt32, [-206, 0, -206]), d)), CaseRange), $clone(new CaseRange.ptr(598, 599, $clone($toNativeArray($kindInt32, [-205, 0, -205]), d)), CaseRange), $clone(new CaseRange.ptr(601, 601, $clone($toNativeArray($kindInt32, [-202, 0, -202]), d)), CaseRange), $clone(new CaseRange.ptr(603, 603, $clone($toNativeArray($kindInt32, [-203, 0, -203]), d)), CaseRange), $clone(new CaseRange.ptr(604, 604, $clone($toNativeArray($kindInt32, [42319, 0, 42319]), d)), CaseRange), $clone(new CaseRange.ptr(608, 608, $clone($toNativeArray($kindInt32, [-205, 0, -205]), d)), CaseRange), $clone(new CaseRange.ptr(609, 609, $clone($toNativeArray($kindInt32, [42315, 0, 42315]), d)), CaseRange), $clone(new CaseRange.ptr(611, 611, $clone($toNativeArray($kindInt32, [-207, 0, -207]), d)), CaseRange), $clone(new CaseRange.ptr(613, 613, $clone($toNativeArray($kindInt32, [42280, 0, 42280]), d)), CaseRange), $clone(new CaseRange.ptr(614, 614, $clone($toNativeArray($kindInt32, [42308, 0, 42308]), d)), CaseRange), $clone(new CaseRange.ptr(616, 616, $clone($toNativeArray($kindInt32, [-209, 0, -209]), d)), CaseRange), $clone(new CaseRange.ptr(617, 617, $clone($toNativeArray($kindInt32, [-211, 0, -211]), d)), CaseRange), $clone(new CaseRange.ptr(618, 618, $clone($toNativeArray($kindInt32, [42308, 0, 42308]), d)), CaseRange), $clone(new CaseRange.ptr(619, 619, $clone($toNativeArray($kindInt32, [10743, 0, 10743]), d)), CaseRange), $clone(new CaseRange.ptr(620, 620, $clone($toNativeArray($kindInt32, [42305, 0, 42305]), d)), CaseRange), $clone(new CaseRange.ptr(623, 623, $clone($toNativeArray($kindInt32, [-211, 0, -211]), d)), CaseRange), $clone(new CaseRange.ptr(625, 625, $clone($toNativeArray($kindInt32, [10749, 0, 10749]), d)), CaseRange), $clone(new CaseRange.ptr(626, 626, $clone($toNativeArray($kindInt32, [-213, 0, -213]), d)), CaseRange), $clone(new CaseRange.ptr(629, 629, $clone($toNativeArray($kindInt32, [-214, 0, -214]), d)), CaseRange), $clone(new CaseRange.ptr(637, 637, $clone($toNativeArray($kindInt32, [10727, 0, 10727]), d)), CaseRange), $clone(new CaseRange.ptr(640, 640, $clone($toNativeArray($kindInt32, [-218, 0, -218]), d)), CaseRange), $clone(new CaseRange.ptr(642, 642, $clone($toNativeArray($kindInt32, [42307, 0, 42307]), d)), CaseRange), $clone(new CaseRange.ptr(643, 643, $clone($toNativeArray($kindInt32, [-218, 0, -218]), d)), CaseRange), $clone(new CaseRange.ptr(647, 647, $clone($toNativeArray($kindInt32, [42282, 0, 42282]), d)), CaseRange), $clone(new CaseRange.ptr(648, 648, $clone($toNativeArray($kindInt32, [-218, 0, -218]), d)), CaseRange), $clone(new CaseRange.ptr(649, 649, $clone($toNativeArray($kindInt32, [-69, 0, -69]), d)), CaseRange), $clone(new CaseRange.ptr(650, 651, $clone($toNativeArray($kindInt32, [-217, 0, -217]), d)), CaseRange), $clone(new CaseRange.ptr(652, 652, $clone($toNativeArray($kindInt32, [-71, 0, -71]), d)), CaseRange), $clone(new CaseRange.ptr(658, 658, $clone($toNativeArray($kindInt32, [-219, 0, -219]), d)), CaseRange), $clone(new CaseRange.ptr(669, 669, $clone($toNativeArray($kindInt32, [42261, 0, 42261]), d)), CaseRange), $clone(new CaseRange.ptr(670, 670, $clone($toNativeArray($kindInt32, [42258, 0, 42258]), d)), CaseRange), $clone(new CaseRange.ptr(837, 837, $clone($toNativeArray($kindInt32, [84, 0, 84]), d)), CaseRange), $clone(new CaseRange.ptr(880, 883, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(886, 887, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(891, 893, $clone($toNativeArray($kindInt32, [130, 0, 130]), d)), CaseRange), $clone(new CaseRange.ptr(895, 895, $clone($toNativeArray($kindInt32, [0, 116, 0]), d)), CaseRange), $clone(new CaseRange.ptr(902, 902, $clone($toNativeArray($kindInt32, [0, 38, 0]), d)), CaseRange), $clone(new CaseRange.ptr(904, 906, $clone($toNativeArray($kindInt32, [0, 37, 0]), d)), CaseRange), $clone(new CaseRange.ptr(908, 908, $clone($toNativeArray($kindInt32, [0, 64, 0]), d)), CaseRange), $clone(new CaseRange.ptr(910, 911, $clone($toNativeArray($kindInt32, [0, 63, 0]), d)), CaseRange), $clone(new CaseRange.ptr(913, 929, $clone($toNativeArray($kindInt32, [0, 32, 0]), d)), CaseRange), $clone(new CaseRange.ptr(931, 939, $clone($toNativeArray($kindInt32, [0, 32, 0]), d)), CaseRange), $clone(new CaseRange.ptr(940, 940, $clone($toNativeArray($kindInt32, [-38, 0, -38]), d)), CaseRange), $clone(new CaseRange.ptr(941, 943, $clone($toNativeArray($kindInt32, [-37, 0, -37]), d)), CaseRange), $clone(new CaseRange.ptr(945, 961, $clone($toNativeArray($kindInt32, [-32, 0, -32]), d)), CaseRange), $clone(new CaseRange.ptr(962, 962, $clone($toNativeArray($kindInt32, [-31, 0, -31]), d)), CaseRange), $clone(new CaseRange.ptr(963, 971, $clone($toNativeArray($kindInt32, [-32, 0, -32]), d)), CaseRange), $clone(new CaseRange.ptr(972, 972, $clone($toNativeArray($kindInt32, [-64, 0, -64]), d)), CaseRange), $clone(new CaseRange.ptr(973, 974, $clone($toNativeArray($kindInt32, [-63, 0, -63]), d)), CaseRange), $clone(new CaseRange.ptr(975, 975, $clone($toNativeArray($kindInt32, [0, 8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(976, 976, $clone($toNativeArray($kindInt32, [-62, 0, -62]), d)), CaseRange), $clone(new CaseRange.ptr(977, 977, $clone($toNativeArray($kindInt32, [-57, 0, -57]), d)), CaseRange), $clone(new CaseRange.ptr(981, 981, $clone($toNativeArray($kindInt32, [-47, 0, -47]), d)), CaseRange), $clone(new CaseRange.ptr(982, 982, $clone($toNativeArray($kindInt32, [-54, 0, -54]), d)), CaseRange), $clone(new CaseRange.ptr(983, 983, $clone($toNativeArray($kindInt32, [-8, 0, -8]), d)), CaseRange), $clone(new CaseRange.ptr(984, 1007, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(1008, 1008, $clone($toNativeArray($kindInt32, [-86, 0, -86]), d)), CaseRange), $clone(new CaseRange.ptr(1009, 1009, $clone($toNativeArray($kindInt32, [-80, 0, -80]), d)), CaseRange), $clone(new CaseRange.ptr(1010, 1010, $clone($toNativeArray($kindInt32, [7, 0, 7]), d)), CaseRange), $clone(new CaseRange.ptr(1011, 1011, $clone($toNativeArray($kindInt32, [-116, 0, -116]), d)), CaseRange), $clone(new CaseRange.ptr(1012, 1012, $clone($toNativeArray($kindInt32, [0, -60, 0]), d)), CaseRange), $clone(new CaseRange.ptr(1013, 1013, $clone($toNativeArray($kindInt32, [-96, 0, -96]), d)), CaseRange), $clone(new CaseRange.ptr(1015, 1016, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(1017, 1017, $clone($toNativeArray($kindInt32, [0, -7, 0]), d)), CaseRange), $clone(new CaseRange.ptr(1018, 1019, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(1021, 1023, $clone($toNativeArray($kindInt32, [0, -130, 0]), d)), CaseRange), $clone(new CaseRange.ptr(1024, 1039, $clone($toNativeArray($kindInt32, [0, 80, 0]), d)), CaseRange), $clone(new CaseRange.ptr(1040, 1071, $clone($toNativeArray($kindInt32, [0, 32, 0]), d)), CaseRange), $clone(new CaseRange.ptr(1072, 1103, $clone($toNativeArray($kindInt32, [-32, 0, -32]), d)), CaseRange), $clone(new CaseRange.ptr(1104, 1119, $clone($toNativeArray($kindInt32, [-80, 0, -80]), d)), CaseRange), $clone(new CaseRange.ptr(1120, 1153, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(1162, 1215, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(1216, 1216, $clone($toNativeArray($kindInt32, [0, 15, 0]), d)), CaseRange), $clone(new CaseRange.ptr(1217, 1230, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(1231, 1231, $clone($toNativeArray($kindInt32, [-15, 0, -15]), d)), CaseRange), $clone(new CaseRange.ptr(1232, 1327, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(1329, 1366, $clone($toNativeArray($kindInt32, [0, 48, 0]), d)), CaseRange), $clone(new CaseRange.ptr(1377, 1414, $clone($toNativeArray($kindInt32, [-48, 0, -48]), d)), CaseRange), $clone(new CaseRange.ptr(4256, 4293, $clone($toNativeArray($kindInt32, [0, 7264, 0]), d)), CaseRange), $clone(new CaseRange.ptr(4295, 4295, $clone($toNativeArray($kindInt32, [0, 7264, 0]), d)), CaseRange), $clone(new CaseRange.ptr(4301, 4301, $clone($toNativeArray($kindInt32, [0, 7264, 0]), d)), CaseRange), $clone(new CaseRange.ptr(4304, 4346, $clone($toNativeArray($kindInt32, [3008, 0, 0]), d)), CaseRange), $clone(new CaseRange.ptr(4349, 4351, $clone($toNativeArray($kindInt32, [3008, 0, 0]), d)), CaseRange), $clone(new CaseRange.ptr(5024, 5103, $clone($toNativeArray($kindInt32, [0, 38864, 0]), d)), CaseRange), $clone(new CaseRange.ptr(5104, 5109, $clone($toNativeArray($kindInt32, [0, 8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(5112, 5117, $clone($toNativeArray($kindInt32, [-8, 0, -8]), d)), CaseRange), $clone(new CaseRange.ptr(7296, 7296, $clone($toNativeArray($kindInt32, [-6254, 0, -6254]), d)), CaseRange), $clone(new CaseRange.ptr(7297, 7297, $clone($toNativeArray($kindInt32, [-6253, 0, -6253]), d)), CaseRange), $clone(new CaseRange.ptr(7298, 7298, $clone($toNativeArray($kindInt32, [-6244, 0, -6244]), d)), CaseRange), $clone(new CaseRange.ptr(7299, 7300, $clone($toNativeArray($kindInt32, [-6242, 0, -6242]), d)), CaseRange), $clone(new CaseRange.ptr(7301, 7301, $clone($toNativeArray($kindInt32, [-6243, 0, -6243]), d)), CaseRange), $clone(new CaseRange.ptr(7302, 7302, $clone($toNativeArray($kindInt32, [-6236, 0, -6236]), d)), CaseRange), $clone(new CaseRange.ptr(7303, 7303, $clone($toNativeArray($kindInt32, [-6181, 0, -6181]), d)), CaseRange), $clone(new CaseRange.ptr(7304, 7304, $clone($toNativeArray($kindInt32, [35266, 0, 35266]), d)), CaseRange), $clone(new CaseRange.ptr(7312, 7354, $clone($toNativeArray($kindInt32, [0, -3008, 0]), d)), CaseRange), $clone(new CaseRange.ptr(7357, 7359, $clone($toNativeArray($kindInt32, [0, -3008, 0]), d)), CaseRange), $clone(new CaseRange.ptr(7545, 7545, $clone($toNativeArray($kindInt32, [35332, 0, 35332]), d)), CaseRange), $clone(new CaseRange.ptr(7549, 7549, $clone($toNativeArray($kindInt32, [3814, 0, 3814]), d)), CaseRange), $clone(new CaseRange.ptr(7566, 7566, $clone($toNativeArray($kindInt32, [35384, 0, 35384]), d)), CaseRange), $clone(new CaseRange.ptr(7680, 7829, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(7835, 7835, $clone($toNativeArray($kindInt32, [-59, 0, -59]), d)), CaseRange), $clone(new CaseRange.ptr(7838, 7838, $clone($toNativeArray($kindInt32, [0, -7615, 0]), d)), CaseRange), $clone(new CaseRange.ptr(7840, 7935, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(7936, 7943, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(7944, 7951, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(7952, 7957, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(7960, 7965, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(7968, 7975, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(7976, 7983, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(7984, 7991, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(7992, 7999, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8000, 8005, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8008, 8013, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8017, 8017, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8019, 8019, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8021, 8021, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8023, 8023, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8025, 8025, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8027, 8027, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8029, 8029, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8031, 8031, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8032, 8039, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8040, 8047, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8048, 8049, $clone($toNativeArray($kindInt32, [74, 0, 74]), d)), CaseRange), $clone(new CaseRange.ptr(8050, 8053, $clone($toNativeArray($kindInt32, [86, 0, 86]), d)), CaseRange), $clone(new CaseRange.ptr(8054, 8055, $clone($toNativeArray($kindInt32, [100, 0, 100]), d)), CaseRange), $clone(new CaseRange.ptr(8056, 8057, $clone($toNativeArray($kindInt32, [128, 0, 128]), d)), CaseRange), $clone(new CaseRange.ptr(8058, 8059, $clone($toNativeArray($kindInt32, [112, 0, 112]), d)), CaseRange), $clone(new CaseRange.ptr(8060, 8061, $clone($toNativeArray($kindInt32, [126, 0, 126]), d)), CaseRange), $clone(new CaseRange.ptr(8064, 8071, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8072, 8079, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8080, 8087, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8088, 8095, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8096, 8103, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8104, 8111, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8112, 8113, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8115, 8115, $clone($toNativeArray($kindInt32, [9, 0, 9]), d)), CaseRange), $clone(new CaseRange.ptr(8120, 8121, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8122, 8123, $clone($toNativeArray($kindInt32, [0, -74, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8124, 8124, $clone($toNativeArray($kindInt32, [0, -9, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8126, 8126, $clone($toNativeArray($kindInt32, [-7205, 0, -7205]), d)), CaseRange), $clone(new CaseRange.ptr(8131, 8131, $clone($toNativeArray($kindInt32, [9, 0, 9]), d)), CaseRange), $clone(new CaseRange.ptr(8136, 8139, $clone($toNativeArray($kindInt32, [0, -86, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8140, 8140, $clone($toNativeArray($kindInt32, [0, -9, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8144, 8145, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8152, 8153, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8154, 8155, $clone($toNativeArray($kindInt32, [0, -100, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8160, 8161, $clone($toNativeArray($kindInt32, [8, 0, 8]), d)), CaseRange), $clone(new CaseRange.ptr(8165, 8165, $clone($toNativeArray($kindInt32, [7, 0, 7]), d)), CaseRange), $clone(new CaseRange.ptr(8168, 8169, $clone($toNativeArray($kindInt32, [0, -8, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8170, 8171, $clone($toNativeArray($kindInt32, [0, -112, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8172, 8172, $clone($toNativeArray($kindInt32, [0, -7, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8179, 8179, $clone($toNativeArray($kindInt32, [9, 0, 9]), d)), CaseRange), $clone(new CaseRange.ptr(8184, 8185, $clone($toNativeArray($kindInt32, [0, -128, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8186, 8187, $clone($toNativeArray($kindInt32, [0, -126, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8188, 8188, $clone($toNativeArray($kindInt32, [0, -9, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8486, 8486, $clone($toNativeArray($kindInt32, [0, -7517, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8490, 8490, $clone($toNativeArray($kindInt32, [0, -8383, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8491, 8491, $clone($toNativeArray($kindInt32, [0, -8262, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8498, 8498, $clone($toNativeArray($kindInt32, [0, 28, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8526, 8526, $clone($toNativeArray($kindInt32, [-28, 0, -28]), d)), CaseRange), $clone(new CaseRange.ptr(8544, 8559, $clone($toNativeArray($kindInt32, [0, 16, 0]), d)), CaseRange), $clone(new CaseRange.ptr(8560, 8575, $clone($toNativeArray($kindInt32, [-16, 0, -16]), d)), CaseRange), $clone(new CaseRange.ptr(8579, 8580, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(9398, 9423, $clone($toNativeArray($kindInt32, [0, 26, 0]), d)), CaseRange), $clone(new CaseRange.ptr(9424, 9449, $clone($toNativeArray($kindInt32, [-26, 0, -26]), d)), CaseRange), $clone(new CaseRange.ptr(11264, 11310, $clone($toNativeArray($kindInt32, [0, 48, 0]), d)), CaseRange), $clone(new CaseRange.ptr(11312, 11358, $clone($toNativeArray($kindInt32, [-48, 0, -48]), d)), CaseRange), $clone(new CaseRange.ptr(11360, 11361, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(11362, 11362, $clone($toNativeArray($kindInt32, [0, -10743, 0]), d)), CaseRange), $clone(new CaseRange.ptr(11363, 11363, $clone($toNativeArray($kindInt32, [0, -3814, 0]), d)), CaseRange), $clone(new CaseRange.ptr(11364, 11364, $clone($toNativeArray($kindInt32, [0, -10727, 0]), d)), CaseRange), $clone(new CaseRange.ptr(11365, 11365, $clone($toNativeArray($kindInt32, [-10795, 0, -10795]), d)), CaseRange), $clone(new CaseRange.ptr(11366, 11366, $clone($toNativeArray($kindInt32, [-10792, 0, -10792]), d)), CaseRange), $clone(new CaseRange.ptr(11367, 11372, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(11373, 11373, $clone($toNativeArray($kindInt32, [0, -10780, 0]), d)), CaseRange), $clone(new CaseRange.ptr(11374, 11374, $clone($toNativeArray($kindInt32, [0, -10749, 0]), d)), CaseRange), $clone(new CaseRange.ptr(11375, 11375, $clone($toNativeArray($kindInt32, [0, -10783, 0]), d)), CaseRange), $clone(new CaseRange.ptr(11376, 11376, $clone($toNativeArray($kindInt32, [0, -10782, 0]), d)), CaseRange), $clone(new CaseRange.ptr(11378, 11379, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(11381, 11382, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(11390, 11391, $clone($toNativeArray($kindInt32, [0, -10815, 0]), d)), CaseRange), $clone(new CaseRange.ptr(11392, 11491, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(11499, 11502, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(11506, 11507, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(11520, 11557, $clone($toNativeArray($kindInt32, [-7264, 0, -7264]), d)), CaseRange), $clone(new CaseRange.ptr(11559, 11559, $clone($toNativeArray($kindInt32, [-7264, 0, -7264]), d)), CaseRange), $clone(new CaseRange.ptr(11565, 11565, $clone($toNativeArray($kindInt32, [-7264, 0, -7264]), d)), CaseRange), $clone(new CaseRange.ptr(42560, 42605, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42624, 42651, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42786, 42799, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42802, 42863, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42873, 42876, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42877, 42877, $clone($toNativeArray($kindInt32, [0, -35332, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42878, 42887, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42891, 42892, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42893, 42893, $clone($toNativeArray($kindInt32, [0, -42280, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42896, 42899, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42900, 42900, $clone($toNativeArray($kindInt32, [48, 0, 48]), d)), CaseRange), $clone(new CaseRange.ptr(42902, 42921, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42922, 42922, $clone($toNativeArray($kindInt32, [0, -42308, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42923, 42923, $clone($toNativeArray($kindInt32, [0, -42319, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42924, 42924, $clone($toNativeArray($kindInt32, [0, -42315, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42925, 42925, $clone($toNativeArray($kindInt32, [0, -42305, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42926, 42926, $clone($toNativeArray($kindInt32, [0, -42308, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42928, 42928, $clone($toNativeArray($kindInt32, [0, -42258, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42929, 42929, $clone($toNativeArray($kindInt32, [0, -42282, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42930, 42930, $clone($toNativeArray($kindInt32, [0, -42261, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42931, 42931, $clone($toNativeArray($kindInt32, [0, 928, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42932, 42943, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42946, 42947, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42948, 42948, $clone($toNativeArray($kindInt32, [0, -48, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42949, 42949, $clone($toNativeArray($kindInt32, [0, -42307, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42950, 42950, $clone($toNativeArray($kindInt32, [0, -35384, 0]), d)), CaseRange), $clone(new CaseRange.ptr(42951, 42954, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(42997, 42998, $clone($toNativeArray($kindInt32, [1114112, 1114112, 1114112]), d)), CaseRange), $clone(new CaseRange.ptr(43859, 43859, $clone($toNativeArray($kindInt32, [-928, 0, -928]), d)), CaseRange), $clone(new CaseRange.ptr(43888, 43967, $clone($toNativeArray($kindInt32, [-38864, 0, -38864]), d)), CaseRange), $clone(new CaseRange.ptr(65313, 65338, $clone($toNativeArray($kindInt32, [0, 32, 0]), d)), CaseRange), $clone(new CaseRange.ptr(65345, 65370, $clone($toNativeArray($kindInt32, [-32, 0, -32]), d)), CaseRange), $clone(new CaseRange.ptr(66560, 66599, $clone($toNativeArray($kindInt32, [0, 40, 0]), d)), CaseRange), $clone(new CaseRange.ptr(66600, 66639, $clone($toNativeArray($kindInt32, [-40, 0, -40]), d)), CaseRange), $clone(new CaseRange.ptr(66736, 66771, $clone($toNativeArray($kindInt32, [0, 40, 0]), d)), CaseRange), $clone(new CaseRange.ptr(66776, 66811, $clone($toNativeArray($kindInt32, [-40, 0, -40]), d)), CaseRange), $clone(new CaseRange.ptr(68736, 68786, $clone($toNativeArray($kindInt32, [0, 64, 0]), d)), CaseRange), $clone(new CaseRange.ptr(68800, 68850, $clone($toNativeArray($kindInt32, [-64, 0, -64]), d)), CaseRange), $clone(new CaseRange.ptr(71840, 71871, $clone($toNativeArray($kindInt32, [0, 32, 0]), d)), CaseRange), $clone(new CaseRange.ptr(71872, 71903, $clone($toNativeArray($kindInt32, [-32, 0, -32]), d)), CaseRange), $clone(new CaseRange.ptr(93760, 93791, $clone($toNativeArray($kindInt32, [0, 32, 0]), d)), CaseRange), $clone(new CaseRange.ptr(93792, 93823, $clone($toNativeArray($kindInt32, [-32, 0, -32]), d)), CaseRange), $clone(new CaseRange.ptr(125184, 125217, $clone($toNativeArray($kindInt32, [0, 34, 0]), d)), CaseRange), $clone(new CaseRange.ptr(125218, 125251, $clone($toNativeArray($kindInt32, [-34, 0, -34]), d)), CaseRange)]); + $pkg.CaseRanges = _CaseRanges; + properties = $toNativeArray($kindUint8, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 144, 130, 130, 130, 136, 130, 130, 130, 130, 130, 130, 136, 130, 130, 130, 130, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 130, 130, 136, 136, 136, 130, 130, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 130, 130, 130, 136, 130, 136, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 130, 136, 130, 136, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 130, 136, 136, 136, 136, 136, 130, 136, 136, 224, 130, 136, 0, 136, 136, 136, 136, 132, 132, 136, 192, 130, 130, 136, 132, 224, 130, 132, 132, 132, 130, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 136, 160, 160, 160, 160, 160, 160, 160, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 136, 192, 192, 192, 192, 192, 192, 192, 192]); + $pkg.GraphicRanges = new sliceType$4([$pkg.L, $pkg.M, $pkg.N, $pkg.P, $pkg.S, $pkg.Zs]); + $pkg.PrintRanges = new sliceType$4([$pkg.L, $pkg.M, $pkg.N, $pkg.P, $pkg.S]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["reflect"] = (function() { + var $pkg = {}, $init, errors, js, abi, bytealg, goarch, itoa, math, runtime, strconv, sync, unicode, utf8, Value, flag, ValueError, emptyInterface, MapIter, Type, Kind, tflag, rtype, method, ChanDir, arrayType, chanType, imethod, interfaceType, mapType, ptrType, sliceType, structField, structType, Method, nameOff, typeOff, textOff, StructField, StructTag, fieldScan, uncommonType, funcType, name, nameData, hiter, arrayType$1, sliceType$1, sliceType$2, ptrType$2, sliceType$3, sliceType$4, sliceType$5, sliceType$6, ptrType$3, funcType$1, sliceType$8, arrayType$2, sliceType$9, ptrType$5, sliceType$10, ptrType$8, sliceType$12, ptrType$9, sliceType$13, ptrType$10, ptrType$11, sliceType$14, ptrType$12, ptrType$13, sliceType$16, sliceType$17, ptrType$17, structType$3, sliceType$18, ptrType$18, ptrType$19, sliceType$19, arrayType$7, sliceType$20, funcType$3, ptrType$22, arrayType$8, ptrType$23, funcType$4, funcType$5, ptrType$25, ptrType$26, zeroVal, nameOffList, typeOffList, bytesType, uint8Type, stringType, kindNames, initialized, nameMap, callHelper, jsObjectPtr, selectHelper, valueMethodName, copyVal, overflowFloat32, typesMustMatch, Append, MakeMap, MakeMapWithSize, Indirect, convertOp, makeFloat, makeFloat32, makeComplex, makeString, makeBytes, makeRunes, cvtInt, cvtUint, cvtFloatInt, cvtFloatUint, cvtIntFloat, cvtUintFloat, cvtFloat, cvtComplex, cvtIntString, cvtUintString, cvtBytesString, cvtStringBytes, cvtRunesString, cvtStringRunes, cvtT2I, cvtI2I, rtypeOf, PtrTo, PointerTo, implements$1, specialChannelAssignability, directlyAssignable, haveIdenticalType, haveIdenticalUnderlyingType, toType, ifaceIndir, init, New, jsType, reflectType, setKindType, newName, newMethodName, resolveReflectName, newTypeOff, internalStr, isWrapped, copyStruct, makeValue, MakeSlice, TypeOf, ValueOf, FuncOf, SliceOf, Zero, unsafe_New, makeInt, typedmemmove, makemap, keyFor, mapaccess, mapassign, mapdelete, mapaccess_faststr, mapassign_faststr, mapdelete_faststr, mapiterinit, mapiterkey, mapiterelem, mapiternext, maplen, cvtDirect, cvtSliceArrayPtr, cvtSliceArray, Copy, methodReceiver, valueInterface, ifaceE2I, makeMethodValue, wrapJsObject, unwrapJsObject, getJsTag, chanrecv, chansend, DeepEqual, deepValueEqualJs; + errors = $packages["errors"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + abi = $packages["internal/abi"]; + bytealg = $packages["internal/bytealg"]; + goarch = $packages["internal/goarch"]; + itoa = $packages["internal/itoa"]; + math = $packages["math"]; + runtime = $packages["runtime"]; + strconv = $packages["strconv"]; + sync = $packages["sync"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + Value = $newType(0, $kindStruct, "reflect.Value", true, "reflect", true, function(typ_, ptr_, flag_) { + this.$val = this; + if (arguments.length === 0) { + this.typ = ptrType$2.nil; + this.ptr = 0; + this.flag = 0; + return; + } + this.typ = typ_; + this.ptr = ptr_; + this.flag = flag_; + }); + flag = $newType(4, $kindUintptr, "reflect.flag", true, "reflect", false, null); + ValueError = $newType(0, $kindStruct, "reflect.ValueError", true, "reflect", true, function(Method_, Kind_) { + this.$val = this; + if (arguments.length === 0) { + this.Method = ""; + this.Kind = 0; + return; + } + this.Method = Method_; + this.Kind = Kind_; + }); + emptyInterface = $newType(0, $kindStruct, "reflect.emptyInterface", true, "reflect", false, function(typ_, word_) { + this.$val = this; + if (arguments.length === 0) { + this.typ = ptrType$2.nil; + this.word = 0; + return; + } + this.typ = typ_; + this.word = word_; + }); + MapIter = $newType(0, $kindStruct, "reflect.MapIter", true, "reflect", true, function(m_, hiter_) { + this.$val = this; + if (arguments.length === 0) { + this.m = new Value.ptr(ptrType$2.nil, 0, 0); + this.hiter = new hiter.ptr($ifaceNil, null, null, 0, null); + return; + } + this.m = m_; + this.hiter = hiter_; + }); + Type = $newType(8, $kindInterface, "reflect.Type", true, "reflect", true, null); + Kind = $newType(4, $kindUint, "reflect.Kind", true, "reflect", true, null); + tflag = $newType(1, $kindUint8, "reflect.tflag", true, "reflect", false, null); + rtype = $newType(0, $kindStruct, "reflect.rtype", true, "reflect", false, function(size_, ptrdata_, hash_, tflag_, align_, fieldAlign_, kind_, equal_, gcdata_, str_, ptrToThis_) { + this.$val = this; + if (arguments.length === 0) { + this.size = 0; + this.ptrdata = 0; + this.hash = 0; + this.tflag = 0; + this.align = 0; + this.fieldAlign = 0; + this.kind = 0; + this.equal = $throwNilPointerError; + this.gcdata = ptrType$13.nil; + this.str = 0; + this.ptrToThis = 0; + return; + } + this.size = size_; + this.ptrdata = ptrdata_; + this.hash = hash_; + this.tflag = tflag_; + this.align = align_; + this.fieldAlign = fieldAlign_; + this.kind = kind_; + this.equal = equal_; + this.gcdata = gcdata_; + this.str = str_; + this.ptrToThis = ptrToThis_; + }); + method = $newType(0, $kindStruct, "reflect.method", true, "reflect", false, function(name_, mtyp_, ifn_, tfn_) { + this.$val = this; + if (arguments.length === 0) { + this.name = 0; + this.mtyp = 0; + this.ifn = 0; + this.tfn = 0; + return; + } + this.name = name_; + this.mtyp = mtyp_; + this.ifn = ifn_; + this.tfn = tfn_; + }); + ChanDir = $newType(4, $kindInt, "reflect.ChanDir", true, "reflect", true, null); + arrayType = $newType(0, $kindStruct, "reflect.arrayType", true, "reflect", false, function(rtype_, elem_, slice_, len_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0); + this.elem = ptrType$2.nil; + this.slice = ptrType$2.nil; + this.len = 0; + return; + } + this.rtype = rtype_; + this.elem = elem_; + this.slice = slice_; + this.len = len_; + }); + chanType = $newType(0, $kindStruct, "reflect.chanType", true, "reflect", false, function(rtype_, elem_, dir_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0); + this.elem = ptrType$2.nil; + this.dir = 0; + return; + } + this.rtype = rtype_; + this.elem = elem_; + this.dir = dir_; + }); + imethod = $newType(0, $kindStruct, "reflect.imethod", true, "reflect", false, function(name_, typ_) { + this.$val = this; + if (arguments.length === 0) { + this.name = 0; + this.typ = 0; + return; + } + this.name = name_; + this.typ = typ_; + }); + interfaceType = $newType(0, $kindStruct, "reflect.interfaceType", true, "reflect", false, function(rtype_, pkgPath_, methods_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0); + this.pkgPath = new name.ptr(ptrType$13.nil); + this.methods = sliceType$16.nil; + return; + } + this.rtype = rtype_; + this.pkgPath = pkgPath_; + this.methods = methods_; + }); + mapType = $newType(0, $kindStruct, "reflect.mapType", true, "reflect", false, function(rtype_, key_, elem_, bucket_, hasher_, keysize_, valuesize_, bucketsize_, flags_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0); + this.key = ptrType$2.nil; + this.elem = ptrType$2.nil; + this.bucket = ptrType$2.nil; + this.hasher = $throwNilPointerError; + this.keysize = 0; + this.valuesize = 0; + this.bucketsize = 0; + this.flags = 0; + return; + } + this.rtype = rtype_; + this.key = key_; + this.elem = elem_; + this.bucket = bucket_; + this.hasher = hasher_; + this.keysize = keysize_; + this.valuesize = valuesize_; + this.bucketsize = bucketsize_; + this.flags = flags_; + }); + ptrType = $newType(0, $kindStruct, "reflect.ptrType", true, "reflect", false, function(rtype_, elem_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0); + this.elem = ptrType$2.nil; + return; + } + this.rtype = rtype_; + this.elem = elem_; + }); + sliceType = $newType(0, $kindStruct, "reflect.sliceType", true, "reflect", false, function(rtype_, elem_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0); + this.elem = ptrType$2.nil; + return; + } + this.rtype = rtype_; + this.elem = elem_; + }); + structField = $newType(0, $kindStruct, "reflect.structField", true, "reflect", false, function(name_, typ_, offset_) { + this.$val = this; + if (arguments.length === 0) { + this.name = new name.ptr(ptrType$13.nil); + this.typ = ptrType$2.nil; + this.offset = 0; + return; + } + this.name = name_; + this.typ = typ_; + this.offset = offset_; + }); + structType = $newType(0, $kindStruct, "reflect.structType", true, "reflect", false, function(rtype_, pkgPath_, fields_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0); + this.pkgPath = new name.ptr(ptrType$13.nil); + this.fields = sliceType$17.nil; + return; + } + this.rtype = rtype_; + this.pkgPath = pkgPath_; + this.fields = fields_; + }); + Method = $newType(0, $kindStruct, "reflect.Method", true, "reflect", true, function(Name_, PkgPath_, Type_, Func_, Index_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.PkgPath = ""; + this.Type = $ifaceNil; + this.Func = new Value.ptr(ptrType$2.nil, 0, 0); + this.Index = 0; + return; + } + this.Name = Name_; + this.PkgPath = PkgPath_; + this.Type = Type_; + this.Func = Func_; + this.Index = Index_; + }); + nameOff = $newType(4, $kindInt32, "reflect.nameOff", true, "reflect", false, null); + typeOff = $newType(4, $kindInt32, "reflect.typeOff", true, "reflect", false, null); + textOff = $newType(4, $kindInt32, "reflect.textOff", true, "reflect", false, null); + StructField = $newType(0, $kindStruct, "reflect.StructField", true, "reflect", true, function(Name_, PkgPath_, Type_, Tag_, Offset_, Index_, Anonymous_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.PkgPath = ""; + this.Type = $ifaceNil; + this.Tag = ""; + this.Offset = 0; + this.Index = sliceType$8.nil; + this.Anonymous = false; + return; + } + this.Name = Name_; + this.PkgPath = PkgPath_; + this.Type = Type_; + this.Tag = Tag_; + this.Offset = Offset_; + this.Index = Index_; + this.Anonymous = Anonymous_; + }); + StructTag = $newType(8, $kindString, "reflect.StructTag", true, "reflect", true, null); + fieldScan = $newType(0, $kindStruct, "reflect.fieldScan", true, "reflect", false, function(typ_, index_) { + this.$val = this; + if (arguments.length === 0) { + this.typ = ptrType$12.nil; + this.index = sliceType$8.nil; + return; + } + this.typ = typ_; + this.index = index_; + }); + uncommonType = $newType(0, $kindStruct, "reflect.uncommonType", true, "reflect", false, function(pkgPath_, mcount_, xcount_, moff_, _methods_) { + this.$val = this; + if (arguments.length === 0) { + this.pkgPath = 0; + this.mcount = 0; + this.xcount = 0; + this.moff = 0; + this._methods = sliceType$13.nil; + return; + } + this.pkgPath = pkgPath_; + this.mcount = mcount_; + this.xcount = xcount_; + this.moff = moff_; + this._methods = _methods_; + }); + funcType = $newType(0, $kindStruct, "reflect.funcType", true, "reflect", false, function(rtype_, inCount_, outCount_, _in_, _out_) { + this.$val = this; + if (arguments.length === 0) { + this.rtype = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0); + this.inCount = 0; + this.outCount = 0; + this._in = sliceType$3.nil; + this._out = sliceType$3.nil; + return; + } + this.rtype = rtype_; + this.inCount = inCount_; + this.outCount = outCount_; + this._in = _in_; + this._out = _out_; + }); + name = $newType(0, $kindStruct, "reflect.name", true, "reflect", false, function(bytes_) { + this.$val = this; + if (arguments.length === 0) { + this.bytes = ptrType$13.nil; + return; + } + this.bytes = bytes_; + }); + nameData = $newType(0, $kindStruct, "reflect.nameData", true, "reflect", false, function(name_, tag_, exported_, embedded_, pkgPath_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.tag = ""; + this.exported = false; + this.embedded = false; + this.pkgPath = ""; + return; + } + this.name = name_; + this.tag = tag_; + this.exported = exported_; + this.embedded = embedded_; + this.pkgPath = pkgPath_; + }); + hiter = $newType(0, $kindStruct, "reflect.hiter", true, "reflect", false, function(t_, m_, keys_, i_, last_) { + this.$val = this; + if (arguments.length === 0) { + this.t = $ifaceNil; + this.m = null; + this.keys = null; + this.i = 0; + this.last = null; + return; + } + this.t = t_; + this.m = m_; + this.keys = keys_; + this.i = i_; + this.last = last_; + }); + $pkg.Value = Value; + $pkg.flag = flag; + $pkg.ValueError = ValueError; + $pkg.emptyInterface = emptyInterface; + $pkg.MapIter = MapIter; + $pkg.Type = Type; + $pkg.Kind = Kind; + $pkg.tflag = tflag; + $pkg.rtype = rtype; + $pkg.method = method; + $pkg.ChanDir = ChanDir; + $pkg.arrayType = arrayType; + $pkg.chanType = chanType; + $pkg.imethod = imethod; + $pkg.interfaceType = interfaceType; + $pkg.mapType = mapType; + $pkg.ptrType = ptrType; + $pkg.sliceType = sliceType; + $pkg.structField = structField; + $pkg.structType = structType; + $pkg.Method = Method; + $pkg.nameOff = nameOff; + $pkg.typeOff = typeOff; + $pkg.textOff = textOff; + $pkg.StructField = StructField; + $pkg.StructTag = StructTag; + $pkg.fieldScan = fieldScan; + $pkg.uncommonType = uncommonType; + $pkg.funcType = funcType; + $pkg.name = name; + $pkg.nameData = nameData; + $pkg.hiter = hiter; + $pkg.$finishSetup = function() { + arrayType$1 = $arrayType($Uint8, 1024); + sliceType$1 = $sliceType(Type); + sliceType$2 = $sliceType(name); + ptrType$2 = $ptrType(rtype); + sliceType$3 = $sliceType(ptrType$2); + sliceType$4 = $sliceType($Uint8); + sliceType$5 = $sliceType($String); + sliceType$6 = $sliceType($emptyInterface); + ptrType$3 = $ptrType(js.Object); + funcType$1 = $funcType([sliceType$6], [ptrType$3], true); + sliceType$8 = $sliceType($Int); + arrayType$2 = $arrayType($Uintptr, 5); + sliceType$9 = $sliceType($Uintptr); + ptrType$5 = $ptrType(runtime.Func); + sliceType$10 = $sliceType(Value); + ptrType$8 = $ptrType($UnsafePointer); + sliceType$12 = $sliceType($Int32); + ptrType$9 = $ptrType(uncommonType); + sliceType$13 = $sliceType(method); + ptrType$10 = $ptrType(interfaceType); + ptrType$11 = $ptrType(imethod); + sliceType$14 = $sliceType(fieldScan); + ptrType$12 = $ptrType(structType); + ptrType$13 = $ptrType($Uint8); + sliceType$16 = $sliceType(imethod); + sliceType$17 = $sliceType(structField); + ptrType$17 = $ptrType(nameData); + structType$3 = $structType("reflect", [{prop: "str", name: "str", embedded: false, exported: false, typ: $String, tag: ""}]); + sliceType$18 = $sliceType(ptrType$3); + ptrType$18 = $ptrType($String); + ptrType$19 = $ptrType(funcType); + sliceType$19 = $sliceType(sliceType$18); + arrayType$7 = $arrayType($UnsafePointer, 2); + sliceType$20 = $sliceType(arrayType$7); + funcType$3 = $funcType([$String], [$Bool], false); + ptrType$22 = $ptrType(MapIter); + arrayType$8 = $arrayType($Uintptr, 2); + ptrType$23 = $ptrType(ValueError); + funcType$4 = $funcType([$UnsafePointer, $UnsafePointer], [$Bool], false); + funcType$5 = $funcType([$UnsafePointer, $Uintptr], [$Uintptr], false); + ptrType$25 = $ptrType(structField); + ptrType$26 = $ptrType(hiter); + flag.prototype.kind = function kind() { + var f; + f = this.$val; + return ((((f & 31) >>> 0) >>> 0)); + }; + $ptrType(flag).prototype.kind = function(...$args) { return new flag(this.$get()).kind(...$args); }; + flag.prototype.ro = function ro() { + var f; + f = this.$val; + if (!((((f & 96) >>> 0) === 0))) { + return 32; + } + return 0; + }; + $ptrType(flag).prototype.ro = function(...$args) { return new flag(this.$get()).ro(...$args); }; + $ptrType(Value).prototype.pointer = function pointer() { + var v; + v = this; + if (!((v.typ.size === 4)) || !v.typ.pointers()) { + $panic(new $String("can't call pointer on a non-pointer Value")); + } + if (!((((v.flag & 128) >>> 0) === 0))) { + return (v.ptr).$get(); + } + return v.ptr; + }; + Value.prototype.pointer = function(...$args) { return this.$val.pointer(...$args); }; + $ptrType(ValueError).prototype.Error = function Error() { + var e; + e = this; + if (e.Kind === 0) { + return "reflect: call of " + e.Method + " on zero Value"; + } + return "reflect: call of " + e.Method + " on " + new Kind(e.Kind).String() + " Value"; + }; + valueMethodName = function valueMethodName$1() { + var _tuple, frame, frames, methodName, more, n, name$1, pc; + pc = arrayType$2.zero(); + n = runtime.Callers(1, new sliceType$9(pc)); + frames = runtime.CallersFrames($subslice(new sliceType$9(pc), 0, n)); + frame = new runtime.Frame.ptr(0, ptrType$5.nil, "", "", 0, 0); + more = true; + while (true) { + if (!(more)) { break; } + _tuple = frames.Next(); + runtime.Frame.copy(frame, _tuple[0]); + more = _tuple[1]; + name$1 = frame.Function; + if (name$1.length > 14 && $substring(name$1, 0, 14) === "reflect.Value.") { + methodName = $substring(name$1, 14); + if (methodName.length > 0 && 65 <= methodName.charCodeAt(0) && methodName.charCodeAt(0) <= 90) { + return name$1; + } + } + } + return "unknown method"; + }; + flag.prototype.mustBe = function mustBe(expected) { + var expected, f; + f = this.$val; + if (!((((((f & 31) >>> 0) >>> 0)) === expected))) { + $panic(new ValueError.ptr(valueMethodName(), new flag(f).kind())); + } + }; + $ptrType(flag).prototype.mustBe = function(...$args) { return new flag(this.$get()).mustBe(...$args); }; + flag.prototype.mustBeExported = function mustBeExported() { + var f; + f = this.$val; + if ((f === 0) || !((((f & 96) >>> 0) === 0))) { + new flag(f).mustBeExportedSlow(); + } + }; + $ptrType(flag).prototype.mustBeExported = function(...$args) { return new flag(this.$get()).mustBeExported(...$args); }; + flag.prototype.mustBeExportedSlow = function mustBeExportedSlow() { + var f; + f = this.$val; + if (f === 0) { + $panic(new ValueError.ptr(valueMethodName(), 0)); + } + if (!((((f & 96) >>> 0) === 0))) { + $panic(new $String("reflect: " + valueMethodName() + " using value obtained using unexported field")); + } + }; + $ptrType(flag).prototype.mustBeExportedSlow = function(...$args) { return new flag(this.$get()).mustBeExportedSlow(...$args); }; + flag.prototype.mustBeAssignable = function mustBeAssignable() { + var f; + f = this.$val; + if (!((((f & 96) >>> 0) === 0)) || (((f & 256) >>> 0) === 0)) { + new flag(f).mustBeAssignableSlow(); + } + }; + $ptrType(flag).prototype.mustBeAssignable = function(...$args) { return new flag(this.$get()).mustBeAssignable(...$args); }; + flag.prototype.mustBeAssignableSlow = function mustBeAssignableSlow() { + var f; + f = this.$val; + if (f === 0) { + $panic(new ValueError.ptr(valueMethodName(), 0)); + } + if (!((((f & 96) >>> 0) === 0))) { + $panic(new $String("reflect: " + valueMethodName() + " using value obtained using unexported field")); + } + if (((f & 256) >>> 0) === 0) { + $panic(new $String("reflect: " + valueMethodName() + " using unaddressable value")); + } + }; + $ptrType(flag).prototype.mustBeAssignableSlow = function(...$args) { return new flag(this.$get()).mustBeAssignableSlow(...$args); }; + $ptrType(Value).prototype.Addr = function Addr() { + var fl, v; + v = this; + if (((v.flag & 256) >>> 0) === 0) { + $panic(new $String("reflect.Value.Addr of unaddressable value")); + } + fl = (v.flag & 96) >>> 0; + return new Value.ptr(v.typ.ptrTo(), v.ptr, (fl | 22) >>> 0); + }; + Value.prototype.Addr = function(...$args) { return this.$val.Addr(...$args); }; + $ptrType(Value).prototype.Bool = function Bool() { + var v; + v = this; + if (!((new flag(v.flag).kind() === 1))) { + $clone(v, Value).panicNotBool(); + } + return (v.ptr).$get(); + }; + Value.prototype.Bool = function(...$args) { return this.$val.Bool(...$args); }; + $ptrType(Value).prototype.panicNotBool = function panicNotBool() { + var v; + v = this; + new flag(v.flag).mustBe(1); + }; + Value.prototype.panicNotBool = function(...$args) { return this.$val.panicNotBool(...$args); }; + $ptrType(Value).prototype.Bytes = function Bytes() { + var {$24r, _r, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + if (v.typ === bytesType) { + $s = -1; return (v.ptr).$get(); + } + _r = $clone(v, Value).bytesSlow(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Bytes, $c: true, $r, $24r, _r, v, $s};return $f; + }; + Value.prototype.Bytes = function(...$args) { return this.$val.Bytes(...$args); }; + $ptrType(Value).prototype.runes = function runes() { + var {_r, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(23); + _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 5))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 5))) { */ case 1: + $panic(new $String("reflect.Value.Bytes of non-rune slice")); + /* } */ case 2: + $s = -1; return (v.ptr).$get(); + /* */ } return; } var $f = {$blk: runes, $c: true, $r, _r, v, $s};return $f; + }; + Value.prototype.runes = function(...$args) { return this.$val.runes(...$args); }; + $ptrType(Value).prototype.CanAddr = function CanAddr() { + var v; + v = this; + return !((((v.flag & 256) >>> 0) === 0)); + }; + Value.prototype.CanAddr = function(...$args) { return this.$val.CanAddr(...$args); }; + $ptrType(Value).prototype.CanSet = function CanSet() { + var v; + v = this; + return ((v.flag & 352) >>> 0) === 256; + }; + Value.prototype.CanSet = function(...$args) { return this.$val.CanSet(...$args); }; + $ptrType(Value).prototype.Call = function Call(in$1) { + var {$24r, _r, in$1, v, $s, $r, $c} = $restore(this, {in$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(19); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).call("Call", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Call, $c: true, $r, $24r, _r, in$1, v, $s};return $f; + }; + Value.prototype.Call = function(...$args) { return this.$val.Call(...$args); }; + $ptrType(Value).prototype.CallSlice = function CallSlice(in$1) { + var {$24r, _r, in$1, v, $s, $r, $c} = $restore(this, {in$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(19); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).call("CallSlice", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: CallSlice, $c: true, $r, $24r, _r, in$1, v, $s};return $f; + }; + Value.prototype.CallSlice = function(...$args) { return this.$val.CallSlice(...$args); }; + $ptrType(Value).prototype.CanComplex = function CanComplex() { + var _1, v; + v = this; + _1 = new flag(v.flag).kind(); + if ((_1 === (15)) || (_1 === (16))) { + return true; + } else { + return false; + } + }; + Value.prototype.CanComplex = function(...$args) { return this.$val.CanComplex(...$args); }; + $ptrType(Value).prototype.Complex = function Complex() { + var _1, k, v, x; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (15)) { + return ((x = (v.ptr).$get(), new $Complex128(x.$real, x.$imag))); + } else if (_1 === (16)) { + return (v.ptr).$get(); + } + $panic(new ValueError.ptr("reflect.Value.Complex", new flag(v.flag).kind())); + }; + Value.prototype.Complex = function(...$args) { return this.$val.Complex(...$args); }; + $ptrType(Value).prototype.FieldByIndex = function FieldByIndex(index) { + var {$24r, _i, _r, _r$1, _r$2, _r$3, _ref, _v, i, index, v, x, $s, $r, $c} = $restore(this, {index}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + /* */ if (index.$length === 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (index.$length === 1) { */ case 1: + _r = $clone(v, Value).Field((0 >= index.$length ? ($throwRuntimeError("index out of range"), undefined) : index.$array[index.$offset + 0])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + new flag(v.flag).mustBe(25); + _ref = index; + _i = 0; + /* while (true) { */ case 5: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (i > 0) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i > 0) { */ case 7: + if (!($clone(v, Value).Kind() === 22)) { _v = false; $s = 11; continue s; } + _r$1 = v.typ.Elem().Kind(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1 === 25; case 11: + /* */ if (_v) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_v) { */ case 9: + if ($clone(v, Value).IsNil()) { + $panic(new $String("reflect: indirection through nil pointer to embedded struct")); + } + _r$2 = $clone(v, Value).Elem(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v = _r$2; + /* } */ case 10: + /* } */ case 8: + _r$3 = $clone(v, Value).Field(x); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + v = _r$3; + _i++; + $s = 5; continue; + case 6: + $s = -1; return v; + /* */ } return; } var $f = {$blk: FieldByIndex, $c: true, $r, $24r, _i, _r, _r$1, _r$2, _r$3, _ref, _v, i, index, v, x, $s};return $f; + }; + Value.prototype.FieldByIndex = function(...$args) { return this.$val.FieldByIndex(...$args); }; + $ptrType(Value).prototype.FieldByIndexErr = function FieldByIndexErr(index) { + var {$24r, $24r$1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _v, i, index, v, x, $s, $r, $c} = $restore(this, {index}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + /* */ if (index.$length === 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (index.$length === 1) { */ case 1: + _r = $clone(v, Value).Field((0 >= index.$length ? ($throwRuntimeError("index out of range"), undefined) : index.$array[index.$offset + 0])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = [_r, $ifaceNil]; + $s = 4; case 4: return $24r; + /* } */ case 2: + new flag(v.flag).mustBe(25); + _ref = index; + _i = 0; + /* while (true) { */ case 5: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (i > 0) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i > 0) { */ case 7: + if (!($clone(v, Value).Kind() === 22)) { _v = false; $s = 11; continue s; } + _r$1 = v.typ.Elem().Kind(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1 === 25; case 11: + /* */ if (_v) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_v) { */ case 9: + /* */ if ($clone(v, Value).IsNil()) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if ($clone(v, Value).IsNil()) { */ case 13: + _r$2 = v.typ.Elem().Name(); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = errors.New("reflect: indirection through nil pointer to embedded struct field " + _r$2); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = [new Value.ptr(ptrType$2.nil, 0, 0), _r$3]; + $s = 17; case 17: return $24r$1; + /* } */ case 14: + _r$4 = $clone(v, Value).Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + v = _r$4; + /* } */ case 10: + /* } */ case 8: + _r$5 = $clone(v, Value).Field(x); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + v = _r$5; + _i++; + $s = 5; continue; + case 6: + $s = -1; return [v, $ifaceNil]; + /* */ } return; } var $f = {$blk: FieldByIndexErr, $c: true, $r, $24r, $24r$1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _v, i, index, v, x, $s};return $f; + }; + Value.prototype.FieldByIndexErr = function(...$args) { return this.$val.FieldByIndexErr(...$args); }; + $ptrType(Value).prototype.FieldByName = function FieldByName(name$1) { + var {$24r, _r, _r$1, _tuple, f, name$1, ok, v, $s, $r, $c} = $restore(this, {name$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(25); + _r = v.typ.FieldByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = $clone(_tuple[0], StructField); + ok = _tuple[1]; + /* */ if (ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok) { */ case 2: + _r$1 = $clone(v, Value).FieldByIndex(f.Index); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 5; case 5: return $24r; + /* } */ case 3: + $s = -1; return new Value.ptr(ptrType$2.nil, 0, 0); + /* */ } return; } var $f = {$blk: FieldByName, $c: true, $r, $24r, _r, _r$1, _tuple, f, name$1, ok, v, $s};return $f; + }; + Value.prototype.FieldByName = function(...$args) { return this.$val.FieldByName(...$args); }; + $ptrType(Value).prototype.FieldByNameFunc = function FieldByNameFunc(match) { + var {$24r, _r, _r$1, _tuple, f, match, ok, v, $s, $r, $c} = $restore(this, {match}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + _r = v.typ.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = $clone(_tuple[0], StructField); + ok = _tuple[1]; + /* */ if (ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok) { */ case 2: + _r$1 = $clone(v, Value).FieldByIndex(f.Index); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 5; case 5: return $24r; + /* } */ case 3: + $s = -1; return new Value.ptr(ptrType$2.nil, 0, 0); + /* */ } return; } var $f = {$blk: FieldByNameFunc, $c: true, $r, $24r, _r, _r$1, _tuple, f, match, ok, v, $s};return $f; + }; + Value.prototype.FieldByNameFunc = function(...$args) { return this.$val.FieldByNameFunc(...$args); }; + $ptrType(Value).prototype.CanFloat = function CanFloat() { + var _1, v; + v = this; + _1 = new flag(v.flag).kind(); + if ((_1 === (13)) || (_1 === (14))) { + return true; + } else { + return false; + } + }; + Value.prototype.CanFloat = function(...$args) { return this.$val.CanFloat(...$args); }; + $ptrType(Value).prototype.Float = function Float() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (13)) { + return ((v.ptr).$get()); + } else if (_1 === (14)) { + return (v.ptr).$get(); + } + $panic(new ValueError.ptr("reflect.Value.Float", new flag(v.flag).kind())); + }; + Value.prototype.Float = function(...$args) { return this.$val.Float(...$args); }; + $ptrType(Value).prototype.CanInt = function CanInt() { + var _1, v; + v = this; + _1 = new flag(v.flag).kind(); + if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { + return true; + } else { + return false; + } + }; + Value.prototype.CanInt = function(...$args) { return this.$val.CanInt(...$args); }; + $ptrType(Value).prototype.Int = function Int() { + var _1, k, p, v; + v = this; + k = new flag(v.flag).kind(); + p = v.ptr; + _1 = k; + if (_1 === (2)) { + return (new $Int64(0, (p).$get())); + } else if (_1 === (3)) { + return (new $Int64(0, (p).$get())); + } else if (_1 === (4)) { + return (new $Int64(0, (p).$get())); + } else if (_1 === (5)) { + return (new $Int64(0, (p).$get())); + } else if (_1 === (6)) { + return (p).$get(); + } + $panic(new ValueError.ptr("reflect.Value.Int", new flag(v.flag).kind())); + }; + Value.prototype.Int = function(...$args) { return this.$val.Int(...$args); }; + $ptrType(Value).prototype.CanInterface = function CanInterface() { + var v; + v = this; + if (v.flag === 0) { + $panic(new ValueError.ptr("reflect.Value.CanInterface", 0)); + } + return ((v.flag & 96) >>> 0) === 0; + }; + Value.prototype.CanInterface = function(...$args) { return this.$val.CanInterface(...$args); }; + $ptrType(Value).prototype.Interface = function Interface() { + var {$24r, _r, i, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = $ifaceNil; + v = this; + _r = valueInterface($clone(v, Value), true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + $24r = i; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Interface, $c: true, $r, $24r, _r, i, v, $s};return $f; + }; + Value.prototype.Interface = function(...$args) { return this.$val.Interface(...$args); }; + $ptrType(Value).prototype.IsValid = function IsValid() { + var v; + v = this; + return !((v.flag === 0)); + }; + Value.prototype.IsValid = function(...$args) { return this.$val.IsValid(...$args); }; + $ptrType(Value).prototype.IsZero = function IsZero() { + var {$24r, $24r$1, $24r$2, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, c, i, i$1, n, n$1, v, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + _1 = new flag(v.flag).kind(); + /* */ if (_1 === (1)) { $s = 2; continue; } + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 3; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 4; continue; } + /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 5; continue; } + /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 6; continue; } + /* */ if (_1 === (17)) { $s = 7; continue; } + /* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { $s = 8; continue; } + /* */ if (_1 === (24)) { $s = 9; continue; } + /* */ if (_1 === (25)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_1 === (1)) { */ case 2: + $s = -1; return !$clone(v, Value).Bool(); + /* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 3: + $s = -1; return (x = $clone(v, Value).Int(), (x.$high === 0 && x.$low === 0)); + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 4: + $s = -1; return (x$1 = $clone(v, Value).Uint(), (x$1.$high === 0 && x$1.$low === 0)); + /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 5: + $s = -1; return (x$2 = math.Float64bits($clone(v, Value).Float()), (x$2.$high === 0 && x$2.$low === 0)); + /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 6: + c = $clone(v, Value).Complex(); + $s = -1; return (x$3 = math.Float64bits(c.$real), (x$3.$high === 0 && x$3.$low === 0)) && (x$4 = math.Float64bits(c.$imag), (x$4.$high === 0 && x$4.$low === 0)); + /* } else if (_1 === (17)) { */ case 7: + /* */ if (!(v.typ.equal === $throwNilPointerError) && v.typ.size <= 1024) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!(v.typ.equal === $throwNilPointerError) && v.typ.size <= 1024) { */ case 13: + if (((v.flag & 128) >>> 0) === 0) { + $s = -1; return v.ptr === 0; + } + _r = v.typ.equal(v.ptr, ($sliceToNativeArray(new sliceType$4(zeroVal)))); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 16; case 16: return $24r; + /* } */ case 14: + _r$1 = $clone(v, Value).Len(); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + n = _r$1; + i = 0; + /* while (true) { */ case 18: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 19; continue; } + _r$2 = $clone(v, Value).Index(i); /* */ $s = 22; case 22: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = $clone(_r$2, Value).IsZero(); /* */ $s = 23; case 23: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (!_r$3) { */ case 20: + $s = -1; return false; + /* } */ case 21: + i = i + (1) >> 0; + $s = 18; continue; + case 19: + $s = -1; return true; + /* } else if ((_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { */ case 8: + $s = -1; return $clone(v, Value).IsNil(); + /* } else if (_1 === (24)) { */ case 9: + _r$4 = $clone(v, Value).Len(); /* */ $s = 24; case 24: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$1 = _r$4 === 0; + $s = 25; case 25: return $24r$1; + /* } else if (_1 === (25)) { */ case 10: + /* */ if (!(v.typ.equal === $throwNilPointerError) && v.typ.size <= 1024) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!(v.typ.equal === $throwNilPointerError) && v.typ.size <= 1024) { */ case 26: + if (((v.flag & 128) >>> 0) === 0) { + $s = -1; return v.ptr === 0; + } + _r$5 = v.typ.equal(v.ptr, ($sliceToNativeArray(new sliceType$4(zeroVal)))); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r$2 = _r$5; + $s = 29; case 29: return $24r$2; + /* } */ case 27: + n$1 = $clone(v, Value).NumField(); + i$1 = 0; + /* while (true) { */ case 30: + /* if (!(i$1 < n$1)) { break; } */ if(!(i$1 < n$1)) { $s = 31; continue; } + _r$6 = $clone(v, Value).Field(i$1); /* */ $s = 34; case 34: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = $clone(_r$6, Value).IsZero(); /* */ $s = 35; case 35: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (!_r$7) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (!_r$7) { */ case 32: + $s = -1; return false; + /* } */ case 33: + i$1 = i$1 + (1) >> 0; + $s = 30; continue; + case 31: + $s = -1; return true; + /* } else { */ case 11: + $panic(new ValueError.ptr("reflect.Value.IsZero", $clone(v, Value).Kind())); + /* } */ case 12: + case 1: + $s = -1; return false; + /* */ } return; } var $f = {$blk: IsZero, $c: true, $r, $24r, $24r$1, $24r$2, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, c, i, i$1, n, n$1, v, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + Value.prototype.IsZero = function(...$args) { return this.$val.IsZero(...$args); }; + $ptrType(Value).prototype.Kind = function Kind$1() { + var v; + v = this; + return new flag(v.flag).kind(); + }; + Value.prototype.Kind = function(...$args) { return this.$val.Kind(...$args); }; + $ptrType(Value).prototype.MapIndex = function MapIndex(key) { + var {_r, e, fl, k, k$1, key, tt, typ, v, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(21); + tt = (v.typ.kindType); + e = 0; + /* */ if ((tt.key === stringType || (new flag(key.flag).kind() === 24)) && tt.key === key.typ && tt.elem.size <= 128) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((tt.key === stringType || (new flag(key.flag).kind() === 24)) && tt.key === key.typ && tt.elem.size <= 128) { */ case 1: + k = (key.ptr).$get(); + e = mapaccess_faststr(v.typ, $clone(v, Value).pointer(), k); + $s = 3; continue; + /* } else { */ case 2: + _r = $clone(key, Value).assignTo("reflect.Value.MapIndex", tt.key, 0); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + key = _r; + k$1 = 0; + if (!((((key.flag & 128) >>> 0) === 0))) { + k$1 = key.ptr; + } else { + k$1 = ((key.$ptr_ptr || (key.$ptr_ptr = new ptrType$8(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key)))); + } + e = mapaccess(v.typ, $clone(v, Value).pointer(), k$1); + /* } */ case 3: + if (e === 0) { + $s = -1; return new Value.ptr(ptrType$2.nil, 0, 0); + } + typ = tt.elem; + fl = new flag((((v.flag | key.flag) >>> 0))).ro(); + fl = (fl | (((typ.Kind() >>> 0)))) >>> 0; + $s = -1; return copyVal(typ, fl, e); + /* */ } return; } var $f = {$blk: MapIndex, $c: true, $r, _r, e, fl, k, k$1, key, tt, typ, v, $s};return $f; + }; + Value.prototype.MapIndex = function(...$args) { return this.$val.MapIndex(...$args); }; + $ptrType(Value).prototype.MapKeys = function MapKeys() { + var {_r, a, fl, i, it, key, keyType, m, mlen, tt, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + it = [it]; + v = this; + new flag(v.flag).mustBe(21); + tt = (v.typ.kindType); + keyType = tt.key; + fl = (new flag(v.flag).ro() | ((keyType.Kind() >>> 0))) >>> 0; + m = $clone(v, Value).pointer(); + mlen = 0; + if (!(m === 0)) { + mlen = maplen(m); + } + it[0] = new hiter.ptr($ifaceNil, null, null, 0, null); + mapiterinit(v.typ, m, it[0]); + a = $makeSlice(sliceType$10, mlen); + i = 0; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < a.$length)) { break; } */ if(!(i < a.$length)) { $s = 2; continue; } + _r = mapiterkey(it[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + key = _r; + if (key === 0) { + /* break; */ $s = 2; continue; + } + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = copyVal(keyType, fl, key)); + mapiternext(it[0]); + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return $subslice(a, 0, i); + /* */ } return; } var $f = {$blk: MapKeys, $c: true, $r, _r, a, fl, i, it, key, keyType, m, mlen, tt, v, $s};return $f; + }; + Value.prototype.MapKeys = function(...$args) { return this.$val.MapKeys(...$args); }; + $ptrType(hiter).prototype.initialized = function initialized$1() { + var h; + h = this; + return !($interfaceIsEqual(h.t, $ifaceNil)); + }; + $ptrType(MapIter).prototype.Key = function Key() { + var {_r, iter, iterkey, ktype, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + iter = this; + if (!iter.hiter.initialized()) { + $panic(new $String("MapIter.Key called before Next")); + } + _r = mapiterkey(iter.hiter); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + iterkey = _r; + if (iterkey === 0) { + $panic(new $String("MapIter.Key called on exhausted iterator")); + } + t = (iter.m.typ.kindType); + ktype = t.key; + $s = -1; return copyVal(ktype, (new flag(iter.m.flag).ro() | ((ktype.Kind() >>> 0))) >>> 0, iterkey); + /* */ } return; } var $f = {$blk: Key, $c: true, $r, _r, iter, iterkey, ktype, t, $s};return $f; + }; + $ptrType(Value).prototype.SetIterKey = function SetIterKey(iter) { + var {_r, _r$1, iter, iterkey, key, ktype, t, target, v, $s, $r, $c} = $restore(this, {iter}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + if (!iter.hiter.initialized()) { + $panic(new $String("reflect: Value.SetIterKey called before Next")); + } + _r = mapiterkey(iter.hiter); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + iterkey = _r; + if (iterkey === 0) { + $panic(new $String("reflect: Value.SetIterKey called on exhausted iterator")); + } + new flag(v.flag).mustBeAssignable(); + target = 0; + if (new flag(v.flag).kind() === 20) { + target = v.ptr; + } + t = (iter.m.typ.kindType); + ktype = t.key; + new flag(iter.m.flag).mustBeExported(); + key = new Value.ptr(ktype, iterkey, (((iter.m.flag | ((ktype.Kind() >>> 0))) >>> 0) | 128) >>> 0); + _r$1 = $clone(key, Value).assignTo("reflect.MapIter.SetKey", v.typ, target); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + key = _r$1; + typedmemmove(v.typ, v.ptr, key.ptr); + $s = -1; return; + /* */ } return; } var $f = {$blk: SetIterKey, $c: true, $r, _r, _r$1, iter, iterkey, key, ktype, t, target, v, $s};return $f; + }; + Value.prototype.SetIterKey = function(...$args) { return this.$val.SetIterKey(...$args); }; + $ptrType(MapIter).prototype.Value = function Value$1() { + var {_r, iter, iterelem, t, vtype, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + iter = this; + if (!iter.hiter.initialized()) { + $panic(new $String("MapIter.Value called before Next")); + } + _r = mapiterelem(iter.hiter); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + iterelem = _r; + if (iterelem === 0) { + $panic(new $String("MapIter.Value called on exhausted iterator")); + } + t = (iter.m.typ.kindType); + vtype = t.elem; + $s = -1; return copyVal(vtype, (new flag(iter.m.flag).ro() | ((vtype.Kind() >>> 0))) >>> 0, iterelem); + /* */ } return; } var $f = {$blk: Value$1, $c: true, $r, _r, iter, iterelem, t, vtype, $s};return $f; + }; + $ptrType(Value).prototype.SetIterValue = function SetIterValue(iter) { + var {_r, _r$1, elem, iter, iterelem, t, target, v, vtype, $s, $r, $c} = $restore(this, {iter}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + if (!iter.hiter.initialized()) { + $panic(new $String("reflect: Value.SetIterValue called before Next")); + } + _r = mapiterelem(iter.hiter); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + iterelem = _r; + if (iterelem === 0) { + $panic(new $String("reflect: Value.SetIterValue called on exhausted iterator")); + } + new flag(v.flag).mustBeAssignable(); + target = 0; + if (new flag(v.flag).kind() === 20) { + target = v.ptr; + } + t = (iter.m.typ.kindType); + vtype = t.elem; + new flag(iter.m.flag).mustBeExported(); + elem = new Value.ptr(vtype, iterelem, (((iter.m.flag | ((vtype.Kind() >>> 0))) >>> 0) | 128) >>> 0); + _r$1 = $clone(elem, Value).assignTo("reflect.MapIter.SetValue", v.typ, target); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + elem = _r$1; + typedmemmove(v.typ, v.ptr, elem.ptr); + $s = -1; return; + /* */ } return; } var $f = {$blk: SetIterValue, $c: true, $r, _r, _r$1, elem, iter, iterelem, t, target, v, vtype, $s};return $f; + }; + Value.prototype.SetIterValue = function(...$args) { return this.$val.SetIterValue(...$args); }; + $ptrType(MapIter).prototype.Next = function Next() { + var {$24r, _r, _r$1, iter, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + iter = this; + if (!$clone(iter.m, Value).IsValid()) { + $panic(new $String("MapIter.Next called on an iterator that does not have an associated map Value")); + } + /* */ if (!iter.hiter.initialized()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!iter.hiter.initialized()) { */ case 1: + mapiterinit(iter.m.typ, $clone(iter.m, Value).pointer(), iter.hiter); + $s = 3; continue; + /* } else { */ case 2: + _r = mapiterkey(iter.hiter); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r === 0) { */ case 4: + $panic(new $String("MapIter.Next called on exhausted iterator")); + /* } */ case 5: + mapiternext(iter.hiter); + /* } */ case 3: + _r$1 = mapiterkey(iter.hiter); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = !(_r$1 === 0); + $s = 8; case 8: return $24r; + /* */ } return; } var $f = {$blk: Next, $c: true, $r, $24r, _r, _r$1, iter, $s};return $f; + }; + $ptrType(MapIter).prototype.Reset = function Reset(v) { + var iter, v; + iter = this; + if ($clone(v, Value).IsValid()) { + new flag(v.flag).mustBe(21); + } + iter.m = v; + hiter.copy(iter.hiter, new hiter.ptr($ifaceNil, null, null, 0, null)); + }; + $ptrType(Value).prototype.MapRange = function MapRange() { + var v; + v = this; + if (!((new flag(v.flag).kind() === 21))) { + new flag(v.flag).panicNotMap(); + } + return new MapIter.ptr($clone(v, Value), new hiter.ptr($ifaceNil, null, null, 0, null)); + }; + Value.prototype.MapRange = function(...$args) { return this.$val.MapRange(...$args); }; + flag.prototype.panicNotMap = function panicNotMap() { + var f; + f = this.$val; + new flag(f).mustBe(21); + }; + $ptrType(flag).prototype.panicNotMap = function(...$args) { return new flag(this.$get()).panicNotMap(...$args); }; + copyVal = function copyVal$1(typ, fl, ptr) { + var c, fl, ptr, typ; + if (ifaceIndir(typ)) { + c = unsafe_New(typ); + typedmemmove(typ, c, ptr); + return new Value.ptr(typ, c, (fl | 128) >>> 0); + } + return new Value.ptr(typ, (ptr).$get(), fl); + }; + $ptrType(Value).prototype.Method = function Method$1(i) { + var fl, i, v; + v = this; + if (v.typ === ptrType$2.nil) { + $panic(new ValueError.ptr("reflect.Value.Method", 0)); + } + if (!((((v.flag & 512) >>> 0) === 0)) || ((i >>> 0)) >= ((v.typ.NumMethod() >>> 0))) { + $panic(new $String("reflect: Method index out of range")); + } + if ((v.typ.Kind() === 20) && $clone(v, Value).IsNil()) { + $panic(new $String("reflect: Method on nil interface value")); + } + fl = (new flag(v.flag).ro() | (((v.flag & 128) >>> 0))) >>> 0; + fl = (fl | (19)) >>> 0; + fl = (fl | ((((((i >>> 0)) << 10 >>> 0) | 512) >>> 0))) >>> 0; + return new Value.ptr(v.typ, v.ptr, fl); + }; + Value.prototype.Method = function(...$args) { return this.$val.Method(...$args); }; + $ptrType(Value).prototype.NumMethod = function NumMethod() { + var v; + v = this; + if (v.typ === ptrType$2.nil) { + $panic(new ValueError.ptr("reflect.Value.NumMethod", 0)); + } + if (!((((v.flag & 512) >>> 0) === 0))) { + return 0; + } + return v.typ.NumMethod(); + }; + Value.prototype.NumMethod = function(...$args) { return this.$val.NumMethod(...$args); }; + $ptrType(Value).prototype.MethodByName = function MethodByName(name$1) { + var {_r, _tuple, m, name$1, ok, v, $s, $r, $c} = $restore(this, {name$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + if (v.typ === ptrType$2.nil) { + $panic(new ValueError.ptr("reflect.Value.MethodByName", 0)); + } + if (!((((v.flag & 512) >>> 0) === 0))) { + $s = -1; return new Value.ptr(ptrType$2.nil, 0, 0); + } + _r = v.typ.MethodByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + m = $clone(_tuple[0], Method); + ok = _tuple[1]; + if (!ok) { + $s = -1; return new Value.ptr(ptrType$2.nil, 0, 0); + } + $s = -1; return $clone(v, Value).Method(m.Index); + /* */ } return; } var $f = {$blk: MethodByName, $c: true, $r, _r, _tuple, m, name$1, ok, v, $s};return $f; + }; + Value.prototype.MethodByName = function(...$args) { return this.$val.MethodByName(...$args); }; + $ptrType(Value).prototype.NumField = function NumField() { + var tt, v; + v = this; + new flag(v.flag).mustBe(25); + tt = (v.typ.kindType); + return tt.fields.$length; + }; + Value.prototype.NumField = function(...$args) { return this.$val.NumField(...$args); }; + $ptrType(Value).prototype.OverflowComplex = function OverflowComplex(x) { + var _1, k, v, x; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (15)) { + return overflowFloat32(x.$real) || overflowFloat32(x.$imag); + } else if (_1 === (16)) { + return false; + } + $panic(new ValueError.ptr("reflect.Value.OverflowComplex", new flag(v.flag).kind())); + }; + Value.prototype.OverflowComplex = function(...$args) { return this.$val.OverflowComplex(...$args); }; + $ptrType(Value).prototype.OverflowFloat = function OverflowFloat(x) { + var _1, k, v, x; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (13)) { + return overflowFloat32(x); + } else if (_1 === (14)) { + return false; + } + $panic(new ValueError.ptr("reflect.Value.OverflowFloat", new flag(v.flag).kind())); + }; + Value.prototype.OverflowFloat = function(...$args) { return this.$val.OverflowFloat(...$args); }; + overflowFloat32 = function overflowFloat32$1(x) { + var x; + if (x < 0) { + x = -x; + } + return 3.4028234663852886e+38 < x && x <= 1.7976931348623157e+308; + }; + $ptrType(Value).prototype.OverflowInt = function OverflowInt(x) { + var _1, bitSize, k, trunc, v, x; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { + bitSize = $imul(v.typ.size, 8) >>> 0; + trunc = $shiftRightInt64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0))); + return !((x.$high === trunc.$high && x.$low === trunc.$low)); + } + $panic(new ValueError.ptr("reflect.Value.OverflowInt", new flag(v.flag).kind())); + }; + Value.prototype.OverflowInt = function(...$args) { return this.$val.OverflowInt(...$args); }; + $ptrType(Value).prototype.OverflowUint = function OverflowUint(x) { + var _1, bitSize, k, trunc, v, x; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (7)) || (_1 === (12)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11))) { + bitSize = $imul(v.typ.size, 8) >>> 0; + trunc = $shiftRightUint64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0))); + return !((x.$high === trunc.$high && x.$low === trunc.$low)); + } + $panic(new ValueError.ptr("reflect.Value.OverflowUint", new flag(v.flag).kind())); + }; + Value.prototype.OverflowUint = function(...$args) { return this.$val.OverflowUint(...$args); }; + $ptrType(Value).prototype.Recv = function Recv() { + var {$24r, _r, _tuple, ok, v, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = new Value.ptr(ptrType$2.nil, 0, 0); + ok = false; + v = this; + new flag(v.flag).mustBe(18); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).recv(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + x = _tuple[0]; + ok = _tuple[1]; + $24r = [x, ok]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Recv, $c: true, $r, $24r, _r, _tuple, ok, v, x, $s};return $f; + }; + Value.prototype.Recv = function(...$args) { return this.$val.Recv(...$args); }; + $ptrType(Value).prototype.recv = function recv(nb) { + var {_r, _tuple, nb, ok, p, selected, t, tt, v, val, $s, $r, $c} = $restore(this, {nb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + val = new Value.ptr(ptrType$2.nil, 0, 0); + ok = false; + v = this; + tt = (v.typ.kindType); + if ((((tt.dir >> 0)) & 1) === 0) { + $panic(new $String("reflect: recv on send-only channel")); + } + t = tt.elem; + val = new Value.ptr(t, 0, ((t.Kind() >>> 0))); + p = 0; + if (ifaceIndir(t)) { + p = unsafe_New(t); + val.ptr = p; + val.flag = (val.flag | (128)) >>> 0; + } else { + p = ((val.$ptr_ptr || (val.$ptr_ptr = new ptrType$8(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val)))); + } + _r = chanrecv($clone(v, Value).pointer(), nb, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + selected = _tuple[0]; + ok = _tuple[1]; + if (!selected) { + val = new Value.ptr(ptrType$2.nil, 0, 0); + } + $s = -1; return [val, ok]; + /* */ } return; } var $f = {$blk: recv, $c: true, $r, _r, _tuple, nb, ok, p, selected, t, tt, v, val, $s};return $f; + }; + Value.prototype.recv = function(...$args) { return this.$val.recv(...$args); }; + $ptrType(Value).prototype.Send = function Send(x) { + var {_r, v, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(18); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).send($clone(x, Value), false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + $s = -1; return; + /* */ } return; } var $f = {$blk: Send, $c: true, $r, _r, v, x, $s};return $f; + }; + Value.prototype.Send = function(...$args) { return this.$val.Send(...$args); }; + $ptrType(Value).prototype.send = function send(x, nb) { + var {$24r, _r, _r$1, nb, p, selected, tt, v, x, $s, $r, $c} = $restore(this, {x, nb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + selected = false; + v = this; + tt = (v.typ.kindType); + if ((((tt.dir >> 0)) & 2) === 0) { + $panic(new $String("reflect: send on recv-only channel")); + } + new flag(x.flag).mustBeExported(); + _r = $clone(x, Value).assignTo("reflect.Value.Send", tt.elem, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x = _r; + p = 0; + if (!((((x.flag & 128) >>> 0) === 0))) { + p = x.ptr; + } else { + p = ((x.$ptr_ptr || (x.$ptr_ptr = new ptrType$8(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, x)))); + } + _r$1 = chansend($clone(v, Value).pointer(), p, nb); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + selected = _r$1; + $24r = selected; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: send, $c: true, $r, $24r, _r, _r$1, nb, p, selected, tt, v, x, $s};return $f; + }; + Value.prototype.send = function(...$args) { return this.$val.send(...$args); }; + $ptrType(Value).prototype.SetBool = function SetBool(x) { + var v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(1); + (v.ptr).$set(x); + }; + Value.prototype.SetBool = function(...$args) { return this.$val.SetBool(...$args); }; + $ptrType(Value).prototype.setRunes = function setRunes(x) { + var {_r, v, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 5))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 5))) { */ case 1: + $panic(new $String("reflect.Value.setRunes of non-rune slice")); + /* } */ case 2: + (v.ptr).$set(x); + $s = -1; return; + /* */ } return; } var $f = {$blk: setRunes, $c: true, $r, _r, v, x, $s};return $f; + }; + Value.prototype.setRunes = function(...$args) { return this.$val.setRunes(...$args); }; + $ptrType(Value).prototype.SetComplex = function SetComplex(x) { + var _1, k, v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (15)) { + (v.ptr).$set((new $Complex64(x.$real, x.$imag))); + } else if (_1 === (16)) { + (v.ptr).$set(x); + } else { + $panic(new ValueError.ptr("reflect.Value.SetComplex", new flag(v.flag).kind())); + } + }; + Value.prototype.SetComplex = function(...$args) { return this.$val.SetComplex(...$args); }; + $ptrType(Value).prototype.SetFloat = function SetFloat(x) { + var _1, k, v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (13)) { + (v.ptr).$set(($fround(x))); + } else if (_1 === (14)) { + (v.ptr).$set(x); + } else { + $panic(new ValueError.ptr("reflect.Value.SetFloat", new flag(v.flag).kind())); + } + }; + Value.prototype.SetFloat = function(...$args) { return this.$val.SetFloat(...$args); }; + $ptrType(Value).prototype.SetInt = function SetInt(x) { + var _1, k, v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (2)) { + (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) >> 0))); + } else if (_1 === (3)) { + (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) << 24 >> 24))); + } else if (_1 === (4)) { + (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) << 16 >> 16))); + } else if (_1 === (5)) { + (v.ptr).$set((((x.$low + ((x.$high >> 31) * 4294967296)) >> 0))); + } else if (_1 === (6)) { + (v.ptr).$set(x); + } else { + $panic(new ValueError.ptr("reflect.Value.SetInt", new flag(v.flag).kind())); + } + }; + Value.prototype.SetInt = function(...$args) { return this.$val.SetInt(...$args); }; + $ptrType(Value).prototype.SetMapIndex = function SetMapIndex(key, elem) { + var {_r, _r$1, _r$2, e, e$1, elem, k, k$1, key, tt, v, $s, $r, $c} = $restore(this, {key, elem}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(21); + new flag(v.flag).mustBeExported(); + new flag(key.flag).mustBeExported(); + tt = (v.typ.kindType); + /* */ if ((tt.key === stringType || (new flag(key.flag).kind() === 24)) && tt.key === key.typ && tt.elem.size <= 128) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((tt.key === stringType || (new flag(key.flag).kind() === 24)) && tt.key === key.typ && tt.elem.size <= 128) { */ case 1: + k = (key.ptr).$get(); + if (elem.typ === ptrType$2.nil) { + mapdelete_faststr(v.typ, $clone(v, Value).pointer(), k); + $s = -1; return; + } + new flag(elem.flag).mustBeExported(); + _r = $clone(elem, Value).assignTo("reflect.Value.SetMapIndex", tt.elem, 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + elem = _r; + e = 0; + if (!((((elem.flag & 128) >>> 0) === 0))) { + e = elem.ptr; + } else { + e = ((elem.$ptr_ptr || (elem.$ptr_ptr = new ptrType$8(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, elem)))); + } + $r = mapassign_faststr(v.typ, $clone(v, Value).pointer(), k, e); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 2: + _r$1 = $clone(key, Value).assignTo("reflect.Value.SetMapIndex", tt.key, 0); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + key = _r$1; + k$1 = 0; + if (!((((key.flag & 128) >>> 0) === 0))) { + k$1 = key.ptr; + } else { + k$1 = ((key.$ptr_ptr || (key.$ptr_ptr = new ptrType$8(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key)))); + } + if (elem.typ === ptrType$2.nil) { + mapdelete(v.typ, $clone(v, Value).pointer(), k$1); + $s = -1; return; + } + new flag(elem.flag).mustBeExported(); + _r$2 = $clone(elem, Value).assignTo("reflect.Value.SetMapIndex", tt.elem, 0); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + elem = _r$2; + e$1 = 0; + if (!((((elem.flag & 128) >>> 0) === 0))) { + e$1 = elem.ptr; + } else { + e$1 = ((elem.$ptr_ptr || (elem.$ptr_ptr = new ptrType$8(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, elem)))); + } + $r = mapassign(v.typ, $clone(v, Value).pointer(), k$1, e$1); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: SetMapIndex, $c: true, $r, _r, _r$1, _r$2, e, e$1, elem, k, k$1, key, tt, v, $s};return $f; + }; + Value.prototype.SetMapIndex = function(...$args) { return this.$val.SetMapIndex(...$args); }; + $ptrType(Value).prototype.SetUint = function SetUint(x) { + var _1, k, v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + k = new flag(v.flag).kind(); + _1 = k; + if (_1 === (7)) { + (v.ptr).$set(((x.$low >>> 0))); + } else if (_1 === (8)) { + (v.ptr).$set(((x.$low << 24 >>> 24))); + } else if (_1 === (9)) { + (v.ptr).$set(((x.$low << 16 >>> 16))); + } else if (_1 === (10)) { + (v.ptr).$set(((x.$low >>> 0))); + } else if (_1 === (11)) { + (v.ptr).$set(x); + } else if (_1 === (12)) { + (v.ptr).$set(((x.$low >>> 0))); + } else { + $panic(new ValueError.ptr("reflect.Value.SetUint", new flag(v.flag).kind())); + } + }; + Value.prototype.SetUint = function(...$args) { return this.$val.SetUint(...$args); }; + $ptrType(Value).prototype.SetPointer = function SetPointer(x) { + var v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(26); + (v.ptr).$set(x); + }; + Value.prototype.SetPointer = function(...$args) { return this.$val.SetPointer(...$args); }; + $ptrType(Value).prototype.SetString = function SetString(x) { + var v, x; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(24); + (v.ptr).$set(x); + }; + Value.prototype.SetString = function(...$args) { return this.$val.SetString(...$args); }; + $ptrType(Value).prototype.String = function String() { + var {$24r, _r, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + if (new flag(v.flag).kind() === 24) { + $s = -1; return (v.ptr).$get(); + } + _r = $clone(v, Value).stringNonString(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String, $c: true, $r, $24r, _r, v, $s};return $f; + }; + Value.prototype.String = function(...$args) { return this.$val.String(...$args); }; + $ptrType(Value).prototype.stringNonString = function stringNonString() { + var {$24r, _r, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + if (new flag(v.flag).kind() === 0) { + $s = -1; return ""; + } + _r = $clone(v, Value).Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = "<" + _r + " Value>"; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: stringNonString, $c: true, $r, $24r, _r, v, $s};return $f; + }; + Value.prototype.stringNonString = function(...$args) { return this.$val.stringNonString(...$args); }; + $ptrType(Value).prototype.TryRecv = function TryRecv() { + var {$24r, _r, _tuple, ok, v, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = new Value.ptr(ptrType$2.nil, 0, 0); + ok = false; + v = this; + new flag(v.flag).mustBe(18); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).recv(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + x = _tuple[0]; + ok = _tuple[1]; + $24r = [x, ok]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: TryRecv, $c: true, $r, $24r, _r, _tuple, ok, v, x, $s};return $f; + }; + Value.prototype.TryRecv = function(...$args) { return this.$val.TryRecv(...$args); }; + $ptrType(Value).prototype.TrySend = function TrySend(x) { + var {$24r, _r, v, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBe(18); + new flag(v.flag).mustBeExported(); + _r = $clone(v, Value).send($clone(x, Value), true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: TrySend, $c: true, $r, $24r, _r, v, x, $s};return $f; + }; + Value.prototype.TrySend = function(...$args) { return this.$val.TrySend(...$args); }; + $ptrType(Value).prototype.Type = function Type$1() { + var v; + v = this; + if (!((v.flag === 0)) && (((v.flag & 512) >>> 0) === 0)) { + return v.typ; + } + return $clone(v, Value).typeSlow(); + }; + Value.prototype.Type = function(...$args) { return this.$val.Type(...$args); }; + $ptrType(Value).prototype.typeSlow = function typeSlow() { + var i, m, m$1, ms, tt, v, x; + v = this; + if (v.flag === 0) { + $panic(new ValueError.ptr("reflect.Value.Type", 0)); + } + if (((v.flag & 512) >>> 0) === 0) { + return v.typ; + } + i = ((v.flag >> 0)) >> 10 >> 0; + if (v.typ.Kind() === 20) { + tt = (v.typ.kindType); + if (((i >>> 0)) >= ((tt.methods.$length >>> 0))) { + $panic(new $String("reflect: internal error: invalid method index")); + } + m = (x = tt.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + return v.typ.typeOff(m.typ); + } + ms = v.typ.exportedMethods(); + if (((i >>> 0)) >= ((ms.$length >>> 0))) { + $panic(new $String("reflect: internal error: invalid method index")); + } + m$1 = $clone(((i < 0 || i >= ms.$length) ? ($throwRuntimeError("index out of range"), undefined) : ms.$array[ms.$offset + i]), method); + return v.typ.typeOff(m$1.mtyp); + }; + Value.prototype.typeSlow = function(...$args) { return this.$val.typeSlow(...$args); }; + $ptrType(Value).prototype.CanUint = function CanUint() { + var _1, v; + v = this; + _1 = new flag(v.flag).kind(); + if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { + return true; + } else { + return false; + } + }; + Value.prototype.CanUint = function(...$args) { return this.$val.CanUint(...$args); }; + $ptrType(Value).prototype.Uint = function Uint() { + var _1, k, p, v, x; + v = this; + k = new flag(v.flag).kind(); + p = v.ptr; + _1 = k; + if (_1 === (7)) { + return (new $Uint64(0, (p).$get())); + } else if (_1 === (8)) { + return (new $Uint64(0, (p).$get())); + } else if (_1 === (9)) { + return (new $Uint64(0, (p).$get())); + } else if (_1 === (10)) { + return (new $Uint64(0, (p).$get())); + } else if (_1 === (11)) { + return (p).$get(); + } else if (_1 === (12)) { + return ((x = (p).$get(), new $Uint64(0, x.constructor === Number ? x : 1))); + } + $panic(new ValueError.ptr("reflect.Value.Uint", new flag(v.flag).kind())); + }; + Value.prototype.Uint = function(...$args) { return this.$val.Uint(...$args); }; + $ptrType(Value).prototype.UnsafeAddr = function UnsafeAddr() { + var v; + v = this; + if (v.typ === ptrType$2.nil) { + $panic(new ValueError.ptr("reflect.Value.UnsafeAddr", 0)); + } + if (((v.flag & 256) >>> 0) === 0) { + $panic(new $String("reflect.Value.UnsafeAddr of unaddressable value")); + } + return (v.ptr); + }; + Value.prototype.UnsafeAddr = function(...$args) { return this.$val.UnsafeAddr(...$args); }; + typesMustMatch = function typesMustMatch$1(what, t1, t2) { + var {_r, _r$1, t1, t2, what, $s, $r, $c} = $restore(this, {what, t1, t2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!($interfaceIsEqual(t1, t2))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(t1, t2))) { */ case 1: + _r = t1.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = t2.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(what + ": " + _r + " != " + _r$1)); + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: typesMustMatch$1, $c: true, $r, _r, _r$1, t1, t2, what, $s};return $f; + }; + $ptrType(Value).prototype.Grow = function Grow(n) { + var n, v; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + $clone(v, Value).grow(n); + }; + Value.prototype.Grow = function(...$args) { return this.$val.Grow(...$args); }; + Append = function Append$1(s, x) { + var {_i, _r, _r$1, _r$2, _ref, i, n, s, v, x, $s, $r, $c} = $restore(this, {s, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + new flag(s.flag).mustBe(23); + _r = $clone(s, Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r; + _r$1 = $clone(s, Value).extendSlice(x.$length); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + s = _r$1; + _ref = x; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + i = _i; + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$2 = $clone(s, Value).Index(n + i >> 0); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = $clone(_r$2, Value).Set($clone(v, Value)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 3; continue; + case 4: + $s = -1; return s; + /* */ } return; } var $f = {$blk: Append$1, $c: true, $r, _i, _r, _r$1, _r$2, _ref, i, n, s, v, x, $s};return $f; + }; + $pkg.Append = Append; + MakeMap = function MakeMap$1(typ) { + var {$24r, _r, typ, $s, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = MakeMapWithSize(typ, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: MakeMap$1, $c: true, $r, $24r, _r, typ, $s};return $f; + }; + $pkg.MakeMap = MakeMap; + MakeMapWithSize = function MakeMapWithSize$1(typ, n) { + var {_r, m, n, t, typ, $s, $r, $c} = $restore(this, {typ, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = typ.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 21))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 21))) { */ case 1: + $panic(new $String("reflect.MakeMapWithSize of non-map type")); + /* } */ case 2: + t = $assertType(typ, ptrType$2); + m = makemap(t, n); + $s = -1; return new Value.ptr(t, m, 21); + /* */ } return; } var $f = {$blk: MakeMapWithSize$1, $c: true, $r, _r, m, n, t, typ, $s};return $f; + }; + $pkg.MakeMapWithSize = MakeMapWithSize; + Indirect = function Indirect$1(v) { + var {$24r, _r, v, $s, $r, $c} = $restore(this, {v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(($clone(v, Value).Kind() === 22))) { + $s = -1; return v; + } + _r = $clone(v, Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Indirect$1, $c: true, $r, $24r, _r, v, $s};return $f; + }; + $pkg.Indirect = Indirect; + $ptrType(Value).prototype.Convert = function Convert(t) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, op, t, v, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + /* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1: + _r = makeMethodValue("Convert", $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + /* } */ case 2: + _r$1 = t.common(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = convertOp(_r$1, v.typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + op = _r$2; + /* */ if (op === $throwNilPointerError) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (op === $throwNilPointerError) { */ case 6: + _r$3 = t.String(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $panic(new $String("reflect.Value.Convert: value of type " + v.typ.String() + " cannot be converted to type " + _r$3)); + /* } */ case 7: + _r$4 = op($clone(v, Value), t); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 10; case 10: return $24r; + /* */ } return; } var $f = {$blk: Convert, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, op, t, v, $s};return $f; + }; + Value.prototype.Convert = function(...$args) { return this.$val.Convert(...$args); }; + $ptrType(Value).prototype.CanConvert = function CanConvert(t) { + var {_r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, _v$1, _v$2, n, t, v, vt, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + vt = $clone(v, Value).Type(); + _r = vt.ConvertibleTo(t); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r) { */ case 1: + $s = -1; return false; + /* } */ case 2: + _r$1 = vt.Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (!(_r$1 === 23)) { _v = false; $s = 8; continue s; } + _r$2 = t.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2 === 17; case 8: + /* */ if (_v) { $s = 5; continue; } + _r$3 = vt.Kind(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + if (!(_r$3 === 23)) { _v$2 = false; $s = 12; continue s; } + _r$4 = t.Kind(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _v$2 = _r$4 === 22; case 12: + if (!(_v$2)) { _v$1 = false; $s = 11; continue s; } + _r$5 = t.Elem(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = _r$5.Kind(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$1 = _r$6 === 17; case 11: + /* */ if (_v$1) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_v) { */ case 5: + _r$7 = t.Len(); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = $clone(v, Value).Len(); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (_r$7 > _r$8) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_r$7 > _r$8) { */ case 17: + $s = -1; return false; + /* } */ case 18: + $s = 7; continue; + /* } else if (_v$1) { */ case 6: + _r$9 = t.Elem(); /* */ $s = 21; case 21: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$10 = _r$9.Len(); /* */ $s = 22; case 22: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + n = _r$10; + _r$11 = $clone(v, Value).Len(); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* */ if (n > _r$11) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (n > _r$11) { */ case 23: + $s = -1; return false; + /* } */ case 24: + /* } */ case 7: + case 4: + $s = -1; return true; + /* */ } return; } var $f = {$blk: CanConvert, $c: true, $r, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, _v$1, _v$2, n, t, v, vt, $s};return $f; + }; + Value.prototype.CanConvert = function(...$args) { return this.$val.CanConvert(...$args); }; + $ptrType(Value).prototype.Comparable = function Comparable() { + var {$24r, $24r$1, $24r$2, _1, _2, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, i, i$1, k, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + k = $clone(v, Value).Kind(); + _1 = k; + /* */ if (_1 === (0)) { $s = 2; continue; } + /* */ if (_1 === (17)) { $s = 3; continue; } + /* */ if (_1 === (20)) { $s = 4; continue; } + /* */ if (_1 === (25)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (0)) { */ case 2: + $s = -1; return false; + /* } else if (_1 === (17)) { */ case 3: + _r = $clone(v, Value).Type().Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _2 = _r$1; + /* */ if ((_2 === (20)) || (_2 === (17)) || (_2 === (25))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if ((_2 === (20)) || (_2 === (17)) || (_2 === (25))) { */ case 11: + i = 0; + /* while (true) { */ case 13: + _r$2 = $clone(v, Value).Type().Len(); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* if (!(i < _r$2)) { break; } */ if(!(i < _r$2)) { $s = 14; continue; } + _r$3 = $clone(v, Value).Index(i); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = $clone(_r$3, Value).Comparable(); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!_r$4) { */ case 16: + $s = -1; return false; + /* } */ case 17: + i = i + (1) >> 0; + $s = 13; continue; + case 14: + $s = -1; return true; + /* } */ case 12: + case 8: + _r$5 = $clone(v, Value).Type().Comparable(); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r = _r$5; + $s = 21; case 21: return $24r; + /* } else if (_1 === (20)) { */ case 4: + _r$6 = $clone(v, Value).Elem(); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = $clone(_r$6, Value).Comparable(); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $24r$1 = _r$7; + $s = 24; case 24: return $24r$1; + /* } else if (_1 === (25)) { */ case 5: + i$1 = 0; + /* while (true) { */ case 25: + /* if (!(i$1 < $clone(v, Value).NumField())) { break; } */ if(!(i$1 < $clone(v, Value).NumField())) { $s = 26; continue; } + _r$8 = $clone(v, Value).Field(i$1); /* */ $s = 29; case 29: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$9 = $clone(_r$8, Value).Comparable(); /* */ $s = 30; case 30: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (!_r$9) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (!_r$9) { */ case 27: + $s = -1; return false; + /* } */ case 28: + i$1 = i$1 + (1) >> 0; + $s = 25; continue; + case 26: + $s = -1; return true; + /* } else { */ case 6: + _r$10 = $clone(v, Value).Type().Comparable(); /* */ $s = 31; case 31: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $24r$2 = _r$10; + $s = 32; case 32: return $24r$2; + /* } */ case 7: + case 1: + $s = -1; return false; + /* */ } return; } var $f = {$blk: Comparable, $c: true, $r, $24r, $24r$1, $24r$2, _1, _2, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, i, i$1, k, v, $s};return $f; + }; + Value.prototype.Comparable = function(...$args) { return this.$val.Comparable(...$args); }; + $ptrType(Value).prototype.Equal = function Equal(u) { + var {$24r, _1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, i, i$1, nf, u, v, vl, x, x$1, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + /* */ if ($clone(v, Value).Kind() === 20) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($clone(v, Value).Kind() === 20) { */ case 1: + _r = $clone(v, Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + /* } */ case 2: + /* */ if ($clone(u, Value).Kind() === 20) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($clone(u, Value).Kind() === 20) { */ case 4: + _r$1 = $clone(u, Value).Elem(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + u = _r$1; + /* } */ case 5: + if (!$clone(v, Value).IsValid() || !$clone(u, Value).IsValid()) { + $s = -1; return $clone(v, Value).IsValid() === $clone(u, Value).IsValid(); + } + if (!(($clone(v, Value).Kind() === $clone(u, Value).Kind())) || !($interfaceIsEqual($clone(v, Value).Type(), $clone(u, Value).Type()))) { + $s = -1; return false; + } + _1 = $clone(v, Value).Kind(); + /* */ if (_1 === (1)) { $s = 8; continue; } + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 9; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 10; continue; } + /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 11; continue; } + /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 12; continue; } + /* */ if (_1 === (24)) { $s = 13; continue; } + /* */ if ((_1 === (18)) || (_1 === (22)) || (_1 === (26))) { $s = 14; continue; } + /* */ if (_1 === (17)) { $s = 15; continue; } + /* */ if (_1 === (25)) { $s = 16; continue; } + /* */ if ((_1 === (19)) || (_1 === (21)) || (_1 === (23))) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_1 === (1)) { */ case 8: + $s = -1; return $clone(v, Value).Bool() === $clone(u, Value).Bool(); + /* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 9: + $s = -1; return (x = $clone(v, Value).Int(), x$1 = $clone(u, Value).Int(), (x.$high === x$1.$high && x.$low === x$1.$low)); + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 10: + $s = -1; return (x$2 = $clone(v, Value).Uint(), x$3 = $clone(u, Value).Uint(), (x$2.$high === x$3.$high && x$2.$low === x$3.$low)); + /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 11: + $s = -1; return $clone(v, Value).Float() === $clone(u, Value).Float(); + /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 12: + $s = -1; return (x$4 = $clone(v, Value).Complex(), x$5 = $clone(u, Value).Complex(), (x$4.$real === x$5.$real && x$4.$imag === x$5.$imag)); + /* } else if (_1 === (24)) { */ case 13: + _r$2 = $clone(v, Value).String(); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = $clone(u, Value).String(); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$2 === _r$3; + $s = 22; case 22: return $24r; + /* } else if ((_1 === (18)) || (_1 === (22)) || (_1 === (26))) { */ case 14: + $s = -1; return $clone(v, Value).Pointer() === $clone(u, Value).Pointer(); + /* } else if (_1 === (17)) { */ case 15: + _r$4 = $clone(v, Value).Len(); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + vl = _r$4; + /* */ if (vl === 0) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (vl === 0) { */ case 24: + _r$5 = $clone(v, Value).Type().Elem(); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = _r$5.Comparable(); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (!_r$6) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!_r$6) { */ case 26: + /* break; */ $s = 7; continue; + /* } */ case 27: + $s = -1; return true; + /* } */ case 25: + i = 0; + /* while (true) { */ case 30: + /* if (!(i < vl)) { break; } */ if(!(i < vl)) { $s = 31; continue; } + _r$7 = $clone(v, Value).Index(i); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = $clone(u, Value).Index(i); /* */ $s = 35; case 35: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$9 = $clone(_r$7, Value).Equal($clone(_r$8, Value)); /* */ $s = 36; case 36: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (!_r$9) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (!_r$9) { */ case 32: + $s = -1; return false; + /* } */ case 33: + i = i + (1) >> 0; + $s = 30; continue; + case 31: + $s = -1; return true; + /* } else if (_1 === (25)) { */ case 16: + nf = $clone(v, Value).NumField(); + i$1 = 0; + /* while (true) { */ case 37: + /* if (!(i$1 < nf)) { break; } */ if(!(i$1 < nf)) { $s = 38; continue; } + _r$10 = $clone(v, Value).Field(i$1); /* */ $s = 41; case 41: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = $clone(u, Value).Field(i$1); /* */ $s = 42; case 42: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$12 = $clone(_r$10, Value).Equal($clone(_r$11, Value)); /* */ $s = 43; case 43: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + /* */ if (!_r$12) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (!_r$12) { */ case 39: + $s = -1; return false; + /* } */ case 40: + i$1 = i$1 + (1) >> 0; + $s = 37; continue; + case 38: + $s = -1; return true; + /* } else if ((_1 === (19)) || (_1 === (21)) || (_1 === (23))) { */ case 17: + /* break; */ $s = 7; continue; + $s = 19; continue; + /* } else { */ case 18: + $panic(new $String("reflect.Value.Equal: invalid Kind")); + /* } */ case 19: + case 7: + _r$13 = $clone(v, Value).Type().String(); /* */ $s = 44; case 44: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + $panic(new $String("reflect.Value.Equal: values of type " + _r$13 + " are not comparable")); + $s = -1; return false; + /* */ } return; } var $f = {$blk: Equal, $c: true, $r, $24r, _1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, i, i$1, nf, u, v, vl, x, x$1, x$2, x$3, x$4, x$5, $s};return $f; + }; + Value.prototype.Equal = function(...$args) { return this.$val.Equal(...$args); }; + convertOp = function convertOp$1(dst, src) { + var {_1, _2, _3, _4, _5, _6, _7, _arg, _arg$1, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, _v$1, _v$2, _v$3, _v$4, _v$5, dst, src, $s, $r, $c} = $restore(this, {dst, src}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _1 = src.Kind(); + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 2; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 3; continue; } + /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 4; continue; } + /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 5; continue; } + /* */ if (_1 === (24)) { $s = 6; continue; } + /* */ if (_1 === (23)) { $s = 7; continue; } + /* */ if (_1 === (18)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 2: + _2 = dst.Kind(); + if ((_2 === (2)) || (_2 === (3)) || (_2 === (4)) || (_2 === (5)) || (_2 === (6)) || (_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10)) || (_2 === (11)) || (_2 === (12))) { + $s = -1; return cvtInt; + } else if ((_2 === (13)) || (_2 === (14))) { + $s = -1; return cvtIntFloat; + } else if (_2 === (24)) { + $s = -1; return cvtIntString; + } + $s = 9; continue; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 3: + _3 = dst.Kind(); + if ((_3 === (2)) || (_3 === (3)) || (_3 === (4)) || (_3 === (5)) || (_3 === (6)) || (_3 === (7)) || (_3 === (8)) || (_3 === (9)) || (_3 === (10)) || (_3 === (11)) || (_3 === (12))) { + $s = -1; return cvtUint; + } else if ((_3 === (13)) || (_3 === (14))) { + $s = -1; return cvtUintFloat; + } else if (_3 === (24)) { + $s = -1; return cvtUintString; + } + $s = 9; continue; + /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 4: + _4 = dst.Kind(); + if ((_4 === (2)) || (_4 === (3)) || (_4 === (4)) || (_4 === (5)) || (_4 === (6))) { + $s = -1; return cvtFloatInt; + } else if ((_4 === (7)) || (_4 === (8)) || (_4 === (9)) || (_4 === (10)) || (_4 === (11)) || (_4 === (12))) { + $s = -1; return cvtFloatUint; + } else if ((_4 === (13)) || (_4 === (14))) { + $s = -1; return cvtFloat; + } + $s = 9; continue; + /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 5: + _5 = dst.Kind(); + if ((_5 === (15)) || (_5 === (16))) { + $s = -1; return cvtComplex; + } + $s = 9; continue; + /* } else if (_1 === (24)) { */ case 6: + if (!(dst.Kind() === 23)) { _v = false; $s = 12; continue s; } + _r = dst.Elem().PkgPath(); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r === ""; case 12: + /* */ if (_v) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v) { */ case 10: + _r$1 = dst.Elem().Kind(); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _6 = _r$1; + if (_6 === (8)) { + $s = -1; return cvtStringBytes; + } else if (_6 === (5)) { + $s = -1; return cvtStringRunes; + } + case 14: + /* } */ case 11: + $s = 9; continue; + /* } else if (_1 === (23)) { */ case 7: + if (!(dst.Kind() === 24)) { _v$1 = false; $s = 18; continue s; } + _r$2 = src.Elem().PkgPath(); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$1 = _r$2 === ""; case 18: + /* */ if (_v$1) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_v$1) { */ case 16: + _r$3 = src.Elem().Kind(); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _7 = _r$3; + if (_7 === (8)) { + $s = -1; return cvtBytesString; + } else if (_7 === (5)) { + $s = -1; return cvtRunesString; + } + case 20: + /* } */ case 17: + if (!(dst.Kind() === 22)) { _v$3 = false; $s = 25; continue s; } + _r$4 = dst.Elem().Kind(); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _v$3 = _r$4 === 17; case 25: + if (!(_v$3)) { _v$2 = false; $s = 24; continue s; } + _r$5 = dst.Elem().Elem(); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _v$2 = $interfaceIsEqual(src.Elem(), _r$5); case 24: + /* */ if (_v$2) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (_v$2) { */ case 22: + $s = -1; return cvtSliceArrayPtr; + /* } */ case 23: + if ((dst.Kind() === 17) && $interfaceIsEqual(src.Elem(), dst.Elem())) { + $s = -1; return cvtSliceArray; + } + $s = 9; continue; + /* } else if (_1 === (18)) { */ case 8: + if (!(dst.Kind() === 18)) { _v$4 = false; $s = 30; continue s; } + _r$6 = specialChannelAssignability(dst, src); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$4 = _r$6; case 30: + /* */ if (_v$4) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (_v$4) { */ case 28: + $s = -1; return cvtDirect; + /* } */ case 29: + /* } */ case 9: + case 1: + _r$7 = haveIdenticalUnderlyingType(dst, src, false); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (_r$7) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (_r$7) { */ case 32: + $s = -1; return cvtDirect; + /* } */ case 33: + if (!((dst.Kind() === 22) && dst.Name() === "" && (src.Kind() === 22) && src.Name() === "")) { _v$5 = false; $s = 37; continue s; } + _r$8 = dst.Elem().common(); /* */ $s = 38; case 38: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _arg = _r$8; + _r$9 = src.Elem().common(); /* */ $s = 39; case 39: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _arg$1 = _r$9; + _r$10 = haveIdenticalUnderlyingType(_arg, _arg$1, false); /* */ $s = 40; case 40: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v$5 = _r$10; case 37: + /* */ if (_v$5) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (_v$5) { */ case 35: + $s = -1; return cvtDirect; + /* } */ case 36: + if (implements$1(dst, src)) { + if (src.Kind() === 20) { + $s = -1; return cvtI2I; + } + $s = -1; return cvtT2I; + } + $s = -1; return $throwNilPointerError; + /* */ } return; } var $f = {$blk: convertOp$1, $c: true, $r, _1, _2, _3, _4, _5, _6, _7, _arg, _arg$1, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, _v$1, _v$2, _v$3, _v$4, _v$5, dst, src, $s};return $f; + }; + makeFloat = function makeFloat$1(f, v, t) { + var {_1, _r, f, ptr, t, typ, v, $s, $r, $c} = $restore(this, {f, v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typ = _r; + ptr = unsafe_New(typ); + _1 = typ.size; + if (_1 === (4)) { + (ptr).$set(($fround(v))); + } else if (_1 === (8)) { + (ptr).$set(v); + } + $s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0); + /* */ } return; } var $f = {$blk: makeFloat$1, $c: true, $r, _1, _r, f, ptr, t, typ, v, $s};return $f; + }; + makeFloat32 = function makeFloat32$1(f, v, t) { + var {_r, f, ptr, t, typ, v, $s, $r, $c} = $restore(this, {f, v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typ = _r; + ptr = unsafe_New(typ); + (ptr).$set(v); + $s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0); + /* */ } return; } var $f = {$blk: makeFloat32$1, $c: true, $r, _r, f, ptr, t, typ, v, $s};return $f; + }; + makeComplex = function makeComplex$1(f, v, t) { + var {_1, _r, f, ptr, t, typ, v, $s, $r, $c} = $restore(this, {f, v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typ = _r; + ptr = unsafe_New(typ); + _1 = typ.size; + if (_1 === (8)) { + (ptr).$set((new $Complex64(v.$real, v.$imag))); + } else if (_1 === (16)) { + (ptr).$set(v); + } + $s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0); + /* */ } return; } var $f = {$blk: makeComplex$1, $c: true, $r, _1, _r, f, ptr, t, typ, v, $s};return $f; + }; + makeString = function makeString$1(f, v, t) { + var {_r, f, ret, t, v, $s, $r, $c} = $restore(this, {f, v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = $clone(New(t), Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ret = _r; + $clone(ret, Value).SetString(v); + ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0; + $s = -1; return ret; + /* */ } return; } var $f = {$blk: makeString$1, $c: true, $r, _r, f, ret, t, v, $s};return $f; + }; + makeBytes = function makeBytes$1(f, v, t) { + var {_r, f, ret, t, v, $s, $r, $c} = $restore(this, {f, v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = $clone(New(t), Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ret = _r; + $r = $clone(ret, Value).SetBytes(v); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0; + $s = -1; return ret; + /* */ } return; } var $f = {$blk: makeBytes$1, $c: true, $r, _r, f, ret, t, v, $s};return $f; + }; + makeRunes = function makeRunes$1(f, v, t) { + var {_r, f, ret, t, v, $s, $r, $c} = $restore(this, {f, v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = $clone(New(t), Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ret = _r; + $r = $clone(ret, Value).setRunes(v); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ret.flag = (((ret.flag & ~256) >>> 0) | f) >>> 0; + $s = -1; return ret; + /* */ } return; } var $f = {$blk: makeRunes$1, $c: true, $r, _r, f, ret, t, v, $s};return $f; + }; + cvtInt = function cvtInt$1(v, t) { + var {$24r, _r, t, v, x, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = makeInt(new flag(v.flag).ro(), ((x = $clone(v, Value).Int(), new $Uint64(x.$high, x.$low))), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: cvtInt$1, $c: true, $r, $24r, _r, t, v, x, $s};return $f; + }; + cvtUint = function cvtUint$1(v, t) { + var {$24r, _r, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = makeInt(new flag(v.flag).ro(), $clone(v, Value).Uint(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: cvtUint$1, $c: true, $r, $24r, _r, t, v, $s};return $f; + }; + cvtFloatInt = function cvtFloatInt$1(v, t) { + var {$24r, _r, t, v, x, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = makeInt(new flag(v.flag).ro(), ((x = (new $Int64(0, $clone(v, Value).Float())), new $Uint64(x.$high, x.$low))), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: cvtFloatInt$1, $c: true, $r, $24r, _r, t, v, x, $s};return $f; + }; + cvtFloatUint = function cvtFloatUint$1(v, t) { + var {$24r, _r, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = makeInt(new flag(v.flag).ro(), (new $Uint64(0, $clone(v, Value).Float())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: cvtFloatUint$1, $c: true, $r, $24r, _r, t, v, $s};return $f; + }; + cvtIntFloat = function cvtIntFloat$1(v, t) { + var {$24r, _r, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = makeFloat(new flag(v.flag).ro(), ($flatten64($clone(v, Value).Int())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: cvtIntFloat$1, $c: true, $r, $24r, _r, t, v, $s};return $f; + }; + cvtUintFloat = function cvtUintFloat$1(v, t) { + var {$24r, _r, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = makeFloat(new flag(v.flag).ro(), ($flatten64($clone(v, Value).Uint())), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: cvtUintFloat$1, $c: true, $r, $24r, _r, t, v, $s};return $f; + }; + cvtFloat = function cvtFloat$1(v, t) { + var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _v, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = $clone(v, Value).Type().Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + if (!(_r === 13)) { _v = false; $s = 3; continue s; } + _r$1 = t.Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1 === 13; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + _r$2 = makeFloat32(new flag(v.flag).ro(), (v.ptr).$get(), t); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 7; case 7: return $24r; + /* } */ case 2: + _r$3 = makeFloat(new flag(v.flag).ro(), $clone(v, Value).Float(), t); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = _r$3; + $s = 9; case 9: return $24r$1; + /* */ } return; } var $f = {$blk: cvtFloat$1, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _v, t, v, $s};return $f; + }; + cvtComplex = function cvtComplex$1(v, t) { + var {$24r, _r, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = makeComplex(new flag(v.flag).ro(), $clone(v, Value).Complex(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: cvtComplex$1, $c: true, $r, $24r, _r, t, v, $s};return $f; + }; + cvtIntString = function cvtIntString$1(v, t) { + var {$24r, _r, s, t, v, x, x$1, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = "\xEF\xBF\xBD"; + x = $clone(v, Value).Int(); + if ((x$1 = (new $Int64(0, (((x.$low + ((x.$high >> 31) * 4294967296)) >> 0)))), (x$1.$high === x.$high && x$1.$low === x.$low))) { + s = ($encodeRune((((x.$low + ((x.$high >> 31) * 4294967296)) >> 0)))); + } + _r = makeString(new flag(v.flag).ro(), s, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: cvtIntString$1, $c: true, $r, $24r, _r, s, t, v, x, x$1, $s};return $f; + }; + cvtUintString = function cvtUintString$1(v, t) { + var {$24r, _r, s, t, v, x, x$1, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = "\xEF\xBF\xBD"; + x = $clone(v, Value).Uint(); + if ((x$1 = (new $Uint64(0, ((x.$low >> 0)))), (x$1.$high === x.$high && x$1.$low === x.$low))) { + s = ($encodeRune(((x.$low >> 0)))); + } + _r = makeString(new flag(v.flag).ro(), s, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: cvtUintString$1, $c: true, $r, $24r, _r, s, t, v, x, x$1, $s};return $f; + }; + cvtBytesString = function cvtBytesString$1(v, t) { + var {$24r, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = new flag(v.flag).ro(); + _r = $clone(v, Value).Bytes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = ($bytesToString(_r)); + _arg$2 = t; + _r$1 = makeString(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: cvtBytesString$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s};return $f; + }; + cvtStringBytes = function cvtStringBytes$1(v, t) { + var {$24r, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = new flag(v.flag).ro(); + _r = $clone(v, Value).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = (new sliceType$4($stringToBytes(_r))); + _arg$2 = t; + _r$1 = makeBytes(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: cvtStringBytes$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s};return $f; + }; + cvtRunesString = function cvtRunesString$1(v, t) { + var {$24r, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = new flag(v.flag).ro(); + _r = $clone(v, Value).runes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = ($runesToString(_r)); + _arg$2 = t; + _r$1 = makeString(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: cvtRunesString$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s};return $f; + }; + cvtStringRunes = function cvtStringRunes$1(v, t) { + var {$24r, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = new flag(v.flag).ro(); + _r = $clone(v, Value).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = (new sliceType$12($stringToRunes(_r))); + _arg$2 = t; + _r$1 = makeRunes(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: cvtStringRunes$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s};return $f; + }; + cvtT2I = function cvtT2I$1(v, typ) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, target, typ, v, x, $s, $r, $c} = $restore(this, {v, typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = typ.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = unsafe_New(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + target = _r$1; + _r$2 = valueInterface($clone(v, Value), false); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = _r$2; + _r$3 = typ.NumMethod(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3 === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$3 === 0) { */ case 4: + (target).$set(x); + $s = 6; continue; + /* } else { */ case 5: + ifaceE2I($assertType(typ, ptrType$2), x, target); + /* } */ case 6: + _r$4 = typ.common(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = new Value.ptr(_r$4, target, (((new flag(v.flag).ro() | 128) >>> 0) | 20) >>> 0); + $s = 9; case 9: return $24r; + /* */ } return; } var $f = {$blk: cvtT2I$1, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, target, typ, v, x, $s};return $f; + }; + cvtI2I = function cvtI2I$1(v, typ) { + var {$24r, _r, _r$1, _r$2, ret, typ, v, $s, $r, $c} = $restore(this, {v, typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if ($clone(v, Value).IsNil()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($clone(v, Value).IsNil()) { */ case 1: + _r = Zero(typ); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ret = _r; + ret.flag = (ret.flag | (new flag(v.flag).ro())) >>> 0; + $s = -1; return ret; + /* } */ case 2: + _r$1 = $clone(v, Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = cvtT2I($clone(_r$1, Value), typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 6; case 6: return $24r; + /* */ } return; } var $f = {$blk: cvtI2I$1, $c: true, $r, $24r, _r, _r$1, _r$2, ret, typ, v, $s};return $f; + }; + $ptrType(structField).prototype.embedded = function embedded() { + var f; + f = this; + return $clone(f.name, name).embedded(); + }; + $ptrType(Method).prototype.IsExported = function IsExported() { + var m; + m = this; + return m.PkgPath === ""; + }; + Method.prototype.IsExported = function(...$args) { return this.$val.IsExported(...$args); }; + Kind.prototype.String = function String$1() { + var k, x; + k = this.$val; + if (((k >>> 0)) < ((kindNames.$length >>> 0))) { + return (x = ((k >>> 0)), ((x < 0 || x >= kindNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : kindNames.$array[kindNames.$offset + x])); + } + return "kind" + strconv.Itoa(((k >> 0))); + }; + $ptrType(Kind).prototype.String = function(...$args) { return new Kind(this.$get()).String(...$args); }; + $ptrType(rtype).prototype.String = function String$2() { + var s, t; + t = this; + s = $clone(t.nameOff(t.str), name).name(); + if (!((((t.tflag & 2) >>> 0) === 0))) { + return $substring(s, 1); + } + return s; + }; + $ptrType(rtype).prototype.Size = function Size() { + var t; + t = this; + return t.size; + }; + $ptrType(rtype).prototype.Bits = function Bits() { + var k, t; + t = this; + if (t === ptrType$2.nil) { + $panic(new $String("reflect: Bits of nil Type")); + } + k = t.Kind(); + if (k < 2 || k > 16) { + $panic(new $String("reflect: Bits of non-arithmetic Type " + t.String())); + } + return $imul(((t.size >> 0)), 8); + }; + $ptrType(rtype).prototype.Align = function Align() { + var t; + t = this; + return ((t.align >> 0)); + }; + $ptrType(rtype).prototype.FieldAlign = function FieldAlign() { + var t; + t = this; + return ((t.fieldAlign >> 0)); + }; + $ptrType(rtype).prototype.Kind = function Kind$2() { + var t; + t = this; + return ((((t.kind & 31) >>> 0) >>> 0)); + }; + $ptrType(rtype).prototype.common = function common() { + var t; + t = this; + return t; + }; + $ptrType(rtype).prototype.exportedMethods = function exportedMethods() { + var t, ut; + t = this; + ut = t.uncommon(); + if (ut === ptrType$9.nil) { + return sliceType$13.nil; + } + return ut.exportedMethods(); + }; + $ptrType(rtype).prototype.NumMethod = function NumMethod$1() { + var t, tt; + t = this; + if (t.Kind() === 20) { + tt = (t.kindType); + return tt.NumMethod(); + } + return t.exportedMethods().$length; + }; + $ptrType(rtype).prototype.MethodByName = function MethodByName$1(name$1) { + var {$24r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, h, i, j, m, methods, name$1, ok, t, tt, ut, $s, $r, $c} = $restore(this, {name$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$2.nil, 0, 0), 0); + ok = false; + t = this; + if (t.Kind() === 20) { + tt = (t.kindType); + _tuple = tt.MethodByName(name$1); + Method.copy(m, _tuple[0]); + ok = _tuple[1]; + $s = -1; return [m, ok]; + } + ut = t.uncommon(); + if (ut === ptrType$9.nil) { + _tmp = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$2.nil, 0, 0), 0); + _tmp$1 = false; + Method.copy(m, _tmp); + ok = _tmp$1; + $s = -1; return [m, ok]; + } + methods = ut.exportedMethods(); + _tmp$2 = 0; + _tmp$3 = methods.$length; + i = _tmp$2; + j = _tmp$3; + while (true) { + if (!(i < j)) { break; } + h = ((((((i + j >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + if (!($clone(t.nameOff(((h < 0 || h >= methods.$length) ? ($throwRuntimeError("index out of range"), undefined) : methods.$array[methods.$offset + h]).name), name).name() >= name$1)) { + i = h + 1 >> 0; + } else { + j = h; + } + } + /* */ if (i < methods.$length && name$1 === $clone(t.nameOff(((i < 0 || i >= methods.$length) ? ($throwRuntimeError("index out of range"), undefined) : methods.$array[methods.$offset + i]).name), name).name()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (i < methods.$length && name$1 === $clone(t.nameOff(((i < 0 || i >= methods.$length) ? ($throwRuntimeError("index out of range"), undefined) : methods.$array[methods.$offset + i]).name), name).name()) { */ case 1: + _r = t.Method(i); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp$4 = $clone(_r, Method); + _tmp$5 = true; + Method.copy(m, _tmp$4); + ok = _tmp$5; + $24r = [m, ok]; + $s = 4; case 4: return $24r; + /* } */ case 2: + _tmp$6 = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$2.nil, 0, 0), 0); + _tmp$7 = false; + Method.copy(m, _tmp$6); + ok = _tmp$7; + $s = -1; return [m, ok]; + /* */ } return; } var $f = {$blk: MethodByName$1, $c: true, $r, $24r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, h, i, j, m, methods, name$1, ok, t, tt, ut, $s};return $f; + }; + $ptrType(rtype).prototype.PkgPath = function PkgPath() { + var t, ut; + t = this; + if (((t.tflag & 4) >>> 0) === 0) { + return ""; + } + ut = t.uncommon(); + if (ut === ptrType$9.nil) { + return ""; + } + return $clone(t.nameOff(ut.pkgPath), name).name(); + }; + $ptrType(rtype).prototype.hasName = function hasName() { + var t; + t = this; + return !((((t.tflag & 4) >>> 0) === 0)); + }; + $ptrType(rtype).prototype.Name = function Name() { + var _1, i, s, sqBrackets, t; + t = this; + if (!t.hasName()) { + return ""; + } + s = t.String(); + i = s.length - 1 >> 0; + sqBrackets = 0; + while (true) { + if (!(i >= 0 && (!((s.charCodeAt(i) === 46)) || !((sqBrackets === 0))))) { break; } + _1 = s.charCodeAt(i); + if (_1 === (93)) { + sqBrackets = sqBrackets + (1) >> 0; + } else if (_1 === (91)) { + sqBrackets = sqBrackets - (1) >> 0; + } + i = i - (1) >> 0; + } + return $substring(s, (i + 1 >> 0)); + }; + $ptrType(rtype).prototype.ChanDir = function ChanDir$1() { + var t, tt; + t = this; + if (!((t.Kind() === 18))) { + $panic(new $String("reflect: ChanDir of non-chan type " + t.String())); + } + tt = (t.kindType); + return ((tt.dir >> 0)); + }; + $ptrType(rtype).prototype.IsVariadic = function IsVariadic() { + var t, tt; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: IsVariadic of non-func type " + t.String())); + } + tt = (t.kindType); + return !((((tt.outCount & 32768) >>> 0) === 0)); + }; + $ptrType(rtype).prototype.Elem = function Elem() { + var _1, t, tt, tt$1, tt$2, tt$3, tt$4; + t = this; + _1 = t.Kind(); + if (_1 === (17)) { + tt = (t.kindType); + return toType(tt.elem); + } else if (_1 === (18)) { + tt$1 = (t.kindType); + return toType(tt$1.elem); + } else if (_1 === (21)) { + tt$2 = (t.kindType); + return toType(tt$2.elem); + } else if (_1 === (22)) { + tt$3 = (t.kindType); + return toType(tt$3.elem); + } else if (_1 === (23)) { + tt$4 = (t.kindType); + return toType(tt$4.elem); + } + $panic(new $String("reflect: Elem of invalid type " + t.String())); + }; + $ptrType(rtype).prototype.Field = function Field(i) { + var i, t, tt; + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: Field of non-struct type " + t.String())); + } + tt = (t.kindType); + return tt.Field(i); + }; + $ptrType(rtype).prototype.FieldByIndex = function FieldByIndex$1(index) { + var {$24r, _r, index, t, tt, $s, $r, $c} = $restore(this, {index}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: FieldByIndex of non-struct type " + t.String())); + } + tt = (t.kindType); + _r = tt.FieldByIndex(index); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: FieldByIndex$1, $c: true, $r, $24r, _r, index, t, tt, $s};return $f; + }; + $ptrType(rtype).prototype.FieldByName = function FieldByName$1(name$1) { + var {$24r, _r, name$1, t, tt, $s, $r, $c} = $restore(this, {name$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: FieldByName of non-struct type " + t.String())); + } + tt = (t.kindType); + _r = tt.FieldByName(name$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: FieldByName$1, $c: true, $r, $24r, _r, name$1, t, tt, $s};return $f; + }; + $ptrType(rtype).prototype.FieldByNameFunc = function FieldByNameFunc$1(match) { + var {$24r, _r, match, t, tt, $s, $r, $c} = $restore(this, {match}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: FieldByNameFunc of non-struct type " + t.String())); + } + tt = (t.kindType); + _r = tt.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: FieldByNameFunc$1, $c: true, $r, $24r, _r, match, t, tt, $s};return $f; + }; + $ptrType(rtype).prototype.In = function In(i) { + var i, t, tt, x; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: In of non-func type " + t.String())); + } + tt = (t.kindType); + return toType((x = tt.in$(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))); + }; + $ptrType(rtype).prototype.Key = function Key$1() { + var t, tt; + t = this; + if (!((t.Kind() === 21))) { + $panic(new $String("reflect: Key of non-map type " + t.String())); + } + tt = (t.kindType); + return toType(tt.key); + }; + $ptrType(rtype).prototype.Len = function Len() { + var t, tt; + t = this; + if (!((t.Kind() === 17))) { + $panic(new $String("reflect: Len of non-array type " + t.String())); + } + tt = (t.kindType); + return ((tt.len >> 0)); + }; + $ptrType(rtype).prototype.NumField = function NumField$1() { + var t, tt; + t = this; + if (!((t.Kind() === 25))) { + $panic(new $String("reflect: NumField of non-struct type " + t.String())); + } + tt = (t.kindType); + return tt.fields.$length; + }; + $ptrType(rtype).prototype.NumIn = function NumIn() { + var t, tt; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: NumIn of non-func type " + t.String())); + } + tt = (t.kindType); + return ((tt.inCount >> 0)); + }; + $ptrType(rtype).prototype.NumOut = function NumOut() { + var t, tt; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: NumOut of non-func type " + t.String())); + } + tt = (t.kindType); + return tt.out().$length; + }; + $ptrType(rtype).prototype.Out = function Out(i) { + var i, t, tt, x; + t = this; + if (!((t.Kind() === 19))) { + $panic(new $String("reflect: Out of non-func type " + t.String())); + } + tt = (t.kindType); + return toType((x = tt.out(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))); + }; + ChanDir.prototype.String = function String$3() { + var _1, d; + d = this.$val; + _1 = d; + if (_1 === (2)) { + return "chan<-"; + } else if (_1 === (1)) { + return "<-chan"; + } else if (_1 === (3)) { + return "chan"; + } + return "ChanDir" + strconv.Itoa(((d >> 0))); + }; + $ptrType(ChanDir).prototype.String = function(...$args) { return new ChanDir(this.$get()).String(...$args); }; + $ptrType(interfaceType).prototype.Method = function Method$2(i) { + var i, m, p, pname, t, x; + m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$2.nil, 0, 0), 0); + t = this; + if (i < 0 || i >= t.methods.$length) { + return m; + } + p = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + pname = $clone(t.rtype.nameOff(p.name), name); + m.Name = $clone(pname, name).name(); + if (!$clone(pname, name).isExported()) { + m.PkgPath = $clone(pname, name).pkgPath(); + if (m.PkgPath === "") { + m.PkgPath = $clone(t.pkgPath, name).name(); + } + } + m.Type = toType(t.rtype.typeOff(p.typ)); + m.Index = i; + return m; + }; + $ptrType(interfaceType).prototype.NumMethod = function NumMethod$2() { + var t; + t = this; + return t.methods.$length; + }; + $ptrType(interfaceType).prototype.MethodByName = function MethodByName$2(name$1) { + var _i, _ref, _tmp, _tmp$1, i, m, name$1, ok, p, t, x; + m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$2.nil, 0, 0), 0); + ok = false; + t = this; + if (t === ptrType$10.nil) { + return [m, ok]; + } + p = ptrType$11.nil; + _ref = t.methods; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + p = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + if ($clone(t.rtype.nameOff(p.name), name).name() === name$1) { + _tmp = $clone(t.Method(i), Method); + _tmp$1 = true; + Method.copy(m, _tmp); + ok = _tmp$1; + return [m, ok]; + } + _i++; + } + return [m, ok]; + }; + $ptrType(StructField).prototype.IsExported = function IsExported$1() { + var f; + f = this; + return f.PkgPath === ""; + }; + StructField.prototype.IsExported = function(...$args) { return this.$val.IsExported(...$args); }; + StructTag.prototype.Get = function Get(key) { + var _tuple, key, tag, v; + tag = this.$val; + _tuple = new StructTag(tag).Lookup(key); + v = _tuple[0]; + return v; + }; + $ptrType(StructTag).prototype.Get = function(...$args) { return new StructTag(this.$get()).Get(...$args); }; + StructTag.prototype.Lookup = function Lookup(key) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, i, key, name$1, ok, qvalue, tag, value, value$1; + value = ""; + ok = false; + tag = this.$val; + while (true) { + if (!(!(tag === ""))) { break; } + i = 0; + while (true) { + if (!(i < tag.length && (tag.charCodeAt(i) === 32))) { break; } + i = i + (1) >> 0; + } + tag = $substring(tag, i); + if (tag === "") { + break; + } + i = 0; + while (true) { + if (!(i < tag.length && tag.charCodeAt(i) > 32 && !((tag.charCodeAt(i) === 58)) && !((tag.charCodeAt(i) === 34)) && !((tag.charCodeAt(i) === 127)))) { break; } + i = i + (1) >> 0; + } + if ((i === 0) || (i + 1 >> 0) >= tag.length || !((tag.charCodeAt(i) === 58)) || !((tag.charCodeAt((i + 1 >> 0)) === 34))) { + break; + } + name$1 = ($substring(tag, 0, i)); + tag = $substring(tag, (i + 1 >> 0)); + i = 1; + while (true) { + if (!(i < tag.length && !((tag.charCodeAt(i) === 34)))) { break; } + if (tag.charCodeAt(i) === 92) { + i = i + (1) >> 0; + } + i = i + (1) >> 0; + } + if (i >= tag.length) { + break; + } + qvalue = ($substring(tag, 0, (i + 1 >> 0))); + tag = $substring(tag, (i + 1 >> 0)); + if (key === name$1) { + _tuple = strconv.Unquote(qvalue); + value$1 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + break; + } + _tmp = value$1; + _tmp$1 = true; + value = _tmp; + ok = _tmp$1; + return [value, ok]; + } + } + _tmp$2 = ""; + _tmp$3 = false; + value = _tmp$2; + ok = _tmp$3; + return [value, ok]; + }; + $ptrType(StructTag).prototype.Lookup = function(...$args) { return new StructTag(this.$get()).Lookup(...$args); }; + $ptrType(structType).prototype.Field = function Field$1(i) { + var f, i, p, t, tag, x; + f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$8.nil, false); + t = this; + if (i < 0 || i >= t.fields.$length) { + $panic(new $String("reflect: Field index out of bounds")); + } + p = (x = t.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + f.Type = toType(p.typ); + f.Name = $clone(p.name, name).name(); + f.Anonymous = p.embedded(); + if (!$clone(p.name, name).isExported()) { + f.PkgPath = $clone(t.pkgPath, name).name(); + } + tag = $clone(p.name, name).tag(); + if (!(tag === "")) { + f.Tag = (tag); + } + f.Offset = p.offset; + f.Index = new sliceType$8([i]); + return f; + }; + $ptrType(structType).prototype.FieldByIndex = function FieldByIndex$2(index) { + var {_i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _v, f, ft, i, index, t, x, $s, $r, $c} = $restore(this, {index}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$8.nil, false); + t = this; + f.Type = toType(t.rtype); + _ref = index; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (i > 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (i > 0) { */ case 3: + ft = f.Type; + _r = ft.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + if (!(_r === 22)) { _v = false; $s = 7; continue s; } + _r$1 = ft.Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2 === 25; case 7: + /* */ if (_v) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_v) { */ case 5: + _r$3 = ft.Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ft = _r$3; + /* } */ case 6: + f.Type = ft; + /* } */ case 4: + _r$4 = f.Type.Field(x); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + StructField.copy(f, _r$4); + _i++; + $s = 1; continue; + case 2: + $s = -1; return f; + /* */ } return; } var $f = {$blk: FieldByIndex$2, $c: true, $r, _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _v, f, ft, i, index, t, x, $s};return $f; + }; + $ptrType(structType).prototype.FieldByNameFunc = function FieldByNameFunc$2(match) { + var {_entry, _entry$1, _entry$2, _entry$3, _i, _i$1, _key, _key$1, _key$2, _key$3, _r, _r$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, count, current, f, fname, i, index, match, next, nextCount, ntyp, ok, result, scan, styp, t, t$1, visited, x, $s, $r, $c} = $restore(this, {match}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + result = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$8.nil, false); + ok = false; + t = this; + current = new sliceType$14([]); + next = new sliceType$14([$clone(new fieldScan.ptr(t, sliceType$8.nil), fieldScan)]); + nextCount = false; + visited = $makeMap(ptrType$12.keyFor, []); + /* while (true) { */ case 1: + /* if (!(next.$length > 0)) { break; } */ if(!(next.$length > 0)) { $s = 2; continue; } + _tmp = next; + _tmp$1 = $subslice(current, 0, 0); + current = _tmp; + next = _tmp$1; + count = nextCount; + nextCount = false; + _ref = current; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + scan = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), fieldScan); + t$1 = scan.typ; + if ((_entry = $mapIndex(visited,ptrType$12.keyFor(t$1)), _entry !== undefined ? _entry.v : false)) { + _i++; + /* continue; */ $s = 3; continue; + } + _key = t$1; (visited || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$12.keyFor(_key), { k: _key, v: true }); + _ref$1 = t$1.fields; + _i$1 = 0; + /* while (true) { */ case 5: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 6; continue; } + i = _i$1; + f = (x = t$1.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + fname = $clone(f.name, name).name(); + ntyp = ptrType$2.nil; + /* */ if (f.embedded()) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (f.embedded()) { */ case 7: + ntyp = f.typ; + /* */ if (ntyp.Kind() === 22) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (ntyp.Kind() === 22) { */ case 9: + _r = ntyp.Elem().common(); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ntyp = _r; + /* } */ case 10: + /* } */ case 8: + _r$1 = match(fname); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (_r$1) { */ case 12: + if ((_entry$1 = $mapIndex(count,ptrType$12.keyFor(t$1)), _entry$1 !== undefined ? _entry$1.v : 0) > 1 || ok) { + _tmp$2 = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$8.nil, false); + _tmp$3 = false; + StructField.copy(result, _tmp$2); + ok = _tmp$3; + $s = -1; return [result, ok]; + } + StructField.copy(result, t$1.Field(i)); + result.Index = sliceType$8.nil; + result.Index = $appendSlice(result.Index, scan.index); + result.Index = $append(result.Index, i); + ok = true; + _i$1++; + /* continue; */ $s = 5; continue; + /* } */ case 13: + if (ok || ntyp === ptrType$2.nil || !((ntyp.Kind() === 25))) { + _i$1++; + /* continue; */ $s = 5; continue; + } + styp = (ntyp.kindType); + if ((_entry$2 = $mapIndex(nextCount,ptrType$12.keyFor(styp)), _entry$2 !== undefined ? _entry$2.v : 0) > 0) { + _key$1 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$12.keyFor(_key$1), { k: _key$1, v: 2 }); + _i$1++; + /* continue; */ $s = 5; continue; + } + if (nextCount === false) { + nextCount = $makeMap(ptrType$12.keyFor, []); + } + _key$2 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$12.keyFor(_key$2), { k: _key$2, v: 1 }); + if ((_entry$3 = $mapIndex(count,ptrType$12.keyFor(t$1)), _entry$3 !== undefined ? _entry$3.v : 0) > 1) { + _key$3 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$12.keyFor(_key$3), { k: _key$3, v: 2 }); + } + index = sliceType$8.nil; + index = $appendSlice(index, scan.index); + index = $append(index, i); + next = $append(next, new fieldScan.ptr(styp, index)); + _i$1++; + $s = 5; continue; + case 6: + _i++; + $s = 3; continue; + case 4: + if (ok) { + /* break; */ $s = 2; continue; + } + $s = 1; continue; + case 2: + $s = -1; return [result, ok]; + /* */ } return; } var $f = {$blk: FieldByNameFunc$2, $c: true, $r, _entry, _entry$1, _entry$2, _entry$3, _i, _i$1, _key, _key$1, _key$2, _key$3, _r, _r$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, count, current, f, fname, i, index, match, next, nextCount, ntyp, ok, result, scan, styp, t, t$1, visited, x, $s};return $f; + }; + $ptrType(structType).prototype.FieldByName = function FieldByName$2(name$1) { + var {$24r, _i, _r, _ref, _tmp, _tmp$1, _tuple, f, hasEmbeds, i, name$1, present, t, tf, x, $s, $r, $c} = $restore(this, {name$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + name$1 = [name$1]; + f = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$8.nil, false); + present = false; + t = this; + hasEmbeds = false; + if (!(name$1[0] === "")) { + _ref = t.fields; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + tf = (x = t.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + if ($clone(tf.name, name).name() === name$1[0]) { + _tmp = $clone(t.Field(i), StructField); + _tmp$1 = true; + StructField.copy(f, _tmp); + present = _tmp$1; + $s = -1; return [f, present]; + } + if (tf.embedded()) { + hasEmbeds = true; + } + _i++; + } + } + if (!hasEmbeds) { + $s = -1; return [f, present]; + } + _r = t.FieldByNameFunc((function(name$1) { return function structType·FieldByName·func1(s) { + var s; + return s === name$1[0]; + }; })(name$1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + StructField.copy(f, _tuple[0]); + present = _tuple[1]; + $24r = [f, present]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: FieldByName$2, $c: true, $r, $24r, _i, _r, _ref, _tmp, _tmp$1, _tuple, f, hasEmbeds, i, name$1, present, t, tf, x, $s};return $f; + }; + rtypeOf = function rtypeOf$1(i) { + var eface, i; + eface = $clone(i, emptyInterface); + return eface.typ; + }; + PtrTo = function PtrTo$1(t) { + var t; + return PointerTo(t); + }; + $pkg.PtrTo = PtrTo; + PointerTo = function PointerTo$1(t) { + var t; + return $assertType(t, ptrType$2).ptrTo(); + }; + $pkg.PointerTo = PointerTo; + $ptrType(rtype).prototype.Implements = function Implements(u) { + var {_r, t, u, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if ($interfaceIsEqual(u, $ifaceNil)) { + $panic(new $String("reflect: nil type passed to Type.Implements")); + } + _r = u.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 20))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 20))) { */ case 1: + $panic(new $String("reflect: non-interface type passed to Type.Implements")); + /* } */ case 2: + $s = -1; return implements$1($assertType(u, ptrType$2), t); + /* */ } return; } var $f = {$blk: Implements, $c: true, $r, _r, t, u, $s};return $f; + }; + $ptrType(rtype).prototype.AssignableTo = function AssignableTo(u) { + var {$24r, _r, t, u, uu, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if ($interfaceIsEqual(u, $ifaceNil)) { + $panic(new $String("reflect: nil type passed to Type.AssignableTo")); + } + uu = $assertType(u, ptrType$2); + _r = directlyAssignable(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r || implements$1(uu, t); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: AssignableTo, $c: true, $r, $24r, _r, t, u, uu, $s};return $f; + }; + $ptrType(rtype).prototype.ConvertibleTo = function ConvertibleTo(u) { + var {$24r, _r, t, u, uu, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if ($interfaceIsEqual(u, $ifaceNil)) { + $panic(new $String("reflect: nil type passed to Type.ConvertibleTo")); + } + uu = $assertType(u, ptrType$2); + _r = convertOp(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = !(_r === $throwNilPointerError); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ConvertibleTo, $c: true, $r, $24r, _r, t, u, uu, $s};return $f; + }; + implements$1 = function implements$2(T, V) { + var T, V, i, i$1, j, j$1, t, tm, tm$1, tmName, tmName$1, tmPkgPath, tmPkgPath$1, v, v$1, vm, vm$1, vmName, vmName$1, vmPkgPath, vmPkgPath$1, vmethods, x, x$1, x$2; + if (!((T.Kind() === 20))) { + return false; + } + t = (T.kindType); + if (t.methods.$length === 0) { + return true; + } + if (V.Kind() === 20) { + v = (V.kindType); + i = 0; + j = 0; + while (true) { + if (!(j < v.methods.$length)) { break; } + tm = (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + tmName = $clone(t.rtype.nameOff(tm.name), name); + vm = (x$1 = v.methods, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j])); + vmName = $clone(V.nameOff(vm.name), name); + if ($clone(vmName, name).name() === $clone(tmName, name).name() && V.typeOff(vm.typ) === t.rtype.typeOff(tm.typ)) { + if (!$clone(tmName, name).isExported()) { + tmPkgPath = $clone(tmName, name).pkgPath(); + if (tmPkgPath === "") { + tmPkgPath = $clone(t.pkgPath, name).name(); + } + vmPkgPath = $clone(vmName, name).pkgPath(); + if (vmPkgPath === "") { + vmPkgPath = $clone(v.pkgPath, name).name(); + } + if (!(tmPkgPath === vmPkgPath)) { + j = j + (1) >> 0; + continue; + } + } + i = i + (1) >> 0; + if (i >= t.methods.$length) { + return true; + } + } + j = j + (1) >> 0; + } + return false; + } + v$1 = V.uncommon(); + if (v$1 === ptrType$9.nil) { + return false; + } + i$1 = 0; + vmethods = v$1.methods(); + j$1 = 0; + while (true) { + if (!(j$1 < ((v$1.mcount >> 0)))) { break; } + tm$1 = (x$2 = t.methods, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1])); + tmName$1 = $clone(t.rtype.nameOff(tm$1.name), name); + vm$1 = $clone(((j$1 < 0 || j$1 >= vmethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : vmethods.$array[vmethods.$offset + j$1]), method); + vmName$1 = $clone(V.nameOff(vm$1.name), name); + if ($clone(vmName$1, name).name() === $clone(tmName$1, name).name() && V.typeOff(vm$1.mtyp) === t.rtype.typeOff(tm$1.typ)) { + if (!$clone(tmName$1, name).isExported()) { + tmPkgPath$1 = $clone(tmName$1, name).pkgPath(); + if (tmPkgPath$1 === "") { + tmPkgPath$1 = $clone(t.pkgPath, name).name(); + } + vmPkgPath$1 = $clone(vmName$1, name).pkgPath(); + if (vmPkgPath$1 === "") { + vmPkgPath$1 = $clone(V.nameOff(v$1.pkgPath), name).name(); + } + if (!(tmPkgPath$1 === vmPkgPath$1)) { + j$1 = j$1 + (1) >> 0; + continue; + } + } + i$1 = i$1 + (1) >> 0; + if (i$1 >= t.methods.$length) { + return true; + } + } + j$1 = j$1 + (1) >> 0; + } + return false; + }; + specialChannelAssignability = function specialChannelAssignability$1(T, V) { + var {$24r, T, V, _r, _v, $s, $r, $c} = $restore(this, {T, V}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!((V.ChanDir() === 3) && (T.Name() === "" || V.Name() === ""))) { _v = false; $s = 1; continue s; } + _r = haveIdenticalType(T.Elem(), V.Elem(), true); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 1: + $24r = _v; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: specialChannelAssignability$1, $c: true, $r, $24r, T, V, _r, _v, $s};return $f; + }; + directlyAssignable = function directlyAssignable$1(T, V) { + var {$24r, T, V, _r, _r$1, _v, $s, $r, $c} = $restore(this, {T, V}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (T === V) { + $s = -1; return true; + } + if (T.hasName() && V.hasName() || !((T.Kind() === V.Kind()))) { + $s = -1; return false; + } + if (!(T.Kind() === 18)) { _v = false; $s = 3; continue s; } + _r = specialChannelAssignability(T, V); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return true; + /* } */ case 2: + _r$1 = haveIdenticalUnderlyingType(T, V, true); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 6; case 6: return $24r; + /* */ } return; } var $f = {$blk: directlyAssignable$1, $c: true, $r, $24r, T, V, _r, _r$1, _v, $s};return $f; + }; + haveIdenticalType = function haveIdenticalType$1(T, V, cmpTags) { + var {$24r, T, V, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _v, _v$1, cmpTags, $s, $r, $c} = $restore(this, {T, V, cmpTags}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (cmpTags) { + $s = -1; return $interfaceIsEqual(T, V); + } + _r = T.Name(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = V.Name(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (!(_r === _r$1)) { _v$1 = true; $s = 4; continue s; } + _r$2 = T.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = V.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v$1 = !((_r$2 === _r$3)); case 4: + if (_v$1) { _v = true; $s = 3; continue s; } + _r$4 = T.PkgPath(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = V.PkgPath(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _v = !(_r$4 === _r$5); case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return false; + /* } */ case 2: + _r$6 = T.common(); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg = _r$6; + _r$7 = V.common(); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _arg$1 = _r$7; + _r$8 = haveIdenticalUnderlyingType(_arg, _arg$1, false); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $24r = _r$8; + $s = 14; case 14: return $24r; + /* */ } return; } var $f = {$blk: haveIdenticalType$1, $c: true, $r, $24r, T, V, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _v, _v$1, cmpTags, $s};return $f; + }; + haveIdenticalUnderlyingType = function haveIdenticalUnderlyingType$1(T, V, cmpTags) { + var {$24r, $24r$1, $24r$2, $24r$3, T, V, _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _v, _v$1, _v$2, cmpTags, i, i$1, i$2, kind$1, t, t$1, t$2, tf, v, v$1, v$2, vf, x, x$1, $s, $r, $c} = $restore(this, {T, V, cmpTags}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (T === V) { + $s = -1; return true; + } + kind$1 = T.Kind(); + if (!((kind$1 === V.Kind()))) { + $s = -1; return false; + } + if (1 <= kind$1 && kind$1 <= 16 || (kind$1 === 24) || (kind$1 === 26)) { + $s = -1; return true; + } + _1 = kind$1; + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if (_1 === (18)) { $s = 3; continue; } + /* */ if (_1 === (19)) { $s = 4; continue; } + /* */ if (_1 === (20)) { $s = 5; continue; } + /* */ if (_1 === (21)) { $s = 6; continue; } + /* */ if ((_1 === (22)) || (_1 === (23))) { $s = 7; continue; } + /* */ if (_1 === (25)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === (17)) { */ case 2: + if (!(T.Len() === V.Len())) { _v = false; $s = 10; continue s; } + _r = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 10: + $24r = _v; + $s = 12; case 12: return $24r; + /* } else if (_1 === (18)) { */ case 3: + if (!(V.ChanDir() === T.ChanDir())) { _v$1 = false; $s = 13; continue s; } + _r$1 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v$1 = _r$1; case 13: + $24r$1 = _v$1; + $s = 15; case 15: return $24r$1; + /* } else if (_1 === (19)) { */ case 4: + t = (T.kindType); + v = (V.kindType); + if (!((t.outCount === v.outCount)) || !((t.inCount === v.inCount))) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 16: + /* if (!(i < t.rtype.NumIn())) { break; } */ if(!(i < t.rtype.NumIn())) { $s = 17; continue; } + _r$2 = haveIdenticalType(t.rtype.In(i), v.rtype.In(i), cmpTags); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!_r$2) { */ case 18: + $s = -1; return false; + /* } */ case 19: + i = i + (1) >> 0; + $s = 16; continue; + case 17: + i$1 = 0; + /* while (true) { */ case 21: + /* if (!(i$1 < t.rtype.NumOut())) { break; } */ if(!(i$1 < t.rtype.NumOut())) { $s = 22; continue; } + _r$3 = haveIdenticalType(t.rtype.Out(i$1), v.rtype.Out(i$1), cmpTags); /* */ $s = 25; case 25: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (!_r$3) { */ case 23: + $s = -1; return false; + /* } */ case 24: + i$1 = i$1 + (1) >> 0; + $s = 21; continue; + case 22: + $s = -1; return true; + /* } else if (_1 === (20)) { */ case 5: + t$1 = (T.kindType); + v$1 = (V.kindType); + if ((t$1.methods.$length === 0) && (v$1.methods.$length === 0)) { + $s = -1; return true; + } + $s = -1; return false; + /* } else if (_1 === (21)) { */ case 6: + _r$4 = haveIdenticalType(T.Key(), V.Key(), cmpTags); /* */ $s = 27; case 27: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + if (!(_r$4)) { _v$2 = false; $s = 26; continue s; } + _r$5 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _v$2 = _r$5; case 26: + $24r$2 = _v$2; + $s = 29; case 29: return $24r$2; + /* } else if ((_1 === (22)) || (_1 === (23))) { */ case 7: + _r$6 = haveIdenticalType(T.Elem(), V.Elem(), cmpTags); /* */ $s = 30; case 30: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$3 = _r$6; + $s = 31; case 31: return $24r$3; + /* } else if (_1 === (25)) { */ case 8: + t$2 = (T.kindType); + v$2 = (V.kindType); + if (!((t$2.fields.$length === v$2.fields.$length))) { + $s = -1; return false; + } + if (!($clone(t$2.pkgPath, name).name() === $clone(v$2.pkgPath, name).name())) { + $s = -1; return false; + } + _ref = t$2.fields; + _i = 0; + /* while (true) { */ case 32: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 33; continue; } + i$2 = _i; + tf = (x = t$2.fields, ((i$2 < 0 || i$2 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i$2])); + vf = (x$1 = v$2.fields, ((i$2 < 0 || i$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$2])); + if (!($clone(tf.name, name).name() === $clone(vf.name, name).name())) { + $s = -1; return false; + } + _r$7 = haveIdenticalType(tf.typ, vf.typ, cmpTags); /* */ $s = 36; case 36: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (!_r$7) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (!_r$7) { */ case 34: + $s = -1; return false; + /* } */ case 35: + if (cmpTags && !($clone(tf.name, name).tag() === $clone(vf.name, name).tag())) { + $s = -1; return false; + } + if (!((tf.offset === vf.offset))) { + $s = -1; return false; + } + if (!(tf.embedded() === vf.embedded())) { + $s = -1; return false; + } + _i++; + $s = 32; continue; + case 33: + $s = -1; return true; + /* } */ case 9: + case 1: + $s = -1; return false; + /* */ } return; } var $f = {$blk: haveIdenticalUnderlyingType$1, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, T, V, _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _v, _v$1, _v$2, cmpTags, i, i$1, i$2, kind$1, t, t$1, t$2, tf, v, v$1, v$2, vf, x, x$1, $s};return $f; + }; + toType = function toType$1(t) { + var t; + if (t === ptrType$2.nil) { + return $ifaceNil; + } + return t; + }; + ifaceIndir = function ifaceIndir$1(t) { + var t; + return ((t.kind & 32) >>> 0) === 0; + }; + init = function init$1() { + var {used, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + used = (function init·func1(i) { + var i; + }); + $r = used((x = new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$1 = new uncommonType.ptr(0, 0, 0, 0, sliceType$13.nil), new x$1.constructor.elem(x$1))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$2 = new method.ptr(0, 0, 0, 0), new x$2.constructor.elem(x$2))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$3 = new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), ptrType$2.nil, ptrType$2.nil, 0), new x$3.constructor.elem(x$3))); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$4 = new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), ptrType$2.nil, 0), new x$4.constructor.elem(x$4))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$5 = new funcType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), 0, 0, sliceType$3.nil, sliceType$3.nil), new x$5.constructor.elem(x$5))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$6 = new interfaceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), new name.ptr(ptrType$13.nil), sliceType$16.nil), new x$6.constructor.elem(x$6))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$7 = new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), ptrType$2.nil, ptrType$2.nil, ptrType$2.nil, $throwNilPointerError, 0, 0, 0, 0), new x$7.constructor.elem(x$7))); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$8 = new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), ptrType$2.nil), new x$8.constructor.elem(x$8))); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$9 = new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), ptrType$2.nil), new x$9.constructor.elem(x$9))); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$10 = new structType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), new name.ptr(ptrType$13.nil), sliceType$17.nil), new x$10.constructor.elem(x$10))); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$11 = new imethod.ptr(0, 0), new x$11.constructor.elem(x$11))); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = used((x$12 = new structField.ptr(new name.ptr(ptrType$13.nil), ptrType$2.nil, 0), new x$12.constructor.elem(x$12))); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + initialized = true; + uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$2); + $s = -1; return; + /* */ } return; } var $f = {$blk: init$1, $c: true, $r, used, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s};return $f; + }; + New = function New$1(typ) { + var fl, pt, ptr, t, typ; + if ($interfaceIsEqual(typ, $ifaceNil)) { + $panic(new $String("reflect: New(nil)")); + } + t = $assertType(typ, ptrType$2); + pt = t.ptrTo(); + ptr = unsafe_New(t); + fl = 22; + return new Value.ptr(pt, ptr, fl); + }; + $pkg.New = New; + jsType = function jsType$1(typ) { + var typ; + return typ.jsType; + }; + reflectType = function reflectType$1(typ) { + var _1, _i, _i$1, _i$2, _i$3, _ref, _ref$1, _ref$2, _ref$3, dir, exported, exported$1, f, fields, i, i$1, i$2, i$3, i$4, i$5, imethods, in$1, m, m$1, m$2, methodSet, methods, out, outCount, params, reflectFields, reflectMethods, results, rt, typ, ut, xcount; + if (typ.reflectType === undefined) { + rt = new rtype.ptr(((($parseInt(typ.size) >> 0) >>> 0)), 0, 0, 0, 0, 0, ((($parseInt(typ.kind) >> 0) << 24 >>> 24)), $throwNilPointerError, ptrType$13.nil, resolveReflectName($clone(newName(internalStr(typ.string), "", !!(typ.exported), false), name)), 0); + rt.jsType = typ; + typ.reflectType = rt; + methodSet = $methodSet(typ); + if (!(($parseInt(methodSet.length) === 0)) || !!(typ.named)) { + rt.tflag = (rt.tflag | (1)) >>> 0; + if (!!(typ.named)) { + rt.tflag = (rt.tflag | (4)) >>> 0; + } + reflectMethods = sliceType$13.nil; + i = 0; + while (true) { + if (!(i < $parseInt(methodSet.length))) { break; } + m = methodSet[i]; + exported = internalStr(m.pkg) === ""; + if (!exported) { + i = i + (1) >> 0; + continue; + } + reflectMethods = $append(reflectMethods, new method.ptr(resolveReflectName($clone(newMethodName(m), name)), newTypeOff(reflectType(m.typ)), 0, 0)); + i = i + (1) >> 0; + } + xcount = ((reflectMethods.$length << 16 >>> 16)); + i$1 = 0; + while (true) { + if (!(i$1 < $parseInt(methodSet.length))) { break; } + m$1 = methodSet[i$1]; + exported$1 = internalStr(m$1.pkg) === ""; + if (exported$1) { + i$1 = i$1 + (1) >> 0; + continue; + } + reflectMethods = $append(reflectMethods, new method.ptr(resolveReflectName($clone(newMethodName(m$1), name)), newTypeOff(reflectType(m$1.typ)), 0, 0)); + i$1 = i$1 + (1) >> 0; + } + ut = new uncommonType.ptr(resolveReflectName($clone(newName(internalStr(typ.pkg), "", false, false), name)), (($parseInt(methodSet.length) << 16 >>> 16)), xcount, 0, reflectMethods); + ut.jsType = typ; + rt.uncommonType = ut; + } + _1 = rt.Kind(); + if (_1 === (17)) { + setKindType(rt, new arrayType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), reflectType(typ.elem), ptrType$2.nil, ((($parseInt(typ.len) >> 0) >>> 0)))); + } else if (_1 === (18)) { + dir = 3; + if (!!(typ.sendOnly)) { + dir = 2; + } + if (!!(typ.recvOnly)) { + dir = 1; + } + setKindType(rt, new chanType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), reflectType(typ.elem), ((dir >>> 0)))); + } else if (_1 === (19)) { + params = typ.params; + in$1 = $makeSlice(sliceType$3, $parseInt(params.length)); + _ref = in$1; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i$2 = _i; + ((i$2 < 0 || i$2 >= in$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$1.$array[in$1.$offset + i$2] = reflectType(params[i$2])); + _i++; + } + results = typ.results; + out = $makeSlice(sliceType$3, $parseInt(results.length)); + _ref$1 = out; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$3 = _i$1; + ((i$3 < 0 || i$3 >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i$3] = reflectType(results[i$3])); + _i$1++; + } + outCount = (($parseInt(results.length) << 16 >>> 16)); + if (!!(typ.variadic)) { + outCount = (outCount | (32768)) >>> 0; + } + setKindType(rt, new funcType.ptr($clone(rt, rtype), (($parseInt(params.length) << 16 >>> 16)), outCount, in$1, out)); + } else if (_1 === (20)) { + methods = typ.methods; + imethods = $makeSlice(sliceType$16, $parseInt(methods.length)); + _ref$2 = imethods; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$4 = _i$2; + m$2 = methods[i$4]; + imethod.copy(((i$4 < 0 || i$4 >= imethods.$length) ? ($throwRuntimeError("index out of range"), undefined) : imethods.$array[imethods.$offset + i$4]), new imethod.ptr(resolveReflectName($clone(newMethodName(m$2), name)), newTypeOff(reflectType(m$2.typ)))); + _i$2++; + } + setKindType(rt, new interfaceType.ptr($clone(rt, rtype), $clone(newName(internalStr(typ.pkg), "", false, false), name), imethods)); + } else if (_1 === (21)) { + setKindType(rt, new mapType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), reflectType(typ.key), reflectType(typ.elem), ptrType$2.nil, $throwNilPointerError, 0, 0, 0, 0)); + } else if (_1 === (22)) { + setKindType(rt, new ptrType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), reflectType(typ.elem))); + } else if (_1 === (23)) { + setKindType(rt, new sliceType.ptr(new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0), reflectType(typ.elem))); + } else if (_1 === (25)) { + fields = typ.fields; + reflectFields = $makeSlice(sliceType$17, $parseInt(fields.length)); + _ref$3 = reflectFields; + _i$3 = 0; + while (true) { + if (!(_i$3 < _ref$3.$length)) { break; } + i$5 = _i$3; + f = fields[i$5]; + structField.copy(((i$5 < 0 || i$5 >= reflectFields.$length) ? ($throwRuntimeError("index out of range"), undefined) : reflectFields.$array[reflectFields.$offset + i$5]), new structField.ptr($clone(newName(internalStr(f.name), internalStr(f.tag), !!(f.exported), !!(f.embedded)), name), reflectType(f.typ), ((i$5 >>> 0)))); + _i$3++; + } + setKindType(rt, new structType.ptr($clone(rt, rtype), $clone(newName(internalStr(typ.pkgPath), "", false, false), name), reflectFields)); + } + } + return ((typ.reflectType)); + }; + setKindType = function setKindType$1(rt, kindType) { + var kindType, rt; + rt.kindType = kindType; + kindType.rtype = rt; + }; + $ptrType(uncommonType).prototype.methods = function methods() { + var t; + t = this; + return t._methods; + }; + $ptrType(uncommonType).prototype.exportedMethods = function exportedMethods$1() { + var t; + t = this; + return $subslice(t._methods, 0, t.xcount, t.xcount); + }; + $ptrType(rtype).prototype.uncommon = function uncommon() { + var obj, t; + t = this; + obj = t.uncommonType; + if (obj === undefined) { + return ptrType$9.nil; + } + return ((obj)); + }; + $ptrType(funcType).prototype.in$ = function in$1() { + var t; + t = this; + return t._in; + }; + $ptrType(funcType).prototype.out = function out() { + var t; + t = this; + return t._out; + }; + $ptrType(name).prototype.name = function name$1() { + var _entry, n, s; + s = ""; + n = this; + s = (_entry = $mapIndex(nameMap,ptrType$13.keyFor(n.bytes)), _entry !== undefined ? _entry.v : ptrType$17.nil).name; + return s; + }; + name.prototype.name = function(...$args) { return this.$val.name(...$args); }; + $ptrType(name).prototype.tag = function tag() { + var _entry, n, s; + s = ""; + n = this; + s = (_entry = $mapIndex(nameMap,ptrType$13.keyFor(n.bytes)), _entry !== undefined ? _entry.v : ptrType$17.nil).tag; + return s; + }; + name.prototype.tag = function(...$args) { return this.$val.tag(...$args); }; + $ptrType(name).prototype.pkgPath = function pkgPath() { + var _entry, n; + n = this; + return (_entry = $mapIndex(nameMap,ptrType$13.keyFor(n.bytes)), _entry !== undefined ? _entry.v : ptrType$17.nil).pkgPath; + }; + name.prototype.pkgPath = function(...$args) { return this.$val.pkgPath(...$args); }; + $ptrType(name).prototype.isExported = function isExported() { + var _entry, n; + n = this; + return (_entry = $mapIndex(nameMap,ptrType$13.keyFor(n.bytes)), _entry !== undefined ? _entry.v : ptrType$17.nil).exported; + }; + name.prototype.isExported = function(...$args) { return this.$val.isExported(...$args); }; + $ptrType(name).prototype.embedded = function embedded$1() { + var _entry, n; + n = this; + return (_entry = $mapIndex(nameMap,ptrType$13.keyFor(n.bytes)), _entry !== undefined ? _entry.v : ptrType$17.nil).embedded; + }; + name.prototype.embedded = function(...$args) { return this.$val.embedded(...$args); }; + newName = function newName$1(n, tag$1, exported, embedded$2) { + var _key, b, embedded$2, exported, n, tag$1; + b = $newDataPointer(0, ptrType$13); + _key = b; (nameMap || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$13.keyFor(_key), { k: _key, v: new nameData.ptr(n, tag$1, exported, embedded$2, "") }); + return new name.ptr(b); + }; + newMethodName = function newMethodName$1(m) { + var _key, b, m; + b = $newDataPointer(0, ptrType$13); + _key = b; (nameMap || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$13.keyFor(_key), { k: _key, v: new nameData.ptr(internalStr(m.name), "", internalStr(m.pkg) === "", false, internalStr(m.pkg)) }); + return new name.ptr(b); + }; + $ptrType(rtype).prototype.nameOff = function nameOff$1(off) { + var off, t, x; + t = this; + return (x = ((off >> 0)), ((x < 0 || x >= nameOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : nameOffList.$array[nameOffList.$offset + x])); + }; + resolveReflectName = function resolveReflectName$1(n) { + var i, n; + i = nameOffList.$length; + nameOffList = $append(nameOffList, n); + return ((i >> 0)); + }; + $ptrType(rtype).prototype.typeOff = function typeOff$1(off) { + var off, t, x; + t = this; + return (x = ((off >> 0)), ((x < 0 || x >= typeOffList.$length) ? ($throwRuntimeError("index out of range"), undefined) : typeOffList.$array[typeOffList.$offset + x])); + }; + newTypeOff = function newTypeOff$1(t) { + var i, t; + i = typeOffList.$length; + typeOffList = $append(typeOffList, t); + return ((i >> 0)); + }; + internalStr = function internalStr$1(strObj) { + var c, strObj; + c = new structType$3.ptr(""); + c.str = strObj; + return c.str; + }; + isWrapped = function isWrapped$1(typ) { + var typ; + return !!(jsType(typ).wrapped); + }; + copyStruct = function copyStruct$1(dst, src, typ) { + var dst, fields, i, prop, src, typ; + fields = jsType(typ).fields; + i = 0; + while (true) { + if (!(i < $parseInt(fields.length))) { break; } + prop = $internalize(fields[i].prop, $String); + dst[$externalize(prop, $String)] = src[$externalize(prop, $String)]; + i = i + (1) >> 0; + } + }; + makeValue = function makeValue$1(t, v, fl) { + var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _v, _v$1, fl, rt, t, v, $s, $r, $c} = $restore(this, {t, v, fl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + rt = _r; + _r$1 = t.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (_r$1 === 17) { _v$1 = true; $s = 5; continue s; } + _r$2 = t.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$1 = _r$2 === 25; case 5: + if (_v$1) { _v = true; $s = 4; continue s; } + _r$3 = t.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3 === 22; case 4: + /* */ if (_v) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_v) { */ case 2: + _r$4 = t.Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = new Value.ptr(rt, (v), (fl | ((_r$4 >>> 0))) >>> 0); + $s = 10; case 10: return $24r; + /* } */ case 3: + _r$5 = t.Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r$1 = new Value.ptr(rt, ($newDataPointer(v, jsType(rt.ptrTo()))), (((fl | ((_r$5 >>> 0))) >>> 0) | 128) >>> 0); + $s = 12; case 12: return $24r$1; + /* */ } return; } var $f = {$blk: makeValue$1, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _v, _v$1, fl, rt, t, v, $s};return $f; + }; + MakeSlice = function MakeSlice$1(typ, len, cap) { + var {$24r, _r, _r$1, cap, len, typ, $s, $r, $c} = $restore(this, {typ, len, cap}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + typ = [typ]; + _r = typ[0].Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 23))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 23))) { */ case 1: + $panic(new $String("reflect.MakeSlice of non-slice type")); + /* } */ case 2: + if (len < 0) { + $panic(new $String("reflect.MakeSlice: negative len")); + } + if (cap < 0) { + $panic(new $String("reflect.MakeSlice: negative cap")); + } + if (len > cap) { + $panic(new $String("reflect.MakeSlice: len > cap")); + } + _r$1 = makeValue(typ[0], $makeSlice(jsType(typ[0]), len, cap, (function(typ) { return function MakeSlice·func1() { + var {$24r, _r$1, _r$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = typ[0].Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = jsType(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2.zero(); + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: MakeSlice·func1, $c: true, $r, $24r, _r$1, _r$2, $s};return $f; + }; })(typ)), 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: MakeSlice$1, $c: true, $r, $24r, _r, _r$1, cap, len, typ, $s};return $f; + }; + $pkg.MakeSlice = MakeSlice; + TypeOf = function TypeOf$1(i) { + var i; + if (!initialized) { + return new rtype.ptr(0, 0, 0, 0, 0, 0, 0, $throwNilPointerError, ptrType$13.nil, 0, 0); + } + if ($interfaceIsEqual(i, $ifaceNil)) { + return $ifaceNil; + } + return reflectType(i.constructor); + }; + $pkg.TypeOf = TypeOf; + ValueOf = function ValueOf$1(i) { + var {$24r, _r, i, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(i, $ifaceNil)) { + $s = -1; return new Value.ptr(ptrType$2.nil, 0, 0); + } + _r = makeValue(reflectType(i.constructor), i.$val, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ValueOf$1, $c: true, $r, $24r, _r, i, $s};return $f; + }; + $pkg.ValueOf = ValueOf; + FuncOf = function FuncOf$1(in$2, out$1, variadic) { + var {_i, _i$1, _r, _ref, _ref$1, _v, _v$1, i, i$1, in$2, jsIn, jsOut, out$1, v, v$1, variadic, x, $s, $r, $c} = $restore(this, {in$2, out$1, variadic}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(variadic)) { _v = false; $s = 3; continue s; } + if (in$2.$length === 0) { _v$1 = true; $s = 4; continue s; } + _r = (x = in$2.$length - 1 >> 0, ((x < 0 || x >= in$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$2.$array[in$2.$offset + x])).Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v$1 = !((_r === 23)); case 4: + _v = _v$1; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $panic(new $String("reflect.FuncOf: last arg of variadic func must be slice")); + /* } */ case 2: + jsIn = $makeSlice(sliceType$18, in$2.$length); + _ref = in$2; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ((i < 0 || i >= jsIn.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsIn.$array[jsIn.$offset + i] = jsType(v)); + _i++; + } + jsOut = $makeSlice(sliceType$18, out$1.$length); + _ref$1 = out$1; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + v$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + ((i$1 < 0 || i$1 >= jsOut.$length) ? ($throwRuntimeError("index out of range"), undefined) : jsOut.$array[jsOut.$offset + i$1] = jsType(v$1)); + _i$1++; + } + $s = -1; return reflectType($funcType($externalize(jsIn, sliceType$18), $externalize(jsOut, sliceType$18), $externalize(variadic, $Bool))); + /* */ } return; } var $f = {$blk: FuncOf$1, $c: true, $r, _i, _i$1, _r, _ref, _ref$1, _v, _v$1, i, i$1, in$2, jsIn, jsOut, out$1, v, v$1, variadic, x, $s};return $f; + }; + $pkg.FuncOf = FuncOf; + $ptrType(rtype).prototype.ptrTo = function ptrTo() { + var t; + t = this; + return reflectType($ptrType(jsType(t))); + }; + SliceOf = function SliceOf$1(t) { + var t; + return reflectType($sliceType(jsType(t))); + }; + $pkg.SliceOf = SliceOf; + Zero = function Zero$1(typ) { + var {$24r, _r, typ, $s, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = makeValue(typ, jsType(typ).zero(), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Zero$1, $c: true, $r, $24r, _r, typ, $s};return $f; + }; + $pkg.Zero = Zero; + unsafe_New = function unsafe_New$1(typ) { + var _1, typ; + _1 = typ.Kind(); + if (_1 === (25)) { + return (new (jsType(typ).ptr)()); + } else if (_1 === (17)) { + return (jsType(typ).zero()); + } else { + return ($newDataPointer(jsType(typ).zero(), jsType(typ.ptrTo()))); + } + }; + makeInt = function makeInt$1(f, bits, t) { + var {_1, _r, bits, f, ptr, t, typ, $s, $r, $c} = $restore(this, {f, bits, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typ = _r; + ptr = unsafe_New(typ); + _1 = typ.Kind(); + if (_1 === (3)) { + (ptr).$set(((bits.$low << 24 >> 24))); + } else if (_1 === (4)) { + (ptr).$set(((bits.$low << 16 >> 16))); + } else if ((_1 === (2)) || (_1 === (5))) { + (ptr).$set(((bits.$low >> 0))); + } else if (_1 === (6)) { + (ptr).$set((new $Int64(bits.$high, bits.$low))); + } else if (_1 === (8)) { + (ptr).$set(((bits.$low << 24 >>> 24))); + } else if (_1 === (9)) { + (ptr).$set(((bits.$low << 16 >>> 16))); + } else if ((_1 === (7)) || (_1 === (10)) || (_1 === (12))) { + (ptr).$set(((bits.$low >>> 0))); + } else if (_1 === (11)) { + (ptr).$set((bits)); + } + $s = -1; return new Value.ptr(typ, ptr, (((f | 128) >>> 0) | ((typ.Kind() >>> 0))) >>> 0); + /* */ } return; } var $f = {$blk: makeInt$1, $c: true, $r, _1, _r, bits, f, ptr, t, typ, $s};return $f; + }; + typedmemmove = function typedmemmove$1(t, dst, src) { + var dst, src, t; + dst.$set(src.$get()); + }; + makemap = function makemap$1(t, cap) { + var cap, m, t; + m = 0; + m = (new ($global.Map)()); + return m; + }; + keyFor = function keyFor$1(t, key) { + var k, key, kv, t; + kv = key; + if (!(kv.$get === undefined)) { + kv = kv.$get(); + } + k = jsType(t.Key()).keyFor(kv); + return [kv, k]; + }; + mapaccess = function mapaccess$1(t, m, key) { + var _tuple, entry, k, key, m, t; + if (!!!(m)) { + return 0; + } + _tuple = keyFor(t, key); + k = _tuple[1]; + entry = m.get(k); + if (entry === undefined) { + return 0; + } + return ($newDataPointer(entry.v, jsType(PtrTo(t.Elem())))); + }; + mapassign = function mapassign$1(t, m, key, val) { + var {_r, _tuple, entry, et, jsVal, k, key, kv, m, newVal, t, val, $s, $r, $c} = $restore(this, {t, m, key, val}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = keyFor(t, key); + kv = _tuple[0]; + k = _tuple[1]; + jsVal = val.$get(); + et = t.Elem(); + _r = et.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === 25) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r === 25) { */ case 1: + newVal = jsType(et).zero(); + copyStruct(newVal, jsVal, et); + jsVal = newVal; + /* } */ case 2: + entry = new ($global.Object)(); + entry.k = kv; + entry.v = jsVal; + m.set(k, entry); + $s = -1; return; + /* */ } return; } var $f = {$blk: mapassign$1, $c: true, $r, _r, _tuple, entry, et, jsVal, k, key, kv, m, newVal, t, val, $s};return $f; + }; + mapdelete = function mapdelete$1(t, m, key) { + var _tuple, k, key, m, t; + _tuple = keyFor(t, key); + k = _tuple[1]; + if (!!!(m)) { + return; + } + m.delete(k); + }; + mapaccess_faststr = function mapaccess_faststr$1(t, m, key) { + var key, key$24ptr, m, t, val; + val = 0; + val = mapaccess(t, m, ((key$24ptr || (key$24ptr = new ptrType$18(function() { return key; }, function($v) { key = $v; }))))); + return val; + }; + mapassign_faststr = function mapassign_faststr$1(t, m, key, val) { + var {key, m, t, val, $s, $r, $c} = $restore(this, {t, m, key, val}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + key = [key]; + $r = mapassign(t, m, ((key.$ptr || (key.$ptr = new ptrType$18(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, key)))), val); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: mapassign_faststr$1, $c: true, $r, key, m, t, val, $s};return $f; + }; + mapdelete_faststr = function mapdelete_faststr$1(t, m, key) { + var key, key$24ptr, m, t; + mapdelete(t, m, ((key$24ptr || (key$24ptr = new ptrType$18(function() { return key; }, function($v) { key = $v; }))))); + }; + $ptrType(hiter).prototype.skipUntilValidKey = function skipUntilValidKey() { + var entry, iter, k; + iter = this; + while (true) { + if (!(iter.i < $parseInt(iter.keys.length))) { break; } + k = iter.keys[iter.i]; + entry = iter.m.get(k); + if (!(entry === undefined)) { + break; + } + iter.i = iter.i + (1) >> 0; + } + }; + mapiterinit = function mapiterinit$1(t, m, it) { + var it, keys, keysIter, m, mapObj, t; + mapObj = m; + keys = new ($global.Array)(); + if (!(mapObj.keys === undefined)) { + keysIter = mapObj.keys(); + if (!(mapObj.keys === undefined)) { + keys = $global.Array.from(keysIter); + } + } + hiter.copy(it, new hiter.ptr(t, mapObj, keys, 0, null)); + }; + mapiterkey = function mapiterkey$1(it) { + var {$24r, _r, _r$1, _r$2, it, k, kv, $s, $r, $c} = $restore(this, {it}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + kv = null; + if (!(it.last === null)) { + kv = it.last; + } else { + it.skipUntilValidKey(); + if (it.i === $parseInt(it.keys.length)) { + $s = -1; return 0; + } + k = it.keys[it.i]; + kv = it.m.get(k); + it.last = kv; + } + _r = it.t.Key(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = PtrTo(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = jsType(_r$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = ($newDataPointer(kv.k, _r$2)); + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: mapiterkey$1, $c: true, $r, $24r, _r, _r$1, _r$2, it, k, kv, $s};return $f; + }; + mapiterelem = function mapiterelem$1(it) { + var {$24r, _r, _r$1, _r$2, it, k, kv, $s, $r, $c} = $restore(this, {it}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + kv = null; + if (!(it.last === null)) { + kv = it.last; + } else { + it.skipUntilValidKey(); + if (it.i === $parseInt(it.keys.length)) { + $s = -1; return 0; + } + k = it.keys[it.i]; + kv = it.m.get(k); + it.last = kv; + } + _r = it.t.Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = PtrTo(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = jsType(_r$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = ($newDataPointer(kv.v, _r$2)); + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: mapiterelem$1, $c: true, $r, $24r, _r, _r$1, _r$2, it, k, kv, $s};return $f; + }; + mapiternext = function mapiternext$1(it) { + var it; + it.last = null; + it.i = it.i + (1) >> 0; + }; + maplen = function maplen$1(m) { + var m; + return $parseInt(m.size) >> 0; + }; + cvtDirect = function cvtDirect$1(v, typ) { + var {$24r, $24r$1, _1, _2, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, k, slice, srcVal, typ, v, val, $s, $r, $c} = $restore(this, {v, typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + srcVal = $clone(v, Value).object(); + /* */ if (srcVal === jsType(v.typ).nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (srcVal === jsType(v.typ).nil) { */ case 1: + _r = makeValue(typ, jsType(typ).nil, v.flag); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + val = null; + _r$1 = typ.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + k = _r$1; + _1 = k; + /* */ if (_1 === (23)) { $s = 7; continue; } + /* */ if (_1 === (22)) { $s = 8; continue; } + /* */ if (_1 === (25)) { $s = 9; continue; } + /* */ if ((_1 === (17)) || (_1 === (1)) || (_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (24)) || (_1 === (26))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_1 === (23)) { */ case 7: + slice = new (jsType(typ))(srcVal.$array); + slice.$offset = srcVal.$offset; + slice.$length = srcVal.$length; + slice.$capacity = srcVal.$capacity; + val = $newDataPointer(slice, jsType(PtrTo(typ))); + $s = 12; continue; + /* } else if (_1 === (22)) { */ case 8: + _r$2 = typ.Elem(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.Kind(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _2 = _r$3; + /* */ if (_2 === (25)) { $s = 16; continue; } + /* */ if (_2 === (17)) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_2 === (25)) { */ case 16: + _r$4 = typ.Elem(); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if ($interfaceIsEqual(_r$4, v.typ.Elem())) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if ($interfaceIsEqual(_r$4, v.typ.Elem())) { */ case 20: + val = srcVal; + /* break; */ $s = 13; continue; + /* } */ case 21: + val = new (jsType(typ))(); + _arg = val; + _arg$1 = srcVal; + _r$5 = typ.Elem(); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$2 = _r$5; + $r = copyStruct(_arg, _arg$1, _arg$2); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 19; continue; + /* } else if (_2 === (17)) { */ case 17: + val = srcVal; + $s = 19; continue; + /* } else { */ case 18: + val = new (jsType(typ))(srcVal.$get, srcVal.$set); + /* } */ case 19: + case 13: + $s = 12; continue; + /* } else if (_1 === (25)) { */ case 9: + val = new (jsType(typ).ptr)(); + copyStruct(val, srcVal, typ); + $s = 12; continue; + /* } else if ((_1 === (17)) || (_1 === (1)) || (_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (24)) || (_1 === (26))) { */ case 10: + val = v.ptr; + $s = 12; continue; + /* } else { */ case 11: + $panic(new ValueError.ptr("reflect.Convert", k)); + /* } */ case 12: + case 5: + _r$6 = typ.common(); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = typ.Kind(); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $24r$1 = new Value.ptr(_r$6, (val), (((new flag(v.flag).ro() | ((v.flag & 128) >>> 0)) >>> 0) | ((_r$7 >>> 0))) >>> 0); + $s = 27; case 27: return $24r$1; + /* */ } return; } var $f = {$blk: cvtDirect$1, $c: true, $r, $24r, $24r$1, _1, _2, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, k, slice, srcVal, typ, v, val, $s};return $f; + }; + cvtSliceArrayPtr = function cvtSliceArrayPtr$1(v, t) { + var {$24r, _r, _r$1, _r$2, alen, array, slen, slice, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = $clone(v, Value).object(); + slen = $parseInt(slice.$length) >> 0; + _r = t.Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.Len(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + alen = _r$1; + if (alen > slen) { + $panic(new $String("reflect: cannot convert slice with length " + itoa.Itoa(slen) + " to pointer to array with length " + itoa.Itoa(alen))); + } + array = $sliceToGoArray(slice, jsType(t)); + _r$2 = t.common(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = new Value.ptr(_r$2, (array), (((v.flag & ~415) >>> 0) | 22) >>> 0); + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: cvtSliceArrayPtr$1, $c: true, $r, $24r, _r, _r$1, _r$2, alen, array, slen, slice, t, v, $s};return $f; + }; + cvtSliceArray = function cvtSliceArray$1(v, t) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, arr, dst, n, slice, t, v, $s, $r, $c} = $restore(this, {v, t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = t.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r; + _r$1 = $clone(v, Value).Len(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (n > _r$1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (n > _r$1) { */ case 2: + _r$2 = $clone(v, Value).Len(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = itoa.Itoa(_r$2); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $panic(new $String("reflect: cannot convert slice with length " + _r$3 + " to array with length " + itoa.Itoa(n))); + /* } */ case 3: + slice = $clone(v, Value).object(); + _r$4 = t.Elem(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = SliceOf(_r$4); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = MakeSlice(_r$5, n, n); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = $clone(_r$6, Value).object(); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + dst = _r$7; + $copySlice(dst, slice); + arr = dst.$array; + _r$8 = t.common(); /* */ $s = 11; case 11: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $24r = new Value.ptr(_r$8, (arr), (((v.flag & ~287) >>> 0) | 17) >>> 0); + $s = 12; case 12: return $24r; + /* */ } return; } var $f = {$blk: cvtSliceArray$1, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, arr, dst, n, slice, t, v, $s};return $f; + }; + Copy = function Copy$1(dst, src) { + var {_r, _v, dk, dst, dstVal, sk, src, srcVal, stringCopy, $s, $r, $c} = $restore(this, {dst, src}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dk = new flag(dst.flag).kind(); + if (!((dk === 17)) && !((dk === 23))) { + $panic(new ValueError.ptr("reflect.Copy", dk)); + } + if (dk === 17) { + new flag(dst.flag).mustBeAssignable(); + } + new flag(dst.flag).mustBeExported(); + sk = new flag(src.flag).kind(); + stringCopy = false; + /* */ if (!((sk === 17)) && !((sk === 23))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((sk === 17)) && !((sk === 23))) { */ case 1: + if (!(sk === 24)) { _v = false; $s = 3; continue s; } + _r = dst.typ.Elem().Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r === 8; case 3: + stringCopy = _v; + if (!stringCopy) { + $panic(new ValueError.ptr("reflect.Copy", sk)); + } + /* } */ case 2: + new flag(src.flag).mustBeExported(); + /* */ if (!stringCopy) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!stringCopy) { */ case 5: + $r = typesMustMatch("reflect.Copy", dst.typ.Elem(), src.typ.Elem()); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + dstVal = $clone(dst, Value).object(); + if (dk === 17) { + dstVal = new (jsType(SliceOf(dst.typ.Elem())))(dstVal); + } + srcVal = $clone(src, Value).object(); + if (sk === 17) { + srcVal = new (jsType(SliceOf(src.typ.Elem())))(srcVal); + } + if (stringCopy) { + $s = -1; return $parseInt($copyString(dstVal, srcVal)) >> 0; + } + $s = -1; return $parseInt($copySlice(dstVal, srcVal)) >> 0; + /* */ } return; } var $f = {$blk: Copy$1, $c: true, $r, _r, _v, dk, dst, dstVal, sk, src, srcVal, stringCopy, $s};return $f; + }; + $pkg.Copy = Copy; + methodReceiver = function methodReceiver$1(op, v, i) { + var _, fn, i, m, m$1, ms, op, prop, rcvr, t, tt, v, x; + _ = ptrType$2.nil; + t = ptrType$19.nil; + fn = 0; + prop = ""; + if (v.typ.Kind() === 20) { + tt = (v.typ.kindType); + if (i < 0 || i >= tt.methods.$length) { + $panic(new $String("reflect: internal error: invalid method index")); + } + m = (x = tt.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + if (!$clone(tt.rtype.nameOff(m.name), name).isExported()) { + $panic(new $String("reflect: " + op + " of unexported method")); + } + t = (tt.rtype.typeOff(m.typ).kindType); + prop = $clone(tt.rtype.nameOff(m.name), name).name(); + } else { + ms = v.typ.exportedMethods(); + if (((i >>> 0)) >= ((ms.$length >>> 0))) { + $panic(new $String("reflect: internal error: invalid method index")); + } + m$1 = $clone(((i < 0 || i >= ms.$length) ? ($throwRuntimeError("index out of range"), undefined) : ms.$array[ms.$offset + i]), method); + if (!$clone(v.typ.nameOff(m$1.name), name).isExported()) { + $panic(new $String("reflect: " + op + " of unexported method")); + } + t = (v.typ.typeOff(m$1.mtyp).kindType); + prop = $internalize($methodSet(jsType(v.typ))[i].prop, $String); + } + rcvr = $clone(v, Value).object(); + if (isWrapped(v.typ)) { + rcvr = new (jsType(v.typ))(rcvr); + } + fn = (rcvr[$externalize(prop, $String)]); + return [_, t, fn]; + }; + valueInterface = function valueInterface$1(v, safe) { + var {_r, cv, safe, v, $s, $r, $c} = $restore(this, {v, safe}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (v.flag === 0) { + $panic(new ValueError.ptr("reflect.Value.Interface", 0)); + } + if (safe && !((((v.flag & 96) >>> 0) === 0))) { + $panic(new $String("reflect.Value.Interface: cannot return value obtained from unexported field or method")); + } + /* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1: + _r = makeMethodValue("Interface", $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + /* } */ case 2: + if (isWrapped(v.typ)) { + if (!((((v.flag & 128) >>> 0) === 0)) && ($clone(v, Value).Kind() === 25)) { + cv = jsType(v.typ).zero(); + copyStruct(cv, $clone(v, Value).object(), v.typ); + $s = -1; return ((new (jsType(v.typ))(cv))); + } + $s = -1; return ((new (jsType(v.typ))($clone(v, Value).object()))); + } + $s = -1; return (($clone(v, Value).object())); + /* */ } return; } var $f = {$blk: valueInterface$1, $c: true, $r, _r, cv, safe, v, $s};return $f; + }; + ifaceE2I = function ifaceE2I$1(t, src, dst) { + var dst, src, t; + dst.$set(src); + }; + makeMethodValue = function makeMethodValue$1(op, v) { + var {$24r, _r, _tuple, fn, fv, op, rcvr, v, $s, $r, $c} = $restore(this, {op, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fn = [fn]; + rcvr = [rcvr]; + if (((v.flag & 512) >>> 0) === 0) { + $panic(new $String("reflect: internal error: invalid use of makePartialFunc")); + } + _tuple = methodReceiver(op, $clone(v, Value), ((v.flag >> 0)) >> 10 >> 0); + fn[0] = _tuple[2]; + rcvr[0] = $clone(v, Value).object(); + if (isWrapped(v.typ)) { + rcvr[0] = new (jsType(v.typ))(rcvr[0]); + } + fv = js.MakeFunc((function(fn, rcvr) { return function makeMethodValue·func1(this$1, arguments$1) { + var arguments$1, this$1; + return new $jsObjectPtr(fn[0].apply(rcvr[0], $externalize(arguments$1, sliceType$18))); + }; })(fn, rcvr)); + _r = $clone(v, Value).Type().common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = new Value.ptr(_r, (fv), (new flag(v.flag).ro() | 19) >>> 0); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: makeMethodValue$1, $c: true, $r, $24r, _r, _tuple, fn, fv, op, rcvr, v, $s};return $f; + }; + $ptrType(rtype).prototype.pointers = function pointers() { + var _1, t; + t = this; + _1 = t.Kind(); + if ((_1 === (22)) || (_1 === (21)) || (_1 === (18)) || (_1 === (19)) || (_1 === (25)) || (_1 === (17))) { + return true; + } else { + return false; + } + }; + $ptrType(rtype).prototype.Comparable = function Comparable$1() { + var {$24r, _1, _r, _r$1, i, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _1 = t.Kind(); + /* */ if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { $s = 2; continue; } + /* */ if (_1 === (17)) { $s = 3; continue; } + /* */ if (_1 === (25)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((_1 === (19)) || (_1 === (23)) || (_1 === (21))) { */ case 2: + $s = -1; return false; + /* } else if (_1 === (17)) { */ case 3: + _r = t.Elem().Comparable(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 7; case 7: return $24r; + /* } else if (_1 === (25)) { */ case 4: + i = 0; + /* while (true) { */ case 8: + /* if (!(i < t.NumField())) { break; } */ if(!(i < t.NumField())) { $s = 9; continue; } + _r$1 = t.Field(i).Type.Comparable(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!_r$1) { */ case 10: + $s = -1; return false; + /* } */ case 11: + i = i + (1) >> 0; + $s = 8; continue; + case 9: + /* } */ case 5: + case 1: + $s = -1; return true; + /* */ } return; } var $f = {$blk: Comparable$1, $c: true, $r, $24r, _1, _r, _r$1, i, t, $s};return $f; + }; + $ptrType(rtype).prototype.Method = function Method$3(i) { + var {_i, _i$1, _r, _ref, _ref$1, arg, fl, fn, ft, i, in$2, m, methods$1, mt, mtyp, out$1, p, pname, prop, ret, t, tt, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + prop = [prop]; + m = new Method.ptr("", "", $ifaceNil, new Value.ptr(ptrType$2.nil, 0, 0), 0); + t = this; + if (t.Kind() === 20) { + tt = (t.kindType); + Method.copy(m, tt.Method(i)); + $s = -1; return m; + } + methods$1 = t.exportedMethods(); + if (i < 0 || i >= methods$1.$length) { + $panic(new $String("reflect: Method index out of range")); + } + p = $clone(((i < 0 || i >= methods$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : methods$1.$array[methods$1.$offset + i]), method); + pname = $clone(t.nameOff(p.name), name); + m.Name = $clone(pname, name).name(); + fl = 19; + mtyp = t.typeOff(p.mtyp); + ft = (mtyp.kindType); + in$2 = $makeSlice(sliceType$1, 0, (1 + ft.in$().$length >> 0)); + in$2 = $append(in$2, t); + _ref = ft.in$(); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + in$2 = $append(in$2, arg); + _i++; + } + out$1 = $makeSlice(sliceType$1, 0, ft.out().$length); + _ref$1 = ft.out(); + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + ret = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + out$1 = $append(out$1, ret); + _i$1++; + } + _r = FuncOf(in$2, out$1, ft.rtype.IsVariadic()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + mt = _r; + m.Type = mt; + prop[0] = $internalize($methodSet(t.jsType)[i].prop, $String); + fn = js.MakeFunc((function(prop) { return function rtype·Method·func1(this$1, arguments$1) { + var arguments$1, rcvr, this$1; + rcvr = (0 >= arguments$1.$length ? ($throwRuntimeError("index out of range"), undefined) : arguments$1.$array[arguments$1.$offset + 0]); + return new $jsObjectPtr(rcvr[$externalize(prop[0], $String)].apply(rcvr, $externalize($subslice(arguments$1, 1), sliceType$18))); + }; })(prop)); + m.Func = new Value.ptr($assertType(mt, ptrType$2), (fn), fl); + m.Index = i; + Method.copy(m, m); + $s = -1; return m; + /* */ } return; } var $f = {$blk: Method$3, $c: true, $r, _i, _i$1, _r, _ref, _ref$1, arg, fl, fn, ft, i, in$2, m, methods$1, mt, mtyp, out$1, p, pname, prop, ret, t, tt, $s};return $f; + }; + $ptrType(Value).prototype.object = function object() { + var _1, newVal, v, val; + v = this; + if ((v.typ.Kind() === 17) || (v.typ.Kind() === 25)) { + return v.ptr; + } + if (!((((v.flag & 128) >>> 0) === 0))) { + val = v.ptr.$get(); + if (!(val === $ifaceNil) && !(val.constructor === jsType(v.typ))) { + switch (0) { default: + _1 = v.typ.Kind(); + if ((_1 === (11)) || (_1 === (6))) { + val = new (jsType(v.typ))(val.$high, val.$low); + } else if ((_1 === (15)) || (_1 === (16))) { + val = new (jsType(v.typ))(val.$real, val.$imag); + } else if (_1 === (23)) { + if (val === val.constructor.nil) { + val = jsType(v.typ).nil; + break; + } + newVal = new (jsType(v.typ))(val.$array); + newVal.$offset = val.$offset; + newVal.$length = val.$length; + newVal.$capacity = val.$capacity; + val = newVal; + } + } + } + return val; + } + return v.ptr; + }; + Value.prototype.object = function(...$args) { return this.$val.object(...$args); }; + $ptrType(Value).prototype.assignTo = function assignTo(context, dst, target) { + var {_r, _r$1, _r$2, context, dst, fl, target, v, x, $s, $r, $c} = $restore(this, {context, dst, target}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + /* */ if (!((((v.flag & 512) >>> 0) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((((v.flag & 512) >>> 0) === 0))) { */ case 1: + _r = makeMethodValue(context, $clone(v, Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + /* } */ case 2: + _r$1 = directlyAssignable(dst, v.typ); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 5; continue; } + /* */ if (implements$1(dst, v.typ)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$1) { */ case 5: + fl = (((v.flag & 384) >>> 0) | new flag(v.flag).ro()) >>> 0; + fl = (fl | (((dst.Kind() >>> 0)))) >>> 0; + $s = -1; return new Value.ptr(dst, v.ptr, fl); + /* } else if (implements$1(dst, v.typ)) { */ case 6: + if (target === 0) { + target = unsafe_New(dst); + } + _r$2 = valueInterface($clone(v, Value), false); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = _r$2; + if (dst.NumMethod() === 0) { + (target).$set(x); + } else { + ifaceE2I(dst, x, target); + } + $s = -1; return new Value.ptr(dst, target, 148); + /* } */ case 7: + case 4: + $panic(new $String(context + ": value of type " + v.typ.String() + " is not assignable to type " + dst.String())); + $s = -1; return new Value.ptr(ptrType$2.nil, 0, 0); + /* */ } return; } var $f = {$blk: assignTo, $c: true, $r, _r, _r$1, _r$2, context, dst, fl, target, v, x, $s};return $f; + }; + Value.prototype.assignTo = function(...$args) { return this.$val.assignTo(...$args); }; + $ptrType(Value).prototype.call = function call$2(op, in$2) { + var {$24r, _1, _arg, _arg$1, _arg$2, _arg$3, _i, _i$1, _i$2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, arg, argsArray, elem, fn, i, i$1, i$2, i$3, in$2, isSlice, m, n, nin, nout, op, origIn, rcvr, results, ret, slice, t, targ, v, x, x$1, x$2, xt, xt$1, $s, $r, $c} = $restore(this, {op, in$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + t = ptrType$19.nil; + fn = 0; + rcvr = null; + if (!((((v.flag & 512) >>> 0) === 0))) { + _tuple = methodReceiver(op, $clone(v, Value), ((v.flag >> 0)) >> 10 >> 0); + t = _tuple[1]; + fn = _tuple[2]; + rcvr = $clone(v, Value).object(); + if (isWrapped(v.typ)) { + rcvr = new (jsType(v.typ))(rcvr); + } + } else { + t = (v.typ.kindType); + fn = ($clone(v, Value).object()); + rcvr = undefined; + } + if (fn === 0) { + $panic(new $String("reflect.Value.Call: call of nil function")); + } + isSlice = op === "CallSlice"; + n = t.rtype.NumIn(); + if (isSlice) { + if (!t.rtype.IsVariadic()) { + $panic(new $String("reflect: CallSlice of non-variadic function")); + } + if (in$2.$length < n) { + $panic(new $String("reflect: CallSlice with too few input arguments")); + } + if (in$2.$length > n) { + $panic(new $String("reflect: CallSlice with too many input arguments")); + } + } else { + if (t.rtype.IsVariadic()) { + n = n - (1) >> 0; + } + if (in$2.$length < n) { + $panic(new $String("reflect: Call with too few input arguments")); + } + if (!t.rtype.IsVariadic() && in$2.$length > n) { + $panic(new $String("reflect: Call with too many input arguments")); + } + } + _ref = in$2; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if ($clone(x, Value).Kind() === 0) { + $panic(new $String("reflect: " + op + " using zero Value argument")); + } + _i++; + } + i = 0; + /* while (true) { */ case 1: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } + _tmp = $clone(((i < 0 || i >= in$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$2.$array[in$2.$offset + i]), Value).Type(); + _tmp$1 = t.rtype.In(i); + xt = _tmp; + targ = _tmp$1; + _r = xt.AssignableTo(targ); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r) { */ case 3: + _r$1 = xt.String(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = targ.String(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $panic(new $String("reflect: " + op + " using " + _r$1 + " as type " + _r$2)); + /* } */ case 4: + i = i + (1) >> 0; + $s = 1; continue; + case 2: + /* */ if (!isSlice && t.rtype.IsVariadic()) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!isSlice && t.rtype.IsVariadic()) { */ case 8: + m = in$2.$length - n >> 0; + _r$3 = MakeSlice(t.rtype.In(n), m, m); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + slice = _r$3; + _r$4 = t.rtype.In(n).Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + elem = _r$4; + i$1 = 0; + /* while (true) { */ case 12: + /* if (!(i$1 < m)) { break; } */ if(!(i$1 < m)) { $s = 13; continue; } + x$2 = (x$1 = n + i$1 >> 0, ((x$1 < 0 || x$1 >= in$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$2.$array[in$2.$offset + x$1])); + xt$1 = $clone(x$2, Value).Type(); + _r$5 = xt$1.AssignableTo(elem); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!_r$5) { */ case 14: + _r$6 = xt$1.String(); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = elem.String(); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $panic(new $String("reflect: cannot use " + _r$6 + " as type " + _r$7 + " in " + op)); + /* } */ case 15: + _r$8 = $clone(slice, Value).Index(i$1); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $r = $clone(_r$8, Value).Set($clone(x$2, Value)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 + (1) >> 0; + $s = 12; continue; + case 13: + origIn = in$2; + in$2 = $makeSlice(sliceType$10, (n + 1 >> 0)); + $copySlice($subslice(in$2, 0, n), origIn); + ((n < 0 || n >= in$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : in$2.$array[in$2.$offset + n] = slice); + /* } */ case 9: + nin = in$2.$length; + if (!((nin === t.rtype.NumIn()))) { + $panic(new $String("reflect.Value.Call: wrong argument count")); + } + nout = t.rtype.NumOut(); + argsArray = new ($global.Array)(t.rtype.NumIn()); + _ref$1 = in$2; + _i$1 = 0; + /* while (true) { */ case 21: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 22; continue; } + i$2 = _i$1; + arg = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _arg = t.rtype.In(i$2); + _r$9 = t.rtype.In(i$2).common(); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _arg$1 = _r$9; + _arg$2 = 0; + _r$10 = $clone(arg, Value).assignTo("reflect.Value.Call", _arg$1, _arg$2); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = $clone(_r$10, Value).object(); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _arg$3 = _r$11; + _r$12 = unwrapJsObject(_arg, _arg$3); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + argsArray[i$2] = _r$12; + _i$1++; + $s = 21; continue; + case 22: + _r$13 = callHelper(new sliceType$6([new $jsObjectPtr(fn), new $jsObjectPtr(rcvr), new $jsObjectPtr(argsArray)])); /* */ $s = 27; case 27: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + results = _r$13; + _1 = nout; + /* */ if (_1 === (0)) { $s = 29; continue; } + /* */ if (_1 === (1)) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (_1 === (0)) { */ case 29: + $s = -1; return sliceType$10.nil; + /* } else if (_1 === (1)) { */ case 30: + _r$14 = makeValue(t.rtype.Out(0), wrapJsObject(t.rtype.Out(0), results), 0); /* */ $s = 33; case 33: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + $24r = new sliceType$10([$clone(_r$14, Value)]); + $s = 34; case 34: return $24r; + /* } else { */ case 31: + ret = $makeSlice(sliceType$10, nout); + _ref$2 = ret; + _i$2 = 0; + /* while (true) { */ case 35: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 36; continue; } + i$3 = _i$2; + _r$15 = makeValue(t.rtype.Out(i$3), wrapJsObject(t.rtype.Out(i$3), results[i$3]), 0); /* */ $s = 37; case 37: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + ((i$3 < 0 || i$3 >= ret.$length) ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + i$3] = _r$15); + _i$2++; + $s = 35; continue; + case 36: + $s = -1; return ret; + /* } */ case 32: + case 28: + $s = -1; return sliceType$10.nil; + /* */ } return; } var $f = {$blk: call$2, $c: true, $r, $24r, _1, _arg, _arg$1, _arg$2, _arg$3, _i, _i$1, _i$2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, arg, argsArray, elem, fn, i, i$1, i$2, i$3, in$2, isSlice, m, n, nin, nout, op, origIn, rcvr, results, ret, slice, t, targ, v, x, x$1, x$2, xt, xt$1, $s};return $f; + }; + Value.prototype.call = function(...$args) { return this.$val.call(...$args); }; + $ptrType(Value).prototype.Cap = function Cap() { + var {$24r, _1, _r, _r$1, k, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + k = new flag(v.flag).kind(); + _1 = k; + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if ((_1 === (18)) || (_1 === (23))) { $s = 3; continue; } + /* */ if (_1 === (22)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (17)) { */ case 2: + $s = -1; return v.typ.Len(); + /* } else if ((_1 === (18)) || (_1 === (23))) { */ case 3: + $s = -1; return $parseInt($clone(v, Value).object().$capacity) >> 0; + /* } else if (_1 === (22)) { */ case 4: + _r = v.typ.Elem().Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === 17) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r === 17) { */ case 6: + _r$1 = v.typ.Elem().Len(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 10; case 10: return $24r; + /* } */ case 7: + $panic(new $String("reflect: call of reflect.Value.Cap on ptr to non-array Value")); + /* } */ case 5: + case 1: + $panic(new ValueError.ptr("reflect.Value.Cap", k)); + $s = -1; return 0; + /* */ } return; } var $f = {$blk: Cap, $c: true, $r, $24r, _1, _r, _r$1, k, v, $s};return $f; + }; + Value.prototype.Cap = function(...$args) { return this.$val.Cap(...$args); }; + wrapJsObject = function wrapJsObject$1(typ, val) { + var typ, val; + if ($interfaceIsEqual(typ, jsObjectPtr)) { + return new (jsType(jsObjectPtr))(val); + } + return val; + }; + unwrapJsObject = function unwrapJsObject$1(typ, val) { + var typ, val; + if ($interfaceIsEqual(typ, jsObjectPtr)) { + return val.object; + } + return val; + }; + $ptrType(Value).prototype.Elem = function Elem$1() { + var {$24r, _1, _r, fl, k, tt, typ, v, val, val$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + k = new flag(v.flag).kind(); + _1 = k; + /* */ if (_1 === (20)) { $s = 2; continue; } + /* */ if (_1 === (22)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_1 === (20)) { */ case 2: + val = $clone(v, Value).object(); + if (val === $ifaceNil) { + $s = -1; return new Value.ptr(ptrType$2.nil, 0, 0); + } + typ = reflectType(val.constructor); + _r = makeValue(typ, val.$val, new flag(v.flag).ro()); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 7; case 7: return $24r; + /* } else if (_1 === (22)) { */ case 3: + if ($clone(v, Value).IsNil()) { + $s = -1; return new Value.ptr(ptrType$2.nil, 0, 0); + } + val$1 = $clone(v, Value).object(); + tt = (v.typ.kindType); + fl = (((((v.flag & 96) >>> 0) | 128) >>> 0) | 256) >>> 0; + fl = (fl | (((tt.elem.Kind() >>> 0)))) >>> 0; + $s = -1; return new Value.ptr(tt.elem, (wrapJsObject(tt.elem, val$1)), fl); + /* } else { */ case 4: + $panic(new ValueError.ptr("reflect.Value.Elem", k)); + /* } */ case 5: + case 1: + $s = -1; return new Value.ptr(ptrType$2.nil, 0, 0); + /* */ } return; } var $f = {$blk: Elem$1, $c: true, $r, $24r, _1, _r, fl, k, tt, typ, v, val, val$1, $s};return $f; + }; + Value.prototype.Elem = function(...$args) { return this.$val.Elem(...$args); }; + $ptrType(Value).prototype.Field = function Field$2(i) { + var {$24r, _r, _r$1, _r$2, field, fl, i, jsTag, o, prop, s, tag$1, tt, typ, v, x, x$1, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + jsTag = [jsTag]; + prop = [prop]; + s = [s]; + typ = [typ]; + v = this; + if (!((new flag(v.flag).kind() === 25))) { + $panic(new ValueError.ptr("reflect.Value.Field", new flag(v.flag).kind())); + } + tt = (v.typ.kindType); + if (((i >>> 0)) >= ((tt.fields.$length >>> 0))) { + $panic(new $String("reflect: Field index out of range")); + } + prop[0] = $internalize(jsType(v.typ).fields[i].prop, $String); + field = (x = tt.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + typ[0] = field.typ; + fl = (((v.flag & 416) >>> 0) | ((typ[0].Kind() >>> 0))) >>> 0; + if (!$clone(field.name, name).isExported()) { + if (field.embedded()) { + fl = (fl | (64)) >>> 0; + } else { + fl = (fl | (32)) >>> 0; + } + } + tag$1 = $clone((x$1 = tt.fields, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])).name, name).tag(); + /* */ if (!(tag$1 === "") && !((i === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(tag$1 === "") && !((i === 0))) { */ case 1: + jsTag[0] = getJsTag(tag$1); + /* */ if (!(jsTag[0] === "")) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(jsTag[0] === "")) { */ case 3: + /* while (true) { */ case 5: + o = [o]; + _r = $clone(v, Value).Field(0); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + /* */ if (v.typ === jsObjectPtr) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (v.typ === jsObjectPtr) { */ case 8: + o[0] = $clone(v, Value).object().object; + $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, o, prop, s, typ) { return function Value·Field·func1() { + return $internalize(o[0][$externalize(jsTag[0], $String)], jsType(typ[0])); + }; })(jsTag, o, prop, s, typ), (function(jsTag, o, prop, s, typ) { return function Value·Field·func2(x$2) { + var x$2; + o[0][$externalize(jsTag[0], $String)] = $externalize(x$2, jsType(typ[0])); + }; })(jsTag, o, prop, s, typ))), fl); + /* } */ case 9: + /* */ if (v.typ.Kind() === 22) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (v.typ.Kind() === 22) { */ case 10: + _r$1 = $clone(v, Value).Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v = _r$1; + /* } */ case 11: + $s = 5; continue; + case 6: + /* } */ case 4: + /* } */ case 2: + s[0] = v.ptr; + /* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 13: + $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(jsTag, prop, s, typ) { return function Value·Field·func3() { + return wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]); + }; })(jsTag, prop, s, typ), (function(jsTag, prop, s, typ) { return function Value·Field·func4(x$2) { + var x$2; + s[0][$externalize(prop[0], $String)] = unwrapJsObject(typ[0], x$2); + }; })(jsTag, prop, s, typ))), fl); + /* } */ case 14: + _r$2 = makeValue(typ[0], wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]), fl); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 16; case 16: return $24r; + /* */ } return; } var $f = {$blk: Field$2, $c: true, $r, $24r, _r, _r$1, _r$2, field, fl, i, jsTag, o, prop, s, tag$1, tt, typ, v, x, x$1, $s};return $f; + }; + Value.prototype.Field = function(...$args) { return this.$val.Field(...$args); }; + getJsTag = function getJsTag$1(tag$1) { + var _tuple, i, name$2, qvalue, tag$1, value; + while (true) { + if (!(!(tag$1 === ""))) { break; } + i = 0; + while (true) { + if (!(i < tag$1.length && (tag$1.charCodeAt(i) === 32))) { break; } + i = i + (1) >> 0; + } + tag$1 = $substring(tag$1, i); + if (tag$1 === "") { + break; + } + i = 0; + while (true) { + if (!(i < tag$1.length && !((tag$1.charCodeAt(i) === 32)) && !((tag$1.charCodeAt(i) === 58)) && !((tag$1.charCodeAt(i) === 34)))) { break; } + i = i + (1) >> 0; + } + if ((i + 1 >> 0) >= tag$1.length || !((tag$1.charCodeAt(i) === 58)) || !((tag$1.charCodeAt((i + 1 >> 0)) === 34))) { + break; + } + name$2 = ($substring(tag$1, 0, i)); + tag$1 = $substring(tag$1, (i + 1 >> 0)); + i = 1; + while (true) { + if (!(i < tag$1.length && !((tag$1.charCodeAt(i) === 34)))) { break; } + if (tag$1.charCodeAt(i) === 92) { + i = i + (1) >> 0; + } + i = i + (1) >> 0; + } + if (i >= tag$1.length) { + break; + } + qvalue = ($substring(tag$1, 0, (i + 1 >> 0))); + tag$1 = $substring(tag$1, (i + 1 >> 0)); + if (name$2 === "js") { + _tuple = strconv.Unquote(qvalue); + value = _tuple[0]; + return value; + } + } + return ""; + }; + $ptrType(Value).prototype.UnsafePointer = function UnsafePointer() { + var v; + v = this; + return ($clone(v, Value).Pointer()); + }; + Value.prototype.UnsafePointer = function(...$args) { return this.$val.UnsafePointer(...$args); }; + $ptrType(Value).prototype.grow = function grow(n) { + var cap, len, n, ns, s, v; + v = this; + if (n < 0) { + $panic(new $String("reflect.Value.Grow: negative len")); + } + s = $clone(v, Value).object(); + len = $parseInt(s.$length) >> 0; + if ((len + n >> 0) < 0) { + $panic(new $String("reflect.Value.Grow: slice overflow")); + } + cap = $parseInt(s.$capacity) >> 0; + if ((len + n >> 0) > cap) { + ns = $growSlice(s, len + n >> 0); + v.ptr.$set(ns); + } + }; + Value.prototype.grow = function(...$args) { return this.$val.grow(...$args); }; + $ptrType(Value).prototype.extendSlice = function extendSlice(n) { + var {$24r, _r, _r$1, fl, n, newSlice, s, s2, sNil, v, v2, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBeExported(); + new flag(v.flag).mustBe(23); + s = $clone(v, Value).object(); + sNil = jsType(v.typ).nil; + fl = 151; + /* */ if (s === sNil && n <= 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (s === sNil && n <= 0) { */ case 1: + _r = makeValue(v.typ, wrapJsObject(v.typ, sNil), fl); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + newSlice = new (jsType(v.typ))(s.$array); + newSlice.$offset = s.$offset; + newSlice.$length = s.$length; + newSlice.$capacity = s.$capacity; + _r$1 = makeValue(v.typ, wrapJsObject(v.typ, newSlice), fl); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v2 = _r$1; + $clone(v2, Value).grow(n); + s2 = $clone(v2, Value).object(); + s2.$length = ($parseInt(s2.$length) >> 0) + n >> 0; + $s = -1; return v2; + /* */ } return; } var $f = {$blk: extendSlice, $c: true, $r, $24r, _r, _r$1, fl, n, newSlice, s, s2, sNil, v, v2, $s};return $f; + }; + Value.prototype.extendSlice = function(...$args) { return this.$val.extendSlice(...$args); }; + $ptrType(Value).prototype.Index = function Index(i) { + var {$24r, $24r$1, _1, _r, _r$1, a, a$1, c, fl, fl$1, fl$2, i, k, s, str, tt, tt$1, typ, typ$1, v, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = [a]; + a$1 = [a$1]; + c = [c]; + i = [i]; + typ = [typ]; + typ$1 = [typ$1]; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if (_1 === (23)) { $s = 3; continue; } + /* */ if (_1 === (24)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (17)) { */ case 2: + tt = (v.typ.kindType); + if (i[0] < 0 || i[0] > ((tt.len >> 0))) { + $panic(new $String("reflect: array index out of range")); + } + typ[0] = tt.elem; + fl = (((((v.flag & 384) >>> 0) | new flag(v.flag).ro()) >>> 0) | ((typ[0].Kind() >>> 0))) >>> 0; + a[0] = v.ptr; + /* */ if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((((fl & 128) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 7: + $s = -1; return new Value.ptr(typ[0], (new (jsType(PtrTo(typ[0])))((function(a, a$1, c, i, typ, typ$1) { return function Value·Index·func1() { + return wrapJsObject(typ[0], a[0][i[0]]); + }; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function Value·Index·func2(x) { + var x; + a[0][i[0]] = unwrapJsObject(typ[0], x); + }; })(a, a$1, c, i, typ, typ$1))), fl); + /* } */ case 8: + _r = makeValue(typ[0], wrapJsObject(typ[0], a[0][i[0]]), fl); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 10; case 10: return $24r; + /* } else if (_1 === (23)) { */ case 3: + s = $clone(v, Value).object(); + if (i[0] < 0 || i[0] >= ($parseInt(s.$length) >> 0)) { + $panic(new $String("reflect: slice index out of range")); + } + tt$1 = (v.typ.kindType); + typ$1[0] = tt$1.elem; + fl$1 = (((384 | new flag(v.flag).ro()) >>> 0) | ((typ$1[0].Kind() >>> 0))) >>> 0; + i[0] = i[0] + (($parseInt(s.$offset) >> 0)) >> 0; + a$1[0] = s.$array; + /* */ if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!((((fl$1 & 128) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { */ case 11: + $s = -1; return new Value.ptr(typ$1[0], (new (jsType(PtrTo(typ$1[0])))((function(a, a$1, c, i, typ, typ$1) { return function Value·Index·func3() { + return wrapJsObject(typ$1[0], a$1[0][i[0]]); + }; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function Value·Index·func4(x) { + var x; + a$1[0][i[0]] = unwrapJsObject(typ$1[0], x); + }; })(a, a$1, c, i, typ, typ$1))), fl$1); + /* } */ case 12: + _r$1 = makeValue(typ$1[0], wrapJsObject(typ$1[0], a$1[0][i[0]]), fl$1); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 14; case 14: return $24r$1; + /* } else if (_1 === (24)) { */ case 4: + str = (v.ptr).$get(); + if (i[0] < 0 || i[0] >= str.length) { + $panic(new $String("reflect: string index out of range")); + } + fl$2 = (((new flag(v.flag).ro() | 8) >>> 0) | 128) >>> 0; + c[0] = str.charCodeAt(i[0]); + $s = -1; return new Value.ptr(uint8Type, ((c.$ptr || (c.$ptr = new ptrType$13(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, c)))), fl$2); + /* } else { */ case 5: + $panic(new ValueError.ptr("reflect.Value.Index", k)); + /* } */ case 6: + case 1: + $s = -1; return new Value.ptr(ptrType$2.nil, 0, 0); + /* */ } return; } var $f = {$blk: Index, $c: true, $r, $24r, $24r$1, _1, _r, _r$1, a, a$1, c, fl, fl$1, fl$2, i, k, s, str, tt, tt$1, typ, typ$1, v, $s};return $f; + }; + Value.prototype.Index = function(...$args) { return this.$val.Index(...$args); }; + $ptrType(Value).prototype.InterfaceData = function InterfaceData() { + var v; + v = this; + $panic(errors.New("InterfaceData is not supported by GopherJS")); + }; + Value.prototype.InterfaceData = function(...$args) { return this.$val.InterfaceData(...$args); }; + $ptrType(Value).prototype.SetZero = function SetZero() { + var {_r, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBeAssignable(); + _r = Zero(v.typ); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = $clone(v, Value).Set($clone(_r, Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: SetZero, $c: true, $r, _r, v, $s};return $f; + }; + Value.prototype.SetZero = function(...$args) { return this.$val.SetZero(...$args); }; + $ptrType(Value).prototype.IsNil = function IsNil() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (22)) || (_1 === (23))) { + return $clone(v, Value).object() === jsType(v.typ).nil; + } else if (_1 === (18)) { + return $clone(v, Value).object() === $chanNil; + } else if (_1 === (19)) { + return $clone(v, Value).object() === $throwNilPointerError; + } else if (_1 === (21)) { + return $clone(v, Value).object() === false; + } else if (_1 === (20)) { + return $clone(v, Value).object() === $ifaceNil; + } else if (_1 === (26)) { + return $clone(v, Value).object() === 0; + } else { + $panic(new ValueError.ptr("reflect.Value.IsNil", k)); + } + }; + Value.prototype.IsNil = function(...$args) { return this.$val.IsNil(...$args); }; + $ptrType(Value).prototype.Len = function Len$1() { + var {$24r, _1, _r, _r$1, k, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + k = new flag(v.flag).kind(); + _1 = k; + /* */ if ((_1 === (17)) || (_1 === (24))) { $s = 2; continue; } + /* */ if (_1 === (23)) { $s = 3; continue; } + /* */ if (_1 === (18)) { $s = 4; continue; } + /* */ if (_1 === (21)) { $s = 5; continue; } + /* */ if (_1 === (22)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((_1 === (17)) || (_1 === (24))) { */ case 2: + $s = -1; return $parseInt($clone(v, Value).object().length); + /* } else if (_1 === (23)) { */ case 3: + $s = -1; return $parseInt($clone(v, Value).object().$length) >> 0; + /* } else if (_1 === (18)) { */ case 4: + $s = -1; return $parseInt($clone(v, Value).object().$buffer.length) >> 0; + /* } else if (_1 === (21)) { */ case 5: + $s = -1; return $parseInt($clone(v, Value).object().size) >> 0; + /* } else if (_1 === (22)) { */ case 6: + _r = v.typ.Elem().Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === 17) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_r === 17) { */ case 9: + _r$1 = v.typ.Elem().Len(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 13; case 13: return $24r; + /* } */ case 10: + $panic(new $String("reflect: call of reflect.Value.Len on ptr to non-array Value")); + $s = 8; continue; + /* } else { */ case 7: + $panic(new ValueError.ptr("reflect.Value.Len", k)); + /* } */ case 8: + case 1: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: Len$1, $c: true, $r, $24r, _1, _r, _r$1, k, v, $s};return $f; + }; + Value.prototype.Len = function(...$args) { return this.$val.Len(...$args); }; + $ptrType(Value).prototype.Pointer = function Pointer() { + var _1, k, v; + v = this; + k = new flag(v.flag).kind(); + _1 = k; + if ((_1 === (18)) || (_1 === (21)) || (_1 === (22)) || (_1 === (26))) { + if ($clone(v, Value).IsNil()) { + return 0; + } + return $clone(v, Value).object(); + } else if (_1 === (19)) { + if ($clone(v, Value).IsNil()) { + return 0; + } + return 1; + } else if (_1 === (23)) { + if ($clone(v, Value).IsNil()) { + return 0; + } + return $clone(v, Value).object().$array; + } else { + $panic(new ValueError.ptr("reflect.Value.Pointer", k)); + } + }; + Value.prototype.Pointer = function(...$args) { return this.$val.Pointer(...$args); }; + $ptrType(Value).prototype.Set = function Set(x) { + var {_1, _r, _r$1, v, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(x.flag).mustBeExported(); + _r = $clone(x, Value).assignTo("reflect.Set", v.typ, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x = _r; + /* */ if (!((((v.flag & 128) >>> 0) === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((((v.flag & 128) >>> 0) === 0))) { */ case 2: + _1 = v.typ.Kind(); + /* */ if ((_1 === (17)) || (_1 === (25))) { $s = 5; continue; } + /* */ if (_1 === (20)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((_1 === (17)) || (_1 === (25))) { */ case 5: + jsType(v.typ).copy(v.ptr, x.ptr); + $s = 8; continue; + /* } else if (_1 === (20)) { */ case 6: + _r$1 = valueInterface($clone(x, Value), false); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v.ptr.$set(_r$1); + $s = 8; continue; + /* } else { */ case 7: + v.ptr.$set($clone(x, Value).object()); + /* } */ case 8: + case 4: + $s = -1; return; + /* } */ case 3: + v.ptr = x.ptr; + $s = -1; return; + /* */ } return; } var $f = {$blk: Set, $c: true, $r, _1, _r, _r$1, v, x, $s};return $f; + }; + Value.prototype.Set = function(...$args) { return this.$val.Set(...$args); }; + $ptrType(Value).prototype.bytesSlow = function bytesSlow() { + var {_1, _r, _r$1, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + _1 = new flag(v.flag).kind(); + /* */ if (_1 === (23)) { $s = 2; continue; } + /* */ if (_1 === (17)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_1 === (23)) { */ case 2: + _r = v.typ.Elem().Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 8))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((_r === 8))) { */ case 5: + $panic(new $String("reflect.Value.Bytes of non-byte slice")); + /* } */ case 6: + $s = -1; return (v.ptr).$get(); + /* } else if (_1 === (17)) { */ case 3: + _r$1 = v.typ.Elem().Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!((_r$1 === 8))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!((_r$1 === 8))) { */ case 8: + $panic(new $String("reflect.Value.Bytes of non-byte array")); + /* } */ case 9: + if (!$clone(v, Value).CanAddr()) { + $panic(new $String("reflect.Value.Bytes of unaddressable byte array")); + } + $s = -1; return $assertType($internalize(v.ptr, $emptyInterface), sliceType$4); + /* } */ case 4: + case 1: + $panic(new ValueError.ptr("reflect.Value.Bytes", new flag(v.flag).kind())); + $s = -1; return sliceType$4.nil; + /* */ } return; } var $f = {$blk: bytesSlow, $c: true, $r, _1, _r, _r$1, v, $s};return $f; + }; + Value.prototype.bytesSlow = function(...$args) { return this.$val.bytesSlow(...$args); }; + $ptrType(Value).prototype.SetBytes = function SetBytes(x) { + var {_r, _r$1, _v, slice, typedSlice, v, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 8))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 8))) { */ case 1: + $panic(new $String("reflect.Value.SetBytes of non-byte slice")); + /* } */ case 2: + slice = x; + if (!(v.typ.Name() === "")) { _v = true; $s = 6; continue s; } + _r$1 = v.typ.Elem().Name(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = !(_r$1 === ""); case 6: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + typedSlice = new (jsType(v.typ))(slice.$array); + typedSlice.$offset = slice.$offset; + typedSlice.$length = slice.$length; + typedSlice.$capacity = slice.$capacity; + slice = typedSlice; + /* } */ case 5: + v.ptr.$set(slice); + $s = -1; return; + /* */ } return; } var $f = {$blk: SetBytes, $c: true, $r, _r, _r$1, _v, slice, typedSlice, v, x, $s};return $f; + }; + Value.prototype.SetBytes = function(...$args) { return this.$val.SetBytes(...$args); }; + $ptrType(Value).prototype.SetCap = function SetCap(n) { + var n, newSlice, s, v; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + s = v.ptr.$get(); + if (n < ($parseInt(s.$length) >> 0) || n > ($parseInt(s.$capacity) >> 0)) { + $panic(new $String("reflect: slice capacity out of range in SetCap")); + } + newSlice = new (jsType(v.typ))(s.$array); + newSlice.$offset = s.$offset; + newSlice.$length = s.$length; + newSlice.$capacity = n; + v.ptr.$set(newSlice); + }; + Value.prototype.SetCap = function(...$args) { return this.$val.SetCap(...$args); }; + $ptrType(Value).prototype.SetLen = function SetLen(n) { + var n, newSlice, s, v; + v = this; + new flag(v.flag).mustBeAssignable(); + new flag(v.flag).mustBe(23); + s = v.ptr.$get(); + if (n < 0 || n > ($parseInt(s.$capacity) >> 0)) { + $panic(new $String("reflect: slice length out of range in SetLen")); + } + newSlice = new (jsType(v.typ))(s.$array); + newSlice.$offset = s.$offset; + newSlice.$length = n; + newSlice.$capacity = s.$capacity; + v.ptr.$set(newSlice); + }; + Value.prototype.SetLen = function(...$args) { return this.$val.SetLen(...$args); }; + $ptrType(Value).prototype.Slice = function Slice(i, j) { + var {$24r, $24r$1, _1, _r, _r$1, cap, i, j, kind$1, s, str, tt, typ, v, $s, $r, $c} = $restore(this, {i, j}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + cap = 0; + typ = $ifaceNil; + s = null; + kind$1 = new flag(v.flag).kind(); + _1 = kind$1; + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if (_1 === (23)) { $s = 3; continue; } + /* */ if (_1 === (24)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (17)) { */ case 2: + if (((v.flag & 256) >>> 0) === 0) { + $panic(new $String("reflect.Value.Slice: slice of unaddressable array")); + } + tt = (v.typ.kindType); + cap = ((tt.len >> 0)); + typ = SliceOf(tt.elem); + s = new (jsType(typ))($clone(v, Value).object()); + $s = 6; continue; + /* } else if (_1 === (23)) { */ case 3: + typ = v.typ; + s = $clone(v, Value).object(); + cap = $parseInt(s.$capacity) >> 0; + $s = 6; continue; + /* } else if (_1 === (24)) { */ case 4: + str = (v.ptr).$get(); + if (i < 0 || j < i || j > str.length) { + $panic(new $String("reflect.Value.Slice: string slice index out of bounds")); + } + _r = ValueOf(new $String($substring(str, i, j))); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 8; case 8: return $24r; + /* } else { */ case 5: + $panic(new ValueError.ptr("reflect.Value.Slice", kind$1)); + /* } */ case 6: + case 1: + if (i < 0 || j < i || j > cap) { + $panic(new $String("reflect.Value.Slice: slice index out of bounds")); + } + _r$1 = makeValue(typ, $subslice(s, i, j), new flag(v.flag).ro()); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 10; case 10: return $24r$1; + /* */ } return; } var $f = {$blk: Slice, $c: true, $r, $24r, $24r$1, _1, _r, _r$1, cap, i, j, kind$1, s, str, tt, typ, v, $s};return $f; + }; + Value.prototype.Slice = function(...$args) { return this.$val.Slice(...$args); }; + $ptrType(Value).prototype.Slice3 = function Slice3(i, j, k) { + var {$24r, _1, _r, cap, i, j, k, kind$1, s, tt, typ, v, $s, $r, $c} = $restore(this, {i, j, k}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this; + cap = 0; + typ = $ifaceNil; + s = null; + kind$1 = new flag(v.flag).kind(); + _1 = kind$1; + if (_1 === (17)) { + if (((v.flag & 256) >>> 0) === 0) { + $panic(new $String("reflect.Value.Slice: slice of unaddressable array")); + } + tt = (v.typ.kindType); + cap = ((tt.len >> 0)); + typ = SliceOf(tt.elem); + s = new (jsType(typ))($clone(v, Value).object()); + } else if (_1 === (23)) { + typ = v.typ; + s = $clone(v, Value).object(); + cap = $parseInt(s.$capacity) >> 0; + } else { + $panic(new ValueError.ptr("reflect.Value.Slice3", kind$1)); + } + if (i < 0 || j < i || k < j || k > cap) { + $panic(new $String("reflect.Value.Slice3: slice index out of bounds")); + } + _r = makeValue(typ, $subslice(s, i, j, k), new flag(v.flag).ro()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Slice3, $c: true, $r, $24r, _1, _r, cap, i, j, k, kind$1, s, tt, typ, v, $s};return $f; + }; + Value.prototype.Slice3 = function(...$args) { return this.$val.Slice3(...$args); }; + $ptrType(Value).prototype.Close = function Close() { + var v; + v = this; + new flag(v.flag).mustBe(18); + new flag(v.flag).mustBeExported(); + $close($clone(v, Value).object()); + }; + Value.prototype.Close = function(...$args) { return this.$val.Close(...$args); }; + chanrecv = function chanrecv$1(ch, nb, val) { + var {_r, _tmp, _tmp$1, _tmp$2, _tmp$3, ch, comms, nb, received, recvRes, selectRes, selected, val, $s, $r, $c} = $restore(this, {ch, nb, val}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + selected = false; + received = false; + comms = new sliceType$19([new sliceType$18([ch])]); + if (nb) { + comms = $append(comms, new sliceType$18([])); + } + _r = selectHelper(new sliceType$6([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + selectRes = _r; + if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) { + _tmp = false; + _tmp$1 = false; + selected = _tmp; + received = _tmp$1; + $s = -1; return [selected, received]; + } + recvRes = selectRes[1]; + val.$set(recvRes[0]); + _tmp$2 = true; + _tmp$3 = !!(recvRes[1]); + selected = _tmp$2; + received = _tmp$3; + $s = -1; return [selected, received]; + /* */ } return; } var $f = {$blk: chanrecv$1, $c: true, $r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, ch, comms, nb, received, recvRes, selectRes, selected, val, $s};return $f; + }; + chansend = function chansend$1(ch, val, nb) { + var {_r, ch, comms, nb, selectRes, val, $s, $r, $c} = $restore(this, {ch, val, nb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + comms = new sliceType$19([new sliceType$18([ch, val.$get()])]); + if (nb) { + comms = $append(comms, new sliceType$18([])); + } + _r = selectHelper(new sliceType$6([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + selectRes = _r; + if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) { + $s = -1; return false; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: chansend$1, $c: true, $r, _r, ch, comms, nb, selectRes, val, $s};return $f; + }; + DeepEqual = function DeepEqual$1(a1, a2) { + var {$24r, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, a1, a2, i1, i2, $s, $r, $c} = $restore(this, {a1, a2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i1 = a1; + i2 = a2; + if (i1 === i2) { + $s = -1; return true; + } + if (i1 === null || i2 === null || !(i1.constructor === i2.constructor)) { + $s = -1; return false; + } + _r = ValueOf(a1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = $clone(_r, Value); + _r$1 = ValueOf(a2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$1, Value); + _arg$2 = sliceType$20.nil; + _r$2 = deepValueEqualJs(_arg, _arg$1, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: DeepEqual$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, a1, a2, i1, i2, $s};return $f; + }; + $pkg.DeepEqual = DeepEqual; + deepValueEqualJs = function deepValueEqualJs$1(v1, v2, visited) { + var {$24r, $24r$1, $24r$2, _1, _2, _arg, _arg$1, _arg$10, _arg$11, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _v, entry, i, i$1, k, keys, n, n$1, v1, v2, val1, val2, visited, $s, $r, $c} = $restore(this, {v1, v2, visited}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v1, Value).IsValid() || !$clone(v2, Value).IsValid()) { + $s = -1; return !$clone(v1, Value).IsValid() && !$clone(v2, Value).IsValid(); + } + if (!($interfaceIsEqual($clone(v1, Value).Type(), $clone(v2, Value).Type()))) { + $s = -1; return false; + } + if ($interfaceIsEqual($clone(v1, Value).Type(), jsObjectPtr)) { + $s = -1; return unwrapJsObject(jsObjectPtr, $clone(v1, Value).object()) === unwrapJsObject(jsObjectPtr, $clone(v2, Value).object()); + } + _1 = $clone(v1, Value).Kind(); + if ((_1 === (17)) || (_1 === (21)) || (_1 === (23)) || (_1 === (25))) { + _ref = visited; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + entry = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), arrayType$7); + if (v1.ptr === entry[0] && v2.ptr === entry[1]) { + $s = -1; return true; + } + _i++; + } + visited = $append(visited, $toNativeArray($kindUnsafePointer, [v1.ptr, v2.ptr])); + } + _2 = $clone(v1, Value).Kind(); + /* */ if ((_2 === (17)) || (_2 === (23))) { $s = 2; continue; } + /* */ if (_2 === (20)) { $s = 3; continue; } + /* */ if (_2 === (22)) { $s = 4; continue; } + /* */ if (_2 === (25)) { $s = 5; continue; } + /* */ if (_2 === (21)) { $s = 6; continue; } + /* */ if (_2 === (19)) { $s = 7; continue; } + /* */ if (_2 === (26)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ((_2 === (17)) || (_2 === (23))) { */ case 2: + if ($clone(v1, Value).Kind() === 23) { + if (!($clone(v1, Value).IsNil() === $clone(v2, Value).IsNil())) { + $s = -1; return false; + } + if ($clone(v1, Value).object() === $clone(v2, Value).object()) { + $s = -1; return true; + } + } + _r = $clone(v1, Value).Len(); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r; + _r$1 = $clone(v2, Value).Len(); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!((n === _r$1))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!((n === _r$1))) { */ case 11: + $s = -1; return false; + /* } */ case 12: + i = 0; + /* while (true) { */ case 14: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 15; continue; } + _r$2 = $clone(v1, Value).Index(i); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg = $clone(_r$2, Value); + _r$3 = $clone(v2, Value).Index(i); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$3, Value); + _arg$2 = visited; + _r$4 = deepValueEqualJs(_arg, _arg$1, _arg$2); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!_r$4) { */ case 16: + $s = -1; return false; + /* } */ case 17: + i = i + (1) >> 0; + $s = 14; continue; + case 15: + $s = -1; return true; + /* } else if (_2 === (20)) { */ case 3: + if ($clone(v1, Value).IsNil() || $clone(v2, Value).IsNil()) { + $s = -1; return $clone(v1, Value).IsNil() && $clone(v2, Value).IsNil(); + } + _r$5 = $clone(v1, Value).Elem(); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$3 = $clone(_r$5, Value); + _r$6 = $clone(v2, Value).Elem(); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg$4 = $clone(_r$6, Value); + _arg$5 = visited; + _r$7 = deepValueEqualJs(_arg$3, _arg$4, _arg$5); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $24r = _r$7; + $s = 24; case 24: return $24r; + /* } else if (_2 === (22)) { */ case 4: + _r$8 = $clone(v1, Value).Elem(); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _arg$6 = $clone(_r$8, Value); + _r$9 = $clone(v2, Value).Elem(); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _arg$7 = $clone(_r$9, Value); + _arg$8 = visited; + _r$10 = deepValueEqualJs(_arg$6, _arg$7, _arg$8); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $24r$1 = _r$10; + $s = 28; case 28: return $24r$1; + /* } else if (_2 === (25)) { */ case 5: + n$1 = $clone(v1, Value).NumField(); + i$1 = 0; + /* while (true) { */ case 29: + /* if (!(i$1 < n$1)) { break; } */ if(!(i$1 < n$1)) { $s = 30; continue; } + _r$11 = $clone(v1, Value).Field(i$1); /* */ $s = 33; case 33: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _arg$9 = $clone(_r$11, Value); + _r$12 = $clone(v2, Value).Field(i$1); /* */ $s = 34; case 34: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _arg$10 = $clone(_r$12, Value); + _arg$11 = visited; + _r$13 = deepValueEqualJs(_arg$9, _arg$10, _arg$11); /* */ $s = 35; case 35: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + /* */ if (!_r$13) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (!_r$13) { */ case 31: + $s = -1; return false; + /* } */ case 32: + i$1 = i$1 + (1) >> 0; + $s = 29; continue; + case 30: + $s = -1; return true; + /* } else if (_2 === (21)) { */ case 6: + if (!($clone(v1, Value).IsNil() === $clone(v2, Value).IsNil())) { + $s = -1; return false; + } + if ($clone(v1, Value).object() === $clone(v2, Value).object()) { + $s = -1; return true; + } + _r$14 = $clone(v1, Value).MapKeys(); /* */ $s = 36; case 36: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + keys = _r$14; + _r$15 = $clone(v2, Value).Len(); /* */ $s = 39; case 39: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + /* */ if (!((keys.$length === _r$15))) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if (!((keys.$length === _r$15))) { */ case 37: + $s = -1; return false; + /* } */ case 38: + _ref$1 = keys; + _i$1 = 0; + /* while (true) { */ case 40: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 41; continue; } + k = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r$16 = $clone(v1, Value).MapIndex($clone(k, Value)); /* */ $s = 42; case 42: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + val1 = _r$16; + _r$17 = $clone(v2, Value).MapIndex($clone(k, Value)); /* */ $s = 43; case 43: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + val2 = _r$17; + if (!$clone(val1, Value).IsValid() || !$clone(val2, Value).IsValid()) { _v = true; $s = 46; continue s; } + _r$18 = deepValueEqualJs($clone(val1, Value), $clone(val2, Value), visited); /* */ $s = 47; case 47: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _v = !_r$18; case 46: + /* */ if (_v) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (_v) { */ case 44: + $s = -1; return false; + /* } */ case 45: + _i$1++; + $s = 40; continue; + case 41: + $s = -1; return true; + /* } else if (_2 === (19)) { */ case 7: + $s = -1; return $clone(v1, Value).IsNil() && $clone(v2, Value).IsNil(); + /* } else if (_2 === (26)) { */ case 8: + $s = -1; return $clone(v1, Value).object() === $clone(v2, Value).object(); + /* } */ case 9: + case 1: + _r$19 = valueInterface($clone(v1, Value), false); /* */ $s = 48; case 48: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _r$20 = valueInterface($clone(v2, Value), false); /* */ $s = 49; case 49: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + $24r$2 = !!($interfaceIsEqual(_r$19, _r$20)); + $s = 50; case 50: return $24r$2; + /* */ } return; } var $f = {$blk: deepValueEqualJs$1, $c: true, $r, $24r, $24r$1, $24r$2, _1, _2, _arg, _arg$1, _arg$10, _arg$11, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _v, entry, i, i$1, k, keys, n, n$1, v1, v2, val1, val2, visited, $s};return $f; + }; + Value.methods = [{prop: "pointer", name: "pointer", pkg: "reflect", typ: $funcType([], [$UnsafePointer], false)}, {prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "panicNotBool", name: "panicNotBool", pkg: "reflect", typ: $funcType([], [], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType$4], false)}, {prop: "runes", name: "runes", pkg: "reflect", typ: $funcType([], [sliceType$12], false)}, {prop: "CanAddr", name: "CanAddr", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "CanSet", name: "CanSet", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([sliceType$10], [sliceType$10], false)}, {prop: "CallSlice", name: "CallSlice", pkg: "", typ: $funcType([sliceType$10], [sliceType$10], false)}, {prop: "capNonSlice", name: "capNonSlice", pkg: "reflect", typ: $funcType([], [$Int], false)}, {prop: "CanComplex", name: "CanComplex", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Complex", name: "Complex", pkg: "", typ: $funcType([], [$Complex128], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$8], [Value], false)}, {prop: "FieldByIndexErr", name: "FieldByIndexErr", pkg: "", typ: $funcType([sliceType$8], [Value, $error], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [Value], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [Value], false)}, {prop: "CanFloat", name: "CanFloat", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Float", name: "Float", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "CanInt", name: "CanInt", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "CanInterface", name: "CanInterface", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Interface", name: "Interface", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "IsValid", name: "IsValid", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsZero", name: "IsZero", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "MapIndex", name: "MapIndex", pkg: "", typ: $funcType([Value], [Value], false)}, {prop: "MapKeys", name: "MapKeys", pkg: "", typ: $funcType([], [sliceType$10], false)}, {prop: "SetIterKey", name: "SetIterKey", pkg: "", typ: $funcType([ptrType$22], [], false)}, {prop: "SetIterValue", name: "SetIterValue", pkg: "", typ: $funcType([ptrType$22], [], false)}, {prop: "MapRange", name: "MapRange", pkg: "", typ: $funcType([], [ptrType$22], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Value], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "OverflowComplex", name: "OverflowComplex", pkg: "", typ: $funcType([$Complex128], [$Bool], false)}, {prop: "OverflowFloat", name: "OverflowFloat", pkg: "", typ: $funcType([$Float64], [$Bool], false)}, {prop: "OverflowInt", name: "OverflowInt", pkg: "", typ: $funcType([$Int64], [$Bool], false)}, {prop: "OverflowUint", name: "OverflowUint", pkg: "", typ: $funcType([$Uint64], [$Bool], false)}, {prop: "Recv", name: "Recv", pkg: "", typ: $funcType([], [Value, $Bool], false)}, {prop: "recv", name: "recv", pkg: "reflect", typ: $funcType([$Bool], [Value, $Bool], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([Value], [], false)}, {prop: "send", name: "send", pkg: "reflect", typ: $funcType([Value, $Bool], [$Bool], false)}, {prop: "SetBool", name: "SetBool", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "setRunes", name: "setRunes", pkg: "reflect", typ: $funcType([sliceType$12], [], false)}, {prop: "SetComplex", name: "SetComplex", pkg: "", typ: $funcType([$Complex128], [], false)}, {prop: "SetFloat", name: "SetFloat", pkg: "", typ: $funcType([$Float64], [], false)}, {prop: "SetInt", name: "SetInt", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "SetMapIndex", name: "SetMapIndex", pkg: "", typ: $funcType([Value, Value], [], false)}, {prop: "SetUint", name: "SetUint", pkg: "", typ: $funcType([$Uint64], [], false)}, {prop: "SetPointer", name: "SetPointer", pkg: "", typ: $funcType([$UnsafePointer], [], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "stringNonString", name: "stringNonString", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "TryRecv", name: "TryRecv", pkg: "", typ: $funcType([], [Value, $Bool], false)}, {prop: "TrySend", name: "TrySend", pkg: "", typ: $funcType([Value], [$Bool], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "typeSlow", name: "typeSlow", pkg: "reflect", typ: $funcType([], [Type], false)}, {prop: "CanUint", name: "CanUint", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Uint", name: "Uint", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "UnsafeAddr", name: "UnsafeAddr", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Grow", name: "Grow", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Convert", name: "Convert", pkg: "", typ: $funcType([Type], [Value], false)}, {prop: "CanConvert", name: "CanConvert", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([Value], [$Bool], false)}, {prop: "object", name: "object", pkg: "reflect", typ: $funcType([], [ptrType$3], false)}, {prop: "assignTo", name: "assignTo", pkg: "reflect", typ: $funcType([$String, ptrType$2, $UnsafePointer], [Value], false)}, {prop: "call", name: "call", pkg: "reflect", typ: $funcType([$String, sliceType$10], [sliceType$10], false)}, {prop: "Cap", name: "Cap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "UnsafePointer", name: "UnsafePointer", pkg: "", typ: $funcType([], [$UnsafePointer], false)}, {prop: "grow", name: "grow", pkg: "reflect", typ: $funcType([$Int], [], false)}, {prop: "extendSlice", name: "extendSlice", pkg: "reflect", typ: $funcType([$Int], [Value], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "InterfaceData", name: "InterfaceData", pkg: "", typ: $funcType([], [arrayType$8], false)}, {prop: "SetZero", name: "SetZero", pkg: "", typ: $funcType([], [], false)}, {prop: "IsNil", name: "IsNil", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Pointer", name: "Pointer", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([Value], [], false)}, {prop: "bytesSlow", name: "bytesSlow", pkg: "reflect", typ: $funcType([], [sliceType$4], false)}, {prop: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType$4], [], false)}, {prop: "SetCap", name: "SetCap", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "SetLen", name: "SetLen", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Slice", name: "Slice", pkg: "", typ: $funcType([$Int, $Int], [Value], false)}, {prop: "Slice3", name: "Slice3", pkg: "", typ: $funcType([$Int, $Int, $Int], [Value], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}]; + flag.methods = [{prop: "kind", name: "kind", pkg: "reflect", typ: $funcType([], [Kind], false)}, {prop: "ro", name: "ro", pkg: "reflect", typ: $funcType([], [flag], false)}, {prop: "mustBe", name: "mustBe", pkg: "reflect", typ: $funcType([Kind], [], false)}, {prop: "mustBeExported", name: "mustBeExported", pkg: "reflect", typ: $funcType([], [], false)}, {prop: "mustBeExportedSlow", name: "mustBeExportedSlow", pkg: "reflect", typ: $funcType([], [], false)}, {prop: "mustBeAssignable", name: "mustBeAssignable", pkg: "reflect", typ: $funcType([], [], false)}, {prop: "mustBeAssignableSlow", name: "mustBeAssignableSlow", pkg: "reflect", typ: $funcType([], [], false)}, {prop: "panicNotMap", name: "panicNotMap", pkg: "reflect", typ: $funcType([], [], false)}]; + ptrType$23.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$22.methods = [{prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Next", name: "Next", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([Value], [], false)}]; + Kind.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$2.methods = [{prop: "textOff", name: "textOff", pkg: "reflect", typ: $funcType([textOff], [$UnsafePointer], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Align", name: "Align", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "FieldAlign", name: "FieldAlign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "common", name: "common", pkg: "reflect", typ: $funcType([], [ptrType$2], false)}, {prop: "exportedMethods", name: "exportedMethods", pkg: "reflect", typ: $funcType([], [sliceType$13], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "hasName", name: "hasName", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ChanDir", name: "ChanDir", pkg: "", typ: $funcType([], [ChanDir], false)}, {prop: "IsVariadic", name: "IsVariadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$8], [StructField], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumIn", name: "NumIn", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumOut", name: "NumOut", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Out", name: "Out", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "ConvertibleTo", name: "ConvertibleTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "gcSlice", name: "gcSlice", pkg: "reflect", typ: $funcType([$Uintptr, $Uintptr], [sliceType$4], false)}, {prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$9], false)}, {prop: "nameOff", name: "nameOff", pkg: "reflect", typ: $funcType([nameOff], [name], false)}, {prop: "typeOff", name: "typeOff", pkg: "reflect", typ: $funcType([typeOff], [ptrType$2], false)}, {prop: "ptrTo", name: "ptrTo", pkg: "reflect", typ: $funcType([], [ptrType$2], false)}, {prop: "pointers", name: "pointers", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}]; + ChanDir.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$10.methods = [{prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}]; + ptrType$25.methods = [{prop: "embedded", name: "embedded", pkg: "reflect", typ: $funcType([], [$Bool], false)}]; + ptrType$12.methods = [{prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$8], [StructField], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}]; + Method.methods = [{prop: "IsExported", name: "IsExported", pkg: "", typ: $funcType([], [$Bool], false)}]; + StructField.methods = [{prop: "IsExported", name: "IsExported", pkg: "", typ: $funcType([], [$Bool], false)}]; + StructTag.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Lookup", name: "Lookup", pkg: "", typ: $funcType([$String], [$String, $Bool], false)}]; + ptrType$9.methods = [{prop: "methods", name: "methods", pkg: "reflect", typ: $funcType([], [sliceType$13], false)}, {prop: "exportedMethods", name: "exportedMethods", pkg: "reflect", typ: $funcType([], [sliceType$13], false)}]; + ptrType$19.methods = [{prop: "in$", name: "in", pkg: "reflect", typ: $funcType([], [sliceType$3], false)}, {prop: "out", name: "out", pkg: "reflect", typ: $funcType([], [sliceType$3], false)}]; + name.methods = [{prop: "data", name: "data", pkg: "reflect", typ: $funcType([$Int, $String], [ptrType$13], false)}, {prop: "hasTag", name: "hasTag", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "readVarint", name: "readVarint", pkg: "reflect", typ: $funcType([$Int], [$Int, $Int], false)}, {prop: "name", name: "name", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "tag", name: "tag", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: $funcType([], [$String], false)}, {prop: "isExported", name: "isExported", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "embedded", name: "embedded", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "setPkgPath", name: "setPkgPath", pkg: "reflect", typ: $funcType([$String], [], false)}]; + ptrType$26.methods = [{prop: "initialized", name: "initialized", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "skipUntilValidKey", name: "skipUntilValidKey", pkg: "reflect", typ: $funcType([], [], false)}]; + Value.init("reflect", [{prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "ptr", name: "ptr", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}, {prop: "flag", name: "flag", embedded: true, exported: false, typ: flag, tag: ""}]); + ValueError.init("", [{prop: "Method", name: "Method", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Kind", name: "Kind", embedded: false, exported: true, typ: Kind, tag: ""}]); + emptyInterface.init("reflect", [{prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "word", name: "word", embedded: false, exported: false, typ: $UnsafePointer, tag: ""}]); + MapIter.init("reflect", [{prop: "m", name: "m", embedded: false, exported: false, typ: Value, tag: ""}, {prop: "hiter", name: "hiter", embedded: false, exported: false, typ: hiter, tag: ""}]); + Type.init([{prop: "Align", name: "Align", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "ChanDir", name: "ChanDir", pkg: "", typ: $funcType([], [ChanDir], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "ConvertibleTo", name: "ConvertibleTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldAlign", name: "FieldAlign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$8], [StructField], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "IsVariadic", name: "IsVariadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumIn", name: "NumIn", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumOut", name: "NumOut", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Out", name: "Out", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "common", name: "common", pkg: "reflect", typ: $funcType([], [ptrType$2], false)}, {prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$9], false)}]); + rtype.init("reflect", [{prop: "size", name: "size", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "ptrdata", name: "ptrdata", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "hash", name: "hash", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "tflag", name: "tflag", embedded: false, exported: false, typ: tflag, tag: ""}, {prop: "align", name: "align", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "fieldAlign", name: "fieldAlign", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "kind", name: "kind", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "equal", name: "equal", embedded: false, exported: false, typ: funcType$4, tag: ""}, {prop: "gcdata", name: "gcdata", embedded: false, exported: false, typ: ptrType$13, tag: ""}, {prop: "str", name: "str", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "ptrToThis", name: "ptrToThis", embedded: false, exported: false, typ: typeOff, tag: ""}]); + method.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "mtyp", name: "mtyp", embedded: false, exported: false, typ: typeOff, tag: ""}, {prop: "ifn", name: "ifn", embedded: false, exported: false, typ: textOff, tag: ""}, {prop: "tfn", name: "tfn", embedded: false, exported: false, typ: textOff, tag: ""}]); + arrayType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "slice", name: "slice", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "len", name: "len", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); + chanType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "dir", name: "dir", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); + imethod.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: typeOff, tag: ""}]); + interfaceType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: name, tag: ""}, {prop: "methods", name: "methods", embedded: false, exported: false, typ: sliceType$16, tag: ""}]); + mapType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "key", name: "key", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "bucket", name: "bucket", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "hasher", name: "hasher", embedded: false, exported: false, typ: funcType$5, tag: ""}, {prop: "keysize", name: "keysize", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "valuesize", name: "valuesize", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "bucketsize", name: "bucketsize", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "flags", name: "flags", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + ptrType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); + sliceType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); + structField.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: name, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Uintptr, tag: ""}]); + structType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: ""}, {prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: name, tag: ""}, {prop: "fields", name: "fields", embedded: false, exported: false, typ: sliceType$17, tag: ""}]); + Method.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}, {prop: "Func", name: "Func", embedded: false, exported: true, typ: Value, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: $Int, tag: ""}]); + StructField.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}, {prop: "Tag", name: "Tag", embedded: false, exported: true, typ: StructTag, tag: ""}, {prop: "Offset", name: "Offset", embedded: false, exported: true, typ: $Uintptr, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: sliceType$8, tag: ""}, {prop: "Anonymous", name: "Anonymous", embedded: false, exported: true, typ: $Bool, tag: ""}]); + fieldScan.init("reflect", [{prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: sliceType$8, tag: ""}]); + uncommonType.init("reflect", [{prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: nameOff, tag: ""}, {prop: "mcount", name: "mcount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "xcount", name: "xcount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "moff", name: "moff", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "_methods", name: "_methods", embedded: false, exported: false, typ: sliceType$13, tag: ""}]); + funcType.init("reflect", [{prop: "rtype", name: "rtype", embedded: true, exported: false, typ: rtype, tag: "reflect:\"func\""}, {prop: "inCount", name: "inCount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "outCount", name: "outCount", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "_in", name: "_in", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "_out", name: "_out", embedded: false, exported: false, typ: sliceType$3, tag: ""}]); + name.init("reflect", [{prop: "bytes", name: "bytes", embedded: false, exported: false, typ: ptrType$13, tag: ""}]); + nameData.init("reflect", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "tag", name: "tag", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "exported", name: "exported", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "embedded", name: "embedded", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "pkgPath", name: "pkgPath", embedded: false, exported: false, typ: $String, tag: ""}]); + hiter.init("reflect", [{prop: "t", name: "t", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "m", name: "m", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "keys", name: "keys", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "i", name: "i", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "last", name: "last", embedded: false, exported: false, typ: ptrType$3, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = abi.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytealg.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = goarch.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = itoa.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + zeroVal = arrayType$1.zero(); + nameOffList = sliceType$2.nil; + typeOffList = sliceType$3.nil; + bytesType = rtypeOf((sliceType$4.nil)); + uint8Type = rtypeOf(new $Uint8(0)); + stringType = rtypeOf(new $String("")); + kindNames = new sliceType$5(["invalid", "bool", "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64", "uintptr", "float32", "float64", "complex64", "complex128", "array", "chan", "func", "interface", "map", "ptr", "slice", "string", "struct", "unsafe.Pointer"]); + initialized = false; + nameMap = new $global.Map(); + callHelper = $assertType($internalize($call, $emptyInterface), funcType$1); + jsObjectPtr = reflectType($jsObjectPtr); + selectHelper = $assertType($internalize($select, $emptyInterface), funcType$1); + $r = init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["sort"] = (function() { + var $pkg = {}, $init, reflectlite, bits, xorshift, lessSwap, IntSlice, StringSlice, ptrType, ptrType$1, sliceType, sliceType$2, funcType, funcType$1, insertionSort, siftDown, heapSort, pdqsort, partition, partitionEqual, partialInsertionSort, breakPatterns, choosePivot, order2, median, medianAdjacent, reverseRange, swapRange, stable, symMerge, rotate, insertionSort_func, siftDown_func, heapSort_func, pdqsort_func, partition_func, partitionEqual_func, partialInsertionSort_func, breakPatterns_func, choosePivot_func, order2_func, median_func, medianAdjacent_func, reverseRange_func, Sort, nextPowerOfTwo, IsSorted, Ints, Strings, Stable, Slice, Search, SearchInts, SearchStrings; + reflectlite = $packages["internal/reflectlite"]; + bits = $packages["math/bits"]; + xorshift = $newType(8, $kindUint64, "sort.xorshift", true, "sort", false, null); + lessSwap = $newType(0, $kindStruct, "sort.lessSwap", true, "sort", false, function(Less_, Swap_) { + this.$val = this; + if (arguments.length === 0) { + this.Less = $throwNilPointerError; + this.Swap = $throwNilPointerError; + return; + } + this.Less = Less_; + this.Swap = Swap_; + }); + IntSlice = $newType(12, $kindSlice, "sort.IntSlice", true, "sort", true, null); + StringSlice = $newType(12, $kindSlice, "sort.StringSlice", true, "sort", true, null); + $pkg.xorshift = xorshift; + $pkg.lessSwap = lessSwap; + $pkg.IntSlice = IntSlice; + $pkg.StringSlice = StringSlice; + $pkg.$finishSetup = function() { + ptrType = $ptrType(xorshift); + ptrType$1 = $ptrType($Int); + sliceType = $sliceType($Int); + sliceType$2 = $sliceType($String); + funcType = $funcType([$Int, $Int], [$Bool], false); + funcType$1 = $funcType([$Int, $Int], [], false); + insertionSort = function insertionSort$1(data, a, b) { + var {_r, _v, a, b, data, i, j, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = a + 1 >> 0; + /* while (true) { */ case 1: + /* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 2; continue; } + j = i; + /* while (true) { */ case 3: + if (!(j > a)) { _v = false; $s = 5; continue s; } + _r = data.Less(j, j - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 5: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 4; continue; } + $r = data.Swap(j, j - 1 >> 0); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j = j - (1) >> 0; + $s = 3; continue; + case 4: + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: insertionSort$1, $c: true, $r, _r, _v, a, b, data, i, j, $s};return $f; + }; + siftDown = function siftDown$1(data, lo, hi, first) { + var {_r, _r$1, _v, child, data, first, hi, lo, root, $s, $r, $c} = $restore(this, {data, lo, hi, first}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + root = lo; + /* while (true) { */ case 1: + child = ($imul(2, root)) + 1 >> 0; + if (child >= hi) { + /* break; */ $s = 2; continue; + } + if (!((child + 1 >> 0) < hi)) { _v = false; $s = 5; continue s; } + _r = data.Less(first + child >> 0, (first + child >> 0) + 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + child = child + (1) >> 0; + /* } */ case 4: + _r$1 = data.Less(first + root >> 0, first + child >> 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!_r$1) { */ case 7: + $s = -1; return; + /* } */ case 8: + $r = data.Swap(first + root >> 0, first + child >> 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + root = child; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: siftDown$1, $c: true, $r, _r, _r$1, _v, child, data, first, hi, lo, root, $s};return $f; + }; + heapSort = function heapSort$1(data, a, b) { + var {_q, a, b, data, first, hi, i, i$1, lo, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + first = a; + lo = 0; + hi = b - a >> 0; + i = (_q = ((hi - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + /* while (true) { */ case 1: + /* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 2; continue; } + $r = siftDown(data, i, hi, first); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i - (1) >> 0; + $s = 1; continue; + case 2: + i$1 = hi - 1 >> 0; + /* while (true) { */ case 4: + /* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 5; continue; } + $r = data.Swap(first, first + i$1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = siftDown(data, lo, i$1, first); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 - (1) >> 0; + $s = 4; continue; + case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: heapSort$1, $c: true, $r, _q, a, b, data, first, hi, i, i$1, lo, $s};return $f; + }; + pdqsort = function pdqsort$1(data, a, b, limit) { + var {_q, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, _v, a, alreadyPartitioned, b, balanceThreshold, data, hint, leftLen, length, limit, mid, mid$1, pivot, rightLen, wasBalanced, wasPartitioned, $s, $r, $c} = $restore(this, {data, a, b, limit}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + wasBalanced = true; + wasPartitioned = true; + /* while (true) { */ case 1: + length = b - a >> 0; + /* */ if (length <= 12) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (length <= 12) { */ case 3: + $r = insertionSort(data, a, b); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 4: + /* */ if (limit === 0) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (limit === 0) { */ case 6: + $r = heapSort(data, a, b); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 7: + /* */ if (!wasBalanced) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!wasBalanced) { */ case 9: + $r = breakPatterns(data, a, b); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + limit = limit - (1) >> 0; + /* } */ case 10: + _r = choosePivot(data, a, b); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + pivot = _tuple[0]; + hint = _tuple[1]; + /* */ if (hint === 2) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (hint === 2) { */ case 13: + $r = reverseRange(data, a, b); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + pivot = ((b - 1 >> 0)) - ((pivot - a >> 0)) >> 0; + hint = 1; + /* } */ case 14: + /* */ if (wasBalanced && wasPartitioned && (hint === 1)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (wasBalanced && wasPartitioned && (hint === 1)) { */ case 16: + _r$1 = partialInsertionSort(data, a, b); /* */ $s = 20; case 20: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (_r$1) { */ case 18: + $s = -1; return; + /* } */ case 19: + /* } */ case 17: + if (!(a > 0)) { _v = false; $s = 23; continue s; } + _r$2 = data.Less(a - 1 >> 0, pivot); /* */ $s = 24; case 24: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = !_r$2; case 23: + /* */ if (_v) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (_v) { */ case 21: + _r$3 = partitionEqual(data, a, b, pivot); /* */ $s = 25; case 25: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + mid = _r$3; + a = mid; + /* continue; */ $s = 1; continue; + /* } */ case 22: + _r$4 = partition(data, a, b, pivot); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + mid$1 = _tuple$1[0]; + alreadyPartitioned = _tuple$1[1]; + wasPartitioned = alreadyPartitioned; + _tmp = mid$1 - a >> 0; + _tmp$1 = b - mid$1 >> 0; + leftLen = _tmp; + rightLen = _tmp$1; + balanceThreshold = (_q = length / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + /* */ if (leftLen < rightLen) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (leftLen < rightLen) { */ case 27: + wasBalanced = leftLen >= balanceThreshold; + $r = pdqsort(data, a, mid$1, limit); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + a = mid$1 + 1 >> 0; + $s = 29; continue; + /* } else { */ case 28: + wasBalanced = rightLen >= balanceThreshold; + $r = pdqsort(data, mid$1 + 1 >> 0, b, limit); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + b = mid$1; + /* } */ case 29: + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: pdqsort$1, $c: true, $r, _q, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, _v, a, alreadyPartitioned, b, balanceThreshold, data, hint, leftLen, length, limit, mid, mid$1, pivot, rightLen, wasBalanced, wasPartitioned, $s};return $f; + }; + partition = function partition$1(data, a, b, pivot) { + var {_r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _v, _v$1, _v$2, _v$3, a, alreadyPartitioned, b, data, i, j, newpivot, pivot, $s, $r, $c} = $restore(this, {data, a, b, pivot}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + newpivot = 0; + alreadyPartitioned = false; + $r = data.Swap(a, pivot); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp = a + 1 >> 0; + _tmp$1 = b - 1 >> 0; + i = _tmp; + j = _tmp$1; + /* while (true) { */ case 2: + if (!(i <= j)) { _v = false; $s = 4; continue s; } + _r = data.Less(i, a); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 4: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 3; continue; } + i = i + (1) >> 0; + $s = 2; continue; + case 3: + /* while (true) { */ case 6: + if (!(i <= j)) { _v$1 = false; $s = 8; continue s; } + _r$1 = data.Less(j, a); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v$1 = !_r$1; case 8: + /* if (!(_v$1)) { break; } */ if(!(_v$1)) { $s = 7; continue; } + j = j - (1) >> 0; + $s = 6; continue; + case 7: + /* */ if (i > j) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (i > j) { */ case 10: + $r = data.Swap(j, a); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$2 = j; + _tmp$3 = true; + newpivot = _tmp$2; + alreadyPartitioned = _tmp$3; + $s = -1; return [newpivot, alreadyPartitioned]; + /* } */ case 11: + $r = data.Swap(i, j); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + j = j - (1) >> 0; + /* while (true) { */ case 14: + /* while (true) { */ case 16: + if (!(i <= j)) { _v$2 = false; $s = 18; continue s; } + _r$2 = data.Less(i, a); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$2 = _r$2; case 18: + /* if (!(_v$2)) { break; } */ if(!(_v$2)) { $s = 17; continue; } + i = i + (1) >> 0; + $s = 16; continue; + case 17: + /* while (true) { */ case 20: + if (!(i <= j)) { _v$3 = false; $s = 22; continue s; } + _r$3 = data.Less(j, a); /* */ $s = 23; case 23: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v$3 = !_r$3; case 22: + /* if (!(_v$3)) { break; } */ if(!(_v$3)) { $s = 21; continue; } + j = j - (1) >> 0; + $s = 20; continue; + case 21: + if (i > j) { + /* break; */ $s = 15; continue; + } + $r = data.Swap(i, j); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + j = j - (1) >> 0; + $s = 14; continue; + case 15: + $r = data.Swap(j, a); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$4 = j; + _tmp$5 = false; + newpivot = _tmp$4; + alreadyPartitioned = _tmp$5; + $s = -1; return [newpivot, alreadyPartitioned]; + /* */ } return; } var $f = {$blk: partition$1, $c: true, $r, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _v, _v$1, _v$2, _v$3, a, alreadyPartitioned, b, data, i, j, newpivot, pivot, $s};return $f; + }; + partitionEqual = function partitionEqual$1(data, a, b, pivot) { + var {_r, _r$1, _tmp, _tmp$1, _v, _v$1, a, b, data, i, j, newpivot, pivot, $s, $r, $c} = $restore(this, {data, a, b, pivot}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + newpivot = 0; + $r = data.Swap(a, pivot); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp = a + 1 >> 0; + _tmp$1 = b - 1 >> 0; + i = _tmp; + j = _tmp$1; + /* while (true) { */ case 2: + /* while (true) { */ case 4: + if (!(i <= j)) { _v = false; $s = 6; continue s; } + _r = data.Less(a, i); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = !_r; case 6: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 5; continue; } + i = i + (1) >> 0; + $s = 4; continue; + case 5: + /* while (true) { */ case 8: + if (!(i <= j)) { _v$1 = false; $s = 10; continue s; } + _r$1 = data.Less(a, j); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v$1 = _r$1; case 10: + /* if (!(_v$1)) { break; } */ if(!(_v$1)) { $s = 9; continue; } + j = j - (1) >> 0; + $s = 8; continue; + case 9: + if (i > j) { + /* break; */ $s = 3; continue; + } + $r = data.Swap(i, j); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + j = j - (1) >> 0; + $s = 2; continue; + case 3: + newpivot = i; + $s = -1; return newpivot; + /* */ } return; } var $f = {$blk: partitionEqual$1, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _v, _v$1, a, b, data, i, j, newpivot, pivot, $s};return $f; + }; + partialInsertionSort = function partialInsertionSort$1(data, a, b) { + var {_r, _r$1, _r$2, _v, a, b, data, i, j, j$1, j$2, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = a + 1 >> 0; + j = 0; + /* while (true) { */ case 1: + /* if (!(j < 5)) { break; } */ if(!(j < 5)) { $s = 2; continue; } + /* while (true) { */ case 3: + if (!(i < b)) { _v = false; $s = 5; continue s; } + _r = data.Less(i, i - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = !_r; case 5: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 4; continue; } + i = i + (1) >> 0; + $s = 3; continue; + case 4: + if (i === b) { + $s = -1; return true; + } + if ((b - a >> 0) < 50) { + $s = -1; return false; + } + $r = data.Swap(i, i - 1 >> 0); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if ((i - a >> 0) >= 2) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ((i - a >> 0) >= 2) { */ case 8: + j$1 = i - 1 >> 0; + /* while (true) { */ case 10: + /* if (!(j$1 >= 1)) { break; } */ if(!(j$1 >= 1)) { $s = 11; continue; } + _r$1 = data.Less(j$1, j$1 - 1 >> 0); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!_r$1) { */ case 12: + /* break; */ $s = 11; continue; + /* } */ case 13: + $r = data.Swap(j$1, j$1 - 1 >> 0); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j$1 = j$1 - (1) >> 0; + $s = 10; continue; + case 11: + /* } */ case 9: + /* */ if ((b - i >> 0) >= 2) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if ((b - i >> 0) >= 2) { */ case 16: + j$2 = i + 1 >> 0; + /* while (true) { */ case 18: + /* if (!(j$2 < b)) { break; } */ if(!(j$2 < b)) { $s = 19; continue; } + _r$2 = data.Less(j$2, j$2 - 1 >> 0); /* */ $s = 22; case 22: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (!_r$2) { */ case 20: + /* break; */ $s = 19; continue; + /* } */ case 21: + $r = data.Swap(j$2, j$2 - 1 >> 0); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j$2 = j$2 + (1) >> 0; + $s = 18; continue; + case 19: + /* } */ case 17: + j = j + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: partialInsertionSort$1, $c: true, $r, _r, _r$1, _r$2, _v, a, b, data, i, j, j$1, j$2, $s};return $f; + }; + breakPatterns = function breakPatterns$1(data, a, b) { + var {_q, _q$1, a, b, data, idx, length, modulus, other, random, random$24ptr, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + length = b - a >> 0; + /* */ if (length >= 8) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (length >= 8) { */ case 1: + random = (new xorshift(0, length)); + modulus = nextPowerOfTwo(length); + idx = (a + ($imul(((_q = length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), 2)) >> 0) - 1 >> 0; + /* while (true) { */ case 3: + /* if (!(idx <= ((a + ($imul(((_q$1 = length / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), 2)) >> 0) + 1 >> 0))) { break; } */ if(!(idx <= ((a + ($imul(((_q$1 = length / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), 2)) >> 0) + 1 >> 0))) { $s = 4; continue; } + other = (((((((random$24ptr || (random$24ptr = new ptrType(function() { return random; }, function($v) { random = $v; }))).Next().$low >>> 0)) & ((modulus - 1 >>> 0))) >>> 0) >> 0)); + if (other >= length) { + other = other - (length) >> 0; + } + $r = data.Swap(idx, a + other >> 0); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + idx = idx + (1) >> 0; + $s = 3; continue; + case 4: + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: breakPatterns$1, $c: true, $r, _q, _q$1, a, b, data, idx, length, modulus, other, random, random$24ptr, $s};return $f; + }; + choosePivot = function choosePivot$1(data, a, b) { + var {_1, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a, b, data, hint, i, j, k, l, pivot, swaps, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + swaps = [swaps]; + pivot = 0; + hint = 0; + l = b - a >> 0; + swaps[0] = 0; + i = a + ($imul((_q = l / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 1)) >> 0; + j = a + ($imul((_q$1 = l / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 2)) >> 0; + k = a + ($imul((_q$2 = l / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")), 3)) >> 0; + /* */ if (l >= 8) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (l >= 8) { */ case 1: + /* */ if (l >= 50) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (l >= 50) { */ case 3: + _r = medianAdjacent(data, i, (swaps.$ptr || (swaps.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, swaps)))); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + _r$1 = medianAdjacent(data, j, (swaps.$ptr || (swaps.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, swaps)))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + j = _r$1; + _r$2 = medianAdjacent(data, k, (swaps.$ptr || (swaps.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, swaps)))); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + k = _r$2; + /* } */ case 4: + _r$3 = median(data, i, j, k, (swaps.$ptr || (swaps.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, swaps)))); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + j = _r$3; + /* } */ case 2: + _1 = swaps[0]; + if (_1 === (0)) { + _tmp = j; + _tmp$1 = 1; + pivot = _tmp; + hint = _tmp$1; + $s = -1; return [pivot, hint]; + } else if (_1 === (12)) { + _tmp$2 = j; + _tmp$3 = 2; + pivot = _tmp$2; + hint = _tmp$3; + $s = -1; return [pivot, hint]; + } else { + _tmp$4 = j; + _tmp$5 = 0; + pivot = _tmp$4; + hint = _tmp$5; + $s = -1; return [pivot, hint]; + } + $s = -1; return [pivot, hint]; + /* */ } return; } var $f = {$blk: choosePivot$1, $c: true, $r, _1, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a, b, data, hint, i, j, k, l, pivot, swaps, $s};return $f; + }; + order2 = function order2$1(data, a, b, swaps) { + var {_r, a, b, data, swaps, $s, $r, $c} = $restore(this, {data, a, b, swaps}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = data.Less(b, a); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + swaps.$set(swaps.$get() + (1) >> 0); + $s = -1; return [b, a]; + /* } */ case 2: + $s = -1; return [a, b]; + /* */ } return; } var $f = {$blk: order2$1, $c: true, $r, _r, a, b, data, swaps, $s};return $f; + }; + median = function median$1(data, a, b, c, swaps) { + var {_r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, a, b, c, data, swaps, $s, $r, $c} = $restore(this, {data, a, b, c, swaps}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = order2(data, a, b, swaps); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + a = _tuple[0]; + b = _tuple[1]; + _r$1 = order2(data, b, c, swaps); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + b = _tuple$1[0]; + c = _tuple$1[1]; + _r$2 = order2(data, a, b, swaps); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + a = _tuple$2[0]; + b = _tuple$2[1]; + $s = -1; return b; + /* */ } return; } var $f = {$blk: median$1, $c: true, $r, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, a, b, c, data, swaps, $s};return $f; + }; + medianAdjacent = function medianAdjacent$1(data, a, swaps) { + var {$24r, _r, a, data, swaps, $s, $r, $c} = $restore(this, {data, a, swaps}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = median(data, a - 1 >> 0, a, a + 1 >> 0, swaps); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: medianAdjacent$1, $c: true, $r, $24r, _r, a, data, swaps, $s};return $f; + }; + reverseRange = function reverseRange$1(data, a, b) { + var {a, b, data, i, j, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = a; + j = b - 1 >> 0; + /* while (true) { */ case 1: + /* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 2; continue; } + $r = data.Swap(i, j); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + j = j - (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: reverseRange$1, $c: true, $r, a, b, data, i, j, $s};return $f; + }; + swapRange = function swapRange$1(data, a, b, n) { + var {a, b, data, i, n, $s, $r, $c} = $restore(this, {data, a, b, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = 0; + /* while (true) { */ case 1: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } + $r = data.Swap(a + i >> 0, b + i >> 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: swapRange$1, $c: true, $r, a, b, data, i, n, $s};return $f; + }; + stable = function stable$1(data, n) { + var {_tmp, _tmp$1, _tmp$2, _tmp$3, a, b, blockSize, data, m, n, $s, $r, $c} = $restore(this, {data, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + blockSize = 20; + _tmp = 0; + _tmp$1 = blockSize; + a = _tmp; + b = _tmp$1; + /* while (true) { */ case 1: + /* if (!(b <= n)) { break; } */ if(!(b <= n)) { $s = 2; continue; } + $r = insertionSort(data, a, b); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + a = b; + b = b + (blockSize) >> 0; + $s = 1; continue; + case 2: + $r = insertionSort(data, a, n); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* while (true) { */ case 5: + /* if (!(blockSize < n)) { break; } */ if(!(blockSize < n)) { $s = 6; continue; } + _tmp$2 = 0; + _tmp$3 = $imul(2, blockSize); + a = _tmp$2; + b = _tmp$3; + /* while (true) { */ case 7: + /* if (!(b <= n)) { break; } */ if(!(b <= n)) { $s = 8; continue; } + $r = symMerge(data, a, a + blockSize >> 0, b); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + a = b; + b = b + (($imul(2, blockSize))) >> 0; + $s = 7; continue; + case 8: + m = a + blockSize >> 0; + /* */ if (m < n) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (m < n) { */ case 10: + $r = symMerge(data, a, m, n); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + blockSize = $imul(blockSize, (2)); + $s = 5; continue; + case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: stable$1, $c: true, $r, _tmp, _tmp$1, _tmp$2, _tmp$3, a, b, blockSize, data, m, n, $s};return $f; + }; + symMerge = function symMerge$1(data, a, m, b) { + var {_r, _r$1, _r$2, _tmp, _tmp$1, a, b, c, data, end, h, h$1, i, i$1, j, j$1, k, k$1, m, mid, n, p, r, start, $s, $r, $c} = $restore(this, {data, a, m, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if ((m - a >> 0) === 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((m - a >> 0) === 1) { */ case 1: + i = m; + j = b; + /* while (true) { */ case 3: + /* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 4; continue; } + h = ((((((i + j >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + _r = data.Less(h, a); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r) { */ case 5: + i = h + 1 >> 0; + $s = 7; continue; + /* } else { */ case 6: + j = h; + /* } */ case 7: + $s = 3; continue; + case 4: + k = a; + /* while (true) { */ case 9: + /* if (!(k < (i - 1 >> 0))) { break; } */ if(!(k < (i - 1 >> 0))) { $s = 10; continue; } + $r = data.Swap(k, k + 1 >> 0); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + k = k + (1) >> 0; + $s = 9; continue; + case 10: + $s = -1; return; + /* } */ case 2: + /* */ if ((b - m >> 0) === 1) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ((b - m >> 0) === 1) { */ case 12: + i$1 = a; + j$1 = m; + /* while (true) { */ case 14: + /* if (!(i$1 < j$1)) { break; } */ if(!(i$1 < j$1)) { $s = 15; continue; } + h$1 = ((((((i$1 + j$1 >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + _r$1 = data.Less(m, h$1); /* */ $s = 19; case 19: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!_r$1) { */ case 16: + i$1 = h$1 + 1 >> 0; + $s = 18; continue; + /* } else { */ case 17: + j$1 = h$1; + /* } */ case 18: + $s = 14; continue; + case 15: + k$1 = m; + /* while (true) { */ case 20: + /* if (!(k$1 > i$1)) { break; } */ if(!(k$1 > i$1)) { $s = 21; continue; } + $r = data.Swap(k$1, k$1 - 1 >> 0); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + k$1 = k$1 - (1) >> 0; + $s = 20; continue; + case 21: + $s = -1; return; + /* } */ case 13: + mid = ((((((a + b >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + n = mid + m >> 0; + _tmp = 0; + _tmp$1 = 0; + start = _tmp; + r = _tmp$1; + if (m > mid) { + start = n - b >> 0; + r = mid; + } else { + start = a; + r = m; + } + p = n - 1 >> 0; + /* while (true) { */ case 23: + /* if (!(start < r)) { break; } */ if(!(start < r)) { $s = 24; continue; } + c = ((((((start + r >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + _r$2 = data.Less(p - c >> 0, c); /* */ $s = 28; case 28: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (!_r$2) { */ case 25: + start = c + 1 >> 0; + $s = 27; continue; + /* } else { */ case 26: + r = c; + /* } */ case 27: + $s = 23; continue; + case 24: + end = n - start >> 0; + /* */ if (start < m && m < end) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (start < m && m < end) { */ case 29: + $r = rotate(data, start, m, end); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 30: + /* */ if (a < start && start < mid) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (a < start && start < mid) { */ case 32: + $r = symMerge(data, a, start, mid); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 33: + /* */ if (mid < end && end < b) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (mid < end && end < b) { */ case 35: + $r = symMerge(data, mid, end, b); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 36: + $s = -1; return; + /* */ } return; } var $f = {$blk: symMerge$1, $c: true, $r, _r, _r$1, _r$2, _tmp, _tmp$1, a, b, c, data, end, h, h$1, i, i$1, j, j$1, k, k$1, m, mid, n, p, r, start, $s};return $f; + }; + rotate = function rotate$1(data, a, m, b) { + var {a, b, data, i, j, m, $s, $r, $c} = $restore(this, {data, a, m, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = m - a >> 0; + j = b - m >> 0; + /* while (true) { */ case 1: + /* if (!(!((i === j)))) { break; } */ if(!(!((i === j)))) { $s = 2; continue; } + /* */ if (i > j) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (i > j) { */ case 3: + $r = swapRange(data, m - i >> 0, m, j); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i - (j) >> 0; + $s = 5; continue; + /* } else { */ case 4: + $r = swapRange(data, m - i >> 0, (m + j >> 0) - i >> 0, i); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j = j - (i) >> 0; + /* } */ case 5: + $s = 1; continue; + case 2: + $r = swapRange(data, m - i >> 0, m, i); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: rotate$1, $c: true, $r, a, b, data, i, j, m, $s};return $f; + }; + insertionSort_func = function insertionSort_func$1(data, a, b) { + var {_r, _v, a, b, data, i, j, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = a + 1 >> 0; + /* while (true) { */ case 1: + /* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 2; continue; } + j = i; + /* while (true) { */ case 3: + if (!(j > a)) { _v = false; $s = 5; continue s; } + _r = data.Less(j, j - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 5: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 4; continue; } + $r = data.Swap(j, j - 1 >> 0); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j = j - (1) >> 0; + $s = 3; continue; + case 4: + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: insertionSort_func$1, $c: true, $r, _r, _v, a, b, data, i, j, $s};return $f; + }; + siftDown_func = function siftDown_func$1(data, lo, hi, first) { + var {_r, _r$1, _v, child, data, first, hi, lo, root, $s, $r, $c} = $restore(this, {data, lo, hi, first}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + root = lo; + /* while (true) { */ case 1: + child = ($imul(2, root)) + 1 >> 0; + if (child >= hi) { + /* break; */ $s = 2; continue; + } + if (!((child + 1 >> 0) < hi)) { _v = false; $s = 5; continue s; } + _r = data.Less(first + child >> 0, (first + child >> 0) + 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + child = child + (1) >> 0; + /* } */ case 4: + _r$1 = data.Less(first + root >> 0, first + child >> 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!_r$1) { */ case 7: + $s = -1; return; + /* } */ case 8: + $r = data.Swap(first + root >> 0, first + child >> 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + root = child; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: siftDown_func$1, $c: true, $r, _r, _r$1, _v, child, data, first, hi, lo, root, $s};return $f; + }; + heapSort_func = function heapSort_func$1(data, a, b) { + var {_q, a, b, data, first, hi, i, i$1, lo, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + first = a; + lo = 0; + hi = b - a >> 0; + i = (_q = ((hi - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + /* while (true) { */ case 1: + /* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 2; continue; } + $r = siftDown_func($clone(data, lessSwap), i, hi, first); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i - (1) >> 0; + $s = 1; continue; + case 2: + i$1 = hi - 1 >> 0; + /* while (true) { */ case 4: + /* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 5; continue; } + $r = data.Swap(first, first + i$1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = siftDown_func($clone(data, lessSwap), lo, i$1, first); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 - (1) >> 0; + $s = 4; continue; + case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: heapSort_func$1, $c: true, $r, _q, a, b, data, first, hi, i, i$1, lo, $s};return $f; + }; + pdqsort_func = function pdqsort_func$1(data, a, b, limit) { + var {_q, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, _v, a, alreadyPartitioned, b, balanceThreshold, data, hint, leftLen, length, limit, mid, mid$1, pivot, rightLen, wasBalanced, wasPartitioned, $s, $r, $c} = $restore(this, {data, a, b, limit}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + wasBalanced = true; + wasPartitioned = true; + /* while (true) { */ case 1: + length = b - a >> 0; + /* */ if (length <= 12) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (length <= 12) { */ case 3: + $r = insertionSort_func($clone(data, lessSwap), a, b); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 4: + /* */ if (limit === 0) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (limit === 0) { */ case 6: + $r = heapSort_func($clone(data, lessSwap), a, b); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 7: + /* */ if (!wasBalanced) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!wasBalanced) { */ case 9: + $r = breakPatterns_func($clone(data, lessSwap), a, b); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + limit = limit - (1) >> 0; + /* } */ case 10: + _r = choosePivot_func($clone(data, lessSwap), a, b); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + pivot = _tuple[0]; + hint = _tuple[1]; + /* */ if (hint === 2) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (hint === 2) { */ case 13: + $r = reverseRange_func($clone(data, lessSwap), a, b); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + pivot = ((b - 1 >> 0)) - ((pivot - a >> 0)) >> 0; + hint = 1; + /* } */ case 14: + /* */ if (wasBalanced && wasPartitioned && (hint === 1)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (wasBalanced && wasPartitioned && (hint === 1)) { */ case 16: + _r$1 = partialInsertionSort_func($clone(data, lessSwap), a, b); /* */ $s = 20; case 20: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (_r$1) { */ case 18: + $s = -1; return; + /* } */ case 19: + /* } */ case 17: + if (!(a > 0)) { _v = false; $s = 23; continue s; } + _r$2 = data.Less(a - 1 >> 0, pivot); /* */ $s = 24; case 24: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = !_r$2; case 23: + /* */ if (_v) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (_v) { */ case 21: + _r$3 = partitionEqual_func($clone(data, lessSwap), a, b, pivot); /* */ $s = 25; case 25: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + mid = _r$3; + a = mid; + /* continue; */ $s = 1; continue; + /* } */ case 22: + _r$4 = partition_func($clone(data, lessSwap), a, b, pivot); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + mid$1 = _tuple$1[0]; + alreadyPartitioned = _tuple$1[1]; + wasPartitioned = alreadyPartitioned; + _tmp = mid$1 - a >> 0; + _tmp$1 = b - mid$1 >> 0; + leftLen = _tmp; + rightLen = _tmp$1; + balanceThreshold = (_q = length / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + /* */ if (leftLen < rightLen) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (leftLen < rightLen) { */ case 27: + wasBalanced = leftLen >= balanceThreshold; + $r = pdqsort_func($clone(data, lessSwap), a, mid$1, limit); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + a = mid$1 + 1 >> 0; + $s = 29; continue; + /* } else { */ case 28: + wasBalanced = rightLen >= balanceThreshold; + $r = pdqsort_func($clone(data, lessSwap), mid$1 + 1 >> 0, b, limit); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + b = mid$1; + /* } */ case 29: + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: pdqsort_func$1, $c: true, $r, _q, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, _v, a, alreadyPartitioned, b, balanceThreshold, data, hint, leftLen, length, limit, mid, mid$1, pivot, rightLen, wasBalanced, wasPartitioned, $s};return $f; + }; + partition_func = function partition_func$1(data, a, b, pivot) { + var {_r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _v, _v$1, _v$2, _v$3, a, alreadyPartitioned, b, data, i, j, newpivot, pivot, $s, $r, $c} = $restore(this, {data, a, b, pivot}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + newpivot = 0; + alreadyPartitioned = false; + $r = data.Swap(a, pivot); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp = a + 1 >> 0; + _tmp$1 = b - 1 >> 0; + i = _tmp; + j = _tmp$1; + /* while (true) { */ case 2: + if (!(i <= j)) { _v = false; $s = 4; continue s; } + _r = data.Less(i, a); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 4: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 3; continue; } + i = i + (1) >> 0; + $s = 2; continue; + case 3: + /* while (true) { */ case 6: + if (!(i <= j)) { _v$1 = false; $s = 8; continue s; } + _r$1 = data.Less(j, a); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v$1 = !_r$1; case 8: + /* if (!(_v$1)) { break; } */ if(!(_v$1)) { $s = 7; continue; } + j = j - (1) >> 0; + $s = 6; continue; + case 7: + /* */ if (i > j) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (i > j) { */ case 10: + $r = data.Swap(j, a); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$2 = j; + _tmp$3 = true; + newpivot = _tmp$2; + alreadyPartitioned = _tmp$3; + $s = -1; return [newpivot, alreadyPartitioned]; + /* } */ case 11: + $r = data.Swap(i, j); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + j = j - (1) >> 0; + /* while (true) { */ case 14: + /* while (true) { */ case 16: + if (!(i <= j)) { _v$2 = false; $s = 18; continue s; } + _r$2 = data.Less(i, a); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$2 = _r$2; case 18: + /* if (!(_v$2)) { break; } */ if(!(_v$2)) { $s = 17; continue; } + i = i + (1) >> 0; + $s = 16; continue; + case 17: + /* while (true) { */ case 20: + if (!(i <= j)) { _v$3 = false; $s = 22; continue s; } + _r$3 = data.Less(j, a); /* */ $s = 23; case 23: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v$3 = !_r$3; case 22: + /* if (!(_v$3)) { break; } */ if(!(_v$3)) { $s = 21; continue; } + j = j - (1) >> 0; + $s = 20; continue; + case 21: + if (i > j) { + /* break; */ $s = 15; continue; + } + $r = data.Swap(i, j); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + j = j - (1) >> 0; + $s = 14; continue; + case 15: + $r = data.Swap(j, a); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$4 = j; + _tmp$5 = false; + newpivot = _tmp$4; + alreadyPartitioned = _tmp$5; + $s = -1; return [newpivot, alreadyPartitioned]; + /* */ } return; } var $f = {$blk: partition_func$1, $c: true, $r, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _v, _v$1, _v$2, _v$3, a, alreadyPartitioned, b, data, i, j, newpivot, pivot, $s};return $f; + }; + partitionEqual_func = function partitionEqual_func$1(data, a, b, pivot) { + var {_r, _r$1, _tmp, _tmp$1, _v, _v$1, a, b, data, i, j, newpivot, pivot, $s, $r, $c} = $restore(this, {data, a, b, pivot}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + newpivot = 0; + $r = data.Swap(a, pivot); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp = a + 1 >> 0; + _tmp$1 = b - 1 >> 0; + i = _tmp; + j = _tmp$1; + /* while (true) { */ case 2: + /* while (true) { */ case 4: + if (!(i <= j)) { _v = false; $s = 6; continue s; } + _r = data.Less(a, i); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = !_r; case 6: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 5; continue; } + i = i + (1) >> 0; + $s = 4; continue; + case 5: + /* while (true) { */ case 8: + if (!(i <= j)) { _v$1 = false; $s = 10; continue s; } + _r$1 = data.Less(a, j); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v$1 = _r$1; case 10: + /* if (!(_v$1)) { break; } */ if(!(_v$1)) { $s = 9; continue; } + j = j - (1) >> 0; + $s = 8; continue; + case 9: + if (i > j) { + /* break; */ $s = 3; continue; + } + $r = data.Swap(i, j); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + j = j - (1) >> 0; + $s = 2; continue; + case 3: + newpivot = i; + $s = -1; return newpivot; + /* */ } return; } var $f = {$blk: partitionEqual_func$1, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _v, _v$1, a, b, data, i, j, newpivot, pivot, $s};return $f; + }; + partialInsertionSort_func = function partialInsertionSort_func$1(data, a, b) { + var {_r, _r$1, _r$2, _v, a, b, data, i, j, j$1, j$2, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = a + 1 >> 0; + j = 0; + /* while (true) { */ case 1: + /* if (!(j < 5)) { break; } */ if(!(j < 5)) { $s = 2; continue; } + /* while (true) { */ case 3: + if (!(i < b)) { _v = false; $s = 5; continue s; } + _r = data.Less(i, i - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = !_r; case 5: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 4; continue; } + i = i + (1) >> 0; + $s = 3; continue; + case 4: + if (i === b) { + $s = -1; return true; + } + if ((b - a >> 0) < 50) { + $s = -1; return false; + } + $r = data.Swap(i, i - 1 >> 0); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if ((i - a >> 0) >= 2) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ((i - a >> 0) >= 2) { */ case 8: + j$1 = i - 1 >> 0; + /* while (true) { */ case 10: + /* if (!(j$1 >= 1)) { break; } */ if(!(j$1 >= 1)) { $s = 11; continue; } + _r$1 = data.Less(j$1, j$1 - 1 >> 0); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!_r$1) { */ case 12: + /* break; */ $s = 11; continue; + /* } */ case 13: + $r = data.Swap(j$1, j$1 - 1 >> 0); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j$1 = j$1 - (1) >> 0; + $s = 10; continue; + case 11: + /* } */ case 9: + /* */ if ((b - i >> 0) >= 2) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if ((b - i >> 0) >= 2) { */ case 16: + j$2 = i + 1 >> 0; + /* while (true) { */ case 18: + /* if (!(j$2 < b)) { break; } */ if(!(j$2 < b)) { $s = 19; continue; } + _r$2 = data.Less(j$2, j$2 - 1 >> 0); /* */ $s = 22; case 22: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (!_r$2) { */ case 20: + /* break; */ $s = 19; continue; + /* } */ case 21: + $r = data.Swap(j$2, j$2 - 1 >> 0); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j$2 = j$2 + (1) >> 0; + $s = 18; continue; + case 19: + /* } */ case 17: + j = j + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: partialInsertionSort_func$1, $c: true, $r, _r, _r$1, _r$2, _v, a, b, data, i, j, j$1, j$2, $s};return $f; + }; + breakPatterns_func = function breakPatterns_func$1(data, a, b) { + var {_q, _q$1, a, b, data, idx, length, modulus, other, random, random$24ptr, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + length = b - a >> 0; + /* */ if (length >= 8) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (length >= 8) { */ case 1: + random = (new xorshift(0, length)); + modulus = nextPowerOfTwo(length); + idx = (a + ($imul(((_q = length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), 2)) >> 0) - 1 >> 0; + /* while (true) { */ case 3: + /* if (!(idx <= ((a + ($imul(((_q$1 = length / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), 2)) >> 0) + 1 >> 0))) { break; } */ if(!(idx <= ((a + ($imul(((_q$1 = length / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))), 2)) >> 0) + 1 >> 0))) { $s = 4; continue; } + other = (((((((random$24ptr || (random$24ptr = new ptrType(function() { return random; }, function($v) { random = $v; }))).Next().$low >>> 0)) & ((modulus - 1 >>> 0))) >>> 0) >> 0)); + if (other >= length) { + other = other - (length) >> 0; + } + $r = data.Swap(idx, a + other >> 0); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + idx = idx + (1) >> 0; + $s = 3; continue; + case 4: + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: breakPatterns_func$1, $c: true, $r, _q, _q$1, a, b, data, idx, length, modulus, other, random, random$24ptr, $s};return $f; + }; + choosePivot_func = function choosePivot_func$1(data, a, b) { + var {_1, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a, b, data, hint, i, j, k, l, pivot, swaps, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + swaps = [swaps]; + pivot = 0; + hint = 0; + l = b - a >> 0; + swaps[0] = 0; + i = a + ($imul((_q = l / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 1)) >> 0; + j = a + ($imul((_q$1 = l / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 2)) >> 0; + k = a + ($imul((_q$2 = l / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")), 3)) >> 0; + /* */ if (l >= 8) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (l >= 8) { */ case 1: + /* */ if (l >= 50) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (l >= 50) { */ case 3: + _r = medianAdjacent_func($clone(data, lessSwap), i, (swaps.$ptr || (swaps.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, swaps)))); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + _r$1 = medianAdjacent_func($clone(data, lessSwap), j, (swaps.$ptr || (swaps.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, swaps)))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + j = _r$1; + _r$2 = medianAdjacent_func($clone(data, lessSwap), k, (swaps.$ptr || (swaps.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, swaps)))); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + k = _r$2; + /* } */ case 4: + _r$3 = median_func($clone(data, lessSwap), i, j, k, (swaps.$ptr || (swaps.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, swaps)))); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + j = _r$3; + /* } */ case 2: + _1 = swaps[0]; + if (_1 === (0)) { + _tmp = j; + _tmp$1 = 1; + pivot = _tmp; + hint = _tmp$1; + $s = -1; return [pivot, hint]; + } else if (_1 === (12)) { + _tmp$2 = j; + _tmp$3 = 2; + pivot = _tmp$2; + hint = _tmp$3; + $s = -1; return [pivot, hint]; + } else { + _tmp$4 = j; + _tmp$5 = 0; + pivot = _tmp$4; + hint = _tmp$5; + $s = -1; return [pivot, hint]; + } + $s = -1; return [pivot, hint]; + /* */ } return; } var $f = {$blk: choosePivot_func$1, $c: true, $r, _1, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a, b, data, hint, i, j, k, l, pivot, swaps, $s};return $f; + }; + order2_func = function order2_func$1(data, a, b, swaps) { + var {_r, a, b, data, swaps, $s, $r, $c} = $restore(this, {data, a, b, swaps}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = data.Less(b, a); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + swaps.$set(swaps.$get() + (1) >> 0); + $s = -1; return [b, a]; + /* } */ case 2: + $s = -1; return [a, b]; + /* */ } return; } var $f = {$blk: order2_func$1, $c: true, $r, _r, a, b, data, swaps, $s};return $f; + }; + median_func = function median_func$1(data, a, b, c, swaps) { + var {_r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, a, b, c, data, swaps, $s, $r, $c} = $restore(this, {data, a, b, c, swaps}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = order2_func($clone(data, lessSwap), a, b, swaps); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + a = _tuple[0]; + b = _tuple[1]; + _r$1 = order2_func($clone(data, lessSwap), b, c, swaps); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + b = _tuple$1[0]; + c = _tuple$1[1]; + _r$2 = order2_func($clone(data, lessSwap), a, b, swaps); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + a = _tuple$2[0]; + b = _tuple$2[1]; + $s = -1; return b; + /* */ } return; } var $f = {$blk: median_func$1, $c: true, $r, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, a, b, c, data, swaps, $s};return $f; + }; + medianAdjacent_func = function medianAdjacent_func$1(data, a, swaps) { + var {$24r, _r, a, data, swaps, $s, $r, $c} = $restore(this, {data, a, swaps}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = median_func($clone(data, lessSwap), a - 1 >> 0, a, a + 1 >> 0, swaps); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: medianAdjacent_func$1, $c: true, $r, $24r, _r, a, data, swaps, $s};return $f; + }; + reverseRange_func = function reverseRange_func$1(data, a, b) { + var {a, b, data, i, j, $s, $r, $c} = $restore(this, {data, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = a; + j = b - 1 >> 0; + /* while (true) { */ case 1: + /* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 2; continue; } + $r = data.Swap(i, j); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + j = j - (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: reverseRange_func$1, $c: true, $r, a, b, data, i, j, $s};return $f; + }; + Sort = function Sort$1(data) { + var {_r, data, limit, n, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = data.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r; + if (n <= 1) { + $s = -1; return; + } + limit = bits.Len(((n >>> 0))); + $r = pdqsort(data, 0, n, limit); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Sort$1, $c: true, $r, _r, data, limit, n, $s};return $f; + }; + $pkg.Sort = Sort; + $ptrType(xorshift).prototype.Next = function Next() { + var r, x, x$1, x$2, x$3, x$4, x$5, x$6; + r = this; + r.$set((x = r.$get(), x$1 = $shiftLeft64(r.$get(), 13), new xorshift(x.$high ^ x$1.$high, (x.$low ^ x$1.$low) >>> 0))); + r.$set((x$2 = r.$get(), x$3 = $shiftRightUint64(r.$get(), 17), new xorshift(x$2.$high ^ x$3.$high, (x$2.$low ^ x$3.$low) >>> 0))); + r.$set((x$4 = r.$get(), x$5 = $shiftLeft64(r.$get(), 5), new xorshift(x$4.$high ^ x$5.$high, (x$4.$low ^ x$5.$low) >>> 0))); + return ((x$6 = r.$get(), new $Uint64(x$6.$high, x$6.$low))); + }; + nextPowerOfTwo = function nextPowerOfTwo$1(length) { + var length, shift, y; + shift = ((bits.Len(((length >>> 0))) >>> 0)); + return (((y = shift, y < 32 ? (1 << y) : 0) >>> 0)); + }; + IsSorted = function IsSorted$1(data) { + var {_r, _r$1, data, i, n, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = data.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r; + i = n - 1 >> 0; + /* while (true) { */ case 2: + /* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 3; continue; } + _r$1 = data.Less(i, i - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$1) { */ case 4: + $s = -1; return false; + /* } */ case 5: + i = i - (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: IsSorted$1, $c: true, $r, _r, _r$1, data, i, n, $s};return $f; + }; + $pkg.IsSorted = IsSorted; + IntSlice.prototype.Len = function Len() { + var x; + x = this; + return x.$length; + }; + $ptrType(IntSlice).prototype.Len = function(...$args) { return this.$get().Len(...$args); }; + IntSlice.prototype.Less = function Less$1(i, j) { + var i, j, x; + x = this; + return ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) < ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]); + }; + $ptrType(IntSlice).prototype.Less = function(...$args) { return this.$get().Less(...$args); }; + IntSlice.prototype.Swap = function Swap(i, j) { + var _tmp, _tmp$1, i, j, x; + x = this; + _tmp = ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]); + _tmp$1 = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]); + ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = _tmp); + ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j] = _tmp$1); + }; + $ptrType(IntSlice).prototype.Swap = function(...$args) { return this.$get().Swap(...$args); }; + IntSlice.prototype.Sort = function Sort$2() { + var {x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + $r = Sort(x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Sort$2, $c: true, $r, x, $s};return $f; + }; + $ptrType(IntSlice).prototype.Sort = function(...$args) { return this.$get().Sort(...$args); }; + StringSlice.prototype.Len = function Len$2() { + var x; + x = this; + return x.$length; + }; + $ptrType(StringSlice).prototype.Len = function(...$args) { return this.$get().Len(...$args); }; + StringSlice.prototype.Less = function Less$3(i, j) { + var i, j, x; + x = this; + return ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) < ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]); + }; + $ptrType(StringSlice).prototype.Less = function(...$args) { return this.$get().Less(...$args); }; + StringSlice.prototype.Swap = function Swap$2(i, j) { + var _tmp, _tmp$1, i, j, x; + x = this; + _tmp = ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]); + _tmp$1 = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]); + ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = _tmp); + ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j] = _tmp$1); + }; + $ptrType(StringSlice).prototype.Swap = function(...$args) { return this.$get().Swap(...$args); }; + StringSlice.prototype.Sort = function Sort$4() { + var {x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + $r = Sort(x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Sort$4, $c: true, $r, x, $s};return $f; + }; + $ptrType(StringSlice).prototype.Sort = function(...$args) { return this.$get().Sort(...$args); }; + Ints = function Ints$1(x) { + var {x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = Sort(($convertSliceType(x, IntSlice))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Ints$1, $c: true, $r, x, $s};return $f; + }; + $pkg.Ints = Ints; + Strings = function Strings$1(x) { + var {x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = Sort(($convertSliceType(x, StringSlice))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Strings$1, $c: true, $r, x, $s};return $f; + }; + $pkg.Strings = Strings; + Stable = function Stable$1(data) { + var {_arg, _arg$1, _r, data, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = data; + _r = data.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + $r = stable(_arg, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Stable$1, $c: true, $r, _arg, _arg$1, _r, data, $s};return $f; + }; + $pkg.Stable = Stable; + Slice = function Slice$1(x, less) { + var {_r, _r$1, length, less, limit, rv, swap, x, $s, $r, $c} = $restore(this, {x, less}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = reflectlite.ValueOf(x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + rv = $clone(_r, reflectlite.Value); + _r$1 = reflectlite.Swapper(x); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + swap = _r$1; + length = $clone(rv, reflectlite.Value).Len(); + limit = bits.Len(((length >>> 0))); + $r = pdqsort_func($clone(new lessSwap.ptr(less, swap), lessSwap), 0, length, limit); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Slice$1, $c: true, $r, _r, _r$1, length, less, limit, rv, swap, x, $s};return $f; + }; + $pkg.Slice = Slice; + Search = function Search$1(n, f) { + var {_r, _tmp, _tmp$1, f, h, i, j, n, $s, $r, $c} = $restore(this, {n, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tmp = 0; + _tmp$1 = n; + i = _tmp; + j = _tmp$1; + /* while (true) { */ case 1: + /* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 2; continue; } + h = ((((((i + j >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + _r = f(h); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r) { */ case 3: + i = h + 1 >> 0; + $s = 5; continue; + /* } else { */ case 4: + j = h; + /* } */ case 5: + $s = 1; continue; + case 2: + $s = -1; return i; + /* */ } return; } var $f = {$blk: Search$1, $c: true, $r, _r, _tmp, _tmp$1, f, h, i, j, n, $s};return $f; + }; + $pkg.Search = Search; + SearchInts = function SearchInts$1(a, x) { + var {$24r, _r, a, x, $s, $r, $c} = $restore(this, {a, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = [a]; + x = [x]; + _r = Search(a[0].$length, (function(a, x) { return function SearchInts·func1(i) { + var i; + return ((i < 0 || i >= a[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : a[0].$array[a[0].$offset + i]) >= x[0]; + }; })(a, x)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SearchInts$1, $c: true, $r, $24r, _r, a, x, $s};return $f; + }; + $pkg.SearchInts = SearchInts; + SearchStrings = function SearchStrings$1(a, x) { + var {$24r, _r, a, x, $s, $r, $c} = $restore(this, {a, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = [a]; + x = [x]; + _r = Search(a[0].$length, (function(a, x) { return function SearchStrings·func1(i) { + var i; + return ((i < 0 || i >= a[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : a[0].$array[a[0].$offset + i]) >= x[0]; + }; })(a, x)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SearchStrings$1, $c: true, $r, $24r, _r, a, x, $s};return $f; + }; + $pkg.SearchStrings = SearchStrings; + IntSlice.prototype.Search = function Search$2(x) { + var {$24r, _r, p, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r = SearchInts($convertSliceType(p, sliceType), x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Search$2, $c: true, $r, $24r, _r, p, x, $s};return $f; + }; + $ptrType(IntSlice).prototype.Search = function(...$args) { return this.$get().Search(...$args); }; + StringSlice.prototype.Search = function Search$4(x) { + var {$24r, _r, p, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r = SearchStrings($convertSliceType(p, sliceType$2), x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Search$4, $c: true, $r, $24r, _r, p, x, $s};return $f; + }; + $ptrType(StringSlice).prototype.Search = function(...$args) { return this.$get().Search(...$args); }; + ptrType.methods = [{prop: "Next", name: "Next", pkg: "", typ: $funcType([], [$Uint64], false)}]; + IntSlice.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Sort", name: "Sort", pkg: "", typ: $funcType([], [], false)}, {prop: "Search", name: "Search", pkg: "", typ: $funcType([$Int], [$Int], false)}]; + StringSlice.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Sort", name: "Sort", pkg: "", typ: $funcType([], [], false)}, {prop: "Search", name: "Search", pkg: "", typ: $funcType([$String], [$Int], false)}]; + lessSwap.init("", [{prop: "Less", name: "Less", embedded: false, exported: true, typ: funcType, tag: ""}, {prop: "Swap", name: "Swap", embedded: false, exported: true, typ: funcType$1, tag: ""}]); + IntSlice.init($Int); + StringSlice.init($String); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = reflectlite.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bits.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/fmtsort"] = (function() { + var $pkg = {}, $init, reflect, sort, SortedMap, ptrType, sliceType, Sort, compare, nilCompare, floatCompare, isNaN; + reflect = $packages["reflect"]; + sort = $packages["sort"]; + SortedMap = $newType(0, $kindStruct, "fmtsort.SortedMap", true, "internal/fmtsort", true, function(Key_, Value_) { + this.$val = this; + if (arguments.length === 0) { + this.Key = sliceType.nil; + this.Value = sliceType.nil; + return; + } + this.Key = Key_; + this.Value = Value_; + }); + $pkg.SortedMap = SortedMap; + $pkg.$finishSetup = function() { + ptrType = $ptrType(SortedMap); + sliceType = $sliceType(reflect.Value); + $ptrType(SortedMap).prototype.Len = function Len() { + var o; + o = this; + return o.Key.$length; + }; + $ptrType(SortedMap).prototype.Less = function Less(i, j) { + var {$24r, _r, i, j, o, x, x$1, $s, $r, $c} = $restore(this, {i, j}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + o = this; + _r = compare($clone((x = o.Key, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), reflect.Value), $clone((x$1 = o.Key, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j])), reflect.Value)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r < 0; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Less, $c: true, $r, $24r, _r, i, j, o, x, x$1, $s};return $f; + }; + $ptrType(SortedMap).prototype.Swap = function Swap(i, j) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, i, j, o, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7; + o = this; + _tmp = (x = o.Key, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); + _tmp$1 = (x$1 = o.Key, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])); + (x$2 = o.Key, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i] = _tmp)); + (x$3 = o.Key, ((j < 0 || j >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + j] = _tmp$1)); + _tmp$2 = (x$4 = o.Value, ((j < 0 || j >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + j])); + _tmp$3 = (x$5 = o.Value, ((i < 0 || i >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i])); + (x$6 = o.Value, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i] = _tmp$2)); + (x$7 = o.Value, ((j < 0 || j >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + j] = _tmp$3)); + }; + Sort = function Sort$1(mapValue) { + var {_r, _r$1, _r$2, _r$3, _r$4, iter, key, mapValue, n, sorted, value, $s, $r, $c} = $restore(this, {mapValue}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = $clone(mapValue, reflect.Value).Type().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 21))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 21))) { */ case 1: + $s = -1; return ptrType.nil; + /* } */ case 2: + _r$1 = $clone(mapValue, reflect.Value).Len(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + n = _r$1; + key = $makeSlice(sliceType, 0, n); + value = $makeSlice(sliceType, 0, n); + iter = $clone(mapValue, reflect.Value).MapRange(); + /* while (true) { */ case 5: + _r$2 = iter.Next(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* if (!(_r$2)) { break; } */ if(!(_r$2)) { $s = 6; continue; } + _r$3 = iter.Key(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + key = $append(key, _r$3); + _r$4 = iter.Value(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + value = $append(value, _r$4); + $s = 5; continue; + case 6: + sorted = new SortedMap.ptr(key, value); + $r = sort.Stable(sorted); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return sorted; + /* */ } return; } var $f = {$blk: Sort$1, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, iter, key, mapValue, n, sorted, value, $s};return $f; + }; + $pkg.Sort = Sort; + compare = function compare$1(aVal, bVal) { + var {$24r, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, a, a$1, a$2, a$3, a$4, a$5, aType, aVal, ap, b, b$1, b$2, b$3, b$4, b$5, bType, bVal, bp, c, c$1, c$2, c$3, c$4, c$5, i, i$1, ok, ok$1, $s, $r, $c} = $restore(this, {aVal, bVal}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tmp = $clone(aVal, reflect.Value).Type(); + _tmp$1 = $clone(bVal, reflect.Value).Type(); + aType = _tmp; + bType = _tmp$1; + if (!($interfaceIsEqual(aType, bType))) { + $s = -1; return -1; + } + _1 = $clone(aVal, reflect.Value).Kind(); + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 2; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 3; continue; } + /* */ if (_1 === (24)) { $s = 4; continue; } + /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 5; continue; } + /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 6; continue; } + /* */ if (_1 === (1)) { $s = 7; continue; } + /* */ if ((_1 === (22)) || (_1 === (26))) { $s = 8; continue; } + /* */ if (_1 === (18)) { $s = 9; continue; } + /* */ if (_1 === (25)) { $s = 10; continue; } + /* */ if (_1 === (17)) { $s = 11; continue; } + /* */ if (_1 === (20)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 2: + _tmp$2 = $clone(aVal, reflect.Value).Int(); + _tmp$3 = $clone(bVal, reflect.Value).Int(); + a = _tmp$2; + b = _tmp$3; + if ((a.$high < b.$high || (a.$high === b.$high && a.$low < b.$low))) { + $s = -1; return -1; + } else if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) { + $s = -1; return 1; + } else { + $s = -1; return 0; + } + $s = 14; continue; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 3: + _tmp$4 = $clone(aVal, reflect.Value).Uint(); + _tmp$5 = $clone(bVal, reflect.Value).Uint(); + a$1 = _tmp$4; + b$1 = _tmp$5; + if ((a$1.$high < b$1.$high || (a$1.$high === b$1.$high && a$1.$low < b$1.$low))) { + $s = -1; return -1; + } else if ((a$1.$high > b$1.$high || (a$1.$high === b$1.$high && a$1.$low > b$1.$low))) { + $s = -1; return 1; + } else { + $s = -1; return 0; + } + $s = 14; continue; + /* } else if (_1 === (24)) { */ case 4: + _r = $clone(aVal, reflect.Value).String(); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp$6 = _r; + _r$1 = $clone(bVal, reflect.Value).String(); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tmp$7 = _r$1; + a$2 = _tmp$6; + b$2 = _tmp$7; + if (a$2 < b$2) { + $s = -1; return -1; + } else if (a$2 > b$2) { + $s = -1; return 1; + } else { + $s = -1; return 0; + } + $s = 14; continue; + /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 5: + $s = -1; return floatCompare($clone(aVal, reflect.Value).Float(), $clone(bVal, reflect.Value).Float()); + /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 6: + _tmp$8 = $clone(aVal, reflect.Value).Complex(); + _tmp$9 = $clone(bVal, reflect.Value).Complex(); + a$3 = _tmp$8; + b$3 = _tmp$9; + c = floatCompare(a$3.$real, b$3.$real); + if (!((c === 0))) { + $s = -1; return c; + } + $s = -1; return floatCompare(a$3.$imag, b$3.$imag); + /* } else if (_1 === (1)) { */ case 7: + _tmp$10 = $clone(aVal, reflect.Value).Bool(); + _tmp$11 = $clone(bVal, reflect.Value).Bool(); + a$4 = _tmp$10; + b$4 = _tmp$11; + if (a$4 === b$4) { + $s = -1; return 0; + } else if (a$4) { + $s = -1; return 1; + } else { + $s = -1; return -1; + } + $s = 14; continue; + /* } else if ((_1 === (22)) || (_1 === (26))) { */ case 8: + _tmp$12 = $clone(aVal, reflect.Value).Pointer(); + _tmp$13 = $clone(bVal, reflect.Value).Pointer(); + a$5 = _tmp$12; + b$5 = _tmp$13; + if (a$5 < b$5) { + $s = -1; return -1; + } else if (a$5 > b$5) { + $s = -1; return 1; + } else { + $s = -1; return 0; + } + $s = 14; continue; + /* } else if (_1 === (18)) { */ case 9: + _tuple = nilCompare($clone(aVal, reflect.Value), $clone(bVal, reflect.Value)); + c$1 = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return c$1; + } + _tmp$14 = $clone(aVal, reflect.Value).Pointer(); + _tmp$15 = $clone(bVal, reflect.Value).Pointer(); + ap = _tmp$14; + bp = _tmp$15; + if (ap < bp) { + $s = -1; return -1; + } else if (ap > bp) { + $s = -1; return 1; + } else { + $s = -1; return 0; + } + $s = 14; continue; + /* } else if (_1 === (25)) { */ case 10: + i = 0; + /* while (true) { */ case 17: + /* if (!(i < $clone(aVal, reflect.Value).NumField())) { break; } */ if(!(i < $clone(aVal, reflect.Value).NumField())) { $s = 18; continue; } + _r$2 = $clone(aVal, reflect.Value).Field(i); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg = $clone(_r$2, reflect.Value); + _r$3 = $clone(bVal, reflect.Value).Field(i); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$3, reflect.Value); + _r$4 = compare(_arg, _arg$1); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + c$2 = _r$4; + if (!((c$2 === 0))) { + $s = -1; return c$2; + } + i = i + (1) >> 0; + $s = 17; continue; + case 18: + $s = -1; return 0; + /* } else if (_1 === (17)) { */ case 11: + i$1 = 0; + /* while (true) { */ case 22: + _r$5 = $clone(aVal, reflect.Value).Len(); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* if (!(i$1 < _r$5)) { break; } */ if(!(i$1 < _r$5)) { $s = 23; continue; } + _r$6 = $clone(aVal, reflect.Value).Index(i$1); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$6, reflect.Value); + _r$7 = $clone(bVal, reflect.Value).Index(i$1); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _arg$3 = $clone(_r$7, reflect.Value); + _r$8 = compare(_arg$2, _arg$3); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + c$3 = _r$8; + if (!((c$3 === 0))) { + $s = -1; return c$3; + } + i$1 = i$1 + (1) >> 0; + $s = 22; continue; + case 23: + $s = -1; return 0; + /* } else if (_1 === (20)) { */ case 12: + _tuple$1 = nilCompare($clone(aVal, reflect.Value), $clone(bVal, reflect.Value)); + c$4 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + $s = -1; return c$4; + } + _r$9 = $clone(aVal, reflect.Value).Elem(); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$10 = $clone(_r$9, reflect.Value).Type(); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = reflect.ValueOf(_r$10); /* */ $s = 30; case 30: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _arg$4 = $clone(_r$11, reflect.Value); + _r$12 = $clone(bVal, reflect.Value).Elem(); /* */ $s = 31; case 31: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$13 = $clone(_r$12, reflect.Value).Type(); /* */ $s = 32; case 32: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$14 = reflect.ValueOf(_r$13); /* */ $s = 33; case 33: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _arg$5 = $clone(_r$14, reflect.Value); + _r$15 = compare(_arg$4, _arg$5); /* */ $s = 34; case 34: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + c$5 = _r$15; + if (!((c$5 === 0))) { + $s = -1; return c$5; + } + _r$16 = $clone(aVal, reflect.Value).Elem(); /* */ $s = 35; case 35: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _arg$6 = $clone(_r$16, reflect.Value); + _r$17 = $clone(bVal, reflect.Value).Elem(); /* */ $s = 36; case 36: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _arg$7 = $clone(_r$17, reflect.Value); + _r$18 = compare(_arg$6, _arg$7); /* */ $s = 37; case 37: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + $24r = _r$18; + $s = 38; case 38: return $24r; + /* } else { */ case 13: + _r$19 = aType.String(); /* */ $s = 39; case 39: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + $panic(new $String("bad type in compare: " + _r$19)); + /* } */ case 14: + case 1: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: compare$1, $c: true, $r, $24r, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, a, a$1, a$2, a$3, a$4, a$5, aType, aVal, ap, b, b$1, b$2, b$3, b$4, b$5, bType, bVal, bp, c, c$1, c$2, c$3, c$4, c$5, i, i$1, ok, ok$1, $s};return $f; + }; + nilCompare = function nilCompare$1(aVal, bVal) { + var aVal, bVal; + if ($clone(aVal, reflect.Value).IsNil()) { + if ($clone(bVal, reflect.Value).IsNil()) { + return [0, true]; + } + return [-1, true]; + } + if ($clone(bVal, reflect.Value).IsNil()) { + return [1, true]; + } + return [0, false]; + }; + floatCompare = function floatCompare$1(a, b) { + var a, b; + if (isNaN(a)) { + return -1; + } else if (isNaN(b)) { + return 1; + } else if (a < b) { + return -1; + } else if (a > b) { + return 1; + } + return 0; + }; + isNaN = function isNaN$1(a) { + var a; + return !((a === a)); + }; + ptrType.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; + SortedMap.init("", [{prop: "Key", name: "Key", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: sliceType, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = reflect.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["io"] = (function() { + var $pkg = {}, $init, errors, sync, onceError, pipe, PipeReader, PipeWriter, eofReader, multiReader, Reader, Writer, Closer, ReadWriter, ReadCloser, WriteCloser, ReadWriteCloser, ReaderFrom, WriterTo, ReaderAt, ByteReader, ByteScanner, ByteWriter, RuneReader, RuneScanner, StringWriter, LimitedReader, SectionReader, discard, nopCloser, nopCloserWriterTo, ptrType, sliceType, sliceType$1, ptrType$2, structType, sliceType$2, ptrType$3, ptrType$4, ptrType$5, chanType, chanType$1, chanType$2, ptrType$6, ptrType$7, ptrType$8, errInvalidWrite, errWhence, errOffset, x, blackHolePool, Pipe, MultiReader, WriteString, ReadAtLeast, ReadFull, CopyN, Copy, CopyBuffer, copyBuffer, LimitReader, NewSectionReader, NopCloser, ReadAll; + errors = $packages["errors"]; + sync = $packages["sync"]; + onceError = $newType(0, $kindStruct, "io.onceError", true, "io", false, function(Mutex_, err_) { + this.$val = this; + if (arguments.length === 0) { + this.Mutex = new sync.Mutex.ptr(0, 0); + this.err = $ifaceNil; + return; + } + this.Mutex = Mutex_; + this.err = err_; + }); + pipe = $newType(0, $kindStruct, "io.pipe", true, "io", false, function(wrMu_, wrCh_, rdCh_, once_, done_, rerr_, werr_) { + this.$val = this; + if (arguments.length === 0) { + this.wrMu = new sync.Mutex.ptr(0, 0); + this.wrCh = $chanNil; + this.rdCh = $chanNil; + this.once = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)); + this.done = $chanNil; + this.rerr = new onceError.ptr(new sync.Mutex.ptr(0, 0), $ifaceNil); + this.werr = new onceError.ptr(new sync.Mutex.ptr(0, 0), $ifaceNil); + return; + } + this.wrMu = wrMu_; + this.wrCh = wrCh_; + this.rdCh = rdCh_; + this.once = once_; + this.done = done_; + this.rerr = rerr_; + this.werr = werr_; + }); + PipeReader = $newType(0, $kindStruct, "io.PipeReader", true, "io", true, function(p_) { + this.$val = this; + if (arguments.length === 0) { + this.p = ptrType$5.nil; + return; + } + this.p = p_; + }); + PipeWriter = $newType(0, $kindStruct, "io.PipeWriter", true, "io", true, function(p_) { + this.$val = this; + if (arguments.length === 0) { + this.p = ptrType$5.nil; + return; + } + this.p = p_; + }); + eofReader = $newType(0, $kindStruct, "io.eofReader", true, "io", false, function() { this.$val = this; }); + multiReader = $newType(0, $kindStruct, "io.multiReader", true, "io", false, function(readers_) { + this.$val = this; + if (arguments.length === 0) { + this.readers = sliceType$2.nil; + return; + } + this.readers = readers_; + }); + Reader = $newType(8, $kindInterface, "io.Reader", true, "io", true, null); + Writer = $newType(8, $kindInterface, "io.Writer", true, "io", true, null); + Closer = $newType(8, $kindInterface, "io.Closer", true, "io", true, null); + ReadWriter = $newType(8, $kindInterface, "io.ReadWriter", true, "io", true, null); + ReadCloser = $newType(8, $kindInterface, "io.ReadCloser", true, "io", true, null); + WriteCloser = $newType(8, $kindInterface, "io.WriteCloser", true, "io", true, null); + ReadWriteCloser = $newType(8, $kindInterface, "io.ReadWriteCloser", true, "io", true, null); + ReaderFrom = $newType(8, $kindInterface, "io.ReaderFrom", true, "io", true, null); + WriterTo = $newType(8, $kindInterface, "io.WriterTo", true, "io", true, null); + ReaderAt = $newType(8, $kindInterface, "io.ReaderAt", true, "io", true, null); + ByteReader = $newType(8, $kindInterface, "io.ByteReader", true, "io", true, null); + ByteScanner = $newType(8, $kindInterface, "io.ByteScanner", true, "io", true, null); + ByteWriter = $newType(8, $kindInterface, "io.ByteWriter", true, "io", true, null); + RuneReader = $newType(8, $kindInterface, "io.RuneReader", true, "io", true, null); + RuneScanner = $newType(8, $kindInterface, "io.RuneScanner", true, "io", true, null); + StringWriter = $newType(8, $kindInterface, "io.StringWriter", true, "io", true, null); + LimitedReader = $newType(0, $kindStruct, "io.LimitedReader", true, "io", true, function(R_, N_) { + this.$val = this; + if (arguments.length === 0) { + this.R = $ifaceNil; + this.N = new $Int64(0, 0); + return; + } + this.R = R_; + this.N = N_; + }); + SectionReader = $newType(0, $kindStruct, "io.SectionReader", true, "io", true, function(r_, base_, off_, limit_) { + this.$val = this; + if (arguments.length === 0) { + this.r = $ifaceNil; + this.base = new $Int64(0, 0); + this.off = new $Int64(0, 0); + this.limit = new $Int64(0, 0); + return; + } + this.r = r_; + this.base = base_; + this.off = off_; + this.limit = limit_; + }); + discard = $newType(0, $kindStruct, "io.discard", true, "io", false, function() { this.$val = this; }); + nopCloser = $newType(0, $kindStruct, "io.nopCloser", true, "io", false, function(Reader_) { + this.$val = this; + if (arguments.length === 0) { + this.Reader = $ifaceNil; + return; + } + this.Reader = Reader_; + }); + nopCloserWriterTo = $newType(0, $kindStruct, "io.nopCloserWriterTo", true, "io", false, function(Reader_) { + this.$val = this; + if (arguments.length === 0) { + this.Reader = $ifaceNil; + return; + } + this.Reader = Reader_; + }); + $pkg.onceError = onceError; + $pkg.pipe = pipe; + $pkg.PipeReader = PipeReader; + $pkg.PipeWriter = PipeWriter; + $pkg.eofReader = eofReader; + $pkg.multiReader = multiReader; + $pkg.Reader = Reader; + $pkg.Writer = Writer; + $pkg.Closer = Closer; + $pkg.ReadWriter = ReadWriter; + $pkg.ReadCloser = ReadCloser; + $pkg.WriteCloser = WriteCloser; + $pkg.ReadWriteCloser = ReadWriteCloser; + $pkg.ReaderFrom = ReaderFrom; + $pkg.WriterTo = WriterTo; + $pkg.ReaderAt = ReaderAt; + $pkg.ByteReader = ByteReader; + $pkg.ByteScanner = ByteScanner; + $pkg.ByteWriter = ByteWriter; + $pkg.RuneReader = RuneReader; + $pkg.RuneScanner = RuneScanner; + $pkg.StringWriter = StringWriter; + $pkg.LimitedReader = LimitedReader; + $pkg.SectionReader = SectionReader; + $pkg.discard = discard; + $pkg.nopCloser = nopCloser; + $pkg.nopCloserWriterTo = nopCloserWriterTo; + $pkg.$finishSetup = function() { + ptrType = $ptrType(multiReader); + sliceType = $sliceType($emptyInterface); + sliceType$1 = $sliceType($Uint8); + ptrType$2 = $ptrType(sliceType$1); + structType = $structType("", []); + sliceType$2 = $sliceType(Reader); + ptrType$3 = $ptrType(LimitedReader); + ptrType$4 = $ptrType(onceError); + ptrType$5 = $ptrType(pipe); + chanType = $chanType(sliceType$1, false, false); + chanType$1 = $chanType($Int, false, false); + chanType$2 = $chanType(structType, false, false); + ptrType$6 = $ptrType(PipeReader); + ptrType$7 = $ptrType(PipeWriter); + ptrType$8 = $ptrType(SectionReader); + $ptrType(onceError).prototype.Store = function Store(err) { + var {a, err, $s, $deferred, $r, $c} = $restore(this, {err}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + a = this; + $r = a.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(a.Mutex, "Unlock"), []]); + /* */ if (!($interfaceIsEqual(a.err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(a.err, $ifaceNil))) { */ case 2: + $s = 4; case 4: return; + /* } */ case 3: + a.err = err; + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Store, $c: true, $r, a, err, $s, $deferred};return $f; } } + }; + $ptrType(onceError).prototype.Load = function Load() { + var {$24r, a, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + a = this; + $r = a.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(a.Mutex, "Unlock"), []]); + $24r = a.err; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Load, $c: true, $r, $24r, a, $s, $deferred};return $f; } } + }; + $ptrType(pipe).prototype.read = function read(b) { + var {$24r, $24r$1, _r, _r$1, _r$2, _selection, _selection$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, bw, err, n, nr, p, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + p = this; + _selection = $select([[p.done], []]); + /* */ if (_selection[0] === 0) { $s = 1; continue; } + /* */ if (_selection[0] === 1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_selection[0] === 0) { */ case 1: + _tmp = 0; + _r = p.readCloseError(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp$1 = _r; + n = _tmp; + err = _tmp$1; + $24r = [n, err]; + $s = 5; case 5: return $24r; + /* } else if (_selection[0] === 1) { */ case 2: + /* } */ case 3: + _r$1 = $select([[p.wrCh], [p.done]]); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _selection$1 = _r$1; + /* */ if (_selection$1[0] === 0) { $s = 7; continue; } + /* */ if (_selection$1[0] === 1) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_selection$1[0] === 0) { */ case 7: + bw = _selection$1[1][0]; + nr = $copySlice(b, bw); + $r = $send(p.rdCh, nr); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$2 = nr; + _tmp$3 = $ifaceNil; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + /* } else if (_selection$1[0] === 1) { */ case 8: + _tmp$4 = 0; + _r$2 = p.readCloseError(); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tmp$5 = _r$2; + n = _tmp$4; + err = _tmp$5; + $24r$1 = [n, err]; + $s = 12; case 12: return $24r$1; + /* } */ case 9: + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: read, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _selection, _selection$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, bw, err, n, nr, p, $s};return $f; + }; + $ptrType(pipe).prototype.closeRead = function closeRead(err) { + var {err, p, $s, $r, $c} = $restore(this, {err}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = [p]; + p[0] = this; + if ($interfaceIsEqual(err, $ifaceNil)) { + err = $pkg.ErrClosedPipe; + } + $r = p[0].rerr.Store(err); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p[0].once.Do((function(p) { return function pipe·closeRead·func1() { + $close(p[0].done); + }; })(p)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: closeRead, $c: true, $r, err, p, $s};return $f; + }; + $ptrType(pipe).prototype.write = function write(b) { + var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _selection, _selection$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, err, n, nw, once, p, $s, $deferred, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + n = 0; + err = $ifaceNil; + p = this; + _selection = $select([[p.done], []]); + /* */ if (_selection[0] === 0) { $s = 1; continue; } + /* */ if (_selection[0] === 1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_selection[0] === 0) { */ case 1: + _tmp = 0; + _r = p.writeCloseError(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp$1 = _r; + n = _tmp; + err = _tmp$1; + $24r = [n, err]; + $s = 5; case 5: return $24r; + /* } else if (_selection[0] === 1) { */ case 2: + $r = p.wrMu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(p.wrMu, "Unlock"), []]); + /* } */ case 3: + once = true; + /* while (true) { */ case 7: + /* if (!(once || b.$length > 0)) { break; } */ if(!(once || b.$length > 0)) { $s = 8; continue; } + _r$1 = $select([[p.wrCh, b], [p.done]]); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _selection$1 = _r$1; + /* */ if (_selection$1[0] === 0) { $s = 10; continue; } + /* */ if (_selection$1[0] === 1) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_selection$1[0] === 0) { */ case 10: + _r$2 = $recv(p.rdCh); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + nw = _r$2[0]; + b = $subslice(b, nw); + n = n + (nw) >> 0; + $s = 12; continue; + /* } else if (_selection$1[0] === 1) { */ case 11: + _tmp$2 = n; + _r$3 = p.writeCloseError(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tmp$3 = _r$3; + n = _tmp$2; + err = _tmp$3; + $24r$1 = [n, err]; + $s = 15; case 15: return $24r$1; + /* } */ case 12: + once = false; + $s = 7; continue; + case 8: + _tmp$4 = n; + _tmp$5 = $ifaceNil; + n = _tmp$4; + err = _tmp$5; + $24r$2 = [n, err]; + $s = 16; case 16: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { var $f = {$blk: write, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _selection, _selection$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, err, n, nw, once, p, $s, $deferred};return $f; } } + }; + $ptrType(pipe).prototype.closeWrite = function closeWrite(err) { + var {err, p, $s, $r, $c} = $restore(this, {err}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = [p]; + p[0] = this; + if ($interfaceIsEqual(err, $ifaceNil)) { + err = $pkg.EOF; + } + $r = p[0].werr.Store(err); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p[0].once.Do((function(p) { return function pipe·closeWrite·func1() { + $close(p[0].done); + }; })(p)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: closeWrite, $c: true, $r, err, p, $s};return $f; + }; + $ptrType(pipe).prototype.readCloseError = function readCloseError() { + var {_r, _r$1, p, rerr, werr, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r = p.rerr.Load(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + rerr = _r; + _r$1 = p.werr.Load(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + werr = _r$1; + if ($interfaceIsEqual(rerr, $ifaceNil) && !($interfaceIsEqual(werr, $ifaceNil))) { + $s = -1; return werr; + } + $s = -1; return $pkg.ErrClosedPipe; + /* */ } return; } var $f = {$blk: readCloseError, $c: true, $r, _r, _r$1, p, rerr, werr, $s};return $f; + }; + $ptrType(pipe).prototype.writeCloseError = function writeCloseError() { + var {_r, _r$1, p, rerr, werr, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r = p.werr.Load(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + werr = _r; + _r$1 = p.rerr.Load(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + rerr = _r$1; + if ($interfaceIsEqual(werr, $ifaceNil) && !($interfaceIsEqual(rerr, $ifaceNil))) { + $s = -1; return rerr; + } + $s = -1; return $pkg.ErrClosedPipe; + /* */ } return; } var $f = {$blk: writeCloseError, $c: true, $r, _r, _r$1, p, rerr, werr, $s};return $f; + }; + $ptrType(PipeReader).prototype.Read = function Read(data) { + var {$24r, _r, _tuple, data, err, n, r, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + r = this; + _r = r.p.read(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Read, $c: true, $r, $24r, _r, _tuple, data, err, n, r, $s};return $f; + }; + $ptrType(PipeReader).prototype.Close = function Close() { + var {$24r, _r, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.CloseWithError($ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Close, $c: true, $r, $24r, _r, r, $s};return $f; + }; + $ptrType(PipeReader).prototype.CloseWithError = function CloseWithError(err) { + var {$24r, _r, err, r, $s, $r, $c} = $restore(this, {err}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.p.closeRead(err); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: CloseWithError, $c: true, $r, $24r, _r, err, r, $s};return $f; + }; + $ptrType(PipeWriter).prototype.Write = function Write(data) { + var {$24r, _r, _tuple, data, err, n, w, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + w = this; + _r = w.p.write(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Write, $c: true, $r, $24r, _r, _tuple, data, err, n, w, $s};return $f; + }; + $ptrType(PipeWriter).prototype.Close = function Close$1() { + var {$24r, _r, w, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + _r = w.CloseWithError($ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Close$1, $c: true, $r, $24r, _r, w, $s};return $f; + }; + $ptrType(PipeWriter).prototype.CloseWithError = function CloseWithError$1(err) { + var {$24r, _r, err, w, $s, $r, $c} = $restore(this, {err}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + _r = w.p.closeWrite(err); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: CloseWithError$1, $c: true, $r, $24r, _r, err, w, $s};return $f; + }; + Pipe = function Pipe$1() { + var p; + p = new pipe.ptr(new sync.Mutex.ptr(0, 0), new $Chan(sliceType$1, 0), new $Chan($Int, 0), new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), new $Chan(structType, 0), new onceError.ptr(new sync.Mutex.ptr(0, 0), $ifaceNil), new onceError.ptr(new sync.Mutex.ptr(0, 0), $ifaceNil)); + return [new PipeReader.ptr(p), new PipeWriter.ptr(p)]; + }; + $pkg.Pipe = Pipe; + $ptrType(eofReader).prototype.Read = function Read$1(param) { + var param; + return [0, $pkg.EOF]; + }; + eofReader.prototype.Read = function(...$args) { return this.$val.Read(...$args); }; + $ptrType(multiReader).prototype.Read = function Read$2(p) { + var {_r, _tmp, _tmp$1, _tuple, _tuple$1, err, mr, n, ok, p, r, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + mr = this; + /* while (true) { */ case 1: + /* if (!(mr.readers.$length > 0)) { break; } */ if(!(mr.readers.$length > 0)) { $s = 2; continue; } + if (mr.readers.$length === 1) { + _tuple = $assertType((x$2 = mr.readers, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])), ptrType, true); + r = _tuple[0]; + ok = _tuple[1]; + if (ok) { + mr.readers = r.readers; + /* continue; */ $s = 1; continue; + } + } + _r = (x$3 = mr.readers, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).Read(p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + n = _tuple$1[0]; + err = _tuple$1[1]; + if ($interfaceIsEqual(err, $pkg.EOF)) { + (x$5 = mr.readers, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0] = (x$4 = new eofReader.ptr(), new x$4.constructor.elem(x$4)))); + mr.readers = $subslice(mr.readers, 1); + } + if (n > 0 || !($interfaceIsEqual(err, $pkg.EOF))) { + if ($interfaceIsEqual(err, $pkg.EOF) && mr.readers.$length > 0) { + err = $ifaceNil; + } + $s = -1; return [n, err]; + } + $s = 1; continue; + case 2: + _tmp = 0; + _tmp$1 = $pkg.EOF; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Read$2, $c: true, $r, _r, _tmp, _tmp$1, _tuple, _tuple$1, err, mr, n, ok, p, r, x$2, x$3, x$4, x$5, $s};return $f; + }; + $ptrType(multiReader).prototype.WriteTo = function WriteTo(w) { + var {$24r, _r, _tuple, err, mr, sum, w, $s, $r, $c} = $restore(this, {w}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + sum = new $Int64(0, 0); + err = $ifaceNil; + mr = this; + _r = mr.writeToWithBuffer(w, $makeSlice(sliceType$1, 32768)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + sum = _tuple[0]; + err = _tuple[1]; + $24r = [sum, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: WriteTo, $c: true, $r, $24r, _r, _tuple, err, mr, sum, w, $s};return $f; + }; + $ptrType(multiReader).prototype.writeToWithBuffer = function writeToWithBuffer(w, buf) { + var {_i, _r, _r$1, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, buf, err, i, mr, n, ok, r, subMr, sum, w, x$2, x$3, $s, $r, $c} = $restore(this, {w, buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + sum = new $Int64(0, 0); + err = $ifaceNil; + mr = this; + _ref = mr.readers; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + r = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + n = new $Int64(0, 0); + _tuple = $assertType(r, ptrType, true); + subMr = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (ok) { */ case 3: + _r = subMr.writeToWithBuffer(w, buf); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + n = _tuple$1[0]; + err = _tuple$1[1]; + $s = 5; continue; + /* } else { */ case 4: + _r$1 = copyBuffer(w, r, buf); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$2 = _r$1; + n = _tuple$2[0]; + err = _tuple$2[1]; + /* } */ case 5: + sum = (x$2 = n, new $Int64(sum.$high + x$2.$high, sum.$low + x$2.$low)); + if (!($interfaceIsEqual(err, $ifaceNil))) { + mr.readers = $subslice(mr.readers, i); + _tmp = sum; + _tmp$1 = err; + sum = _tmp; + err = _tmp$1; + $s = -1; return [sum, err]; + } + (x$3 = mr.readers, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i] = $ifaceNil)); + _i++; + $s = 1; continue; + case 2: + mr.readers = sliceType$2.nil; + _tmp$2 = sum; + _tmp$3 = $ifaceNil; + sum = _tmp$2; + err = _tmp$3; + $s = -1; return [sum, err]; + /* */ } return; } var $f = {$blk: writeToWithBuffer, $c: true, $r, _i, _r, _r$1, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, buf, err, i, mr, n, ok, r, subMr, sum, w, x$2, x$3, $s};return $f; + }; + MultiReader = function MultiReader$1(readers) { + var r, readers; + r = $makeSlice(sliceType$2, readers.$length); + $copySlice(r, readers); + return new multiReader.ptr(r); + }; + $pkg.MultiReader = MultiReader; + WriteString = function WriteString$2(w, s) { + var {$24r, $24r$1, _r, _r$1, _tuple, _tuple$1, _tuple$2, err, n, ok, s, sw, w, $s, $r, $c} = $restore(this, {w, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _tuple = $assertType(w, StringWriter, true); + sw = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = sw.WriteString(s); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + n = _tuple$1[0]; + err = _tuple$1[1]; + $24r = [n, err]; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = w.Write((new sliceType$1($stringToBytes(s)))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$2 = _r$1; + n = _tuple$2[0]; + err = _tuple$2[1]; + $24r$1 = [n, err]; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: WriteString$2, $c: true, $r, $24r, $24r$1, _r, _r$1, _tuple, _tuple$1, _tuple$2, err, n, ok, s, sw, w, $s};return $f; + }; + $pkg.WriteString = WriteString; + ReadAtLeast = function ReadAtLeast$1(r, buf, min) { + var {_r, _tmp, _tmp$1, _tuple, buf, err, min, n, nn, r, $s, $r, $c} = $restore(this, {r, buf, min}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + if (buf.$length < min) { + _tmp = 0; + _tmp$1 = $pkg.ErrShortBuffer; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + /* while (true) { */ case 1: + /* if (!(n < min && $interfaceIsEqual(err, $ifaceNil))) { break; } */ if(!(n < min && $interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + nn = 0; + _r = r.Read($subslice(buf, n)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + nn = _tuple[0]; + err = _tuple[1]; + n = n + (nn) >> 0; + $s = 1; continue; + case 2: + if (n >= min) { + err = $ifaceNil; + } else if (n > 0 && $interfaceIsEqual(err, $pkg.EOF)) { + err = $pkg.ErrUnexpectedEOF; + } + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: ReadAtLeast$1, $c: true, $r, _r, _tmp, _tmp$1, _tuple, buf, err, min, n, nn, r, $s};return $f; + }; + $pkg.ReadAtLeast = ReadAtLeast; + ReadFull = function ReadFull$1(r, buf) { + var {$24r, _r, _tuple, buf, err, n, r, $s, $r, $c} = $restore(this, {r, buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = ReadAtLeast(r, buf, buf.$length); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ReadFull$1, $c: true, $r, $24r, _r, _tuple, buf, err, n, r, $s};return $f; + }; + $pkg.ReadFull = ReadFull; + CopyN = function CopyN$1(dst, src, n) { + var {_r, _tmp, _tmp$1, _tuple, dst, err, n, src, written, $s, $r, $c} = $restore(this, {dst, src, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + written = new $Int64(0, 0); + err = $ifaceNil; + _r = Copy(dst, LimitReader(src, n)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + written = _tuple[0]; + err = _tuple[1]; + if ((written.$high === n.$high && written.$low === n.$low)) { + _tmp = n; + _tmp$1 = $ifaceNil; + written = _tmp; + err = _tmp$1; + $s = -1; return [written, err]; + } + if ((written.$high < n.$high || (written.$high === n.$high && written.$low < n.$low)) && $interfaceIsEqual(err, $ifaceNil)) { + err = $pkg.EOF; + } + $s = -1; return [written, err]; + /* */ } return; } var $f = {$blk: CopyN$1, $c: true, $r, _r, _tmp, _tmp$1, _tuple, dst, err, n, src, written, $s};return $f; + }; + $pkg.CopyN = CopyN; + Copy = function Copy$1(dst, src) { + var {$24r, _r, _tuple, dst, err, src, written, $s, $r, $c} = $restore(this, {dst, src}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + written = new $Int64(0, 0); + err = $ifaceNil; + _r = copyBuffer(dst, src, sliceType$1.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + written = _tuple[0]; + err = _tuple[1]; + $24r = [written, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Copy$1, $c: true, $r, $24r, _r, _tuple, dst, err, src, written, $s};return $f; + }; + $pkg.Copy = Copy; + CopyBuffer = function CopyBuffer$1(dst, src, buf) { + var {$24r, _r, _tuple, buf, dst, err, src, written, $s, $r, $c} = $restore(this, {dst, src, buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + written = new $Int64(0, 0); + err = $ifaceNil; + if (!(buf === sliceType$1.nil) && (buf.$length === 0)) { + $panic(new $String("empty buffer in CopyBuffer")); + } + _r = copyBuffer(dst, src, buf); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + written = _tuple[0]; + err = _tuple[1]; + $24r = [written, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: CopyBuffer$1, $c: true, $r, $24r, _r, _tuple, buf, dst, err, src, written, $s};return $f; + }; + $pkg.CopyBuffer = CopyBuffer; + copyBuffer = function copyBuffer$1(dst, src, buf) { + var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, buf, dst, er, err, ew, l, nr, nw, ok, ok$1, ok$2, rt, size, src, written, wt, x$2, x$3, x$4, x$5, x$6, $s, $r, $c} = $restore(this, {dst, src, buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + written = new $Int64(0, 0); + err = $ifaceNil; + _tuple = $assertType(src, WriterTo, true); + wt = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = wt.WriteTo(dst); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + written = _tuple$1[0]; + err = _tuple$1[1]; + $24r = [written, err]; + $s = 4; case 4: return $24r; + /* } */ case 2: + _tuple$2 = $assertType(dst, ReaderFrom, true); + rt = _tuple$2[0]; + ok$1 = _tuple$2[1]; + /* */ if (ok$1) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (ok$1) { */ case 5: + _r$1 = rt.ReadFrom(src); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$3 = _r$1; + written = _tuple$3[0]; + err = _tuple$3[1]; + $24r$1 = [written, err]; + $s = 8; case 8: return $24r$1; + /* } */ case 6: + if (buf === sliceType$1.nil) { + size = 32768; + _tuple$4 = $assertType(src, ptrType$3, true); + l = _tuple$4[0]; + ok$2 = _tuple$4[1]; + if (ok$2 && (x$2 = (new $Int64(0, size)), x$3 = l.N, (x$2.$high > x$3.$high || (x$2.$high === x$3.$high && x$2.$low > x$3.$low)))) { + if ((x$4 = l.N, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low < 1)))) { + size = 1; + } else { + size = (((x$5 = l.N, x$5.$low + ((x$5.$high >> 31) * 4294967296)) >> 0)); + } + } + buf = $makeSlice(sliceType$1, size); + } + /* while (true) { */ case 9: + _r$2 = src.Read(buf); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$5 = _r$2; + nr = _tuple$5[0]; + er = _tuple$5[1]; + /* */ if (nr > 0) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (nr > 0) { */ case 12: + _r$3 = dst.Write($subslice(buf, 0, nr)); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$6 = _r$3; + nw = _tuple$6[0]; + ew = _tuple$6[1]; + if (nw < 0 || nr < nw) { + nw = 0; + if ($interfaceIsEqual(ew, $ifaceNil)) { + ew = errInvalidWrite; + } + } + written = (x$6 = (new $Int64(0, nw)), new $Int64(written.$high + x$6.$high, written.$low + x$6.$low)); + if (!($interfaceIsEqual(ew, $ifaceNil))) { + err = ew; + /* break; */ $s = 10; continue; + } + if (!((nr === nw))) { + err = $pkg.ErrShortWrite; + /* break; */ $s = 10; continue; + } + /* } */ case 13: + if (!($interfaceIsEqual(er, $ifaceNil))) { + if (!($interfaceIsEqual(er, $pkg.EOF))) { + err = er; + } + /* break; */ $s = 10; continue; + } + $s = 9; continue; + case 10: + _tmp = written; + _tmp$1 = err; + written = _tmp; + err = _tmp$1; + $s = -1; return [written, err]; + /* */ } return; } var $f = {$blk: copyBuffer$1, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, buf, dst, er, err, ew, l, nr, nw, ok, ok$1, ok$2, rt, size, src, written, wt, x$2, x$3, x$4, x$5, x$6, $s};return $f; + }; + LimitReader = function LimitReader$1(r, n) { + var n, r; + return new LimitedReader.ptr(r, n); + }; + $pkg.LimitReader = LimitReader; + $ptrType(LimitedReader).prototype.Read = function Read$3(p) { + var {_r, _tmp, _tmp$1, _tuple, err, l, n, p, x$2, x$3, x$4, x$5, x$6, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + l = this; + if ((x$2 = l.N, (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low <= 0)))) { + _tmp = 0; + _tmp$1 = $pkg.EOF; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + if ((x$3 = (new $Int64(0, p.$length)), x$4 = l.N, (x$3.$high > x$4.$high || (x$3.$high === x$4.$high && x$3.$low > x$4.$low)))) { + p = $subslice(p, 0, $flatten64(l.N)); + } + _r = l.R.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + l.N = (x$5 = l.N, x$6 = (new $Int64(0, n)), new $Int64(x$5.$high - x$6.$high, x$5.$low - x$6.$low)); + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Read$3, $c: true, $r, _r, _tmp, _tmp$1, _tuple, err, l, n, p, x$2, x$3, x$4, x$5, x$6, $s};return $f; + }; + NewSectionReader = function NewSectionReader$1(r, off, n) { + var n, off, r, remaining, x$2; + remaining = new $Int64(0, 0); + if ((x$2 = new $Int64(2147483647 - n.$high, 4294967295 - n.$low), (off.$high < x$2.$high || (off.$high === x$2.$high && off.$low <= x$2.$low)))) { + remaining = new $Int64(n.$high + off.$high, n.$low + off.$low); + } else { + remaining = new $Int64(2147483647, 4294967295); + } + return new SectionReader.ptr(r, off, off, remaining); + }; + $pkg.NewSectionReader = NewSectionReader; + $ptrType(SectionReader).prototype.Read = function Read$4(p) { + var {_r, _tmp, _tmp$1, _tuple, err, max, n, p, s, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + s = this; + if ((x$2 = s.off, x$3 = s.limit, (x$2.$high > x$3.$high || (x$2.$high === x$3.$high && x$2.$low >= x$3.$low)))) { + _tmp = 0; + _tmp$1 = $pkg.EOF; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + max = (x$4 = s.limit, x$5 = s.off, new $Int64(x$4.$high - x$5.$high, x$4.$low - x$5.$low)); + if ((x$6 = (new $Int64(0, p.$length)), (x$6.$high > max.$high || (x$6.$high === max.$high && x$6.$low > max.$low)))) { + p = $subslice(p, 0, $flatten64(max)); + } + _r = s.r.ReadAt(p, s.off); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + s.off = (x$7 = s.off, x$8 = (new $Int64(0, n)), new $Int64(x$7.$high + x$8.$high, x$7.$low + x$8.$low)); + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Read$4, $c: true, $r, _r, _tmp, _tmp$1, _tuple, err, max, n, p, s, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s};return $f; + }; + $ptrType(SectionReader).prototype.Seek = function Seek(offset, whence) { + var _1, offset, s, whence, x$2, x$3, x$4, x$5, x$6; + s = this; + _1 = whence; + if (_1 === (0)) { + offset = (x$2 = s.base, new $Int64(offset.$high + x$2.$high, offset.$low + x$2.$low)); + } else if (_1 === (1)) { + offset = (x$3 = s.off, new $Int64(offset.$high + x$3.$high, offset.$low + x$3.$low)); + } else if (_1 === (2)) { + offset = (x$4 = s.limit, new $Int64(offset.$high + x$4.$high, offset.$low + x$4.$low)); + } else { + return [new $Int64(0, 0), errWhence]; + } + if ((x$5 = s.base, (offset.$high < x$5.$high || (offset.$high === x$5.$high && offset.$low < x$5.$low)))) { + return [new $Int64(0, 0), errOffset]; + } + s.off = offset; + return [(x$6 = s.base, new $Int64(offset.$high - x$6.$high, offset.$low - x$6.$low)), $ifaceNil]; + }; + $ptrType(SectionReader).prototype.ReadAt = function ReadAt(p, off) { + var {$24r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, max, n, off, p, s, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {p, off}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + s = this; + if ((off.$high < 0 || (off.$high === 0 && off.$low < 0)) || (x$2 = (x$3 = s.limit, x$4 = s.base, new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)), (off.$high > x$2.$high || (off.$high === x$2.$high && off.$low >= x$2.$low)))) { + _tmp = 0; + _tmp$1 = $pkg.EOF; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + off = (x$5 = s.base, new $Int64(off.$high + x$5.$high, off.$low + x$5.$low)); + max = (x$6 = s.limit, new $Int64(x$6.$high - off.$high, x$6.$low - off.$low)); + /* */ if ((x$7 = (new $Int64(0, p.$length)), (x$7.$high > max.$high || (x$7.$high === max.$high && x$7.$low > max.$low)))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((x$7 = (new $Int64(0, p.$length)), (x$7.$high > max.$high || (x$7.$high === max.$high && x$7.$low > max.$low)))) { */ case 1: + p = $subslice(p, 0, $flatten64(max)); + _r = s.r.ReadAt(p, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil)) { + err = $pkg.EOF; + } + _tmp$2 = n; + _tmp$3 = err; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + /* } */ case 2: + _r$1 = s.r.ReadAt(p, off); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + n = _tuple$1[0]; + err = _tuple$1[1]; + $24r = [n, err]; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: ReadAt, $c: true, $r, $24r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, max, n, off, p, s, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + $ptrType(SectionReader).prototype.Size = function Size() { + var s, x$2, x$3; + s = this; + return (x$2 = s.limit, x$3 = s.base, new $Int64(x$2.$high - x$3.$high, x$2.$low - x$3.$low)); + }; + $ptrType(discard).prototype.Write = function Write$3(p) { + var p; + return [p.$length, $ifaceNil]; + }; + discard.prototype.Write = function(...$args) { return this.$val.Write(...$args); }; + $ptrType(discard).prototype.WriteString = function WriteString$3(s) { + var s; + return [s.length, $ifaceNil]; + }; + discard.prototype.WriteString = function(...$args) { return this.$val.WriteString(...$args); }; + $ptrType(discard).prototype.ReadFrom = function ReadFrom(r) { + var {_r, _r$1, _tmp, _tmp$1, _tuple, bufp, err, n, r, readSize, x$2, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + _r = blackHolePool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + bufp = $assertType(_r, ptrType$2); + readSize = 0; + /* while (true) { */ case 2: + _r$1 = r.Read(bufp.$get()); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + readSize = _tuple[0]; + err = _tuple[1]; + n = (x$2 = (new $Int64(0, readSize)), new $Int64(n.$high + x$2.$high, n.$low + x$2.$low)); + if (!($interfaceIsEqual(err, $ifaceNil))) { + blackHolePool.Put(bufp); + if ($interfaceIsEqual(err, $pkg.EOF)) { + _tmp = n; + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + $s = -1; return [n, err]; + } + $s = 2; continue; + case 3: + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: ReadFrom, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tuple, bufp, err, n, r, readSize, x$2, $s};return $f; + }; + discard.prototype.ReadFrom = function(...$args) { return this.$val.ReadFrom(...$args); }; + NopCloser = function NopCloser$1(r) { + var _tuple, ok, r, x$2, x$3; + _tuple = $assertType(r, WriterTo, true); + ok = _tuple[1]; + if (ok) { + return (x$2 = new nopCloserWriterTo.ptr(r), new x$2.constructor.elem(x$2)); + } + return (x$3 = new nopCloser.ptr(r), new x$3.constructor.elem(x$3)); + }; + $pkg.NopCloser = NopCloser; + $ptrType(nopCloser).prototype.Close = function Close$2() { + return $ifaceNil; + }; + nopCloser.prototype.Close = function(...$args) { return this.$val.Close(...$args); }; + $ptrType(nopCloserWriterTo).prototype.Close = function Close$3() { + return $ifaceNil; + }; + nopCloserWriterTo.prototype.Close = function(...$args) { return this.$val.Close(...$args); }; + $ptrType(nopCloserWriterTo).prototype.WriteTo = function WriteTo$1(w) { + var {$24r, _r, _tuple, c, err, n, w, $s, $r, $c} = $restore(this, {w}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + c = this; + _r = $assertType(c.Reader, WriterTo).WriteTo(w); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: WriteTo$1, $c: true, $r, $24r, _r, _tuple, c, err, n, w, $s};return $f; + }; + nopCloserWriterTo.prototype.WriteTo = function(...$args) { return this.$val.WriteTo(...$args); }; + ReadAll = function ReadAll$1(r) { + var {_r, _tuple, b, err, n, r, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = $makeSlice(sliceType$1, 0, 512); + /* while (true) { */ case 1: + if (b.$length === b.$capacity) { + b = $subslice($append(b, 0), 0, b.$length); + } + _r = r.Read($subslice(b, b.$length, b.$capacity)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + b = $subslice(b, 0, (b.$length + n >> 0)); + if (!($interfaceIsEqual(err, $ifaceNil))) { + if ($interfaceIsEqual(err, $pkg.EOF)) { + err = $ifaceNil; + } + $s = -1; return [b, err]; + } + $s = 1; continue; + case 2: + $s = -1; return [sliceType$1.nil, $ifaceNil]; + /* */ } return; } var $f = {$blk: ReadAll$1, $c: true, $r, _r, _tuple, b, err, n, r, $s};return $f; + }; + $pkg.ReadAll = ReadAll; + ptrType$4.methods = [{prop: "Store", name: "Store", pkg: "", typ: $funcType([$error], [], false)}, {prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$error], false)}]; + ptrType$5.methods = [{prop: "read", name: "read", pkg: "io", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "closeRead", name: "closeRead", pkg: "io", typ: $funcType([$error], [$error], false)}, {prop: "write", name: "write", pkg: "io", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "closeWrite", name: "closeWrite", pkg: "io", typ: $funcType([$error], [$error], false)}, {prop: "readCloseError", name: "readCloseError", pkg: "io", typ: $funcType([], [$error], false)}, {prop: "writeCloseError", name: "writeCloseError", pkg: "io", typ: $funcType([], [$error], false)}]; + ptrType$6.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CloseWithError", name: "CloseWithError", pkg: "", typ: $funcType([$error], [$error], false)}]; + ptrType$7.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CloseWithError", name: "CloseWithError", pkg: "", typ: $funcType([$error], [$error], false)}]; + eofReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]; + ptrType.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([Writer], [$Int64, $error], false)}, {prop: "writeToWithBuffer", name: "writeToWithBuffer", pkg: "io", typ: $funcType([Writer, sliceType$1], [$Int64, $error], false)}]; + ptrType$3.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]; + ptrType$8.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType$1, $Int64], [$Int, $error], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}]; + discard.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([Reader], [$Int64, $error], false)}]; + nopCloser.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; + nopCloserWriterTo.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([Writer], [$Int64, $error], false)}]; + onceError.init("io", [{prop: "Mutex", name: "Mutex", embedded: true, exported: true, typ: sync.Mutex, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + pipe.init("io", [{prop: "wrMu", name: "wrMu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "wrCh", name: "wrCh", embedded: false, exported: false, typ: chanType, tag: ""}, {prop: "rdCh", name: "rdCh", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "once", name: "once", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "rerr", name: "rerr", embedded: false, exported: false, typ: onceError, tag: ""}, {prop: "werr", name: "werr", embedded: false, exported: false, typ: onceError, tag: ""}]); + PipeReader.init("io", [{prop: "p", name: "p", embedded: false, exported: false, typ: ptrType$5, tag: ""}]); + PipeWriter.init("io", [{prop: "p", name: "p", embedded: false, exported: false, typ: ptrType$5, tag: ""}]); + eofReader.init("", []); + multiReader.init("io", [{prop: "readers", name: "readers", embedded: false, exported: false, typ: sliceType$2, tag: ""}]); + Reader.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]); + Writer.init([{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]); + Closer.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]); + ReadWriter.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]); + ReadCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]); + WriteCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]); + ReadWriteCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]); + ReaderFrom.init([{prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([Reader], [$Int64, $error], false)}]); + WriterTo.init([{prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([Writer], [$Int64, $error], false)}]); + ReaderAt.init([{prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType$1, $Int64], [$Int, $error], false)}]); + ByteReader.init([{prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}]); + ByteScanner.init([{prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}]); + ByteWriter.init([{prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}]); + RuneReader.init([{prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}]); + RuneScanner.init([{prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}]); + StringWriter.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]); + LimitedReader.init("", [{prop: "R", name: "R", embedded: false, exported: true, typ: Reader, tag: ""}, {prop: "N", name: "N", embedded: false, exported: true, typ: $Int64, tag: ""}]); + SectionReader.init("io", [{prop: "r", name: "r", embedded: false, exported: false, typ: ReaderAt, tag: ""}, {prop: "base", name: "base", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "off", name: "off", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "limit", name: "limit", embedded: false, exported: false, typ: $Int64, tag: ""}]); + discard.init("", []); + nopCloser.init("", [{prop: "Reader", name: "Reader", embedded: true, exported: true, typ: Reader, tag: ""}]); + nopCloserWriterTo.init("", [{prop: "Reader", name: "Reader", embedded: true, exported: true, typ: Reader, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ErrClosedPipe = errors.New("io: read/write on closed pipe"); + $pkg.ErrShortWrite = errors.New("short write"); + errInvalidWrite = errors.New("invalid write result"); + $pkg.ErrShortBuffer = errors.New("short buffer"); + $pkg.EOF = errors.New("EOF"); + $pkg.ErrUnexpectedEOF = errors.New("unexpected EOF"); + $pkg.ErrNoProgress = errors.New("multiple Read calls return no data or error"); + errWhence = errors.New("Seek: invalid whence"); + errOffset = errors.New("Seek: invalid offset"); + $pkg.Discard = (x = new discard.ptr(), new x.constructor.elem(x)); + blackHolePool = new sync.Pool.ptr(sliceType.nil, (function func1() { + var b, b$24ptr; + b = $makeSlice(sliceType$1, 8192); + return (b$24ptr || (b$24ptr = new ptrType$2(function() { return b; }, function($v) { b = $v; }))); + })); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/oserror"] = (function() { + var $pkg = {}, $init, errors; + errors = $packages["errors"]; + $pkg.$finishSetup = function() { + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ErrInvalid = errors.New("invalid argument"); + $pkg.ErrPermission = errors.New("permission denied"); + $pkg.ErrExist = errors.New("file already exists"); + $pkg.ErrNotExist = errors.New("file does not exist"); + $pkg.ErrClosed = errors.New("file already closed"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["syscall/js"] = (function() { + var $pkg = {}, $init, js, Type, Func, Error, Value, ValueError, sliceType, funcType, arrayType, sliceType$1, mapType, sliceType$2, ptrType, sliceType$3, ptrType$1, ptrType$2, id, instanceOf, typeOf, typeNames, Global, Null, Undefined, FuncOf, objectToValue, init, getValueType, ValueOf, convertArgs, convertJSError, CopyBytesToGo, CopyBytesToJS; + js = $packages["github.com/gopherjs/gopherjs/js"]; + Type = $newType(4, $kindInt, "js.Type", true, "syscall/js", true, null); + Func = $newType(0, $kindStruct, "js.Func", true, "syscall/js", true, function(Value_) { + this.$val = this; + if (arguments.length === 0) { + this.Value = new Value.ptr(null, false, arrayType.zero()); + return; + } + this.Value = Value_; + }); + Error = $newType(0, $kindStruct, "js.Error", true, "syscall/js", true, function(Value_) { + this.$val = this; + if (arguments.length === 0) { + this.Value = new Value.ptr(null, false, arrayType.zero()); + return; + } + this.Value = Value_; + }); + Value = $newType(0, $kindStruct, "js.Value", true, "syscall/js", true, function(v_, inited_, _$2_) { + this.$val = this; + if (arguments.length === 0) { + this.v = null; + this.inited = false; + this._$2 = arrayType.zero(); + return; + } + this.v = v_; + this.inited = inited_; + this._$2 = _$2_; + }); + ValueError = $newType(0, $kindStruct, "js.ValueError", true, "syscall/js", true, function(Method_, Type_) { + this.$val = this; + if (arguments.length === 0) { + this.Method = ""; + this.Type = 0; + return; + } + this.Method = Method_; + this.Type = Type_; + }); + $pkg.Type = Type; + $pkg.Func = Func; + $pkg.Error = Error; + $pkg.Value = Value; + $pkg.ValueError = ValueError; + $pkg.$finishSetup = function() { + sliceType = $sliceType($String); + funcType = $funcType([], [], false); + arrayType = $arrayType(funcType, 0); + sliceType$1 = $sliceType(Value); + mapType = $mapType($String, $emptyInterface); + sliceType$2 = $sliceType($emptyInterface); + ptrType = $ptrType(js.Error); + sliceType$3 = $sliceType($Uint8); + ptrType$1 = $ptrType(js.Object); + ptrType$2 = $ptrType(ValueError); + Type.prototype.String = function String() { + var t; + t = this.$val; + if (((t >> 0)) < 0 || typeNames.$length <= ((t >> 0))) { + $panic(new $String("bad type")); + } + return ((t < 0 || t >= typeNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : typeNames.$array[typeNames.$offset + t]); + }; + $ptrType(Type).prototype.String = function(...$args) { return new Type(this.$get()).String(...$args); }; + Type.prototype.isObject = function isObject() { + var t; + t = this.$val; + return (t === 6) || (t === 7); + }; + $ptrType(Type).prototype.isObject = function(...$args) { return new Type(this.$get()).isObject(...$args); }; + Global = function Global$1() { + return objectToValue($global); + }; + $pkg.Global = Global; + Null = function Null$1() { + return objectToValue(null); + }; + $pkg.Null = Null; + Undefined = function Undefined$1() { + return objectToValue(undefined); + }; + $pkg.Undefined = Undefined; + $ptrType(Func).prototype.Release = function Release() { + var f; + f = this; + $exportedFunctions = ($parseInt($exportedFunctions) >> 0) - 1 >> 0; + Value.copy(f.Value, Null()); + }; + Func.prototype.Release = function(...$args) { return this.$val.Release(...$args); }; + FuncOf = function FuncOf$1(fn) { + var fn; + $exportedFunctions = ($parseInt($exportedFunctions) >> 0) + 1 >> 0; + return new Func.ptr($clone(objectToValue(js.MakeFunc((function FuncOf·func1(this$1, args) { + var {$24r, _i, _r, _ref, a, args, i, this$1, vargs, $s, $r, $c} = $restore(this, {this$1, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + vargs = $makeSlice(sliceType$1, args.$length); + _ref = args; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + a = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + Value.copy(((i < 0 || i >= vargs.$length) ? ($throwRuntimeError("index out of range"), undefined) : vargs.$array[vargs.$offset + i]), objectToValue(a)); + _i++; + } + _r = fn($clone(objectToValue(this$1), Value), vargs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: FuncOf·func1, $c: true, $r, $24r, _i, _r, _ref, a, args, i, this$1, vargs, $s};return $f; + }))), Value)); + }; + $pkg.FuncOf = FuncOf; + $ptrType(Error).prototype.Error = function Error$1() { + var e; + e = this; + return "JavaScript error: " + $clone($clone(e.Value, Value).Get("message"), Value).String(); + }; + Error.prototype.Error = function(...$args) { return this.$val.Error(...$args); }; + objectToValue = function objectToValue$1(obj) { + var obj; + if (obj === undefined) { + return new Value.ptr(null, false, arrayType.zero()); + } + return new Value.ptr(obj, true, arrayType.zero()); + }; + init = function init$1() { + if (!($global === null)) { + id = $id; + instanceOf = $instanceOf; + typeOf = $typeOf; + } + }; + getValueType = function getValueType$1(obj) { + var _i, _ref, name, name2, obj, type2; + if (obj === null) { + return 1; + } + name = $internalize(typeOf(obj), $String); + _ref = typeNames; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + type2 = _i; + name2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (name === name2) { + return ((type2 >> 0)); + } + _i++; + } + return 6; + }; + ValueOf = function ValueOf$1(x) { + var _ref, x, x$1, x$2, x$3, x$4, x$5; + _ref = x; + if ($assertType(_ref, Value, true)[1]) { + x$1 = $clone(_ref.$val, Value); + return x$1; + } else if ($assertType(_ref, Func, true)[1]) { + x$2 = $clone(_ref.$val, Func); + return x$2.Value; + } else if (_ref === $ifaceNil) { + x$3 = _ref; + return Null(); + } else if ($assertType(_ref, $Bool, true)[1] || $assertType(_ref, $Int, true)[1] || $assertType(_ref, $Int8, true)[1] || $assertType(_ref, $Int16, true)[1] || $assertType(_ref, $Int32, true)[1] || $assertType(_ref, $Int64, true)[1] || $assertType(_ref, $Uint, true)[1] || $assertType(_ref, $Uint8, true)[1] || $assertType(_ref, $Uint16, true)[1] || $assertType(_ref, $Uint32, true)[1] || $assertType(_ref, $Uint64, true)[1] || $assertType(_ref, $Float32, true)[1] || $assertType(_ref, $Float64, true)[1] || $assertType(_ref, $UnsafePointer, true)[1] || $assertType(_ref, $String, true)[1] || $assertType(_ref, mapType, true)[1] || $assertType(_ref, sliceType$2, true)[1]) { + x$4 = _ref; + return objectToValue(id($externalize(x$4, $emptyInterface))); + } else { + x$5 = _ref; + $panic(new $String("ValueOf: invalid value")); + } + }; + $pkg.ValueOf = ValueOf; + $ptrType(Value).prototype.internal = function internal() { + var v; + v = this; + if (!v.inited) { + return undefined; + } + return v.v; + }; + Value.prototype.internal = function(...$args) { return this.$val.internal(...$args); }; + $ptrType(Value).prototype.Bool = function Bool() { + var v, vType; + v = this; + vType = $clone(v, Value).Type(); + if (!((vType === 2))) { + $panic(new ValueError.ptr("Value.Bool", vType)); + } + return !!($clone(v, Value).internal()); + }; + Value.prototype.Bool = function(...$args) { return this.$val.Bool(...$args); }; + convertArgs = function convertArgs$1(args) { + var _i, _ref, arg, args, newArgs, v; + newArgs = new sliceType$2([]); + _ref = args; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + v = $clone(ValueOf(arg), Value); + newArgs = $append(newArgs, new $jsObjectPtr($clone(v, Value).internal())); + _i++; + } + return newArgs; + }; + convertJSError = function convertJSError$1() { + var _tuple, err, jsErr, ok, x; + err = $recover(); + if ($interfaceIsEqual(err, $ifaceNil)) { + return; + } + _tuple = $assertType(err, ptrType, true); + jsErr = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $panic((x = new Error.ptr($clone(objectToValue(jsErr.Object), Value)), new x.constructor.elem(x))); + } + $panic(err); + }; + $ptrType(Value).prototype.Call = function Call(m, args) { + var args, m, obj, propType, v, vType, $deferred; + /* */ var $err = null; try { $deferred = []; $curGoroutine.deferStack.push($deferred); + v = this; + vType = $clone(v, Value).Type(); + if (!((vType === 6)) && !((vType === 7))) { + $panic(new ValueError.ptr("Value.Call", vType)); + } + propType = $clone($clone(v, Value).Get(m), Value).Type(); + if (!((propType === 7))) { + $panic(new $String("js: Value.Call: property " + m + " is not a function, got " + new Type(propType).String())); + } + $deferred.push([convertJSError, []]); + return objectToValue((obj = $clone(v, Value).internal(), obj[$externalize(m, $String)].apply(obj, $externalize(convertArgs(args), sliceType$2)))); + /* */ } catch(err) { $err = err; return new Value.ptr(null, false, arrayType.zero()); } finally { $callDeferred($deferred, $err); } + }; + Value.prototype.Call = function(...$args) { return this.$val.Call(...$args); }; + $ptrType(Value).prototype.Float = function Float() { + var v, vType; + v = this; + vType = $clone(v, Value).Type(); + if (!((vType === 3))) { + $panic(new ValueError.ptr("Value.Float", vType)); + } + return $parseFloat($clone(v, Value).internal()); + }; + Value.prototype.Float = function(...$args) { return this.$val.Float(...$args); }; + $ptrType(Value).prototype.Get = function Get(p) { + var p, v, vType; + v = this; + vType = $clone(v, Value).Type(); + if (!new Type(vType).isObject()) { + $panic(new ValueError.ptr("Value.Get", vType)); + } + return objectToValue($clone(v, Value).internal()[$externalize(p, $String)]); + }; + Value.prototype.Get = function(...$args) { return this.$val.Get(...$args); }; + $ptrType(Value).prototype.Index = function Index(i) { + var i, v, vType; + v = this; + vType = $clone(v, Value).Type(); + if (!new Type(vType).isObject()) { + $panic(new ValueError.ptr("Value.Index", vType)); + } + return objectToValue($clone(v, Value).internal()[i]); + }; + Value.prototype.Index = function(...$args) { return this.$val.Index(...$args); }; + $ptrType(Value).prototype.Int = function Int() { + var v, vType; + v = this; + vType = $clone(v, Value).Type(); + if (!((vType === 3))) { + $panic(new ValueError.ptr("Value.Int", vType)); + } + return $parseInt($clone(v, Value).internal()) >> 0; + }; + Value.prototype.Int = function(...$args) { return this.$val.Int(...$args); }; + $ptrType(Value).prototype.InstanceOf = function InstanceOf(t) { + var t, v; + v = this; + return !!(instanceOf($clone(v, Value).internal(), $clone(t, Value).internal())); + }; + Value.prototype.InstanceOf = function(...$args) { return this.$val.InstanceOf(...$args); }; + $ptrType(Value).prototype.Invoke = function Invoke(args) { + var args, v, vType; + v = this; + vType = $clone(v, Value).Type(); + if (!((vType === 7))) { + $panic(new ValueError.ptr("Value.Invoke", vType)); + } + return objectToValue($clone(v, Value).internal().apply(undefined, $externalize(convertArgs(args), sliceType$2))); + }; + Value.prototype.Invoke = function(...$args) { return this.$val.Invoke(...$args); }; + $ptrType(Value).prototype.JSValue = function JSValue() { + var v; + v = this; + return v; + }; + Value.prototype.JSValue = function(...$args) { return this.$val.JSValue(...$args); }; + $ptrType(Value).prototype.Length = function Length() { + var v; + v = this; + return $parseInt($clone(v, Value).internal().length); + }; + Value.prototype.Length = function(...$args) { return this.$val.Length(...$args); }; + $ptrType(Value).prototype.New = function New(args) { + var args, v, $deferred; + /* */ var $err = null; try { $deferred = []; $curGoroutine.deferStack.push($deferred); + v = this; + $deferred.push([(function Value·New·func1() { + var _tuple, err, jsErr, ok, vType, x; + err = $recover(); + if ($interfaceIsEqual(err, $ifaceNil)) { + return; + } + vType = $clone(v, Value).Type(); + if (!((vType === 7))) { + $panic(new ValueError.ptr("Value.New", vType)); + } + _tuple = $assertType(err, ptrType, true); + jsErr = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $panic((x = new Error.ptr($clone(objectToValue(jsErr.Object), Value)), new x.constructor.elem(x))); + } + $panic(err); + }), []]); + return objectToValue(new ($global.Function.prototype.bind.apply($clone(v, Value).internal(), [undefined].concat($externalize(convertArgs(args), sliceType$2))))); + /* */ } catch(err) { $err = err; return new Value.ptr(null, false, arrayType.zero()); } finally { $callDeferred($deferred, $err); } + }; + Value.prototype.New = function(...$args) { return this.$val.New(...$args); }; + $ptrType(Value).prototype.Set = function Set(p, x) { + var p, v, vType, x, x$1; + v = this; + vType = $clone(v, Value).Type(); + if (!new Type(vType).isObject()) { + $panic(new ValueError.ptr("Value.Set", vType)); + } + $clone(v, Value).internal()[$externalize(p, $String)] = $externalize((x$1 = convertArgs(new sliceType$2([x])), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), $emptyInterface); + }; + Value.prototype.Set = function(...$args) { return this.$val.Set(...$args); }; + $ptrType(Value).prototype.SetIndex = function SetIndex(i, x) { + var i, v, vType, x, x$1; + v = this; + vType = $clone(v, Value).Type(); + if (!new Type(vType).isObject()) { + $panic(new ValueError.ptr("Value.SetIndex", vType)); + } + $clone(v, Value).internal()[i] = $externalize((x$1 = convertArgs(new sliceType$2([x])), (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), $emptyInterface); + }; + Value.prototype.SetIndex = function(...$args) { return this.$val.SetIndex(...$args); }; + $ptrType(Value).prototype.String = function String$1() { + var _1, v; + v = this; + _1 = $clone(v, Value).Type(); + if (_1 === (4)) { + return $internalize($clone(v, Value).internal(), $String); + } else if (_1 === (0)) { + return ""; + } else if (_1 === (1)) { + return ""; + } else if (_1 === (2)) { + return ""; + } else if (_1 === (3)) { + return ""; + } else if (_1 === (5)) { + return ""; + } else if (_1 === (6)) { + return ""; + } else if (_1 === (7)) { + return ""; + } else { + $panic(new $String("bad type")); + } + }; + Value.prototype.String = function(...$args) { return this.$val.String(...$args); }; + $ptrType(Value).prototype.Truthy = function Truthy() { + var v; + v = this; + return !!($clone(v, Value).internal()); + }; + Value.prototype.Truthy = function(...$args) { return this.$val.Truthy(...$args); }; + $ptrType(Value).prototype.Type = function Type$1() { + var v; + v = this; + return (getValueType($clone(v, Value).internal())); + }; + Value.prototype.Type = function(...$args) { return this.$val.Type(...$args); }; + $ptrType(Value).prototype.IsNull = function IsNull() { + var v; + v = this; + return $clone(v, Value).Type() === 1; + }; + Value.prototype.IsNull = function(...$args) { return this.$val.IsNull(...$args); }; + $ptrType(Value).prototype.IsUndefined = function IsUndefined() { + var v; + v = this; + return !v.inited; + }; + Value.prototype.IsUndefined = function(...$args) { return this.$val.IsUndefined(...$args); }; + $ptrType(Value).prototype.IsNaN = function IsNaN() { + var v; + v = this; + return !!($global.isNaN($clone(v, Value).internal())); + }; + Value.prototype.IsNaN = function(...$args) { return this.$val.IsNaN(...$args); }; + $ptrType(Value).prototype.Delete = function Delete(p) { + var p, v, vType; + v = this; + vType = $clone(v, Value).Type(); + if (!new Type(vType).isObject()) { + $panic(new ValueError.ptr("Value.Delete", vType)); + } + delete $clone(v, Value).internal()[$externalize(p, $String)]; + }; + Value.prototype.Delete = function(...$args) { return this.$val.Delete(...$args); }; + $ptrType(Value).prototype.Equal = function Equal(w) { + var v, w; + v = this; + return $clone(v, Value).internal() === $clone(w, Value).internal(); + }; + Value.prototype.Equal = function(...$args) { return this.$val.Equal(...$args); }; + $ptrType(ValueError).prototype.Error = function Error$2() { + var e; + e = this; + return "syscall/js: call of " + e.Method + " on " + new Type(e.Type).String(); + }; + CopyBytesToGo = function CopyBytesToGo$1(dst, src) { + var dlen, dst, src, vlen; + vlen = $parseInt(src.v.length); + dlen = dst.$length; + if (dlen < vlen) { + vlen = dlen; + } + $copySlice(dst, $assertType($internalize(src.v, $emptyInterface), sliceType$3)); + return vlen; + }; + $pkg.CopyBytesToGo = CopyBytesToGo; + CopyBytesToJS = function CopyBytesToJS$1(dst, src) { + var _tuple, dst, dt, ok, src; + _tuple = $assertType($internalize(dst.v, $emptyInterface), sliceType$3, true); + dt = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $panic(new $String("syscall/js: CopyBytesToJS: expected dst to be an Uint8Array")); + } + return $copySlice(dt, src); + }; + $pkg.CopyBytesToJS = CopyBytesToJS; + Type.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "isObject", name: "isObject", pkg: "syscall/js", typ: $funcType([], [$Bool], false)}]; + Func.methods = [{prop: "Release", name: "Release", pkg: "", typ: $funcType([], [], false)}]; + Error.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + Value.methods = [{prop: "internal", name: "internal", pkg: "syscall/js", typ: $funcType([], [ptrType$1], false)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([$String, sliceType$2], [Value], true)}, {prop: "Float", name: "Float", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [Value], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "InstanceOf", name: "InstanceOf", pkg: "", typ: $funcType([Value], [$Bool], false)}, {prop: "Invoke", name: "Invoke", pkg: "", typ: $funcType([sliceType$2], [Value], true)}, {prop: "JSValue", name: "JSValue", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Length", name: "Length", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "New", name: "New", pkg: "", typ: $funcType([sliceType$2], [Value], true)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $emptyInterface], [], false)}, {prop: "SetIndex", name: "SetIndex", pkg: "", typ: $funcType([$Int, $emptyInterface], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Truthy", name: "Truthy", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "IsNull", name: "IsNull", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsUndefined", name: "IsUndefined", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsNaN", name: "IsNaN", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([Value], [$Bool], false)}]; + ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + Func.init("", [{prop: "Value", name: "Value", embedded: true, exported: true, typ: Value, tag: ""}]); + Error.init("", [{prop: "Value", name: "Value", embedded: true, exported: true, typ: Value, tag: ""}]); + Value.init("syscall/js", [{prop: "v", name: "v", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "inited", name: "inited", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "_$2", name: "_", embedded: false, exported: false, typ: arrayType, tag: ""}]); + ValueError.init("", [{prop: "Method", name: "Method", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + id = null; + instanceOf = null; + typeOf = null; + typeNames = new sliceType(["undefined", "null", "boolean", "number", "string", "symbol", "object", "function"]); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["syscall"] = (function() { + var $pkg = {}, $init, errors, bytealg, itoa, oserror, runtime, sync, js, Errno, Signal, Stat_t, WaitStatus, Rusage, ProcAttr, SysProcAttr, Iovec, Timeval, Sockaddr, SockaddrInet4, SockaddrInet6, SockaddrUnix, RawConn, jsFile, callResult, arrayType, sliceType, arrayType$1, sliceType$1, sliceType$2, ptrType, funcType, arrayType$2, ptrType$2, sliceType$4, ptrType$3, ptrType$5, arrayType$3, arrayType$4, funcType$1, funcType$2, filesMu, envOnce, envLock, env, errorstr, errEAGAIN, errEINVAL, errENOENT, errnoByCode, signals, jsProcess, jsFS, constants, uint8Array, nodeWRONLY, nodeRDWR, nodeCREATE, nodeTRUNC, nodeAPPEND, nodeEXCL, files, envs, faketimeWrite, errnoErr, Getwd, Kill, StartProcess, Wait4, Bind, StopIO, Accept, Recvfrom, Sendto, Recvmsg, SendmsgN, SetsockoptInt, SetReadDeadline, SetWriteDeadline, Shutdown, SetNonblock, runtime_envs, setStat, Exit, fsCall, fdToFile, Open, Close, CloseOnExec, ReadDirent, Stat, Lstat, Fstat, Unlink, Rmdir, Chmod, Fchmod, Fchown, Ftruncate, Getcwd, Chdir, Fchdir, Readlink, Fsync, Read, Write, Pread, Pwrite, Seek, Dup, Pipe, checkPath, recoverErr, mapJSError, copyenv, Getenv, Environ; + errors = $packages["errors"]; + bytealg = $packages["internal/bytealg"]; + itoa = $packages["internal/itoa"]; + oserror = $packages["internal/oserror"]; + runtime = $packages["runtime"]; + sync = $packages["sync"]; + js = $packages["syscall/js"]; + Errno = $newType(4, $kindUintptr, "syscall.Errno", true, "syscall", true, null); + Signal = $newType(4, $kindInt, "syscall.Signal", true, "syscall", true, null); + Stat_t = $newType(0, $kindStruct, "syscall.Stat_t", true, "syscall", true, function(Dev_, Ino_, Mode_, Nlink_, Uid_, Gid_, Rdev_, Size_, Blksize_, Blocks_, Atime_, AtimeNsec_, Mtime_, MtimeNsec_, Ctime_, CtimeNsec_) { + this.$val = this; + if (arguments.length === 0) { + this.Dev = new $Int64(0, 0); + this.Ino = new $Uint64(0, 0); + this.Mode = 0; + this.Nlink = 0; + this.Uid = 0; + this.Gid = 0; + this.Rdev = new $Int64(0, 0); + this.Size = new $Int64(0, 0); + this.Blksize = 0; + this.Blocks = 0; + this.Atime = new $Int64(0, 0); + this.AtimeNsec = new $Int64(0, 0); + this.Mtime = new $Int64(0, 0); + this.MtimeNsec = new $Int64(0, 0); + this.Ctime = new $Int64(0, 0); + this.CtimeNsec = new $Int64(0, 0); + return; + } + this.Dev = Dev_; + this.Ino = Ino_; + this.Mode = Mode_; + this.Nlink = Nlink_; + this.Uid = Uid_; + this.Gid = Gid_; + this.Rdev = Rdev_; + this.Size = Size_; + this.Blksize = Blksize_; + this.Blocks = Blocks_; + this.Atime = Atime_; + this.AtimeNsec = AtimeNsec_; + this.Mtime = Mtime_; + this.MtimeNsec = MtimeNsec_; + this.Ctime = Ctime_; + this.CtimeNsec = CtimeNsec_; + }); + WaitStatus = $newType(4, $kindUint32, "syscall.WaitStatus", true, "syscall", true, null); + Rusage = $newType(0, $kindStruct, "syscall.Rusage", true, "syscall", true, function(Utime_, Stime_) { + this.$val = this; + if (arguments.length === 0) { + this.Utime = new Timeval.ptr(new $Int64(0, 0), new $Int64(0, 0)); + this.Stime = new Timeval.ptr(new $Int64(0, 0), new $Int64(0, 0)); + return; + } + this.Utime = Utime_; + this.Stime = Stime_; + }); + ProcAttr = $newType(0, $kindStruct, "syscall.ProcAttr", true, "syscall", true, function(Dir_, Env_, Files_, Sys_) { + this.$val = this; + if (arguments.length === 0) { + this.Dir = ""; + this.Env = sliceType.nil; + this.Files = sliceType$4.nil; + this.Sys = ptrType$3.nil; + return; + } + this.Dir = Dir_; + this.Env = Env_; + this.Files = Files_; + this.Sys = Sys_; + }); + SysProcAttr = $newType(0, $kindStruct, "syscall.SysProcAttr", true, "syscall", true, function() { this.$val = this; }); + Iovec = $newType(0, $kindStruct, "syscall.Iovec", true, "syscall", true, function() { this.$val = this; }); + Timeval = $newType(0, $kindStruct, "syscall.Timeval", true, "syscall", true, function(Sec_, Usec_) { + this.$val = this; + if (arguments.length === 0) { + this.Sec = new $Int64(0, 0); + this.Usec = new $Int64(0, 0); + return; + } + this.Sec = Sec_; + this.Usec = Usec_; + }); + Sockaddr = $newType(8, $kindInterface, "syscall.Sockaddr", true, "syscall", true, null); + SockaddrInet4 = $newType(0, $kindStruct, "syscall.SockaddrInet4", true, "syscall", true, function(Port_, Addr_) { + this.$val = this; + if (arguments.length === 0) { + this.Port = 0; + this.Addr = arrayType$3.zero(); + return; + } + this.Port = Port_; + this.Addr = Addr_; + }); + SockaddrInet6 = $newType(0, $kindStruct, "syscall.SockaddrInet6", true, "syscall", true, function(Port_, ZoneId_, Addr_) { + this.$val = this; + if (arguments.length === 0) { + this.Port = 0; + this.ZoneId = 0; + this.Addr = arrayType$4.zero(); + return; + } + this.Port = Port_; + this.ZoneId = ZoneId_; + this.Addr = Addr_; + }); + SockaddrUnix = $newType(0, $kindStruct, "syscall.SockaddrUnix", true, "syscall", true, function(Name_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + return; + } + this.Name = Name_; + }); + RawConn = $newType(8, $kindInterface, "syscall.RawConn", true, "syscall", true, null); + jsFile = $newType(0, $kindStruct, "syscall.jsFile", true, "syscall", false, function(path_, entries_, dirIdx_, pos_, seeked_) { + this.$val = this; + if (arguments.length === 0) { + this.path = ""; + this.entries = sliceType.nil; + this.dirIdx = 0; + this.pos = new $Int64(0, 0); + this.seeked = false; + return; + } + this.path = path_; + this.entries = entries_; + this.dirIdx = dirIdx_; + this.pos = pos_; + this.seeked = seeked_; + }); + callResult = $newType(0, $kindStruct, "syscall.callResult", true, "syscall", false, function(val_, err_) { + this.$val = this; + if (arguments.length === 0) { + this.val = new js.Value.ptr(null, false, arrayType$2.zero()); + this.err = $ifaceNil; + return; + } + this.val = val_; + this.err = err_; + }); + $pkg.Errno = Errno; + $pkg.Signal = Signal; + $pkg.Stat_t = Stat_t; + $pkg.WaitStatus = WaitStatus; + $pkg.Rusage = Rusage; + $pkg.ProcAttr = ProcAttr; + $pkg.SysProcAttr = SysProcAttr; + $pkg.Iovec = Iovec; + $pkg.Timeval = Timeval; + $pkg.Sockaddr = Sockaddr; + $pkg.SockaddrInet4 = SockaddrInet4; + $pkg.SockaddrInet6 = SockaddrInet6; + $pkg.SockaddrUnix = SockaddrUnix; + $pkg.RawConn = RawConn; + $pkg.jsFile = jsFile; + $pkg.callResult = callResult; + $pkg.$finishSetup = function() { + arrayType = $arrayType($String, 0); + sliceType = $sliceType($String); + arrayType$1 = $arrayType($Uint8, 256); + sliceType$1 = $sliceType($Uint8); + sliceType$2 = $sliceType($emptyInterface); + ptrType = $ptrType($error); + funcType = $funcType([], [], false); + arrayType$2 = $arrayType(funcType, 0); + ptrType$2 = $ptrType(jsFile); + sliceType$4 = $sliceType($Uintptr); + ptrType$3 = $ptrType(SysProcAttr); + ptrType$5 = $ptrType(Timeval); + arrayType$3 = $arrayType($Uint8, 4); + arrayType$4 = $arrayType($Uint8, 16); + funcType$1 = $funcType([$Uintptr], [], false); + funcType$2 = $funcType([$Uintptr], [$Bool], false); + faketimeWrite = function faketimeWrite$1(fd, p) { + var fd, p; + $panic(new $String("not implemented")); + }; + errnoErr = function errnoErr$1(e) { + var _1, e; + _1 = e; + if (_1 === (0)) { + return $ifaceNil; + } else if (_1 === (11)) { + return errEAGAIN; + } else if (_1 === (22)) { + return errEINVAL; + } else if (_1 === (2)) { + return errENOENT; + } + return new Errno(e); + }; + Errno.prototype.Error = function Error() { + var e, s; + e = this.$val; + if (0 <= ((e >> 0)) && ((e >> 0)) < 2054) { + s = ((e < 0 || e >= errorstr.length) ? ($throwRuntimeError("index out of range"), undefined) : errorstr[e]); + if (!(s === "")) { + return s; + } + } + return "errno " + itoa.Itoa(((e >> 0))); + }; + $ptrType(Errno).prototype.Error = function(...$args) { return new Errno(this.$get()).Error(...$args); }; + Errno.prototype.Is = function Is(target) { + var _1, e, target; + e = this.$val; + _1 = target; + if ($interfaceIsEqual(_1, (oserror.ErrPermission))) { + return (e === 13) || (e === 1); + } else if ($interfaceIsEqual(_1, (oserror.ErrExist))) { + return (e === 17) || (e === 39); + } else if ($interfaceIsEqual(_1, (oserror.ErrNotExist))) { + return e === 2; + } + return false; + }; + $ptrType(Errno).prototype.Is = function(...$args) { return new Errno(this.$get()).Is(...$args); }; + Errno.prototype.Temporary = function Temporary() { + var e; + e = this.$val; + return (e === 4) || (e === 24) || new Errno(e).Timeout(); + }; + $ptrType(Errno).prototype.Temporary = function(...$args) { return new Errno(this.$get()).Temporary(...$args); }; + Errno.prototype.Timeout = function Timeout() { + var e; + e = this.$val; + return (e === 11) || (e === 11) || (e === 110); + }; + $ptrType(Errno).prototype.Timeout = function(...$args) { return new Errno(this.$get()).Timeout(...$args); }; + Signal.prototype.Signal = function Signal$1() { + var s; + s = this.$val; + }; + $ptrType(Signal).prototype.Signal = function(...$args) { return new Signal(this.$get()).Signal(...$args); }; + Signal.prototype.String = function String() { + var s, str; + s = this.$val; + if (0 <= s && ((s >> 0)) < 0) { + str = ((s < 0 || s >= signals.length) ? ($throwRuntimeError("index out of range"), undefined) : signals[s]); + if (!(str === "")) { + return str; + } + } + return "signal " + itoa.Itoa(((s >> 0))); + }; + $ptrType(Signal).prototype.String = function(...$args) { return new Signal(this.$get()).String(...$args); }; + WaitStatus.prototype.Exited = function Exited() { + var w; + w = this.$val; + return false; + }; + $ptrType(WaitStatus).prototype.Exited = function(...$args) { return new WaitStatus(this.$get()).Exited(...$args); }; + WaitStatus.prototype.ExitStatus = function ExitStatus() { + var w; + w = this.$val; + return 0; + }; + $ptrType(WaitStatus).prototype.ExitStatus = function(...$args) { return new WaitStatus(this.$get()).ExitStatus(...$args); }; + WaitStatus.prototype.Signaled = function Signaled() { + var w; + w = this.$val; + return false; + }; + $ptrType(WaitStatus).prototype.Signaled = function(...$args) { return new WaitStatus(this.$get()).Signaled(...$args); }; + WaitStatus.prototype.Signal = function Signal$2() { + var w; + w = this.$val; + return 0; + }; + $ptrType(WaitStatus).prototype.Signal = function(...$args) { return new WaitStatus(this.$get()).Signal(...$args); }; + WaitStatus.prototype.CoreDump = function CoreDump() { + var w; + w = this.$val; + return false; + }; + $ptrType(WaitStatus).prototype.CoreDump = function(...$args) { return new WaitStatus(this.$get()).CoreDump(...$args); }; + WaitStatus.prototype.Stopped = function Stopped() { + var w; + w = this.$val; + return false; + }; + $ptrType(WaitStatus).prototype.Stopped = function(...$args) { return new WaitStatus(this.$get()).Stopped(...$args); }; + WaitStatus.prototype.Continued = function Continued() { + var w; + w = this.$val; + return false; + }; + $ptrType(WaitStatus).prototype.Continued = function(...$args) { return new WaitStatus(this.$get()).Continued(...$args); }; + WaitStatus.prototype.StopSignal = function StopSignal() { + var w; + w = this.$val; + return 0; + }; + $ptrType(WaitStatus).prototype.StopSignal = function(...$args) { return new WaitStatus(this.$get()).StopSignal(...$args); }; + WaitStatus.prototype.TrapCause = function TrapCause() { + var w; + w = this.$val; + return 0; + }; + $ptrType(WaitStatus).prototype.TrapCause = function(...$args) { return new WaitStatus(this.$get()).TrapCause(...$args); }; + Getwd = function Getwd$1() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, buf, err, n, wd; + wd = ""; + err = $ifaceNil; + buf = arrayType$1.zero(); + _tuple = Getcwd($subslice(new sliceType$1(buf), 0)); + n = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = ""; + _tmp$1 = err; + wd = _tmp; + err = _tmp$1; + return [wd, err]; + } + _tmp$2 = ($bytesToString($subslice(new sliceType$1(buf), 0, n))); + _tmp$3 = $ifaceNil; + wd = _tmp$2; + err = _tmp$3; + return [wd, err]; + }; + $pkg.Getwd = Getwd; + Kill = function Kill$1(pid, signum) { + var pid, signum; + return new Errno(38); + }; + $pkg.Kill = Kill; + StartProcess = function StartProcess$1(argv0, argv, attr) { + var _tmp, _tmp$1, _tmp$2, argv, argv0, attr, err, handle, pid; + pid = 0; + handle = 0; + err = $ifaceNil; + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = new Errno(38); + pid = _tmp; + handle = _tmp$1; + err = _tmp$2; + return [pid, handle, err]; + }; + $pkg.StartProcess = StartProcess; + Wait4 = function Wait4$1(pid, wstatus, options, rusage) { + var _tmp, _tmp$1, err, options, pid, rusage, wpid, wstatus; + wpid = 0; + err = $ifaceNil; + _tmp = 0; + _tmp$1 = new Errno(38); + wpid = _tmp; + err = _tmp$1; + return [wpid, err]; + }; + $pkg.Wait4 = Wait4; + $ptrType(Timeval).prototype.Unix = function Unix$1() { + var _tmp, _tmp$1, nsec, sec, tv; + sec = new $Int64(0, 0); + nsec = new $Int64(0, 0); + tv = this; + _tmp = (tv.Sec); + _tmp$1 = $mul64((tv.Usec), new $Int64(0, 1000)); + sec = _tmp; + nsec = _tmp$1; + return [sec, nsec]; + }; + $ptrType(Timeval).prototype.Nano = function Nano$1() { + var tv, x, x$1; + tv = this; + return (x = $mul64((tv.Sec), new $Int64(0, 1000000000)), x$1 = $mul64((tv.Usec), new $Int64(0, 1000)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); + }; + Bind = function Bind$1(fd, sa) { + var fd, sa; + return new Errno(38); + }; + $pkg.Bind = Bind; + StopIO = function StopIO$1(fd) { + var fd; + return new Errno(38); + }; + $pkg.StopIO = StopIO; + Accept = function Accept$1(fd) { + var _tmp, _tmp$1, _tmp$2, err, fd, newfd, sa; + newfd = 0; + sa = $ifaceNil; + err = $ifaceNil; + _tmp = 0; + _tmp$1 = $ifaceNil; + _tmp$2 = new Errno(38); + newfd = _tmp; + sa = _tmp$1; + err = _tmp$2; + return [newfd, sa, err]; + }; + $pkg.Accept = Accept; + Recvfrom = function Recvfrom$1(fd, p, flags) { + var _tmp, _tmp$1, _tmp$2, err, fd, flags, from, n, p; + n = 0; + from = $ifaceNil; + err = $ifaceNil; + _tmp = 0; + _tmp$1 = $ifaceNil; + _tmp$2 = new Errno(38); + n = _tmp; + from = _tmp$1; + err = _tmp$2; + return [n, from, err]; + }; + $pkg.Recvfrom = Recvfrom; + Sendto = function Sendto$1(fd, p, flags, to) { + var fd, flags, p, to; + return new Errno(38); + }; + $pkg.Sendto = Sendto; + Recvmsg = function Recvmsg$1(fd, p, oob, flags) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, err, fd, flags, from, n, oob, oobn, p, recvflags; + n = 0; + oobn = 0; + recvflags = 0; + from = $ifaceNil; + err = $ifaceNil; + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = 0; + _tmp$3 = $ifaceNil; + _tmp$4 = new Errno(38); + n = _tmp; + oobn = _tmp$1; + recvflags = _tmp$2; + from = _tmp$3; + err = _tmp$4; + return [n, oobn, recvflags, from, err]; + }; + $pkg.Recvmsg = Recvmsg; + SendmsgN = function SendmsgN$1(fd, p, oob, to, flags) { + var _tmp, _tmp$1, err, fd, flags, n, oob, p, to; + n = 0; + err = $ifaceNil; + _tmp = 0; + _tmp$1 = new Errno(38); + n = _tmp; + err = _tmp$1; + return [n, err]; + }; + $pkg.SendmsgN = SendmsgN; + SetsockoptInt = function SetsockoptInt$1(fd, level, opt, value) { + var fd, level, opt, value; + return $ifaceNil; + }; + $pkg.SetsockoptInt = SetsockoptInt; + SetReadDeadline = function SetReadDeadline$1(fd, t) { + var fd, t; + return new Errno(38); + }; + $pkg.SetReadDeadline = SetReadDeadline; + SetWriteDeadline = function SetWriteDeadline$1(fd, t) { + var fd, t; + return new Errno(38); + }; + $pkg.SetWriteDeadline = SetWriteDeadline; + Shutdown = function Shutdown$1(fd, how) { + var fd, how; + return new Errno(38); + }; + $pkg.Shutdown = Shutdown; + SetNonblock = function SetNonblock$1(fd, nonblocking) { + var fd, nonblocking; + return $ifaceNil; + }; + $pkg.SetNonblock = SetNonblock; + runtime_envs = function runtime_envs$1() { + var envkeys, envs$1, i, jsEnv, key, process; + process = $clone($clone(js.Global(), js.Value).Get("process"), js.Value); + if ($clone(process, js.Value).IsUndefined()) { + return sliceType.nil; + } + jsEnv = $clone($clone(process, js.Value).Get("env"), js.Value); + if ($clone(jsEnv, js.Value).IsUndefined()) { + return sliceType.nil; + } + envkeys = $clone($clone($clone(js.Global(), js.Value).Get("Object"), js.Value).Call("keys", new sliceType$2([new jsEnv.constructor.elem(jsEnv)])), js.Value); + envs$1 = $makeSlice(sliceType, $clone(envkeys, js.Value).Length()); + i = 0; + while (true) { + if (!(i < $clone(envkeys, js.Value).Length())) { break; } + key = $clone($clone(envkeys, js.Value).Index(i), js.Value).String(); + ((i < 0 || i >= envs$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : envs$1.$array[envs$1.$offset + i] = key + "=" + $clone($clone(jsEnv, js.Value).Get(key), js.Value).String()); + i = i + (1) >> 0; + } + return envs$1; + }; + setStat = function setStat$1(st, jsSt) { + var atime, ctime, jsSt, mtime, st; + st.Dev = (new $Int64(0, $clone($clone(jsSt, js.Value).Get("dev"), js.Value).Int())); + st.Ino = (new $Uint64(0, $clone($clone(jsSt, js.Value).Get("ino"), js.Value).Int())); + st.Mode = (($clone($clone(jsSt, js.Value).Get("mode"), js.Value).Int() >>> 0)); + st.Nlink = (($clone($clone(jsSt, js.Value).Get("nlink"), js.Value).Int() >>> 0)); + st.Uid = (($clone($clone(jsSt, js.Value).Get("uid"), js.Value).Int() >>> 0)); + st.Gid = (($clone($clone(jsSt, js.Value).Get("gid"), js.Value).Int() >>> 0)); + st.Rdev = (new $Int64(0, $clone($clone(jsSt, js.Value).Get("rdev"), js.Value).Int())); + st.Size = (new $Int64(0, $clone($clone(jsSt, js.Value).Get("size"), js.Value).Int())); + st.Blksize = (($clone($clone(jsSt, js.Value).Get("blksize"), js.Value).Int() >> 0)); + st.Blocks = (($clone($clone(jsSt, js.Value).Get("blocks"), js.Value).Int() >> 0)); + atime = (new $Int64(0, $clone($clone(jsSt, js.Value).Get("atimeMs"), js.Value).Float())); + st.Atime = $div64(atime, new $Int64(0, 1000), false); + st.AtimeNsec = $mul64(($div64(atime, new $Int64(0, 1000), true)), new $Int64(0, 1000000)); + mtime = (new $Int64(0, $clone($clone(jsSt, js.Value).Get("mtimeMs"), js.Value).Float())); + st.Mtime = $div64(mtime, new $Int64(0, 1000), false); + st.MtimeNsec = $mul64(($div64(mtime, new $Int64(0, 1000), true)), new $Int64(0, 1000000)); + ctime = (new $Int64(0, $clone($clone(jsSt, js.Value).Get("ctimeMs"), js.Value).Float())); + st.Ctime = $div64(ctime, new $Int64(0, 1000), false); + st.CtimeNsec = $mul64(($div64(ctime, new $Int64(0, 1000), true)), new $Int64(0, 1000000)); + }; + Exit = function Exit$1(code) { + var code, process; + process = $clone($clone(js.Global(), js.Value).Get("process"), js.Value); + if (!$clone(process, js.Value).IsUndefined()) { + $clone(process, js.Value).Call("exit", new sliceType$2([new $Int(code)])); + return; + } + if (!((code === 0))) { + $clone($clone(js.Global(), js.Value).Get("console"), js.Value).Call("warn", new sliceType$2([new $String("Go program exited with non-zero code:"), new $Int(code)])); + } + }; + $pkg.Exit = Exit; + fsCall = function fsCall$1(name, args) { + var {_r, args, c, f, name, res, $s, $deferred, $r, $c} = $restore(this, {name, args}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + c = [c]; + c[0] = new $Chan(callResult, 1); + f = $clone(js.FuncOf((function(c) { return function fsCall·func1(this$1, args$1) { + var {args$1, jsErr, res, this$1, $s, $r, $c} = $restore(this, {this$1, args$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + res = new callResult.ptr(new js.Value.ptr(null, false, arrayType$2.zero()), $ifaceNil); + if (args$1.$length >= 1) { + jsErr = $clone((0 >= args$1.$length ? ($throwRuntimeError("index out of range"), undefined) : args$1.$array[args$1.$offset + 0]), js.Value); + if (!$clone(jsErr, js.Value).IsUndefined() && !$clone(jsErr, js.Value).IsNull()) { + res.err = mapJSError($clone(jsErr, js.Value)); + } + } + js.Value.copy(res.val, js.Undefined()); + if (args$1.$length >= 2) { + js.Value.copy(res.val, (1 >= args$1.$length ? ($throwRuntimeError("index out of range"), undefined) : args$1.$array[args$1.$offset + 1])); + } + $r = $send(c[0], $clone($clone(res, callResult), callResult)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: fsCall·func1, $c: true, $r, args$1, jsErr, res, this$1, $s};return $f; + }; })(c)), js.Func); + $deferred.push([$methodVal($clone(f, js.Func), "Release"), []]); + if ($clone($clone(jsFS, js.Value).Get(name), js.Value).IsUndefined()) { + $s = -1; return [js.Undefined(), new Errno(38)]; + } + $clone(jsFS, js.Value).Call(name, $append(args, new f.constructor.elem(f))); + _r = $recv(c[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + res = $clone(_r[0], callResult); + $s = -1; return [res.val, res.err]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [new js.Value.ptr(null, false, arrayType$2.zero()), $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: fsCall$1, $c: true, $r, _r, args, c, f, name, res, $s, $deferred};return $f; } } + }; + fdToFile = function fdToFile$1(fd) { + var {_entry, _tuple, f, fd, ok, $s, $r, $c} = $restore(this, {fd}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = filesMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple = (_entry = $mapIndex(files,$Int.keyFor(fd)), _entry !== undefined ? [_entry.v, true] : [ptrType$2.nil, false]); + f = _tuple[0]; + ok = _tuple[1]; + $r = filesMu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!ok) { + $s = -1; return [ptrType$2.nil, new Errno(9)]; + } + $s = -1; return [f, $ifaceNil]; + /* */ } return; } var $f = {$blk: fdToFile$1, $c: true, $r, _entry, _tuple, f, fd, ok, $s};return $f; + }; + Open = function Open$1(path, openmode, perm) { + var {_i, _key, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, _tuple$2, cwd, dir, entries, err, err$1, err$2, err$3, f, fd, flags, i, jsFD, openmode, path, perm, stat, $s, $r, $c} = $restore(this, {path, openmode, perm}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = checkPath(path); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + flags = 0; + if (!(((openmode & 1) === 0))) { + flags = flags | (nodeWRONLY); + } + if (!(((openmode & 2) === 0))) { + flags = flags | (nodeRDWR); + } + if (!(((openmode & 64) === 0))) { + flags = flags | (nodeCREATE); + } + if (!(((openmode & 512) === 0))) { + flags = flags | (nodeTRUNC); + } + if (!(((openmode & 1024) === 0))) { + flags = flags | (nodeAPPEND); + } + if (!(((openmode & 128) === 0))) { + flags = flags | (nodeEXCL); + } + if (!(((openmode & 4096) === 0))) { + $s = -1; return [0, errors.New("syscall.Open: O_SYNC is not supported by js/wasm")]; + } + _r = fsCall("open", new sliceType$2([new $String(path), new $Int(flags), new $Uint32(perm)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + jsFD = $clone(_tuple[0], js.Value); + err$1 = _tuple[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [0, err$1]; + } + fd = $clone(jsFD, js.Value).Int(); + entries = sliceType.nil; + _r$1 = fsCall("fstat", new sliceType$2([new $Int(fd)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + stat = $clone(_tuple$1[0], js.Value); + err$2 = _tuple$1[1]; + /* */ if ($interfaceIsEqual(err$2, $ifaceNil) && $clone($clone(stat, js.Value).Call("isDirectory", sliceType$2.nil), js.Value).Bool()) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($interfaceIsEqual(err$2, $ifaceNil) && $clone($clone(stat, js.Value).Call("isDirectory", sliceType$2.nil), js.Value).Bool()) { */ case 3: + _r$2 = fsCall("readdir", new sliceType$2([new $String(path)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + dir = $clone(_tuple$2[0], js.Value); + err$3 = _tuple$2[1]; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + $s = -1; return [0, err$3]; + } + entries = $makeSlice(sliceType, $clone(dir, js.Value).Length()); + _ref = entries; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= entries.$length) ? ($throwRuntimeError("index out of range"), undefined) : entries.$array[entries.$offset + i] = $clone($clone(dir, js.Value).Index(i), js.Value).String()); + _i++; + } + /* } */ case 4: + if (!((path.charCodeAt(0) === 47))) { + cwd = $clone($clone(jsProcess, js.Value).Call("cwd", sliceType$2.nil), js.Value).String(); + path = cwd + "/" + path; + } + f = new jsFile.ptr(path, entries, 0, new $Int64(0, 0), false); + $r = filesMu.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _key = fd; (files || $throwRuntimeError("assignment to entry in nil map")).set($Int.keyFor(_key), { k: _key, v: f }); + $r = filesMu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [fd, $ifaceNil]; + /* */ } return; } var $f = {$blk: Open$1, $c: true, $r, _i, _key, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, _tuple$2, cwd, dir, entries, err, err$1, err$2, err$3, f, fd, flags, i, jsFD, openmode, path, perm, stat, $s};return $f; + }; + $pkg.Open = Open; + Close = function Close$1(fd) { + var {_r, _tuple, err, fd, $s, $r, $c} = $restore(this, {fd}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = filesMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $mapDelete(files, $Int.keyFor(fd)); + $r = filesMu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = fsCall("close", new sliceType$2([new $Int(fd)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + $s = -1; return err; + /* */ } return; } var $f = {$blk: Close$1, $c: true, $r, _r, _tuple, err, fd, $s};return $f; + }; + $pkg.Close = Close; + CloseOnExec = function CloseOnExec$1(fd) { + var fd; + }; + $pkg.CloseOnExec = CloseOnExec; + ReadDirent = function ReadDirent$1(fd, buf) { + var {_r, _tuple, buf, entry, err, f, fd, l, n, x, x$1, $s, $r, $c} = $restore(this, {fd, buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fdToFile(fd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + if (f.entries === sliceType.nil) { + $s = -1; return [0, new Errno(22)]; + } + n = 0; + while (true) { + if (!(f.dirIdx < f.entries.$length)) { break; } + entry = (x = f.entries, x$1 = f.dirIdx, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + l = 2 + entry.length >> 0; + if (l > buf.$length) { + break; + } + (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = ((l << 24 >>> 24))); + (1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1] = (((l >> 8 >> 0) << 24 >>> 24))); + $copyString($subslice(buf, 2), entry); + buf = $subslice(buf, l); + n = n + (l) >> 0; + f.dirIdx = f.dirIdx + (1) >> 0; + } + $s = -1; return [n, $ifaceNil]; + /* */ } return; } var $f = {$blk: ReadDirent$1, $c: true, $r, _r, _tuple, buf, entry, err, f, fd, l, n, x, x$1, $s};return $f; + }; + $pkg.ReadDirent = ReadDirent; + Stat = function Stat$1(path, st) { + var {_r, _tuple, err, err$1, jsSt, path, st, $s, $r, $c} = $restore(this, {path, st}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = checkPath(path); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = fsCall("stat", new sliceType$2([new $String(path)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + jsSt = $clone(_tuple[0], js.Value); + err$1 = _tuple[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + setStat(st, $clone(jsSt, js.Value)); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Stat$1, $c: true, $r, _r, _tuple, err, err$1, jsSt, path, st, $s};return $f; + }; + $pkg.Stat = Stat; + Lstat = function Lstat$1(path, st) { + var {_r, _tuple, err, err$1, jsSt, path, st, $s, $r, $c} = $restore(this, {path, st}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = checkPath(path); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = fsCall("lstat", new sliceType$2([new $String(path)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + jsSt = $clone(_tuple[0], js.Value); + err$1 = _tuple[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + setStat(st, $clone(jsSt, js.Value)); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Lstat$1, $c: true, $r, _r, _tuple, err, err$1, jsSt, path, st, $s};return $f; + }; + $pkg.Lstat = Lstat; + Fstat = function Fstat$1(fd, st) { + var {_r, _tuple, err, fd, jsSt, st, $s, $r, $c} = $restore(this, {fd, st}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fsCall("fstat", new sliceType$2([new $Int(fd)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + jsSt = $clone(_tuple[0], js.Value); + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + setStat(st, $clone(jsSt, js.Value)); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Fstat$1, $c: true, $r, _r, _tuple, err, fd, jsSt, st, $s};return $f; + }; + $pkg.Fstat = Fstat; + Unlink = function Unlink$1(path) { + var {_r, _tuple, err, err$1, path, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = checkPath(path); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = fsCall("unlink", new sliceType$2([new $String(path)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err$1 = _tuple[1]; + $s = -1; return err$1; + /* */ } return; } var $f = {$blk: Unlink$1, $c: true, $r, _r, _tuple, err, err$1, path, $s};return $f; + }; + $pkg.Unlink = Unlink; + Rmdir = function Rmdir$1(path) { + var {_r, _tuple, err, err$1, path, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = checkPath(path); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = fsCall("rmdir", new sliceType$2([new $String(path)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err$1 = _tuple[1]; + $s = -1; return err$1; + /* */ } return; } var $f = {$blk: Rmdir$1, $c: true, $r, _r, _tuple, err, err$1, path, $s};return $f; + }; + $pkg.Rmdir = Rmdir; + Chmod = function Chmod$1(path, mode) { + var {_r, _tuple, err, err$1, mode, path, $s, $r, $c} = $restore(this, {path, mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = checkPath(path); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r = fsCall("chmod", new sliceType$2([new $String(path), new $Uint32(mode)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err$1 = _tuple[1]; + $s = -1; return err$1; + /* */ } return; } var $f = {$blk: Chmod$1, $c: true, $r, _r, _tuple, err, err$1, mode, path, $s};return $f; + }; + $pkg.Chmod = Chmod; + Fchmod = function Fchmod$1(fd, mode) { + var {_r, _tuple, err, fd, mode, $s, $r, $c} = $restore(this, {fd, mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fsCall("fchmod", new sliceType$2([new $Int(fd), new $Uint32(mode)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + $s = -1; return err; + /* */ } return; } var $f = {$blk: Fchmod$1, $c: true, $r, _r, _tuple, err, fd, mode, $s};return $f; + }; + $pkg.Fchmod = Fchmod; + Fchown = function Fchown$1(fd, uid, gid) { + var {_r, _tuple, err, fd, gid, uid, $s, $r, $c} = $restore(this, {fd, uid, gid}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fsCall("fchown", new sliceType$2([new $Int(fd), new $Uint32(((uid >>> 0))), new $Uint32(((gid >>> 0)))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + $s = -1; return err; + /* */ } return; } var $f = {$blk: Fchown$1, $c: true, $r, _r, _tuple, err, fd, gid, uid, $s};return $f; + }; + $pkg.Fchown = Fchown; + Ftruncate = function Ftruncate$1(fd, length) { + var {_r, _tuple, err, fd, length, $s, $r, $c} = $restore(this, {fd, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fsCall("ftruncate", new sliceType$2([new $Int(fd), length])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + $s = -1; return err; + /* */ } return; } var $f = {$blk: Ftruncate$1, $c: true, $r, _r, _tuple, err, fd, length, $s};return $f; + }; + $pkg.Ftruncate = Ftruncate; + Getcwd = function Getcwd$1(buf) { + var buf, cwd, err, err$24ptr, n, $deferred; + /* */ var $err = null; try { $deferred = []; $curGoroutine.deferStack.push($deferred); + n = 0; + err = $ifaceNil; + $deferred.push([recoverErr, [(err$24ptr || (err$24ptr = new ptrType(function() { return err; }, function($v) { err = $v; })))]]); + cwd = $clone($clone(jsProcess, js.Value).Call("cwd", sliceType$2.nil), js.Value).String(); + n = $copyString(buf, cwd); + return [n, err]; + /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } } + }; + $pkg.Getcwd = Getcwd; + Chdir = function Chdir$1(path) { + var err, err$1, err$24ptr, path, $deferred; + /* */ var $err = null; try { $deferred = []; $curGoroutine.deferStack.push($deferred); + err = $ifaceNil; + err$1 = checkPath(path); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + err = err$1; + return err; + } + $deferred.push([recoverErr, [(err$24ptr || (err$24ptr = new ptrType(function() { return err; }, function($v) { err = $v; })))]]); + $clone(jsProcess, js.Value).Call("chdir", new sliceType$2([new $String(path)])); + return err; + /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err; } } + }; + $pkg.Chdir = Chdir; + Fchdir = function Fchdir$1(fd) { + var {_r, _tuple, err, f, fd, $s, $r, $c} = $restore(this, {fd}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fdToFile(fd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $s = -1; return Chdir(f.path); + /* */ } return; } var $f = {$blk: Fchdir$1, $c: true, $r, _r, _tuple, err, f, fd, $s};return $f; + }; + $pkg.Fchdir = Fchdir; + Readlink = function Readlink$1(path, buf) { + var {_r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buf, dst, err, err$1, n, path, $s, $r, $c} = $restore(this, {path, buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + err$1 = checkPath(path); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + _r = fsCall("readlink", new sliceType$2([new $String(path)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + dst = $clone(_tuple[0], js.Value); + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$2 = 0; + _tmp$3 = err; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + n = $copyString(buf, $clone(dst, js.Value).String()); + _tmp$4 = n; + _tmp$5 = $ifaceNil; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Readlink$1, $c: true, $r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buf, dst, err, err$1, n, path, $s};return $f; + }; + $pkg.Readlink = Readlink; + Fsync = function Fsync$1(fd) { + var {_r, _tuple, err, fd, $s, $r, $c} = $restore(this, {fd}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fsCall("fsync", new sliceType$2([new $Int(fd)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + $s = -1; return err; + /* */ } return; } var $f = {$blk: Fsync$1, $c: true, $r, _r, _tuple, err, fd, $s};return $f; + }; + $pkg.Fsync = Fsync; + Read = function Read$1(fd, b) { + var {_r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, b, buf, err, err$1, f, fd, n, n$1, n2, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {fd, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fdToFile(fd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + /* */ if (f.seeked) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (f.seeked) { */ case 2: + _r$1 = Pread(fd, b, f.pos); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + n = _tuple$1[0]; + err$1 = _tuple$1[1]; + f.pos = (x = f.pos, x$1 = (new $Int64(0, n)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); + $s = -1; return [n, err$1]; + /* } */ case 3: + buf = $clone($clone(uint8Array, js.Value).New(new sliceType$2([new $Int(b.$length)])), js.Value); + _r$2 = fsCall("read", new sliceType$2([new $Int(fd), new buf.constructor.elem(buf), new $Int(0), new $Int(b.$length), $ifaceNil])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + n$1 = $clone(_tuple$2[0], js.Value); + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + js.CopyBytesToGo(b, $clone(buf, js.Value)); + n2 = $clone(n$1, js.Value).Int(); + f.pos = (x$2 = f.pos, x$3 = (new $Int64(0, n2)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); + $s = -1; return [n2, err]; + /* */ } return; } var $f = {$blk: Read$1, $c: true, $r, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, b, buf, err, err$1, f, fd, n, n$1, n2, x, x$1, x$2, x$3, $s};return $f; + }; + $pkg.Read = Read; + Write = function Write$1(fd, b) { + var {_r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, b, buf, err, err$1, f, fd, n, n$1, n$2, n2, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {fd, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fdToFile(fd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + /* */ if (f.seeked) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (f.seeked) { */ case 2: + _r$1 = Pwrite(fd, b, f.pos); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + n = _tuple$1[0]; + err$1 = _tuple$1[1]; + f.pos = (x = f.pos, x$1 = (new $Int64(0, n)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); + $s = -1; return [n, err$1]; + /* } */ case 3: + if (false && ((fd === 1) || (fd === 2))) { + n$1 = faketimeWrite(fd, b); + if (n$1 < 0) { + $s = -1; return [0, errnoErr(((-n$1 >>> 0)))]; + } + $s = -1; return [n$1, $ifaceNil]; + } + buf = $clone($clone(uint8Array, js.Value).New(new sliceType$2([new $Int(b.$length)])), js.Value); + js.CopyBytesToJS($clone(buf, js.Value), b); + _r$2 = fsCall("write", new sliceType$2([new $Int(fd), new buf.constructor.elem(buf), new $Int(0), new $Int(b.$length), $ifaceNil])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + n$2 = $clone(_tuple$2[0], js.Value); + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + n2 = $clone(n$2, js.Value).Int(); + f.pos = (x$2 = f.pos, x$3 = (new $Int64(0, n2)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); + $s = -1; return [n2, err]; + /* */ } return; } var $f = {$blk: Write$1, $c: true, $r, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, b, buf, err, err$1, f, fd, n, n$1, n$2, n2, x, x$1, x$2, x$3, $s};return $f; + }; + $pkg.Write = Write; + Pread = function Pread$1(fd, b, offset) { + var {_r, _tuple, b, buf, err, fd, n, offset, $s, $r, $c} = $restore(this, {fd, b, offset}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = $clone($clone(uint8Array, js.Value).New(new sliceType$2([new $Int(b.$length)])), js.Value); + _r = fsCall("read", new sliceType$2([new $Int(fd), new buf.constructor.elem(buf), new $Int(0), new $Int(b.$length), offset])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = $clone(_tuple[0], js.Value); + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + js.CopyBytesToGo(b, $clone(buf, js.Value)); + $s = -1; return [$clone(n, js.Value).Int(), $ifaceNil]; + /* */ } return; } var $f = {$blk: Pread$1, $c: true, $r, _r, _tuple, b, buf, err, fd, n, offset, $s};return $f; + }; + $pkg.Pread = Pread; + Pwrite = function Pwrite$1(fd, b, offset) { + var {_r, _tuple, b, buf, err, fd, n, offset, $s, $r, $c} = $restore(this, {fd, b, offset}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = $clone($clone(uint8Array, js.Value).New(new sliceType$2([new $Int(b.$length)])), js.Value); + js.CopyBytesToJS($clone(buf, js.Value), b); + _r = fsCall("write", new sliceType$2([new $Int(fd), new buf.constructor.elem(buf), new $Int(0), new $Int(b.$length), offset])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = $clone(_tuple[0], js.Value); + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $s = -1; return [$clone(n, js.Value).Int(), $ifaceNil]; + /* */ } return; } var $f = {$blk: Pwrite$1, $c: true, $r, _r, _tuple, b, buf, err, fd, n, offset, $s};return $f; + }; + $pkg.Pwrite = Pwrite; + Seek = function Seek$1(fd, offset, whence) { + var {_1, _r, _r$1, _tuple, err, err$1, f, fd, newPos, offset, st, whence, x, x$1, $s, $r, $c} = $restore(this, {fd, offset, whence}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + st = [st]; + _r = fdToFile(fd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [new $Int64(0, 0), err]; + } + newPos = new $Int64(0, 0); + _1 = whence; + /* */ if (_1 === (0)) { $s = 3; continue; } + /* */ if (_1 === (1)) { $s = 4; continue; } + /* */ if (_1 === (2)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (0)) { */ case 3: + newPos = offset; + $s = 7; continue; + /* } else if (_1 === (1)) { */ case 4: + newPos = (x = f.pos, new $Int64(x.$high + offset.$high, x.$low + offset.$low)); + $s = 7; continue; + /* } else if (_1 === (2)) { */ case 5: + st[0] = new Stat_t.ptr(new $Int64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), 0, 0, new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0)); + _r$1 = Fstat(fd, st[0]); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err$1 = _r$1; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [new $Int64(0, 0), err$1]; + } + newPos = (x$1 = st[0].Size, new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low)); + $s = 7; continue; + /* } else { */ case 6: + $s = -1; return [new $Int64(0, 0), errnoErr(22)]; + /* } */ case 7: + case 2: + if ((newPos.$high < 0 || (newPos.$high === 0 && newPos.$low < 0))) { + $s = -1; return [new $Int64(0, 0), errnoErr(22)]; + } + f.seeked = true; + f.dirIdx = 0; + f.pos = newPos; + $s = -1; return [newPos, $ifaceNil]; + /* */ } return; } var $f = {$blk: Seek$1, $c: true, $r, _1, _r, _r$1, _tuple, err, err$1, f, fd, newPos, offset, st, whence, x, x$1, $s};return $f; + }; + $pkg.Seek = Seek; + Dup = function Dup$1(fd) { + var fd; + return [0, new Errno(38)]; + }; + $pkg.Dup = Dup; + Pipe = function Pipe$1(fd) { + var fd; + return new Errno(38); + }; + $pkg.Pipe = Pipe; + checkPath = function checkPath$1(path) { + var i, path; + if (path === "") { + return new Errno(22); + } + i = 0; + while (true) { + if (!(i < path.length)) { break; } + if (path.charCodeAt(i) === 0) { + return new Errno(22); + } + i = i + (1) >> 0; + } + return $ifaceNil; + }; + recoverErr = function recoverErr$1(errPtr) { + var _tuple, err, errPtr, jsErr, ok; + err = $recover(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tuple = $assertType(err, js.Error, true); + jsErr = $clone(_tuple[0], js.Error); + ok = _tuple[1]; + if (!ok) { + $panic(err); + } + errPtr.$set(mapJSError($clone(jsErr.Value, js.Value))); + } + }; + mapJSError = function mapJSError$1(jsErr) { + var _entry, _tuple, errno, jsErr, ok; + _tuple = (_entry = $mapIndex(errnoByCode,$String.keyFor($clone($clone(jsErr, js.Value).Get("code"), js.Value).String())), _entry !== undefined ? [_entry.v, true] : [0, false]); + errno = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $panic(new jsErr.constructor.elem(jsErr)); + } + return errnoErr((errno)); + }; + copyenv = function copyenv$1() { + var _entry, _i, _key, _ref, _tuple, i, j, key, ok, s; + env = new $global.Map(); + _ref = envs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + j = 0; + while (true) { + if (!(j < s.length)) { break; } + if (s.charCodeAt(j) === 61) { + key = $substring(s, 0, j); + _tuple = (_entry = $mapIndex(env,$String.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [0, false]); + ok = _tuple[1]; + if (!ok) { + _key = key; (env || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: i }); + } else { + ((i < 0 || i >= envs.$length) ? ($throwRuntimeError("index out of range"), undefined) : envs.$array[envs.$offset + i] = ""); + } + break; + } + j = j + (1) >> 0; + } + _i++; + } + }; + Getenv = function Getenv$1(key) { + var {$24r, $24r$1, $24r$2, _entry, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, found, i, i$1, key, ok, s, value, $s, $deferred, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + value = ""; + found = false; + $r = envOnce.Do(copyenv); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (key.length === 0) { + _tmp = ""; + _tmp$1 = false; + value = _tmp; + found = _tmp$1; + $s = -1; return [value, found]; + } + $r = envLock.RLock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(envLock, "RUnlock"), []]); + _tuple = (_entry = $mapIndex(env,$String.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [0, false]); + i = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!ok) { */ case 3: + _tmp$2 = ""; + _tmp$3 = false; + value = _tmp$2; + found = _tmp$3; + $24r = [value, found]; + $s = 5; case 5: return $24r; + /* } */ case 4: + s = ((i < 0 || i >= envs.$length) ? ($throwRuntimeError("index out of range"), undefined) : envs.$array[envs.$offset + i]); + i$1 = 0; + /* while (true) { */ case 6: + /* if (!(i$1 < s.length)) { break; } */ if(!(i$1 < s.length)) { $s = 7; continue; } + /* */ if (s.charCodeAt(i$1) === 61) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (s.charCodeAt(i$1) === 61) { */ case 8: + _tmp$4 = $substring(s, (i$1 + 1 >> 0)); + _tmp$5 = true; + value = _tmp$4; + found = _tmp$5; + $24r$1 = [value, found]; + $s = 10; case 10: return $24r$1; + /* } */ case 9: + i$1 = i$1 + (1) >> 0; + $s = 6; continue; + case 7: + _tmp$6 = ""; + _tmp$7 = false; + value = _tmp$6; + found = _tmp$7; + $24r$2 = [value, found]; + $s = 11; case 11: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [value, found]; } if($curGoroutine.asleep) { var $f = {$blk: Getenv$1, $c: true, $r, $24r, $24r$1, $24r$2, _entry, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, found, i, i$1, key, ok, s, value, $s, $deferred};return $f; } } + }; + $pkg.Getenv = Getenv; + Environ = function Environ$1() { + var {$24r, _i, _ref, a, env$1, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + $r = envOnce.Do(copyenv); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = envLock.RLock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(envLock, "RUnlock"), []]); + a = $makeSlice(sliceType, 0, envs.$length); + _ref = envs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + env$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(env$1 === "")) { + a = $append(a, env$1); + } + _i++; + } + $24r = a; + $s = 3; case 3: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Environ$1, $c: true, $r, $24r, _i, _ref, a, env$1, $s, $deferred};return $f; } } + }; + $pkg.Environ = Environ; + Errno.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Is", name: "Is", pkg: "", typ: $funcType([$error], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]; + Signal.methods = [{prop: "Signal", name: "Signal", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + WaitStatus.methods = [{prop: "Exited", name: "Exited", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "ExitStatus", name: "ExitStatus", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Signaled", name: "Signaled", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Signal", name: "Signal", pkg: "", typ: $funcType([], [Signal], false)}, {prop: "CoreDump", name: "CoreDump", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Stopped", name: "Stopped", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Continued", name: "Continued", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "StopSignal", name: "StopSignal", pkg: "", typ: $funcType([], [Signal], false)}, {prop: "TrapCause", name: "TrapCause", pkg: "", typ: $funcType([], [$Int], false)}]; + ptrType$5.methods = [{prop: "Unix", name: "Unix", pkg: "", typ: $funcType([], [$Int64, $Int64], false)}, {prop: "Nano", name: "Nano", pkg: "", typ: $funcType([], [$Int64], false)}]; + Stat_t.init("", [{prop: "Dev", name: "Dev", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Ino", name: "Ino", embedded: false, exported: true, typ: $Uint64, tag: ""}, {prop: "Mode", name: "Mode", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Nlink", name: "Nlink", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Uid", name: "Uid", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Gid", name: "Gid", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Rdev", name: "Rdev", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Size", name: "Size", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Blksize", name: "Blksize", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Blocks", name: "Blocks", embedded: false, exported: true, typ: $Int32, tag: ""}, {prop: "Atime", name: "Atime", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "AtimeNsec", name: "AtimeNsec", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Mtime", name: "Mtime", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "MtimeNsec", name: "MtimeNsec", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Ctime", name: "Ctime", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "CtimeNsec", name: "CtimeNsec", embedded: false, exported: true, typ: $Int64, tag: ""}]); + Rusage.init("", [{prop: "Utime", name: "Utime", embedded: false, exported: true, typ: Timeval, tag: ""}, {prop: "Stime", name: "Stime", embedded: false, exported: true, typ: Timeval, tag: ""}]); + ProcAttr.init("", [{prop: "Dir", name: "Dir", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Env", name: "Env", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Files", name: "Files", embedded: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "Sys", name: "Sys", embedded: false, exported: true, typ: ptrType$3, tag: ""}]); + SysProcAttr.init("", []); + Iovec.init("", []); + Timeval.init("", [{prop: "Sec", name: "Sec", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "Usec", name: "Usec", embedded: false, exported: true, typ: $Int64, tag: ""}]); + Sockaddr.init([]); + SockaddrInet4.init("", [{prop: "Port", name: "Port", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$3, tag: ""}]); + SockaddrInet6.init("", [{prop: "Port", name: "Port", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "ZoneId", name: "ZoneId", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", embedded: false, exported: true, typ: arrayType$4, tag: ""}]); + SockaddrUnix.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}]); + RawConn.init([{prop: "Control", name: "Control", pkg: "", typ: $funcType([funcType$1], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([funcType$2], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([funcType$2], [$error], false)}]); + jsFile.init("syscall", [{prop: "path", name: "path", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "entries", name: "entries", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "dirIdx", name: "dirIdx", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "seeked", name: "seeked", embedded: false, exported: false, typ: $Bool, tag: ""}]); + callResult.init("syscall", [{prop: "val", name: "val", embedded: false, exported: false, typ: js.Value, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytealg.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = itoa.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = oserror.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ForkLock = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, new $packages["sync/atomic"].Int32.ptr(new $packages["sync/atomic"].noCopy.ptr(), 0), new $packages["sync/atomic"].Int32.ptr(new $packages["sync/atomic"].noCopy.ptr(), 0)); + filesMu = new sync.Mutex.ptr(0, 0); + envOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)); + envLock = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, new $packages["sync/atomic"].Int32.ptr(new $packages["sync/atomic"].noCopy.ptr(), 0), new $packages["sync/atomic"].Int32.ptr(new $packages["sync/atomic"].noCopy.ptr(), 0)); + env = false; + errorstr = $toNativeArray($kindString, ["", "Operation not permitted", "No such file or directory", "No such process", "Interrupted system call", "I/O error", "No such device or address", "Argument list too long", "Exec format error", "Bad file number", "No child processes", "Try again", "Out of memory", "Permission denied", "Bad address", "", "Device or resource busy", "File exists", "Cross-device link", "No such device", "Not a directory", "Is a directory", "Invalid argument", "File table overflow", "Too many open files", "Not a typewriter", "", "File too large", "No space left on device", "Illegal seek", "Read-only file system", "Too many links", "Broken pipe", "Math arg out of domain of func", "Math result not representable", "Deadlock condition", "File name too long", "No record locks available", "not implemented on js", "Directory not empty", "Too many symbolic links", "", "No message of desired type", "Identifier removed", "Channel number out of range", "Level 2 not synchronized", "Level 3 halted", "Level 3 reset", "Link number out of range", "Protocol driver not attached", "No CSI structure available", "Level 2 halted", "Invalid exchange", "Invalid request descriptor", "Exchange full", "No anode", "Invalid request code", "Invalid slot", "", "Bad font file fmt", "Device not a stream", "No data (for no delay io)", "Timer expired", "Out of streams resources", "Machine is not on the network", "Package not installed", "The object is remote", "The link has been severed", "Advertise error", "Srmount error", "Communication error on send", "Protocol error", "Multihop attempted", "Cross mount point (not really error)", "Trying to read unreadable message", "Value too large for defined data type", "Given log. name not unique", "f.d. invalid for this operation", "Remote address changed", "Can't access a needed shared lib", "Accessing a corrupted shared lib", ".lib section in a.out corrupted", "Attempting to link in too many libs", "Attempting to exec a shared library", "", "", "", "", "Socket operation on non-socket", "Destination address required", "Message too long", "Protocol wrong type for socket", "Protocol not available", "Unknown protocol", "Socket type not supported", "Operation not supported on transport endpoint", "Protocol family not supported", "Address family not supported by protocol family", "Address already in use", "Address not available", "Network interface is not configured", "Network is unreachable", "", "Connection aborted", "Connection reset by peer", "No buffer space available", "Socket is already connected", "Socket is not connected", "Can't send after socket shutdown", "", "Connection timed out", "Connection refused", "Host is down", "Host is unreachable", "Socket already connected", "Connection already in progress", "", "", "", "", "", "", "Quota exceeded", "No medium (in tape drive)", "", "Operation canceled.", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "Inode is remote (not really error)", "Inappropriate file type or format", "No more files", "", "No such host or network path", "Filename exists with different case"]); + errEAGAIN = new Errno(11); + errEINVAL = new Errno(22); + errENOENT = new Errno(2); + errnoByCode = $makeMap($String.keyFor, [{ k: "EPERM", v: 1 }, { k: "ENOENT", v: 2 }, { k: "ESRCH", v: 3 }, { k: "EINTR", v: 4 }, { k: "EIO", v: 5 }, { k: "ENXIO", v: 6 }, { k: "E2BIG", v: 7 }, { k: "ENOEXEC", v: 8 }, { k: "EBADF", v: 9 }, { k: "ECHILD", v: 10 }, { k: "EAGAIN", v: 11 }, { k: "ENOMEM", v: 12 }, { k: "EACCES", v: 13 }, { k: "EFAULT", v: 14 }, { k: "EBUSY", v: 16 }, { k: "EEXIST", v: 17 }, { k: "EXDEV", v: 18 }, { k: "ENODEV", v: 19 }, { k: "ENOTDIR", v: 20 }, { k: "EISDIR", v: 21 }, { k: "EINVAL", v: 22 }, { k: "ENFILE", v: 23 }, { k: "EMFILE", v: 24 }, { k: "ENOTTY", v: 25 }, { k: "EFBIG", v: 27 }, { k: "ENOSPC", v: 28 }, { k: "ESPIPE", v: 29 }, { k: "EROFS", v: 30 }, { k: "EMLINK", v: 31 }, { k: "EPIPE", v: 32 }, { k: "ENAMETOOLONG", v: 36 }, { k: "ENOSYS", v: 38 }, { k: "EDQUOT", v: 122 }, { k: "EDOM", v: 33 }, { k: "ERANGE", v: 34 }, { k: "EDEADLK", v: 35 }, { k: "ENOLCK", v: 37 }, { k: "ENOTEMPTY", v: 39 }, { k: "ELOOP", v: 40 }, { k: "ENOMSG", v: 42 }, { k: "EIDRM", v: 43 }, { k: "ECHRNG", v: 44 }, { k: "EL2NSYNC", v: 45 }, { k: "EL3HLT", v: 46 }, { k: "EL3RST", v: 47 }, { k: "ELNRNG", v: 48 }, { k: "EUNATCH", v: 49 }, { k: "ENOCSI", v: 50 }, { k: "EL2HLT", v: 51 }, { k: "EBADE", v: 52 }, { k: "EBADR", v: 53 }, { k: "EXFULL", v: 54 }, { k: "ENOANO", v: 55 }, { k: "EBADRQC", v: 56 }, { k: "EBADSLT", v: 57 }, { k: "EDEADLOCK", v: 35 }, { k: "EBFONT", v: 59 }, { k: "ENOSTR", v: 60 }, { k: "ENODATA", v: 61 }, { k: "ETIME", v: 62 }, { k: "ENOSR", v: 63 }, { k: "ENONET", v: 64 }, { k: "ENOPKG", v: 65 }, { k: "EREMOTE", v: 66 }, { k: "ENOLINK", v: 67 }, { k: "EADV", v: 68 }, { k: "ESRMNT", v: 69 }, { k: "ECOMM", v: 70 }, { k: "EPROTO", v: 71 }, { k: "EMULTIHOP", v: 72 }, { k: "EDOTDOT", v: 73 }, { k: "EBADMSG", v: 74 }, { k: "EOVERFLOW", v: 75 }, { k: "ENOTUNIQ", v: 76 }, { k: "EBADFD", v: 77 }, { k: "EREMCHG", v: 78 }, { k: "ELIBACC", v: 79 }, { k: "ELIBBAD", v: 80 }, { k: "ELIBSCN", v: 81 }, { k: "ELIBMAX", v: 82 }, { k: "ELIBEXEC", v: 83 }, { k: "EILSEQ", v: 84 }, { k: "EUSERS", v: 87 }, { k: "ENOTSOCK", v: 88 }, { k: "EDESTADDRREQ", v: 89 }, { k: "EMSGSIZE", v: 90 }, { k: "EPROTOTYPE", v: 91 }, { k: "ENOPROTOOPT", v: 92 }, { k: "EPROTONOSUPPORT", v: 93 }, { k: "ESOCKTNOSUPPORT", v: 94 }, { k: "EOPNOTSUPP", v: 95 }, { k: "EPFNOSUPPORT", v: 96 }, { k: "EAFNOSUPPORT", v: 97 }, { k: "EADDRINUSE", v: 98 }, { k: "EADDRNOTAVAIL", v: 99 }, { k: "ENETDOWN", v: 100 }, { k: "ENETUNREACH", v: 101 }, { k: "ENETRESET", v: 102 }, { k: "ECONNABORTED", v: 103 }, { k: "ECONNRESET", v: 104 }, { k: "ENOBUFS", v: 105 }, { k: "EISCONN", v: 106 }, { k: "ENOTCONN", v: 107 }, { k: "ESHUTDOWN", v: 108 }, { k: "ETOOMANYREFS", v: 109 }, { k: "ETIMEDOUT", v: 110 }, { k: "ECONNREFUSED", v: 111 }, { k: "EHOSTDOWN", v: 112 }, { k: "EHOSTUNREACH", v: 113 }, { k: "EALREADY", v: 114 }, { k: "EINPROGRESS", v: 115 }, { k: "ESTALE", v: 116 }, { k: "ENOTSUP", v: 95 }, { k: "ENOMEDIUM", v: 123 }, { k: "ECANCELED", v: 125 }, { k: "ELBIN", v: 2048 }, { k: "EFTYPE", v: 2049 }, { k: "ENMFILE", v: 2050 }, { k: "EPROCLIM", v: 2051 }, { k: "ENOSHARE", v: 2052 }, { k: "ECASECLASH", v: 2053 }, { k: "EWOULDBLOCK", v: 11 }]); + signals = arrayType.zero(); + jsProcess = $clone($clone(js.Global(), js.Value).Get("process"), js.Value); + jsFS = $clone($clone(js.Global(), js.Value).Get("fs"), js.Value); + constants = $clone($clone(jsFS, js.Value).Get("constants"), js.Value); + uint8Array = $clone($clone(js.Global(), js.Value).Get("Uint8Array"), js.Value); + nodeWRONLY = $clone($clone(constants, js.Value).Get("O_WRONLY"), js.Value).Int(); + nodeRDWR = $clone($clone(constants, js.Value).Get("O_RDWR"), js.Value).Int(); + nodeCREATE = $clone($clone(constants, js.Value).Get("O_CREAT"), js.Value).Int(); + nodeTRUNC = $clone($clone(constants, js.Value).Get("O_TRUNC"), js.Value).Int(); + nodeAPPEND = $clone($clone(constants, js.Value).Get("O_APPEND"), js.Value).Int(); + nodeEXCL = $clone($clone(constants, js.Value).Get("O_EXCL"), js.Value).Int(); + files = $makeMap($Int.keyFor, [{ k: 0, v: new jsFile.ptr("", sliceType.nil, 0, new $Int64(0, 0), false) }, { k: 1, v: new jsFile.ptr("", sliceType.nil, 0, new $Int64(0, 0), false) }, { k: 2, v: new jsFile.ptr("", sliceType.nil, 0, new $Int64(0, 0), false) }]); + envs = runtime_envs(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/syscall/unix"] = (function() { + var $pkg = {}, $init, syscall, IsNonblock, HasNonblockFlag, RecvfromInet4, RecvfromInet6, SendtoInet4, SendtoInet6, SendmsgNInet4, SendmsgNInet6, RecvmsgInet4, RecvmsgInet6; + syscall = $packages["syscall"]; + $pkg.$finishSetup = function() { + IsNonblock = function IsNonblock$1(fd) { + var _tmp, _tmp$1, err, fd, nonblocking; + nonblocking = false; + err = $ifaceNil; + _tmp = false; + _tmp$1 = $ifaceNil; + nonblocking = _tmp; + err = _tmp$1; + return [nonblocking, err]; + }; + $pkg.IsNonblock = IsNonblock; + HasNonblockFlag = function HasNonblockFlag$1(flag) { + var flag; + return false; + }; + $pkg.HasNonblockFlag = HasNonblockFlag; + RecvfromInet4 = function RecvfromInet4$1(fd, p, flags, from) { + var fd, flags, from, p; + return [0, new syscall.Errno(38)]; + }; + $pkg.RecvfromInet4 = RecvfromInet4; + RecvfromInet6 = function RecvfromInet6$1(fd, p, flags, from) { + var _tmp, _tmp$1, err, fd, flags, from, n, p; + n = 0; + err = $ifaceNil; + _tmp = 0; + _tmp$1 = new syscall.Errno(38); + n = _tmp; + err = _tmp$1; + return [n, err]; + }; + $pkg.RecvfromInet6 = RecvfromInet6; + SendtoInet4 = function SendtoInet4$1(fd, p, flags, to) { + var err, fd, flags, p, to; + err = $ifaceNil; + err = new syscall.Errno(38); + return err; + }; + $pkg.SendtoInet4 = SendtoInet4; + SendtoInet6 = function SendtoInet6$1(fd, p, flags, to) { + var err, fd, flags, p, to; + err = $ifaceNil; + err = new syscall.Errno(38); + return err; + }; + $pkg.SendtoInet6 = SendtoInet6; + SendmsgNInet4 = function SendmsgNInet4$1(fd, p, oob, to, flags) { + var _tmp, _tmp$1, err, fd, flags, n, oob, p, to; + n = 0; + err = $ifaceNil; + _tmp = 0; + _tmp$1 = new syscall.Errno(38); + n = _tmp; + err = _tmp$1; + return [n, err]; + }; + $pkg.SendmsgNInet4 = SendmsgNInet4; + SendmsgNInet6 = function SendmsgNInet6$1(fd, p, oob, to, flags) { + var _tmp, _tmp$1, err, fd, flags, n, oob, p, to; + n = 0; + err = $ifaceNil; + _tmp = 0; + _tmp$1 = new syscall.Errno(38); + n = _tmp; + err = _tmp$1; + return [n, err]; + }; + $pkg.SendmsgNInet6 = SendmsgNInet6; + RecvmsgInet4 = function RecvmsgInet4$1(fd, p, oob, flags, from) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, err, fd, flags, from, n, oob, oobn, p, recvflags; + n = 0; + oobn = 0; + recvflags = 0; + err = $ifaceNil; + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = 0; + _tmp$3 = new syscall.Errno(38); + n = _tmp; + oobn = _tmp$1; + recvflags = _tmp$2; + err = _tmp$3; + return [n, oobn, recvflags, err]; + }; + $pkg.RecvmsgInet4 = RecvmsgInet4; + RecvmsgInet6 = function RecvmsgInet6$1(fd, p, oob, flags, from) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, err, fd, flags, from, n, oob, oobn, p, recvflags; + n = 0; + oobn = 0; + recvflags = 0; + err = $ifaceNil; + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = 0; + _tmp$3 = new syscall.Errno(38); + n = _tmp; + oobn = _tmp$1; + recvflags = _tmp$2; + err = _tmp$3; + return [n, oobn, recvflags, err]; + }; + $pkg.RecvmsgInet6 = RecvmsgInet6; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = syscall.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/nosync"] = (function() { + var $pkg = {}, $init, Pool, Once, Mutex, RWMutex, WaitGroup, Map, sliceType, ptrType, funcType, funcType$1, ptrType$1, ptrType$2, ptrType$3, ptrType$4, funcType$2, ptrType$5, mapType; + Pool = $newType(0, $kindStruct, "nosync.Pool", true, "github.com/gopherjs/gopherjs/nosync", true, function(store_, New_) { + this.$val = this; + if (arguments.length === 0) { + this.store = sliceType.nil; + this.New = $throwNilPointerError; + return; + } + this.store = store_; + this.New = New_; + }); + Once = $newType(0, $kindStruct, "nosync.Once", true, "github.com/gopherjs/gopherjs/nosync", true, function(doing_, done_) { + this.$val = this; + if (arguments.length === 0) { + this.doing = false; + this.done = false; + return; + } + this.doing = doing_; + this.done = done_; + }); + Mutex = $newType(0, $kindStruct, "nosync.Mutex", true, "github.com/gopherjs/gopherjs/nosync", true, function(locked_, _$1_, _$2_, _$3_, _$4_) { + this.$val = this; + if (arguments.length === 0) { + this.locked = false; + this._$1 = false; + this._$2 = false; + this._$3 = false; + this._$4 = 0; + return; + } + this.locked = locked_; + this._$1 = _$1_; + this._$2 = _$2_; + this._$3 = _$3_; + this._$4 = _$4_; + }); + RWMutex = $newType(0, $kindStruct, "nosync.RWMutex", true, "github.com/gopherjs/gopherjs/nosync", true, function(_$0_, writeLocked_, _$2_, _$3_, _$4_, readLockCounter_, _$6_, _$7_) { + this.$val = this; + if (arguments.length === 0) { + this._$0 = new Mutex.ptr(false, false, false, false, 0); + this.writeLocked = false; + this._$2 = false; + this._$3 = false; + this._$4 = false; + this.readLockCounter = 0; + this._$6 = 0; + this._$7 = 0; + return; + } + this._$0 = _$0_; + this.writeLocked = writeLocked_; + this._$2 = _$2_; + this._$3 = _$3_; + this._$4 = _$4_; + this.readLockCounter = readLockCounter_; + this._$6 = _$6_; + this._$7 = _$7_; + }); + WaitGroup = $newType(0, $kindStruct, "nosync.WaitGroup", true, "github.com/gopherjs/gopherjs/nosync", true, function(counter_) { + this.$val = this; + if (arguments.length === 0) { + this.counter = 0; + return; + } + this.counter = counter_; + }); + Map = $newType(0, $kindStruct, "nosync.Map", true, "github.com/gopherjs/gopherjs/nosync", true, function(m_) { + this.$val = this; + if (arguments.length === 0) { + this.m = false; + return; + } + this.m = m_; + }); + $pkg.Pool = Pool; + $pkg.Once = Once; + $pkg.Mutex = Mutex; + $pkg.RWMutex = RWMutex; + $pkg.WaitGroup = WaitGroup; + $pkg.Map = Map; + $pkg.$finishSetup = function() { + sliceType = $sliceType($emptyInterface); + ptrType = $ptrType(Pool); + funcType = $funcType([], [$emptyInterface], false); + funcType$1 = $funcType([], [], false); + ptrType$1 = $ptrType(Once); + ptrType$2 = $ptrType(Mutex); + ptrType$3 = $ptrType(RWMutex); + ptrType$4 = $ptrType(WaitGroup); + funcType$2 = $funcType([$emptyInterface, $emptyInterface], [$Bool], false); + ptrType$5 = $ptrType(Map); + mapType = $mapType($emptyInterface, $emptyInterface); + $ptrType(Pool).prototype.Get = function Get() { + var {$24r, _r, p, x, x$1, x$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (p.store.$length === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.store.$length === 0) { */ case 1: + /* */ if (!(p.New === $throwNilPointerError)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(p.New === $throwNilPointerError)) { */ case 3: + _r = p.New(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 6; case 6: return $24r; + /* } */ case 4: + $s = -1; return $ifaceNil; + /* } */ case 2: + x$2 = (x = p.store, x$1 = p.store.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0)); + $s = -1; return x$2; + /* */ } return; } var $f = {$blk: Get, $c: true, $r, $24r, _r, p, x, x$1, x$2, $s};return $f; + }; + $ptrType(Pool).prototype.Put = function Put(x) { + var p, x; + p = this; + if ($interfaceIsEqual(x, $ifaceNil)) { + return; + } + p.store = $append(p.store, x); + }; + $ptrType(Once).prototype.Do = function Do(f) { + var {f, o, $s, $deferred, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + o = [o]; + o[0] = this; + if (o[0].done) { + $s = -1; return; + } + if (o[0].doing) { + $panic(new $String("nosync: Do called within f")); + } + o[0].doing = true; + $deferred.push([(function(o) { return function Once·Do·func1() { + o[0].doing = false; + o[0].done = true; + }; })(o), []]); + $r = f(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Do, $c: true, $r, f, o, $s, $deferred};return $f; } } + }; + $ptrType(Mutex).prototype.Lock = function Lock() { + var m; + m = this; + if (m.locked) { + $panic(new $String("nosync: mutex is already locked")); + } + m.locked = true; + }; + $ptrType(Mutex).prototype.Unlock = function Unlock() { + var m; + m = this; + if (!m.locked) { + $panic(new $String("nosync: unlock of unlocked mutex")); + } + m.locked = false; + }; + $ptrType(RWMutex).prototype.Lock = function Lock$1() { + var rw; + rw = this; + if (!((rw.readLockCounter === 0)) || rw.writeLocked) { + $panic(new $String("nosync: mutex is already locked")); + } + rw.writeLocked = true; + }; + $ptrType(RWMutex).prototype.Unlock = function Unlock$1() { + var rw; + rw = this; + if (!rw.writeLocked) { + $panic(new $String("nosync: unlock of unlocked mutex")); + } + rw.writeLocked = false; + }; + $ptrType(RWMutex).prototype.RLock = function RLock() { + var rw; + rw = this; + if (rw.writeLocked) { + $panic(new $String("nosync: mutex is already locked")); + } + rw.readLockCounter = rw.readLockCounter + (1) >> 0; + }; + $ptrType(RWMutex).prototype.RUnlock = function RUnlock() { + var rw; + rw = this; + if (rw.readLockCounter === 0) { + $panic(new $String("nosync: unlock of unlocked mutex")); + } + rw.readLockCounter = rw.readLockCounter - (1) >> 0; + }; + $ptrType(WaitGroup).prototype.Add = function Add(delta) { + var delta, wg; + wg = this; + wg.counter = wg.counter + (delta) >> 0; + if (wg.counter < 0) { + $panic(new $String("sync: negative WaitGroup counter")); + } + }; + $ptrType(WaitGroup).prototype.Done = function Done() { + var wg; + wg = this; + wg.Add(-1); + }; + $ptrType(WaitGroup).prototype.Wait = function Wait() { + var wg; + wg = this; + if (!((wg.counter === 0))) { + $panic(new $String("sync: WaitGroup counter not zero")); + } + }; + $ptrType(Map).prototype.Load = function Load(key) { + var _entry, _tmp, _tmp$1, _tuple, key, m, ok, value; + value = $ifaceNil; + ok = false; + m = this; + _tuple = (_entry = $mapIndex(m.m,$emptyInterface.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [$ifaceNil, false]); + value = _tuple[0]; + ok = _tuple[1]; + _tmp = value; + _tmp$1 = ok; + value = _tmp; + ok = _tmp$1; + return [value, ok]; + }; + $ptrType(Map).prototype.Store = function Store(key, value) { + var _key, key, m, value; + m = this; + if (m.m === false) { + m.m = new $global.Map(); + } + _key = key; (m.m || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key), { k: _key, v: value }); + }; + $ptrType(Map).prototype.LoadOrStore = function LoadOrStore(key, value) { + var _entry, _key, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, actual, key, loaded, m, ok, value, value$1; + actual = $ifaceNil; + loaded = false; + m = this; + _tuple = (_entry = $mapIndex(m.m,$emptyInterface.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [$ifaceNil, false]); + value$1 = _tuple[0]; + ok = _tuple[1]; + if (ok) { + _tmp = value$1; + _tmp$1 = true; + actual = _tmp; + loaded = _tmp$1; + return [actual, loaded]; + } + if (m.m === false) { + m.m = new $global.Map(); + } + _key = key; (m.m || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key), { k: _key, v: value }); + _tmp$2 = value; + _tmp$3 = false; + actual = _tmp$2; + loaded = _tmp$3; + return [actual, loaded]; + }; + $ptrType(Map).prototype.Delete = function Delete(key) { + var key, m; + m = this; + if (m.m === false) { + return; + } + $mapDelete(m.m, $emptyInterface.keyFor(key)); + }; + $ptrType(Map).prototype.Range = function Range(f) { + var {_entry, _i, _key, _keys, _r, _ref, _size, f, k, m, v, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + _ref = m.m; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 1: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 2; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 1; continue; + } + k = _entry.k; + v = _entry.v; + _r = f(k, v); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r) { */ case 3: + /* break; */ $s = 2; continue; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Range, $c: true, $r, _entry, _i, _key, _keys, _r, _ref, _size, f, k, m, v, $s};return $f; + }; + ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$emptyInterface], [], false)}]; + ptrType$1.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType$1], [], false)}]; + ptrType$2.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]; + ptrType$3.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}, {prop: "RLock", name: "RLock", pkg: "", typ: $funcType([], [], false)}, {prop: "RUnlock", name: "RUnlock", pkg: "", typ: $funcType([], [], false)}]; + ptrType$4.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}]; + ptrType$5.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface, $Bool], false)}, {prop: "Store", name: "Store", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [], false)}, {prop: "LoadOrStore", name: "LoadOrStore", pkg: "", typ: $funcType([$emptyInterface, $emptyInterface], [$emptyInterface, $Bool], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Range", name: "Range", pkg: "", typ: $funcType([funcType$2], [], false)}]; + Pool.init("github.com/gopherjs/gopherjs/nosync", [{prop: "store", name: "store", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "New", name: "New", embedded: false, exported: true, typ: funcType, tag: ""}]); + Once.init("github.com/gopherjs/gopherjs/nosync", [{prop: "doing", name: "doing", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Mutex.init("github.com/gopherjs/gopherjs/nosync", [{prop: "locked", name: "locked", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "_$1", name: "_", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "_$2", name: "_", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "_$3", name: "_", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "_$4", name: "_", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + RWMutex.init("github.com/gopherjs/gopherjs/nosync", [{prop: "_$0", name: "_", embedded: false, exported: false, typ: Mutex, tag: ""}, {prop: "writeLocked", name: "writeLocked", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "_$2", name: "_", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "_$3", name: "_", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "_$4", name: "_", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "readLockCounter", name: "readLockCounter", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "_$6", name: "_", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "_$7", name: "_", embedded: false, exported: false, typ: $Int32, tag: ""}]); + WaitGroup.init("github.com/gopherjs/gopherjs/nosync", [{prop: "counter", name: "counter", embedded: false, exported: false, typ: $Int, tag: ""}]); + Map.init("github.com/gopherjs/gopherjs/nosync", [{prop: "m", name: "m", embedded: false, exported: false, typ: mapType, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["time"] = (function() { + var $pkg = {}, $init, errors, js, nosync, runtime, syscall, Location, zone, zoneTrans, ruleKind, rule, Time, Month, Weekday, Duration, Timer, runtimeTimer, ParseError, sliceType, sliceType$1, ptrType, ptrType$1, sliceType$2, sliceType$3, sliceType$4, arrayType$2, chanType, funcType, structType, arrayType$3, ptrType$4, chanType$1, ptrType$6, funcType$1, ptrType$7, ptrType$8, localLoc, localLoc$24ptr, localOnce, unnamedFixedZones, unnamedFixedZonesOnce, badData, utcLoc, utcLoc$24ptr, errLocation, daysBefore, startNano, x, _r, zoneSources, std0x, longDayNames, shortDayNames, shortMonthNames, longMonthNames, atoiError, errBad, errLeadingInt, FixedZone, fixedZone, tzset, tzsetName, tzsetOffset, tzsetRule, tzsetNum, tzruleTime, absWeekday, absClock, fmtFrac, fmtInt, lessThanHalf, Since, Until, absDate, daysIn, daysSinceEpoch, runtimeNano, Now, unixTime, Unix, isLeap, norm, Date, div, when, NewTimer, sendTime, AfterFunc, goFunc, initLocal, itoa, init, now, Sleep, startTimer, stopTimer, modTimer, resetTimer, parseRFC3339 = [], parseStrictRFC3339, startsWithLowerCase, nextStdChunk, match, lookup, appendInt, atoi = [], stdFracSecond, digitsLen, separator, appendNano, newParseError, cloneString, quote, isDigit = [], getnum, getnum3, cutspace, skip, Parse, parse, parseTimeZone, parseGMT, parseSignedOffset, commaOrPeriod, parseNanoseconds = [], leadingInt = []; + errors = $packages["errors"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; + runtime = $packages["runtime"]; + syscall = $packages["syscall"]; + Location = $newType(0, $kindStruct, "time.Location", true, "time", true, function(name_, zone_, tx_, extend_, cacheStart_, cacheEnd_, cacheZone_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.zone = sliceType.nil; + this.tx = sliceType$1.nil; + this.extend = ""; + this.cacheStart = new $Int64(0, 0); + this.cacheEnd = new $Int64(0, 0); + this.cacheZone = ptrType.nil; + return; + } + this.name = name_; + this.zone = zone_; + this.tx = tx_; + this.extend = extend_; + this.cacheStart = cacheStart_; + this.cacheEnd = cacheEnd_; + this.cacheZone = cacheZone_; + }); + zone = $newType(0, $kindStruct, "time.zone", true, "time", false, function(name_, offset_, isDST_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.offset = 0; + this.isDST = false; + return; + } + this.name = name_; + this.offset = offset_; + this.isDST = isDST_; + }); + zoneTrans = $newType(0, $kindStruct, "time.zoneTrans", true, "time", false, function(when_, index_, isstd_, isutc_) { + this.$val = this; + if (arguments.length === 0) { + this.when = new $Int64(0, 0); + this.index = 0; + this.isstd = false; + this.isutc = false; + return; + } + this.when = when_; + this.index = index_; + this.isstd = isstd_; + this.isutc = isutc_; + }); + ruleKind = $newType(4, $kindInt, "time.ruleKind", true, "time", false, null); + rule = $newType(0, $kindStruct, "time.rule", true, "time", false, function(kind_, day_, week_, mon_, time_) { + this.$val = this; + if (arguments.length === 0) { + this.kind = 0; + this.day = 0; + this.week = 0; + this.mon = 0; + this.time = 0; + return; + } + this.kind = kind_; + this.day = day_; + this.week = week_; + this.mon = mon_; + this.time = time_; + }); + Time = $newType(0, $kindStruct, "time.Time", true, "time", true, function(wall_, ext_, loc_) { + this.$val = this; + if (arguments.length === 0) { + this.wall = new $Uint64(0, 0); + this.ext = new $Int64(0, 0); + this.loc = ptrType$1.nil; + return; + } + this.wall = wall_; + this.ext = ext_; + this.loc = loc_; + }); + Month = $newType(4, $kindInt, "time.Month", true, "time", true, null); + Weekday = $newType(4, $kindInt, "time.Weekday", true, "time", true, null); + Duration = $newType(8, $kindInt64, "time.Duration", true, "time", true, null); + Timer = $newType(0, $kindStruct, "time.Timer", true, "time", true, function(C_, r_) { + this.$val = this; + if (arguments.length === 0) { + this.C = $chanNil; + this.r = new runtimeTimer.ptr(0, new $Int64(0, 0), new $Int64(0, 0), $throwNilPointerError, $ifaceNil, 0, null, false); + return; + } + this.C = C_; + this.r = r_; + }); + runtimeTimer = $newType(0, $kindStruct, "time.runtimeTimer", true, "time", false, function(i_, when_, period_, f_, arg_, seq_, timeout_, active_) { + this.$val = this; + if (arguments.length === 0) { + this.i = 0; + this.when = new $Int64(0, 0); + this.period = new $Int64(0, 0); + this.f = $throwNilPointerError; + this.arg = $ifaceNil; + this.seq = 0; + this.timeout = null; + this.active = false; + return; + } + this.i = i_; + this.when = when_; + this.period = period_; + this.f = f_; + this.arg = arg_; + this.seq = seq_; + this.timeout = timeout_; + this.active = active_; + }); + ParseError = $newType(0, $kindStruct, "time.ParseError", true, "time", true, function(Layout_, Value_, LayoutElem_, ValueElem_, Message_) { + this.$val = this; + if (arguments.length === 0) { + this.Layout = ""; + this.Value = ""; + this.LayoutElem = ""; + this.ValueElem = ""; + this.Message = ""; + return; + } + this.Layout = Layout_; + this.Value = Value_; + this.LayoutElem = LayoutElem_; + this.ValueElem = ValueElem_; + this.Message = Message_; + }); + $pkg.Location = Location; + $pkg.zone = zone; + $pkg.zoneTrans = zoneTrans; + $pkg.ruleKind = ruleKind; + $pkg.rule = rule; + $pkg.Time = Time; + $pkg.Month = Month; + $pkg.Weekday = Weekday; + $pkg.Duration = Duration; + $pkg.Timer = Timer; + $pkg.runtimeTimer = runtimeTimer; + $pkg.ParseError = ParseError; + $pkg.$finishSetup = function() { + sliceType = $sliceType(zone); + sliceType$1 = $sliceType(zoneTrans); + ptrType = $ptrType(zone); + ptrType$1 = $ptrType(Location); + sliceType$2 = $sliceType(ptrType$1); + sliceType$3 = $sliceType($String); + sliceType$4 = $sliceType($Uint8); + arrayType$2 = $arrayType($Uint8, 32); + chanType = $chanType(Time, false, false); + funcType = $funcType([], [], false); + structType = $structType("", []); + arrayType$3 = $arrayType($Uint8, 64); + ptrType$4 = $ptrType(Time); + chanType$1 = $chanType(Time, false, true); + ptrType$6 = $ptrType(Timer); + funcType$1 = $funcType([$emptyInterface, $Uintptr], [], false); + ptrType$7 = $ptrType(js.Object); + ptrType$8 = $ptrType(ParseError); + $ptrType(Location).prototype.get = function get() { + var {l, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + l = this; + if (l === ptrType$1.nil) { + $s = -1; return utcLoc; + } + /* */ if (l === localLoc) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (l === localLoc) { */ case 1: + $r = localOnce.Do(initLocal); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return l; + /* */ } return; } var $f = {$blk: get, $c: true, $r, l, $s};return $f; + }; + $ptrType(Location).prototype.String = function String() { + var {$24r, _r$1, l, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + l = this; + _r$1 = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1.name; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String, $c: true, $r, $24r, _r$1, l, $s};return $f; + }; + FixedZone = function FixedZone$1(name, offset) { + var {_q, _q$1, hour, name, offset, x$1, $s, $r, $c} = $restore(this, {name, offset}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + hour = (_q = (_q$1 = offset / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + /* */ if (name === "" && -12 <= hour && hour <= 14 && (($imul(($imul(hour, 60)), 60)) === offset)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (name === "" && -12 <= hour && hour <= 14 && (($imul(($imul(hour, 60)), 60)) === offset)) { */ case 1: + $r = unnamedFixedZonesOnce.Do((function FixedZone·func1() { + var hr, x$1; + unnamedFixedZones = $makeSlice(sliceType$2, 27); + hr = -12; + while (true) { + if (!(hr <= 14)) { break; } + (x$1 = hr + 12 >> 0, ((x$1 < 0 || x$1 >= unnamedFixedZones.$length) ? ($throwRuntimeError("index out of range"), undefined) : unnamedFixedZones.$array[unnamedFixedZones.$offset + x$1] = fixedZone("", $imul(($imul(hr, 60)), 60)))); + hr = hr + (1) >> 0; + } + })); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return (x$1 = hour + 12 >> 0, ((x$1 < 0 || x$1 >= unnamedFixedZones.$length) ? ($throwRuntimeError("index out of range"), undefined) : unnamedFixedZones.$array[unnamedFixedZones.$offset + x$1])); + /* } */ case 2: + $s = -1; return fixedZone(name, offset); + /* */ } return; } var $f = {$blk: FixedZone$1, $c: true, $r, _q, _q$1, hour, name, offset, x$1, $s};return $f; + }; + $pkg.FixedZone = FixedZone; + fixedZone = function fixedZone$1(name, offset) { + var l, name, offset, x$1; + l = new Location.ptr(name, new sliceType([$clone(new zone.ptr(name, offset, false), zone)]), new sliceType$1([$clone(new zoneTrans.ptr(new $Int64(-2147483648, 0), 0, false, false), zoneTrans)]), "", new $Int64(-2147483648, 0), new $Int64(2147483647, 4294967295), ptrType.nil); + l.cacheZone = (x$1 = l.zone, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); + return l; + }; + $ptrType(Location).prototype.lookup = function lookup$1(sec) { + var {_q, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, eend, eisDST, ename, end, eoffset, estart, hi, isDST, l, lim, lo, m, name, offset, ok, sec, start, tx, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, zone$1, zone$2, zone$3, $s, $r, $c} = $restore(this, {sec}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + name = ""; + offset = 0; + start = new $Int64(0, 0); + end = new $Int64(0, 0); + isDST = false; + l = this; + _r$1 = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + l = _r$1; + if (l.zone.$length === 0) { + name = "UTC"; + offset = 0; + start = new $Int64(-2147483648, 0); + end = new $Int64(2147483647, 4294967295); + isDST = false; + $s = -1; return [name, offset, start, end, isDST]; + } + zone$1 = l.cacheZone; + if (!(zone$1 === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { + name = zone$1.name; + offset = zone$1.offset; + start = l.cacheStart; + end = l.cacheEnd; + isDST = zone$1.isDST; + $s = -1; return [name, offset, start, end, isDST]; + } + if ((l.tx.$length === 0) || (x$3 = (x$4 = l.tx, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])).when, (sec.$high < x$3.$high || (sec.$high === x$3.$high && sec.$low < x$3.$low)))) { + zone$2 = (x$5 = l.zone, x$6 = l.lookupFirstZone(), ((x$6 < 0 || x$6 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$6])); + name = zone$2.name; + offset = zone$2.offset; + start = new $Int64(-2147483648, 0); + if (l.tx.$length > 0) { + end = (x$7 = l.tx, (0 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 0])).when; + } else { + end = new $Int64(2147483647, 4294967295); + } + isDST = zone$2.isDST; + $s = -1; return [name, offset, start, end, isDST]; + } + tx = l.tx; + end = new $Int64(2147483647, 4294967295); + lo = 0; + hi = tx.$length; + while (true) { + if (!((hi - lo >> 0) > 1)) { break; } + m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + lim = ((m < 0 || m >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + m]).when; + if ((sec.$high < lim.$high || (sec.$high === lim.$high && sec.$low < lim.$low))) { + end = lim; + hi = m; + } else { + lo = m; + } + } + zone$3 = (x$8 = l.zone, x$9 = ((lo < 0 || lo >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + lo]).index, ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9])); + name = zone$3.name; + offset = zone$3.offset; + start = ((lo < 0 || lo >= tx.$length) ? ($throwRuntimeError("index out of range"), undefined) : tx.$array[tx.$offset + lo]).when; + isDST = zone$3.isDST; + if ((lo === (tx.$length - 1 >> 0)) && !(l.extend === "")) { + _tuple = tzset(l.extend, start, sec); + ename = _tuple[0]; + eoffset = _tuple[1]; + estart = _tuple[2]; + eend = _tuple[3]; + eisDST = _tuple[4]; + ok = _tuple[5]; + if (ok) { + _tmp = ename; + _tmp$1 = eoffset; + _tmp$2 = estart; + _tmp$3 = eend; + _tmp$4 = eisDST; + name = _tmp; + offset = _tmp$1; + start = _tmp$2; + end = _tmp$3; + isDST = _tmp$4; + $s = -1; return [name, offset, start, end, isDST]; + } + } + $s = -1; return [name, offset, start, end, isDST]; + /* */ } return; } var $f = {$blk: lookup$1, $c: true, $r, _q, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, eend, eisDST, ename, end, eoffset, estart, hi, isDST, l, lim, lo, m, name, offset, ok, sec, start, tx, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, zone$1, zone$2, zone$3, $s};return $f; + }; + $ptrType(Location).prototype.lookupFirstZone = function lookupFirstZone() { + var _i, _ref, l, x$1, x$2, x$3, x$4, x$5, x$6, zi, zi$1; + l = this; + if (!l.firstZoneUsed()) { + return 0; + } + if (l.tx.$length > 0 && (x$1 = l.zone, x$2 = (x$3 = l.tx, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).index, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])).isDST) { + zi = (((x$4 = l.tx, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])).index >> 0)) - 1 >> 0; + while (true) { + if (!(zi >= 0)) { break; } + if (!(x$5 = l.zone, ((zi < 0 || zi >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + zi])).isDST) { + return zi; + } + zi = zi - (1) >> 0; + } + } + _ref = l.zone; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + zi$1 = _i; + if (!(x$6 = l.zone, ((zi$1 < 0 || zi$1 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + zi$1])).isDST) { + return zi$1; + } + _i++; + } + return 0; + }; + $ptrType(Location).prototype.firstZoneUsed = function firstZoneUsed() { + var _i, _ref, l, tx; + l = this; + _ref = l.tx; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + tx = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), zoneTrans); + if (tx.index === 0) { + return true; + } + _i++; + } + return false; + }; + tzset = function tzset$1(s, lastTxSec, sec) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$51, _tmp$52, _tmp$53, _tmp$54, _tmp$55, _tmp$56, _tmp$57, _tmp$58, _tmp$59, _tmp$6, _tmp$60, _tmp$61, _tmp$62, _tmp$63, _tmp$64, _tmp$65, _tmp$66, _tmp$67, _tmp$68, _tmp$69, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, abs, d, dstIsDST, dstName, dstOffset, end, endRule, endSec, isDST, lastTxSec, name, offset, ok, s, sec, start, startRule, startSec, stdIsDST, stdName, stdOffset, x$1, x$2, x$3, x$4, x$5, x$6, yday, year, ysec; + name = ""; + offset = 0; + start = new $Int64(0, 0); + end = new $Int64(0, 0); + isDST = false; + ok = false; + _tmp = ""; + _tmp$1 = ""; + stdName = _tmp; + dstName = _tmp$1; + _tmp$2 = 0; + _tmp$3 = 0; + stdOffset = _tmp$2; + dstOffset = _tmp$3; + _tuple = tzsetName(s); + stdName = _tuple[0]; + s = _tuple[1]; + ok = _tuple[2]; + if (ok) { + _tuple$1 = tzsetOffset(s); + stdOffset = _tuple$1[0]; + s = _tuple$1[1]; + ok = _tuple$1[2]; + } + if (!ok) { + _tmp$4 = ""; + _tmp$5 = 0; + _tmp$6 = new $Int64(0, 0); + _tmp$7 = new $Int64(0, 0); + _tmp$8 = false; + _tmp$9 = false; + name = _tmp$4; + offset = _tmp$5; + start = _tmp$6; + end = _tmp$7; + isDST = _tmp$8; + ok = _tmp$9; + return [name, offset, start, end, isDST, ok]; + } + stdOffset = -stdOffset; + if ((s.length === 0) || (s.charCodeAt(0) === 44)) { + _tmp$10 = stdName; + _tmp$11 = stdOffset; + _tmp$12 = lastTxSec; + _tmp$13 = new $Int64(2147483647, 4294967295); + _tmp$14 = false; + _tmp$15 = true; + name = _tmp$10; + offset = _tmp$11; + start = _tmp$12; + end = _tmp$13; + isDST = _tmp$14; + ok = _tmp$15; + return [name, offset, start, end, isDST, ok]; + } + _tuple$2 = tzsetName(s); + dstName = _tuple$2[0]; + s = _tuple$2[1]; + ok = _tuple$2[2]; + if (ok) { + if ((s.length === 0) || (s.charCodeAt(0) === 44)) { + dstOffset = stdOffset + 3600 >> 0; + } else { + _tuple$3 = tzsetOffset(s); + dstOffset = _tuple$3[0]; + s = _tuple$3[1]; + ok = _tuple$3[2]; + dstOffset = -dstOffset; + } + } + if (!ok) { + _tmp$16 = ""; + _tmp$17 = 0; + _tmp$18 = new $Int64(0, 0); + _tmp$19 = new $Int64(0, 0); + _tmp$20 = false; + _tmp$21 = false; + name = _tmp$16; + offset = _tmp$17; + start = _tmp$18; + end = _tmp$19; + isDST = _tmp$20; + ok = _tmp$21; + return [name, offset, start, end, isDST, ok]; + } + if (s.length === 0) { + s = ",M3.2.0,M11.1.0"; + } + if (!((s.charCodeAt(0) === 44)) && !((s.charCodeAt(0) === 59))) { + _tmp$22 = ""; + _tmp$23 = 0; + _tmp$24 = new $Int64(0, 0); + _tmp$25 = new $Int64(0, 0); + _tmp$26 = false; + _tmp$27 = false; + name = _tmp$22; + offset = _tmp$23; + start = _tmp$24; + end = _tmp$25; + isDST = _tmp$26; + ok = _tmp$27; + return [name, offset, start, end, isDST, ok]; + } + s = $substring(s, 1); + _tmp$28 = new rule.ptr(0, 0, 0, 0, 0); + _tmp$29 = new rule.ptr(0, 0, 0, 0, 0); + startRule = $clone(_tmp$28, rule); + endRule = $clone(_tmp$29, rule); + _tuple$4 = tzsetRule(s); + rule.copy(startRule, _tuple$4[0]); + s = _tuple$4[1]; + ok = _tuple$4[2]; + if (!ok || (s.length === 0) || !((s.charCodeAt(0) === 44))) { + _tmp$30 = ""; + _tmp$31 = 0; + _tmp$32 = new $Int64(0, 0); + _tmp$33 = new $Int64(0, 0); + _tmp$34 = false; + _tmp$35 = false; + name = _tmp$30; + offset = _tmp$31; + start = _tmp$32; + end = _tmp$33; + isDST = _tmp$34; + ok = _tmp$35; + return [name, offset, start, end, isDST, ok]; + } + s = $substring(s, 1); + _tuple$5 = tzsetRule(s); + rule.copy(endRule, _tuple$5[0]); + s = _tuple$5[1]; + ok = _tuple$5[2]; + if (!ok || s.length > 0) { + _tmp$36 = ""; + _tmp$37 = 0; + _tmp$38 = new $Int64(0, 0); + _tmp$39 = new $Int64(0, 0); + _tmp$40 = false; + _tmp$41 = false; + name = _tmp$36; + offset = _tmp$37; + start = _tmp$38; + end = _tmp$39; + isDST = _tmp$40; + ok = _tmp$41; + return [name, offset, start, end, isDST, ok]; + } + _tuple$6 = absDate(((x$1 = (x$2 = new $Int64(sec.$high + 14, sec.$low + 2006054656), new $Int64(x$2.$high + 2147483631, x$2.$low + 2739393024)), new $Uint64(x$1.$high, x$1.$low))), false); + year = _tuple$6[0]; + yday = _tuple$6[3]; + ysec = (x$3 = (new $Int64(0, ($imul(yday, 86400)))), x$4 = $div64(sec, new $Int64(0, 86400), true), new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)); + d = daysSinceEpoch(year); + abs = ((x$5 = $mul64(d, new $Uint64(0, 86400)), new $Int64(x$5.$high, x$5.$low))); + abs = (x$6 = new $Int64(-2147483647, 3844486912), new $Int64(abs.$high + x$6.$high, abs.$low + x$6.$low)); + startSec = (new $Int64(0, tzruleTime(year, $clone(startRule, rule), stdOffset))); + endSec = (new $Int64(0, tzruleTime(year, $clone(endRule, rule), dstOffset))); + _tmp$42 = true; + _tmp$43 = false; + dstIsDST = _tmp$42; + stdIsDST = _tmp$43; + if ((endSec.$high < startSec.$high || (endSec.$high === startSec.$high && endSec.$low < startSec.$low))) { + _tmp$44 = endSec; + _tmp$45 = startSec; + startSec = _tmp$44; + endSec = _tmp$45; + _tmp$46 = dstName; + _tmp$47 = stdName; + stdName = _tmp$46; + dstName = _tmp$47; + _tmp$48 = dstOffset; + _tmp$49 = stdOffset; + stdOffset = _tmp$48; + dstOffset = _tmp$49; + _tmp$50 = dstIsDST; + _tmp$51 = stdIsDST; + stdIsDST = _tmp$50; + dstIsDST = _tmp$51; + } + if ((ysec.$high < startSec.$high || (ysec.$high === startSec.$high && ysec.$low < startSec.$low))) { + _tmp$52 = stdName; + _tmp$53 = stdOffset; + _tmp$54 = abs; + _tmp$55 = new $Int64(startSec.$high + abs.$high, startSec.$low + abs.$low); + _tmp$56 = stdIsDST; + _tmp$57 = true; + name = _tmp$52; + offset = _tmp$53; + start = _tmp$54; + end = _tmp$55; + isDST = _tmp$56; + ok = _tmp$57; + return [name, offset, start, end, isDST, ok]; + } else if ((ysec.$high > endSec.$high || (ysec.$high === endSec.$high && ysec.$low >= endSec.$low))) { + _tmp$58 = stdName; + _tmp$59 = stdOffset; + _tmp$60 = new $Int64(endSec.$high + abs.$high, endSec.$low + abs.$low); + _tmp$61 = new $Int64(abs.$high + 0, abs.$low + 31536000); + _tmp$62 = stdIsDST; + _tmp$63 = true; + name = _tmp$58; + offset = _tmp$59; + start = _tmp$60; + end = _tmp$61; + isDST = _tmp$62; + ok = _tmp$63; + return [name, offset, start, end, isDST, ok]; + } else { + _tmp$64 = dstName; + _tmp$65 = dstOffset; + _tmp$66 = new $Int64(startSec.$high + abs.$high, startSec.$low + abs.$low); + _tmp$67 = new $Int64(endSec.$high + abs.$high, endSec.$low + abs.$low); + _tmp$68 = dstIsDST; + _tmp$69 = true; + name = _tmp$64; + offset = _tmp$65; + start = _tmp$66; + end = _tmp$67; + isDST = _tmp$68; + ok = _tmp$69; + return [name, offset, start, end, isDST, ok]; + } + }; + tzsetName = function tzsetName$1(s) { + var _1, _i, _i$1, _ref, _ref$1, _rune, _rune$1, i, i$1, r, r$1, s; + if (s.length === 0) { + return ["", "", false]; + } + if (!((s.charCodeAt(0) === 60))) { + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + r = _rune[0]; + _1 = r; + if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55)) || (_1 === (56)) || (_1 === (57)) || (_1 === (44)) || (_1 === (45)) || (_1 === (43))) { + if (i < 3) { + return ["", "", false]; + } + return [$substring(s, 0, i), $substring(s, i), true]; + } + _i += _rune[1]; + } + if (s.length < 3) { + return ["", "", false]; + } + return [s, "", true]; + } else { + _ref$1 = s; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.length)) { break; } + _rune$1 = $decodeRune(_ref$1, _i$1); + i$1 = _i$1; + r$1 = _rune$1[0]; + if (r$1 === 62) { + return [$substring(s, 1, i$1), $substring(s, (i$1 + 1 >> 0)), true]; + } + _i$1 += _rune$1[1]; + } + return ["", "", false]; + } + }; + tzsetOffset = function tzsetOffset$1(s) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, hours, mins, neg, off, offset, ok, rest$1, s, secs; + offset = 0; + rest$1 = ""; + ok = false; + if (s.length === 0) { + _tmp = 0; + _tmp$1 = ""; + _tmp$2 = false; + offset = _tmp; + rest$1 = _tmp$1; + ok = _tmp$2; + return [offset, rest$1, ok]; + } + neg = false; + if (s.charCodeAt(0) === 43) { + s = $substring(s, 1); + } else if (s.charCodeAt(0) === 45) { + s = $substring(s, 1); + neg = true; + } + hours = 0; + _tuple = tzsetNum(s, 0, 168); + hours = _tuple[0]; + s = _tuple[1]; + ok = _tuple[2]; + if (!ok) { + _tmp$3 = 0; + _tmp$4 = ""; + _tmp$5 = false; + offset = _tmp$3; + rest$1 = _tmp$4; + ok = _tmp$5; + return [offset, rest$1, ok]; + } + off = $imul(hours, 3600); + if ((s.length === 0) || !((s.charCodeAt(0) === 58))) { + if (neg) { + off = -off; + } + _tmp$6 = off; + _tmp$7 = s; + _tmp$8 = true; + offset = _tmp$6; + rest$1 = _tmp$7; + ok = _tmp$8; + return [offset, rest$1, ok]; + } + mins = 0; + _tuple$1 = tzsetNum($substring(s, 1), 0, 59); + mins = _tuple$1[0]; + s = _tuple$1[1]; + ok = _tuple$1[2]; + if (!ok) { + _tmp$9 = 0; + _tmp$10 = ""; + _tmp$11 = false; + offset = _tmp$9; + rest$1 = _tmp$10; + ok = _tmp$11; + return [offset, rest$1, ok]; + } + off = off + (($imul(mins, 60))) >> 0; + if ((s.length === 0) || !((s.charCodeAt(0) === 58))) { + if (neg) { + off = -off; + } + _tmp$12 = off; + _tmp$13 = s; + _tmp$14 = true; + offset = _tmp$12; + rest$1 = _tmp$13; + ok = _tmp$14; + return [offset, rest$1, ok]; + } + secs = 0; + _tuple$2 = tzsetNum($substring(s, 1), 0, 59); + secs = _tuple$2[0]; + s = _tuple$2[1]; + ok = _tuple$2[2]; + if (!ok) { + _tmp$15 = 0; + _tmp$16 = ""; + _tmp$17 = false; + offset = _tmp$15; + rest$1 = _tmp$16; + ok = _tmp$17; + return [offset, rest$1, ok]; + } + off = off + (secs) >> 0; + if (neg) { + off = -off; + } + _tmp$18 = off; + _tmp$19 = s; + _tmp$20 = true; + offset = _tmp$18; + rest$1 = _tmp$19; + ok = _tmp$20; + return [offset, rest$1, ok]; + }; + tzsetRule = function tzsetRule$1(s) { + var _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, day, day$1, jday, mon, offset, ok, r, s, week; + r = new rule.ptr(0, 0, 0, 0, 0); + if (s.length === 0) { + return [new rule.ptr(0, 0, 0, 0, 0), "", false]; + } + ok = false; + if (s.charCodeAt(0) === 74) { + jday = 0; + _tuple = tzsetNum($substring(s, 1), 1, 365); + jday = _tuple[0]; + s = _tuple[1]; + ok = _tuple[2]; + if (!ok) { + return [new rule.ptr(0, 0, 0, 0, 0), "", false]; + } + r.kind = 0; + r.day = jday; + } else if (s.charCodeAt(0) === 77) { + mon = 0; + _tuple$1 = tzsetNum($substring(s, 1), 1, 12); + mon = _tuple$1[0]; + s = _tuple$1[1]; + ok = _tuple$1[2]; + if (!ok || (s.length === 0) || !((s.charCodeAt(0) === 46))) { + return [new rule.ptr(0, 0, 0, 0, 0), "", false]; + } + week = 0; + _tuple$2 = tzsetNum($substring(s, 1), 1, 5); + week = _tuple$2[0]; + s = _tuple$2[1]; + ok = _tuple$2[2]; + if (!ok || (s.length === 0) || !((s.charCodeAt(0) === 46))) { + return [new rule.ptr(0, 0, 0, 0, 0), "", false]; + } + day = 0; + _tuple$3 = tzsetNum($substring(s, 1), 0, 6); + day = _tuple$3[0]; + s = _tuple$3[1]; + ok = _tuple$3[2]; + if (!ok) { + return [new rule.ptr(0, 0, 0, 0, 0), "", false]; + } + r.kind = 2; + r.day = day; + r.week = week; + r.mon = mon; + } else { + day$1 = 0; + _tuple$4 = tzsetNum(s, 0, 365); + day$1 = _tuple$4[0]; + s = _tuple$4[1]; + ok = _tuple$4[2]; + if (!ok) { + return [new rule.ptr(0, 0, 0, 0, 0), "", false]; + } + r.kind = 1; + r.day = day$1; + } + if ((s.length === 0) || !((s.charCodeAt(0) === 47))) { + r.time = 7200; + return [r, s, true]; + } + _tuple$5 = tzsetOffset($substring(s, 1)); + offset = _tuple$5[0]; + s = _tuple$5[1]; + ok = _tuple$5[2]; + if (!ok) { + return [new rule.ptr(0, 0, 0, 0, 0), "", false]; + } + r.time = offset; + return [r, s, true]; + }; + tzsetNum = function tzsetNum$1(s, min, max) { + var _i, _ref, _rune, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, i, max, min, num, ok, r, rest$1, s; + num = 0; + rest$1 = ""; + ok = false; + if (s.length === 0) { + _tmp = 0; + _tmp$1 = ""; + _tmp$2 = false; + num = _tmp; + rest$1 = _tmp$1; + ok = _tmp$2; + return [num, rest$1, ok]; + } + num = 0; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + r = _rune[0]; + if (r < 48 || r > 57) { + if ((i === 0) || num < min) { + _tmp$3 = 0; + _tmp$4 = ""; + _tmp$5 = false; + num = _tmp$3; + rest$1 = _tmp$4; + ok = _tmp$5; + return [num, rest$1, ok]; + } + _tmp$6 = num; + _tmp$7 = $substring(s, i); + _tmp$8 = true; + num = _tmp$6; + rest$1 = _tmp$7; + ok = _tmp$8; + return [num, rest$1, ok]; + } + num = $imul(num, (10)); + num = num + ((((r >> 0)) - 48 >> 0)) >> 0; + if (num > max) { + _tmp$9 = 0; + _tmp$10 = ""; + _tmp$11 = false; + num = _tmp$9; + rest$1 = _tmp$10; + ok = _tmp$11; + return [num, rest$1, ok]; + } + _i += _rune[1]; + } + if (num < min) { + _tmp$12 = 0; + _tmp$13 = ""; + _tmp$14 = false; + num = _tmp$12; + rest$1 = _tmp$13; + ok = _tmp$14; + return [num, rest$1, ok]; + } + _tmp$15 = num; + _tmp$16 = ""; + _tmp$17 = true; + num = _tmp$15; + rest$1 = _tmp$16; + ok = _tmp$17; + return [num, rest$1, ok]; + }; + tzruleTime = function tzruleTime$1(year, r, off) { + var _1, _q, _q$1, _q$2, _q$3, _r$1, _r$2, _r$3, d, dow, i, m1, off, r, s, x$1, year, yy0, yy1, yy2; + s = 0; + _1 = r.kind; + if (_1 === (0)) { + s = $imul(((r.day - 1 >> 0)), 86400); + if (isLeap(year) && r.day >= 60) { + s = s + (86400) >> 0; + } + } else if (_1 === (1)) { + s = $imul(r.day, 86400); + } else if (_1 === (2)) { + m1 = (_r$1 = ((r.mon + 9 >> 0)) % 12, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) + 1 >> 0; + yy0 = year; + if (r.mon <= 2) { + yy0 = yy0 - (1) >> 0; + } + yy1 = (_q = yy0 / 100, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + yy2 = (_r$2 = yy0 % 100, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")); + dow = (_r$3 = (((((((_q$1 = ((($imul(26, m1)) - 2 >> 0)) / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0) + yy2 >> 0) + (_q$2 = yy2 / 4, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) + (_q$3 = yy1 / 4, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) - ($imul(2, yy1)) >> 0)) % 7, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")); + if (dow < 0) { + dow = dow + (7) >> 0; + } + d = r.day - dow >> 0; + if (d < 0) { + d = d + (7) >> 0; + } + i = 1; + while (true) { + if (!(i < r.week)) { break; } + if ((d + 7 >> 0) >= daysIn(((r.mon >> 0)), year)) { + break; + } + d = d + (7) >> 0; + i = i + (1) >> 0; + } + d = d + ((((x$1 = r.mon - 1 >> 0, ((x$1 < 0 || x$1 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$1])) >> 0))) >> 0; + if (isLeap(year) && r.mon > 2) { + d = d + (1) >> 0; + } + s = $imul(d, 86400); + } + return (s + r.time >> 0) - off >> 0; + }; + $ptrType(Location).prototype.lookupName = function lookupName(name, unix) { + var {_i, _i$1, _r$1, _r$2, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, i, i$1, l, nam, name, offset, offset$1, ok, unix, x$1, x$2, x$3, zone$1, zone$2, $s, $r, $c} = $restore(this, {name, unix}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + offset = 0; + ok = false; + l = this; + _r$1 = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + l = _r$1; + _ref = l.zone; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + i = _i; + zone$1 = (x$1 = l.zone, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])); + /* */ if (zone$1.name === name) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (zone$1.name === name) { */ case 4: + _r$2 = l.lookup((x$2 = (new $Int64(0, zone$1.offset)), new $Int64(unix.$high - x$2.$high, unix.$low - x$2.$low))); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + nam = _tuple[0]; + offset$1 = _tuple[1]; + if (nam === zone$1.name) { + _tmp = offset$1; + _tmp$1 = true; + offset = _tmp; + ok = _tmp$1; + $s = -1; return [offset, ok]; + } + /* } */ case 5: + _i++; + $s = 2; continue; + case 3: + _ref$1 = l.zone; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + zone$2 = (x$3 = l.zone, ((i$1 < 0 || i$1 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i$1])); + if (zone$2.name === name) { + _tmp$2 = zone$2.offset; + _tmp$3 = true; + offset = _tmp$2; + ok = _tmp$3; + $s = -1; return [offset, ok]; + } + _i$1++; + } + $s = -1; return [offset, ok]; + /* */ } return; } var $f = {$blk: lookupName, $c: true, $r, _i, _i$1, _r$1, _r$2, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, i, i$1, l, nam, name, offset, offset$1, ok, unix, x$1, x$2, x$3, zone$1, zone$2, $s};return $f; + }; + $ptrType(Time).prototype.nsec = function nsec() { + var t, x$1; + t = this; + return (((x$1 = t.wall, new $Uint64(x$1.$high & 0, (x$1.$low & 1073741823) >>> 0)).$low >> 0)); + }; + $ptrType(Time).prototype.sec = function sec() { + var t, x$1, x$2, x$3, x$4; + t = this; + if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + return (x$3 = ((x$4 = $shiftRightUint64($shiftLeft64(t.wall, 1), 31), new $Int64(x$4.$high, x$4.$low))), new $Int64(13 + x$3.$high, 3618733952 + x$3.$low)); + } + return t.ext; + }; + $ptrType(Time).prototype.unixSec = function unixSec() { + var t, x$1; + t = this; + return (x$1 = t.sec(), new $Int64(x$1.$high + -15, x$1.$low + 2288912640)); + }; + $ptrType(Time).prototype.addSec = function addSec(d) { + var d, dsec, sec$1, sum, t, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + t = this; + if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + sec$1 = ((x$3 = $shiftRightUint64($shiftLeft64(t.wall, 1), 31), new $Int64(x$3.$high, x$3.$low))); + dsec = new $Int64(sec$1.$high + d.$high, sec$1.$low + d.$low); + if ((0 < dsec.$high || (0 === dsec.$high && 0 <= dsec.$low)) && (dsec.$high < 1 || (dsec.$high === 1 && dsec.$low <= 4294967295))) { + t.wall = (x$4 = (x$5 = (x$6 = t.wall, new $Uint64(x$6.$high & 0, (x$6.$low & 1073741823) >>> 0)), x$7 = $shiftLeft64((new $Uint64(dsec.$high, dsec.$low)), 30), new $Uint64(x$5.$high | x$7.$high, (x$5.$low | x$7.$low) >>> 0)), new $Uint64(x$4.$high | 2147483648, (x$4.$low | 0) >>> 0)); + return; + } + t.stripMono(); + } + sum = (x$8 = t.ext, new $Int64(x$8.$high + d.$high, x$8.$low + d.$low)); + if (((x$9 = t.ext, (sum.$high > x$9.$high || (sum.$high === x$9.$high && sum.$low > x$9.$low)))) === ((d.$high > 0 || (d.$high === 0 && d.$low > 0)))) { + t.ext = sum; + } else if ((d.$high > 0 || (d.$high === 0 && d.$low > 0))) { + t.ext = new $Int64(2147483647, 4294967295); + } else { + t.ext = new $Int64(-2147483648, 1); + } + }; + $ptrType(Time).prototype.setLoc = function setLoc(loc) { + var loc, t; + t = this; + if (loc === utcLoc) { + loc = ptrType$1.nil; + } + t.stripMono(); + t.loc = loc; + }; + $ptrType(Time).prototype.stripMono = function stripMono() { + var t, x$1, x$2, x$3, x$4; + t = this; + if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + t.ext = t.sec(); + t.wall = (x$3 = t.wall, x$4 = new $Uint64(0, 1073741823), new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)); + } + }; + $ptrType(Time).prototype.After = function After$1(u) { + var t, ts, u, us, x$1, x$2, x$3, x$4, x$5, x$6; + t = this; + if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + return (x$5 = t.ext, x$6 = u.ext, (x$5.$high > x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low))); + } + ts = t.sec(); + us = u.sec(); + return (ts.$high > us.$high || (ts.$high === us.$high && ts.$low > us.$low)) || (ts.$high === us.$high && ts.$low === us.$low) && t.nsec() > u.nsec(); + }; + Time.prototype.After = function(...$args) { return this.$val.After(...$args); }; + $ptrType(Time).prototype.Before = function Before(u) { + var t, ts, u, us, x$1, x$2, x$3, x$4, x$5, x$6; + t = this; + if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + return (x$5 = t.ext, x$6 = u.ext, (x$5.$high < x$6.$high || (x$5.$high === x$6.$high && x$5.$low < x$6.$low))); + } + ts = t.sec(); + us = u.sec(); + return (ts.$high < us.$high || (ts.$high === us.$high && ts.$low < us.$low)) || (ts.$high === us.$high && ts.$low === us.$low) && t.nsec() < u.nsec(); + }; + Time.prototype.Before = function(...$args) { return this.$val.Before(...$args); }; + $ptrType(Time).prototype.Compare = function Compare(u) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, t, tc, u, uc, x$1, x$2, x$3, x$4; + t = this; + _tmp = new $Int64(0, 0); + _tmp$1 = new $Int64(0, 0); + tc = _tmp; + uc = _tmp$1; + if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + _tmp$2 = t.ext; + _tmp$3 = u.ext; + tc = _tmp$2; + uc = _tmp$3; + } else { + _tmp$4 = t.sec(); + _tmp$5 = u.sec(); + tc = _tmp$4; + uc = _tmp$5; + if ((tc.$high === uc.$high && tc.$low === uc.$low)) { + _tmp$6 = (new $Int64(0, t.nsec())); + _tmp$7 = (new $Int64(0, u.nsec())); + tc = _tmp$6; + uc = _tmp$7; + } + } + if ((tc.$high < uc.$high || (tc.$high === uc.$high && tc.$low < uc.$low))) { + return -1; + } else if ((tc.$high > uc.$high || (tc.$high === uc.$high && tc.$low > uc.$low))) { + return 1; + } + return 0; + }; + Time.prototype.Compare = function(...$args) { return this.$val.Compare(...$args); }; + $ptrType(Time).prototype.Equal = function Equal(u) { + var t, u, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; + t = this; + if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + return (x$5 = t.ext, x$6 = u.ext, (x$5.$high === x$6.$high && x$5.$low === x$6.$low)); + } + return (x$7 = t.sec(), x$8 = u.sec(), (x$7.$high === x$8.$high && x$7.$low === x$8.$low)) && (t.nsec() === u.nsec()); + }; + Time.prototype.Equal = function(...$args) { return this.$val.Equal(...$args); }; + Month.prototype.String = function String$1() { + var buf, m, n, x$1; + m = this.$val; + if (1 <= m && m <= 12) { + return (x$1 = m - 1 >> 0, ((x$1 < 0 || x$1 >= longMonthNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : longMonthNames.$array[longMonthNames.$offset + x$1])); + } + buf = $makeSlice(sliceType$4, 20); + n = fmtInt(buf, (new $Uint64(0, m))); + return "%!Month(" + ($bytesToString($subslice(buf, n))) + ")"; + }; + $ptrType(Month).prototype.String = function(...$args) { return new Month(this.$get()).String(...$args); }; + Weekday.prototype.String = function String$2() { + var buf, d, n; + d = this.$val; + if (0 <= d && d <= 6) { + return ((d < 0 || d >= longDayNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : longDayNames.$array[longDayNames.$offset + d]); + } + buf = $makeSlice(sliceType$4, 20); + n = fmtInt(buf, (new $Uint64(0, d))); + return "%!Weekday(" + ($bytesToString($subslice(buf, n))) + ")"; + }; + $ptrType(Weekday).prototype.String = function(...$args) { return new Weekday(this.$get()).String(...$args); }; + $ptrType(Time).prototype.IsZero = function IsZero() { + var t, x$1; + t = this; + return (x$1 = t.sec(), (x$1.$high === 0 && x$1.$low === 0)) && (t.nsec() === 0); + }; + Time.prototype.IsZero = function(...$args) { return this.$val.IsZero(...$args); }; + $ptrType(Time).prototype.abs = function abs() { + var {_r$1, _r$2, _tuple, l, offset, sec$1, t, x$1, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + l = t.loc; + /* */ if (l === ptrType$1.nil || l === localLoc) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (l === ptrType$1.nil || l === localLoc) { */ case 1: + _r$1 = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + l = _r$1; + /* } */ case 2: + sec$1 = t.unixSec(); + /* */ if (!(l === utcLoc)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(l === utcLoc)) { */ case 4: + /* */ if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec$1.$high || (x$1.$high === sec$1.$high && x$1.$low <= sec$1.$low))) && (x$2 = l.cacheEnd, (sec$1.$high < x$2.$high || (sec$1.$high === x$2.$high && sec$1.$low < x$2.$low)))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec$1.$high || (x$1.$high === sec$1.$high && x$1.$low <= sec$1.$low))) && (x$2 = l.cacheEnd, (sec$1.$high < x$2.$high || (sec$1.$high === x$2.$high && sec$1.$low < x$2.$low)))) { */ case 6: + sec$1 = (x$3 = (new $Int64(0, l.cacheZone.offset)), new $Int64(sec$1.$high + x$3.$high, sec$1.$low + x$3.$low)); + $s = 8; continue; + /* } else { */ case 7: + _r$2 = l.lookup(sec$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + offset = _tuple[1]; + sec$1 = (x$4 = (new $Int64(0, offset)), new $Int64(sec$1.$high + x$4.$high, sec$1.$low + x$4.$low)); + /* } */ case 8: + /* } */ case 5: + $s = -1; return ((x$5 = new $Int64(sec$1.$high + 2147483646, sec$1.$low + 450480384), new $Uint64(x$5.$high, x$5.$low))); + /* */ } return; } var $f = {$blk: abs, $c: true, $r, _r$1, _r$2, _tuple, l, offset, sec$1, t, x$1, x$2, x$3, x$4, x$5, $s};return $f; + }; + Time.prototype.abs = function(...$args) { return this.$val.abs(...$args); }; + $ptrType(Time).prototype.locabs = function locabs() { + var {_r$1, _r$2, _tuple, abs$1, l, name, offset, sec$1, t, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + name = ""; + offset = 0; + abs$1 = new $Uint64(0, 0); + t = this; + l = t.loc; + /* */ if (l === ptrType$1.nil || l === localLoc) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (l === ptrType$1.nil || l === localLoc) { */ case 1: + _r$1 = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + l = _r$1; + /* } */ case 2: + sec$1 = t.unixSec(); + /* */ if (!(l === utcLoc)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(l === utcLoc)) { */ case 4: + /* */ if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec$1.$high || (x$1.$high === sec$1.$high && x$1.$low <= sec$1.$low))) && (x$2 = l.cacheEnd, (sec$1.$high < x$2.$high || (sec$1.$high === x$2.$high && sec$1.$low < x$2.$low)))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec$1.$high || (x$1.$high === sec$1.$high && x$1.$low <= sec$1.$low))) && (x$2 = l.cacheEnd, (sec$1.$high < x$2.$high || (sec$1.$high === x$2.$high && sec$1.$low < x$2.$low)))) { */ case 7: + name = l.cacheZone.name; + offset = l.cacheZone.offset; + $s = 9; continue; + /* } else { */ case 8: + _r$2 = l.lookup(sec$1); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + name = _tuple[0]; + offset = _tuple[1]; + /* } */ case 9: + sec$1 = (x$3 = (new $Int64(0, offset)), new $Int64(sec$1.$high + x$3.$high, sec$1.$low + x$3.$low)); + $s = 6; continue; + /* } else { */ case 5: + name = "UTC"; + /* } */ case 6: + abs$1 = ((x$4 = new $Int64(sec$1.$high + 2147483646, sec$1.$low + 450480384), new $Uint64(x$4.$high, x$4.$low))); + $s = -1; return [name, offset, abs$1]; + /* */ } return; } var $f = {$blk: locabs, $c: true, $r, _r$1, _r$2, _tuple, abs$1, l, name, offset, sec$1, t, x$1, x$2, x$3, x$4, $s};return $f; + }; + Time.prototype.locabs = function(...$args) { return this.$val.locabs(...$args); }; + $ptrType(Time).prototype.Date = function Date$1() { + var {_r$1, _tuple, day, month, t, year, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + year = 0; + month = 0; + day = 0; + t = this; + _r$1 = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + year = _tuple[0]; + month = _tuple[1]; + day = _tuple[2]; + $s = -1; return [year, month, day]; + /* */ } return; } var $f = {$blk: Date$1, $c: true, $r, _r$1, _tuple, day, month, t, year, $s};return $f; + }; + Time.prototype.Date = function(...$args) { return this.$val.Date(...$args); }; + $ptrType(Time).prototype.Year = function Year() { + var {_r$1, _tuple, t, year, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + year = _tuple[0]; + $s = -1; return year; + /* */ } return; } var $f = {$blk: Year, $c: true, $r, _r$1, _tuple, t, year, $s};return $f; + }; + Time.prototype.Year = function(...$args) { return this.$val.Year(...$args); }; + $ptrType(Time).prototype.Month = function Month$1() { + var {_r$1, _tuple, month, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + month = _tuple[1]; + $s = -1; return month; + /* */ } return; } var $f = {$blk: Month$1, $c: true, $r, _r$1, _tuple, month, t, $s};return $f; + }; + Time.prototype.Month = function(...$args) { return this.$val.Month(...$args); }; + $ptrType(Time).prototype.Day = function Day() { + var {_r$1, _tuple, day, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + day = _tuple[2]; + $s = -1; return day; + /* */ } return; } var $f = {$blk: Day, $c: true, $r, _r$1, _tuple, day, t, $s};return $f; + }; + Time.prototype.Day = function(...$args) { return this.$val.Day(...$args); }; + $ptrType(Time).prototype.Weekday = function Weekday$1() { + var {$24r, _r$1, _r$2, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = absWeekday(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Weekday$1, $c: true, $r, $24r, _r$1, _r$2, t, $s};return $f; + }; + Time.prototype.Weekday = function(...$args) { return this.$val.Weekday(...$args); }; + absWeekday = function absWeekday$1(abs$1) { + var _q, abs$1, sec$1; + sec$1 = $div64((new $Uint64(abs$1.$high + 0, abs$1.$low + 86400)), new $Uint64(0, 604800), true); + return (((_q = ((sec$1.$low >> 0)) / 86400, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0)); + }; + $ptrType(Time).prototype.ISOWeek = function ISOWeek() { + var {_q, _r$1, _tmp, _tmp$1, _tuple, abs$1, d, t, week, x$1, yday, year, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + year = 0; + week = 0; + t = this; + _r$1 = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + abs$1 = _r$1; + d = 4 - absWeekday(abs$1) >> 0; + if (d === 4) { + d = -3; + } + abs$1 = (x$1 = $mul64((new $Uint64(0, d)), new $Uint64(0, 86400)), new $Uint64(abs$1.$high + x$1.$high, abs$1.$low + x$1.$low)); + _tuple = absDate(abs$1, false); + year = _tuple[0]; + yday = _tuple[3]; + _tmp = year; + _tmp$1 = (_q = yday / 7, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0; + year = _tmp; + week = _tmp$1; + $s = -1; return [year, week]; + /* */ } return; } var $f = {$blk: ISOWeek, $c: true, $r, _q, _r$1, _tmp, _tmp$1, _tuple, abs$1, d, t, week, x$1, yday, year, $s};return $f; + }; + Time.prototype.ISOWeek = function(...$args) { return this.$val.ISOWeek(...$args); }; + $ptrType(Time).prototype.Clock = function Clock() { + var {$24r, _r$1, _r$2, _tuple, hour, min, sec$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + hour = 0; + min = 0; + sec$1 = 0; + t = this; + _r$1 = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = absClock(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + hour = _tuple[0]; + min = _tuple[1]; + sec$1 = _tuple[2]; + $24r = [hour, min, sec$1]; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Clock, $c: true, $r, $24r, _r$1, _r$2, _tuple, hour, min, sec$1, t, $s};return $f; + }; + Time.prototype.Clock = function(...$args) { return this.$val.Clock(...$args); }; + absClock = function absClock$1(abs$1) { + var _q, _q$1, abs$1, hour, min, sec$1; + hour = 0; + min = 0; + sec$1 = 0; + sec$1 = (($div64(abs$1, new $Uint64(0, 86400), true).$low >> 0)); + hour = (_q = sec$1 / 3600, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + sec$1 = sec$1 - (($imul(hour, 3600))) >> 0; + min = (_q$1 = sec$1 / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); + sec$1 = sec$1 - (($imul(min, 60))) >> 0; + return [hour, min, sec$1]; + }; + $ptrType(Time).prototype.Hour = function Hour() { + var {$24r, _q, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = (_q = (($div64(_r$1, new $Uint64(0, 86400), true).$low >> 0)) / 3600, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Hour, $c: true, $r, $24r, _q, _r$1, t, $s};return $f; + }; + Time.prototype.Hour = function(...$args) { return this.$val.Hour(...$args); }; + $ptrType(Time).prototype.Minute = function Minute() { + var {$24r, _q, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = (_q = (($div64(_r$1, new $Uint64(0, 3600), true).$low >> 0)) / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Minute, $c: true, $r, $24r, _q, _r$1, t, $s};return $f; + }; + Time.prototype.Minute = function(...$args) { return this.$val.Minute(...$args); }; + $ptrType(Time).prototype.Second = function Second() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = (($div64(_r$1, new $Uint64(0, 60), true).$low >> 0)); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Second, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + Time.prototype.Second = function(...$args) { return this.$val.Second(...$args); }; + $ptrType(Time).prototype.Nanosecond = function Nanosecond() { + var t; + t = this; + return ((t.nsec() >> 0)); + }; + Time.prototype.Nanosecond = function(...$args) { return this.$val.Nanosecond(...$args); }; + $ptrType(Time).prototype.YearDay = function YearDay() { + var {_r$1, _tuple, t, yday, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + yday = _tuple[3]; + $s = -1; return yday + 1 >> 0; + /* */ } return; } var $f = {$blk: YearDay, $c: true, $r, _r$1, _tuple, t, yday, $s};return $f; + }; + Time.prototype.YearDay = function(...$args) { return this.$val.YearDay(...$args); }; + Duration.prototype.String = function String$3() { + var _tuple, _tuple$1, buf, d, neg, prec, u, w; + d = this; + buf = arrayType$2.zero(); + w = 32; + u = (new $Uint64(d.$high, d.$low)); + neg = (d.$high < 0 || (d.$high === 0 && d.$low < 0)); + if (neg) { + u = new $Uint64(-u.$high, -u.$low); + } + if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000000))) { + prec = 0; + w = w - (1) >> 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 115); + w = w - (1) >> 0; + if ((u.$high === 0 && u.$low === 0)) { + return "0s"; + } else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000))) { + prec = 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 110); + } else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000))) { + prec = 3; + w = w - (1) >> 0; + $copyString($subslice(new sliceType$4(buf), w), "\xC2\xB5"); + } else { + prec = 6; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 109); + } + _tuple = fmtFrac($subslice(new sliceType$4(buf), 0, w), u, prec); + w = _tuple[0]; + u = _tuple[1]; + w = fmtInt($subslice(new sliceType$4(buf), 0, w), u); + } else { + w = w - (1) >> 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 115); + _tuple$1 = fmtFrac($subslice(new sliceType$4(buf), 0, w), u, 9); + w = _tuple$1[0]; + u = _tuple$1[1]; + w = fmtInt($subslice(new sliceType$4(buf), 0, w), $div64(u, new $Uint64(0, 60), true)); + u = $div64(u, (new $Uint64(0, 60)), false); + if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 109); + w = fmtInt($subslice(new sliceType$4(buf), 0, w), $div64(u, new $Uint64(0, 60), true)); + u = $div64(u, (new $Uint64(0, 60)), false); + if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 104); + w = fmtInt($subslice(new sliceType$4(buf), 0, w), u); + } + } + } + if (neg) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45); + } + return ($bytesToString($subslice(new sliceType$4(buf), w))); + }; + $ptrType(Duration).prototype.String = function(...$args) { return this.$get().String(...$args); }; + fmtFrac = function fmtFrac$1(buf, v, prec) { + var _tmp, _tmp$1, buf, digit, i, nv, nw, prec, print, v, w; + nw = 0; + nv = new $Uint64(0, 0); + w = buf.$length; + print = false; + i = 0; + while (true) { + if (!(i < prec)) { break; } + digit = $div64(v, new $Uint64(0, 10), true); + print = print || !((digit.$high === 0 && digit.$low === 0)); + if (print) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = (((digit.$low << 24 >>> 24)) + 48 << 24 >>> 24)); + } + v = $div64(v, (new $Uint64(0, 10)), false); + i = i + (1) >> 0; + } + if (print) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 46); + } + _tmp = w; + _tmp$1 = v; + nw = _tmp; + nv = _tmp$1; + return [nw, nv]; + }; + fmtInt = function fmtInt$1(buf, v) { + var buf, v, w; + w = buf.$length; + if ((v.$high === 0 && v.$low === 0)) { + w = w - (1) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = 48); + } else { + while (true) { + if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; } + w = w - (1) >> 0; + ((w < 0 || w >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + w] = ((($div64(v, new $Uint64(0, 10), true).$low << 24 >>> 24)) + 48 << 24 >>> 24)); + v = $div64(v, (new $Uint64(0, 10)), false); + } + } + return w; + }; + Duration.prototype.Nanoseconds = function Nanoseconds() { + var d; + d = this; + return (new $Int64(d.$high, d.$low)); + }; + $ptrType(Duration).prototype.Nanoseconds = function(...$args) { return this.$get().Nanoseconds(...$args); }; + Duration.prototype.Microseconds = function Microseconds() { + var d; + d = this; + return $div64((new $Int64(d.$high, d.$low)), new $Int64(0, 1000), false); + }; + $ptrType(Duration).prototype.Microseconds = function(...$args) { return this.$get().Microseconds(...$args); }; + Duration.prototype.Milliseconds = function Milliseconds() { + var d; + d = this; + return $div64((new $Int64(d.$high, d.$low)), new $Int64(0, 1000000), false); + }; + $ptrType(Duration).prototype.Milliseconds = function(...$args) { return this.$get().Milliseconds(...$args); }; + Duration.prototype.Seconds = function Seconds() { + var d, nsec$1, sec$1; + d = this; + sec$1 = $div64(d, new Duration(0, 1000000000), false); + nsec$1 = $div64(d, new Duration(0, 1000000000), true); + return ($flatten64(sec$1)) + ($flatten64(nsec$1)) / 1e+09; + }; + $ptrType(Duration).prototype.Seconds = function(...$args) { return this.$get().Seconds(...$args); }; + Duration.prototype.Minutes = function Minutes() { + var d, min, nsec$1; + d = this; + min = $div64(d, new Duration(13, 4165425152), false); + nsec$1 = $div64(d, new Duration(13, 4165425152), true); + return ($flatten64(min)) + ($flatten64(nsec$1)) / 6e+10; + }; + $ptrType(Duration).prototype.Minutes = function(...$args) { return this.$get().Minutes(...$args); }; + Duration.prototype.Hours = function Hours() { + var d, hour, nsec$1; + d = this; + hour = $div64(d, new Duration(838, 817405952), false); + nsec$1 = $div64(d, new Duration(838, 817405952), true); + return ($flatten64(hour)) + ($flatten64(nsec$1)) / 3.6e+12; + }; + $ptrType(Duration).prototype.Hours = function(...$args) { return this.$get().Hours(...$args); }; + Duration.prototype.Truncate = function Truncate(m) { + var d, m, x$1; + d = this; + if ((m.$high < 0 || (m.$high === 0 && m.$low <= 0))) { + return d; + } + return (x$1 = $div64(d, m, true), new Duration(d.$high - x$1.$high, d.$low - x$1.$low)); + }; + $ptrType(Duration).prototype.Truncate = function(...$args) { return this.$get().Truncate(...$args); }; + lessThanHalf = function lessThanHalf$1(x$1, y) { + var x$1, x$2, x$3, x$4, x$5, y; + return (x$2 = (x$3 = (new $Uint64(x$1.$high, x$1.$low)), x$4 = (new $Uint64(x$1.$high, x$1.$low)), new $Uint64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)), x$5 = (new $Uint64(y.$high, y.$low)), (x$2.$high < x$5.$high || (x$2.$high === x$5.$high && x$2.$low < x$5.$low))); + }; + Duration.prototype.Round = function Round(m) { + var d, d1, d1$1, m, r, x$1, x$2; + d = this; + if ((m.$high < 0 || (m.$high === 0 && m.$low <= 0))) { + return d; + } + r = $div64(d, m, true); + if ((d.$high < 0 || (d.$high === 0 && d.$low < 0))) { + r = new Duration(-r.$high, -r.$low); + if (lessThanHalf(r, m)) { + return new Duration(d.$high + r.$high, d.$low + r.$low); + } + d1 = (x$1 = new Duration(d.$high - m.$high, d.$low - m.$low), new Duration(x$1.$high + r.$high, x$1.$low + r.$low)); + if ((d1.$high < d.$high || (d1.$high === d.$high && d1.$low < d.$low))) { + return d1; + } + return new Duration(-2147483648, 0); + } + if (lessThanHalf(r, m)) { + return new Duration(d.$high - r.$high, d.$low - r.$low); + } + d1$1 = (x$2 = new Duration(d.$high + m.$high, d.$low + m.$low), new Duration(x$2.$high - r.$high, x$2.$low - r.$low)); + if ((d1$1.$high > d.$high || (d1$1.$high === d.$high && d1$1.$low > d.$low))) { + return d1$1; + } + return new Duration(2147483647, 4294967295); + }; + $ptrType(Duration).prototype.Round = function(...$args) { return this.$get().Round(...$args); }; + Duration.prototype.Abs = function Abs() { + var d; + d = this; + if ((d.$high > 0 || (d.$high === 0 && d.$low >= 0))) { + return d; + } else if ((d.$high === -2147483648 && d.$low === 0)) { + return new Duration(2147483647, 4294967295); + } else { + return new Duration(-d.$high, -d.$low); + } + }; + $ptrType(Duration).prototype.Abs = function(...$args) { return this.$get().Abs(...$args); }; + $ptrType(Time).prototype.Add = function Add(d) { + var d, dsec, nsec$1, t, te, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + t = this; + dsec = ((x$1 = $div64(d, new Duration(0, 1000000000), false), new $Int64(x$1.$high, x$1.$low))); + nsec$1 = t.nsec() + (((x$2 = $div64(d, new Duration(0, 1000000000), true), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)) >> 0; + if (nsec$1 >= 1000000000) { + dsec = (x$3 = new $Int64(0, 1), new $Int64(dsec.$high + x$3.$high, dsec.$low + x$3.$low)); + nsec$1 = nsec$1 - (1000000000) >> 0; + } else if (nsec$1 < 0) { + dsec = (x$4 = new $Int64(0, 1), new $Int64(dsec.$high - x$4.$high, dsec.$low - x$4.$low)); + nsec$1 = nsec$1 + (1000000000) >> 0; + } + t.wall = (x$5 = (x$6 = t.wall, new $Uint64(x$6.$high & ~0, (x$6.$low & ~1073741823) >>> 0)), x$7 = (new $Uint64(0, nsec$1)), new $Uint64(x$5.$high | x$7.$high, (x$5.$low | x$7.$low) >>> 0)); + t.addSec(dsec); + if (!((x$8 = (x$9 = t.wall, new $Uint64(x$9.$high & 2147483648, (x$9.$low & 0) >>> 0)), (x$8.$high === 0 && x$8.$low === 0)))) { + te = (x$10 = t.ext, x$11 = (new $Int64(d.$high, d.$low)), new $Int64(x$10.$high + x$11.$high, x$10.$low + x$11.$low)); + if ((d.$high < 0 || (d.$high === 0 && d.$low < 0)) && (x$12 = t.ext, (te.$high > x$12.$high || (te.$high === x$12.$high && te.$low > x$12.$low))) || (d.$high > 0 || (d.$high === 0 && d.$low > 0)) && (x$13 = t.ext, (te.$high < x$13.$high || (te.$high === x$13.$high && te.$low < x$13.$low)))) { + t.stripMono(); + } else { + t.ext = te; + } + } + return t; + }; + Time.prototype.Add = function(...$args) { return this.$val.Add(...$args); }; + $ptrType(Time).prototype.Sub = function Sub(u) { + var d, d$1, t, te, u, ue, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + t = this; + if (!((x$1 = (x$2 = (x$3 = t.wall, x$4 = u.wall, new $Uint64(x$3.$high & x$4.$high, (x$3.$low & x$4.$low) >>> 0)), new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { + te = t.ext; + ue = u.ext; + d = ((x$5 = new $Int64(te.$high - ue.$high, te.$low - ue.$low), new Duration(x$5.$high, x$5.$low))); + if ((d.$high < 0 || (d.$high === 0 && d.$low < 0)) && (te.$high > ue.$high || (te.$high === ue.$high && te.$low > ue.$low))) { + return new Duration(2147483647, 4294967295); + } + if ((d.$high > 0 || (d.$high === 0 && d.$low > 0)) && (te.$high < ue.$high || (te.$high === ue.$high && te.$low < ue.$low))) { + return new Duration(-2147483648, 0); + } + return d; + } + d$1 = (x$6 = $mul64(((x$7 = (x$8 = t.sec(), x$9 = u.sec(), new $Int64(x$8.$high - x$9.$high, x$8.$low - x$9.$low)), new Duration(x$7.$high, x$7.$low))), new Duration(0, 1000000000)), x$10 = (new Duration(0, (t.nsec() - u.nsec() >> 0))), new Duration(x$6.$high + x$10.$high, x$6.$low + x$10.$low)); + if ($clone($clone(u, Time).Add(d$1), Time).Equal($clone(t, Time))) { + return d$1; + } else if ($clone(t, Time).Before($clone(u, Time))) { + return new Duration(-2147483648, 0); + } else { + return new Duration(2147483647, 4294967295); + } + }; + Time.prototype.Sub = function(...$args) { return this.$val.Sub(...$args); }; + Since = function Since$1(t) { + var {_r$1, _r$2, now$1, t, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + now$1 = new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil); + /* */ if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { */ case 1: + _r$1 = runtimeNano(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + Time.copy(now$1, new Time.ptr(new $Uint64(2147483648, 0), (x$3 = _r$1, new $Int64(x$3.$high - startNano.$high, x$3.$low - startNano.$low)), ptrType$1.nil)); + $s = 3; continue; + /* } else { */ case 2: + _r$2 = Now(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + Time.copy(now$1, _r$2); + /* } */ case 3: + $s = -1; return $clone(now$1, Time).Sub($clone(t, Time)); + /* */ } return; } var $f = {$blk: Since$1, $c: true, $r, _r$1, _r$2, now$1, t, x$1, x$2, x$3, $s};return $f; + }; + $pkg.Since = Since; + Until = function Until$1(t) { + var {_r$1, _r$2, now$1, t, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + now$1 = new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil); + /* */ if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { */ case 1: + _r$1 = runtimeNano(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + Time.copy(now$1, new Time.ptr(new $Uint64(2147483648, 0), (x$3 = _r$1, new $Int64(x$3.$high - startNano.$high, x$3.$low - startNano.$low)), ptrType$1.nil)); + $s = 3; continue; + /* } else { */ case 2: + _r$2 = Now(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + Time.copy(now$1, _r$2); + /* } */ case 3: + $s = -1; return $clone(t, Time).Sub($clone(now$1, Time)); + /* */ } return; } var $f = {$blk: Until$1, $c: true, $r, _r$1, _r$2, now$1, t, x$1, x$2, x$3, $s};return $f; + }; + $pkg.Until = Until; + $ptrType(Time).prototype.AddDate = function AddDate(years, months, days) { + var {$24r, _r$1, _r$2, _r$3, _tuple, _tuple$1, day, days, hour, min, month, months, sec$1, t, year, years, $s, $r, $c} = $restore(this, {years, months, days}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + year = _tuple[0]; + month = _tuple[1]; + day = _tuple[2]; + _r$2 = $clone(t, Time).Clock(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + hour = _tuple$1[0]; + min = _tuple$1[1]; + sec$1 = _tuple$1[2]; + _r$3 = Date(year + years >> 0, month + ((months >> 0)) >> 0, day + days >> 0, hour, min, sec$1, ((t.nsec() >> 0)), $clone(t, Time).Location()); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: AddDate, $c: true, $r, $24r, _r$1, _r$2, _r$3, _tuple, _tuple$1, day, days, hour, min, month, months, sec$1, t, year, years, $s};return $f; + }; + Time.prototype.AddDate = function(...$args) { return this.$val.AddDate(...$args); }; + $ptrType(Time).prototype.date = function date(full) { + var {$24r, _r$1, _r$2, _tuple, day, full, month, t, yday, year, $s, $r, $c} = $restore(this, {full}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + year = 0; + month = 0; + day = 0; + yday = 0; + t = this; + _r$1 = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = absDate(_r$1, full); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + year = _tuple[0]; + month = _tuple[1]; + day = _tuple[2]; + yday = _tuple[3]; + $24r = [year, month, day, yday]; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: date, $c: true, $r, $24r, _r$1, _r$2, _tuple, day, full, month, t, yday, year, $s};return $f; + }; + Time.prototype.date = function(...$args) { return this.$val.date(...$args); }; + absDate = function absDate$1(abs$1, full) { + var _q, abs$1, begin, d, day, end, full, month, n, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, yday, year; + year = 0; + month = 0; + day = 0; + yday = 0; + d = $div64(abs$1, new $Uint64(0, 86400), false); + n = $div64(d, new $Uint64(0, 146097), false); + y = $mul64(new $Uint64(0, 400), n); + d = (x$1 = $mul64(new $Uint64(0, 146097), n), new $Uint64(d.$high - x$1.$high, d.$low - x$1.$low)); + n = $div64(d, new $Uint64(0, 36524), false); + n = (x$2 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$2.$high, n.$low - x$2.$low)); + y = (x$3 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high + x$3.$high, y.$low + x$3.$low)); + d = (x$4 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high - x$4.$high, d.$low - x$4.$low)); + n = $div64(d, new $Uint64(0, 1461), false); + y = (x$5 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high + x$5.$high, y.$low + x$5.$low)); + d = (x$6 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high - x$6.$high, d.$low - x$6.$low)); + n = $div64(d, new $Uint64(0, 365), false); + n = (x$7 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$7.$high, n.$low - x$7.$low)); + y = (x$8 = n, new $Uint64(y.$high + x$8.$high, y.$low + x$8.$low)); + d = (x$9 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high - x$9.$high, d.$low - x$9.$low)); + year = (((x$10 = (x$11 = (new $Int64(y.$high, y.$low)), new $Int64(x$11.$high + -69, x$11.$low + 4075721025)), x$10.$low + ((x$10.$high >> 31) * 4294967296)) >> 0)); + yday = ((d.$low >> 0)); + if (!full) { + return [year, month, day, yday]; + } + day = yday; + if (isLeap(year)) { + if (day > 59) { + day = day - (1) >> 0; + } else if ((day === 59)) { + month = 2; + day = 29; + return [year, month, day, yday]; + } + } + month = (((_q = day / 31, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0)); + end = (((x$12 = month + 1 >> 0, ((x$12 < 0 || x$12 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$12])) >> 0)); + begin = 0; + if (day >= end) { + month = month + (1) >> 0; + begin = end; + } else { + begin = ((((month < 0 || month >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[month]) >> 0)); + } + month = month + (1) >> 0; + day = (day - begin >> 0) + 1 >> 0; + return [year, month, day, yday]; + }; + daysIn = function daysIn$1(m, year) { + var m, x$1, year; + if ((m === 2) && isLeap(year)) { + return 29; + } + return (((((m < 0 || m >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[m]) - (x$1 = m - 1 >> 0, ((x$1 < 0 || x$1 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$1])) >> 0) >> 0)); + }; + daysSinceEpoch = function daysSinceEpoch$1(year) { + var d, n, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y, year; + y = ((x$1 = (x$2 = (new $Int64(0, year)), new $Int64(x$2.$high - -69, x$2.$low - 4075721025)), new $Uint64(x$1.$high, x$1.$low))); + n = $div64(y, new $Uint64(0, 400), false); + y = (x$3 = $mul64(new $Uint64(0, 400), n), new $Uint64(y.$high - x$3.$high, y.$low - x$3.$low)); + d = $mul64(new $Uint64(0, 146097), n); + n = $div64(y, new $Uint64(0, 100), false); + y = (x$4 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high - x$4.$high, y.$low - x$4.$low)); + d = (x$5 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high + x$5.$high, d.$low + x$5.$low)); + n = $div64(y, new $Uint64(0, 4), false); + y = (x$6 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high - x$6.$high, y.$low - x$6.$low)); + d = (x$7 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high + x$7.$high, d.$low + x$7.$low)); + n = y; + d = (x$8 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high + x$8.$high, d.$low + x$8.$low)); + return d; + }; + runtimeNano = function() { + $throwRuntimeError("native function not implemented: time.runtimeNano"); + }; + Now = function Now$1() { + var {_r$1, _tuple, mono$1, nsec$1, sec$1, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = now(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + sec$1 = _tuple[0]; + nsec$1 = _tuple[1]; + mono$1 = _tuple[2]; + mono$1 = (x$1 = startNano, new $Int64(mono$1.$high - x$1.$high, mono$1.$low - x$1.$low)); + sec$1 = (x$2 = new $Int64(0, 2682288000), new $Int64(sec$1.$high + x$2.$high, sec$1.$low + x$2.$low)); + if (!((x$3 = $shiftRightUint64((new $Uint64(sec$1.$high, sec$1.$low)), 33), (x$3.$high === 0 && x$3.$low === 0)))) { + $s = -1; return new Time.ptr((new $Uint64(0, nsec$1)), new $Int64(sec$1.$high + 13, sec$1.$low + 3618733952), $pkg.Local); + } + $s = -1; return new Time.ptr((x$4 = (x$5 = $shiftLeft64((new $Uint64(sec$1.$high, sec$1.$low)), 30), new $Uint64(2147483648 | x$5.$high, (0 | x$5.$low) >>> 0)), x$6 = (new $Uint64(0, nsec$1)), new $Uint64(x$4.$high | x$6.$high, (x$4.$low | x$6.$low) >>> 0)), mono$1, $pkg.Local); + /* */ } return; } var $f = {$blk: Now$1, $c: true, $r, _r$1, _tuple, mono$1, nsec$1, sec$1, x$1, x$2, x$3, x$4, x$5, x$6, $s};return $f; + }; + $pkg.Now = Now; + unixTime = function unixTime$1(sec$1, nsec$1) { + var nsec$1, sec$1; + return new Time.ptr((new $Uint64(0, nsec$1)), new $Int64(sec$1.$high + 14, sec$1.$low + 2006054656), $pkg.Local); + }; + $ptrType(Time).prototype.UTC = function UTC() { + var t; + t = this; + t.setLoc(utcLoc); + return t; + }; + Time.prototype.UTC = function(...$args) { return this.$val.UTC(...$args); }; + $ptrType(Time).prototype.Local = function Local() { + var t; + t = this; + t.setLoc($pkg.Local); + return t; + }; + Time.prototype.Local = function(...$args) { return this.$val.Local(...$args); }; + $ptrType(Time).prototype.In = function In(loc) { + var loc, t; + t = this; + if (loc === ptrType$1.nil) { + $panic(new $String("time: missing Location in call to Time.In")); + } + t.setLoc(loc); + return t; + }; + Time.prototype.In = function(...$args) { return this.$val.In(...$args); }; + $ptrType(Time).prototype.Location = function Location$1() { + var l, t; + t = this; + l = t.loc; + if (l === ptrType$1.nil) { + l = $pkg.UTC; + } + return l; + }; + Time.prototype.Location = function(...$args) { return this.$val.Location(...$args); }; + $ptrType(Time).prototype.Zone = function Zone() { + var {_r$1, _tuple, name, offset, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + name = ""; + offset = 0; + t = this; + _r$1 = t.loc.lookup(t.unixSec()); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + name = _tuple[0]; + offset = _tuple[1]; + $s = -1; return [name, offset]; + /* */ } return; } var $f = {$blk: Zone, $c: true, $r, _r$1, _tuple, name, offset, t, $s};return $f; + }; + Time.prototype.Zone = function(...$args) { return this.$val.Zone(...$args); }; + $ptrType(Time).prototype.ZoneBounds = function ZoneBounds() { + var {_r$1, _tuple, end, endSec, start, startSec, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + start = new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil); + end = new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil); + t = this; + _r$1 = t.loc.lookup(t.unixSec()); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + startSec = _tuple[2]; + endSec = _tuple[3]; + if (!((startSec.$high === -2147483648 && startSec.$low === 0))) { + Time.copy(start, unixTime(startSec, 0)); + start.setLoc(t.loc); + } + if (!((endSec.$high === 2147483647 && endSec.$low === 4294967295))) { + Time.copy(end, unixTime(endSec, 0)); + end.setLoc(t.loc); + } + $s = -1; return [start, end]; + /* */ } return; } var $f = {$blk: ZoneBounds, $c: true, $r, _r$1, _tuple, end, endSec, start, startSec, t, $s};return $f; + }; + Time.prototype.ZoneBounds = function(...$args) { return this.$val.ZoneBounds(...$args); }; + $ptrType(Time).prototype.Unix = function Unix$1() { + var t; + t = this; + return t.unixSec(); + }; + Time.prototype.Unix = function(...$args) { return this.$val.Unix(...$args); }; + $ptrType(Time).prototype.UnixMilli = function UnixMilli$1() { + var t, x$1, x$2; + t = this; + return (x$1 = $mul64(t.unixSec(), new $Int64(0, 1000)), x$2 = $div64((new $Int64(0, t.nsec())), new $Int64(0, 1000000), false), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); + }; + Time.prototype.UnixMilli = function(...$args) { return this.$val.UnixMilli(...$args); }; + $ptrType(Time).prototype.UnixMicro = function UnixMicro$1() { + var t, x$1, x$2; + t = this; + return (x$1 = $mul64(t.unixSec(), new $Int64(0, 1000000)), x$2 = $div64((new $Int64(0, t.nsec())), new $Int64(0, 1000), false), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); + }; + Time.prototype.UnixMicro = function(...$args) { return this.$val.UnixMicro(...$args); }; + $ptrType(Time).prototype.UnixNano = function UnixNano() { + var t, x$1, x$2; + t = this; + return (x$1 = $mul64((t.unixSec()), new $Int64(0, 1000000000)), x$2 = (new $Int64(0, t.nsec())), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); + }; + Time.prototype.UnixNano = function(...$args) { return this.$val.UnixNano(...$args); }; + $ptrType(Time).prototype.MarshalBinary = function MarshalBinary() { + var {_q, _r$1, _r$2, _r$3, _tuple, enc, nsec$1, offset, offsetMin, offsetSec, sec$1, t, version, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + offsetMin = 0; + offsetSec = 0; + version = 1; + /* */ if ($clone(t, Time).Location() === $pkg.UTC) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($clone(t, Time).Location() === $pkg.UTC) { */ case 1: + offsetMin = -1; + $s = 3; continue; + /* } else { */ case 2: + _r$1 = $clone(t, Time).Zone(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + offset = _tuple[1]; + if (!(((_r$2 = offset % 60, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 0))) { + version = 2; + offsetSec = (((_r$3 = offset % 60, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) << 24 >> 24)); + } + offset = (_q = offset / (60), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + if (offset < -32768 || (offset === -1) || offset > 32767) { + $s = -1; return [sliceType$4.nil, errors.New("Time.MarshalBinary: unexpected zone offset")]; + } + offsetMin = ((offset << 16 >> 16)); + /* } */ case 3: + sec$1 = t.sec(); + nsec$1 = t.nsec(); + enc = new sliceType$4([version, (($shiftRightInt64(sec$1, 56).$low << 24 >>> 24)), (($shiftRightInt64(sec$1, 48).$low << 24 >>> 24)), (($shiftRightInt64(sec$1, 40).$low << 24 >>> 24)), (($shiftRightInt64(sec$1, 32).$low << 24 >>> 24)), (($shiftRightInt64(sec$1, 24).$low << 24 >>> 24)), (($shiftRightInt64(sec$1, 16).$low << 24 >>> 24)), (($shiftRightInt64(sec$1, 8).$low << 24 >>> 24)), ((sec$1.$low << 24 >>> 24)), (((nsec$1 >> 24 >> 0) << 24 >>> 24)), (((nsec$1 >> 16 >> 0) << 24 >>> 24)), (((nsec$1 >> 8 >> 0) << 24 >>> 24)), ((nsec$1 << 24 >>> 24)), (((offsetMin >> 8 << 16 >> 16) << 24 >>> 24)), ((offsetMin << 24 >>> 24))]); + if (version === 2) { + enc = $append(enc, ((offsetSec << 24 >>> 24))); + } + $s = -1; return [enc, $ifaceNil]; + /* */ } return; } var $f = {$blk: MarshalBinary, $c: true, $r, _q, _r$1, _r$2, _r$3, _tuple, enc, nsec$1, offset, offsetMin, offsetSec, sec$1, t, version, $s};return $f; + }; + Time.prototype.MarshalBinary = function(...$args) { return this.$val.MarshalBinary(...$args); }; + $ptrType(Time).prototype.UnmarshalBinary = function UnmarshalBinary(data) { + var {_r$1, _r$2, _tuple, buf, data, localoff, nsec$1, offset, sec$1, t, version, wantLen, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + buf = data; + if (buf.$length === 0) { + $s = -1; return errors.New("Time.UnmarshalBinary: no data"); + } + version = (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]); + if (!((version === 1)) && !((version === 2))) { + $s = -1; return errors.New("Time.UnmarshalBinary: unsupported version"); + } + wantLen = 15; + if (version === 2) { + wantLen = wantLen + (1) >> 0; + } + if (!((buf.$length === wantLen))) { + $s = -1; return errors.New("Time.UnmarshalBinary: invalid length"); + } + buf = $subslice(buf, 1); + sec$1 = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (x$7 = (new $Int64(0, (7 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 7]))), x$8 = $shiftLeft64((new $Int64(0, (6 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 6]))), 8), new $Int64(x$7.$high | x$8.$high, (x$7.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Int64(0, (5 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 5]))), 16), new $Int64(x$6.$high | x$9.$high, (x$6.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Int64(0, (4 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 4]))), 24), new $Int64(x$5.$high | x$10.$high, (x$5.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Int64(0, (3 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 3]))), 32), new $Int64(x$4.$high | x$11.$high, (x$4.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Int64(0, (2 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 2]))), 40), new $Int64(x$3.$high | x$12.$high, (x$3.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Int64(0, (1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]))), 48), new $Int64(x$2.$high | x$13.$high, (x$2.$low | x$13.$low) >>> 0)), x$14 = $shiftLeft64((new $Int64(0, (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]))), 56), new $Int64(x$1.$high | x$14.$high, (x$1.$low | x$14.$low) >>> 0)); + buf = $subslice(buf, 8); + nsec$1 = (((((3 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 3]) >> 0)) | ((((2 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 2]) >> 0)) << 8 >> 0)) | ((((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) >> 0)) << 16 >> 0)) | ((((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) >> 0)) << 24 >> 0); + buf = $subslice(buf, 4); + offset = $imul(((((((1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]) << 16 >> 16)) | ((((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) << 16 >> 16)) << 8 << 16 >> 16)) >> 0)), 60); + if (version === 2) { + offset = offset + ((((2 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 2]) >> 0))) >> 0; + } + Time.copy(t, new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil)); + t.wall = (new $Uint64(0, nsec$1)); + t.ext = sec$1; + /* */ if (offset === -60) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (offset === -60) { */ case 1: + t.setLoc(utcLoc); + $s = 3; continue; + /* } else { */ case 2: + _r$1 = $pkg.Local.lookup(t.unixSec()); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + localoff = _tuple[1]; + /* */ if (offset === localoff) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (offset === localoff) { */ case 5: + t.setLoc($pkg.Local); + $s = 7; continue; + /* } else { */ case 6: + _r$2 = FixedZone("", offset); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = t.setLoc(_r$2); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + /* } */ case 3: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: UnmarshalBinary, $c: true, $r, _r$1, _r$2, _tuple, buf, data, localoff, nsec$1, offset, sec$1, t, version, wantLen, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s};return $f; + }; + $ptrType(Time).prototype.GobEncode = function GobEncode() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).MarshalBinary(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: GobEncode, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + Time.prototype.GobEncode = function(...$args) { return this.$val.GobEncode(...$args); }; + $ptrType(Time).prototype.GobDecode = function GobDecode(data) { + var {$24r, _r$1, data, t, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.UnmarshalBinary(data); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: GobDecode, $c: true, $r, $24r, _r$1, data, t, $s};return $f; + }; + $ptrType(Time).prototype.MarshalJSON = function MarshalJSON() { + var {$24r, _r$1, _r$2, _r$3, _tuple, b, err, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + b = $makeSlice(sliceType$4, 0, 37); + b = $append(b, 34); + _r$1 = $clone(t, Time).appendStrictRFC3339(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + b = _tuple[0]; + err = _tuple[1]; + b = $append(b, 34); + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + _r$2 = err.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = errors.New("Time.MarshalJSON: " + _r$2); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = [sliceType$4.nil, _r$3]; + $s = 6; case 6: return $24r; + /* } */ case 3: + $s = -1; return [b, $ifaceNil]; + /* */ } return; } var $f = {$blk: MarshalJSON, $c: true, $r, $24r, _r$1, _r$2, _r$3, _tuple, b, err, t, $s};return $f; + }; + Time.prototype.MarshalJSON = function(...$args) { return this.$val.MarshalJSON(...$args); }; + $ptrType(Time).prototype.UnmarshalJSON = function UnmarshalJSON(data) { + var {_r$1, _tuple, data, err, t, x$1, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if (($bytesToString(data)) === "null") { + $s = -1; return $ifaceNil; + } + if (data.$length < 2 || !(((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 34)) || !(((x$1 = data.$length - 1 >> 0, ((x$1 < 0 || x$1 >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x$1])) === 34))) { + $s = -1; return errors.New("Time.UnmarshalJSON: input is not a JSON string"); + } + data = $subslice(data, 1, (data.$length - 1 >> 0)); + err = $ifaceNil; + _r$1 = parseStrictRFC3339(data); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + Time.copy(t, _tuple[0]); + err = _tuple[1]; + $s = -1; return err; + /* */ } return; } var $f = {$blk: UnmarshalJSON, $c: true, $r, _r$1, _tuple, data, err, t, x$1, $s};return $f; + }; + $ptrType(Time).prototype.MarshalText = function MarshalText() { + var {$24r, _r$1, _r$2, _r$3, _tuple, b, err, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + b = $makeSlice(sliceType$4, 0, 35); + _r$1 = $clone(t, Time).appendStrictRFC3339(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + b = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + _r$2 = err.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = errors.New("Time.MarshalText: " + _r$2); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = [sliceType$4.nil, _r$3]; + $s = 6; case 6: return $24r; + /* } */ case 3: + $s = -1; return [b, $ifaceNil]; + /* */ } return; } var $f = {$blk: MarshalText, $c: true, $r, $24r, _r$1, _r$2, _r$3, _tuple, b, err, t, $s};return $f; + }; + Time.prototype.MarshalText = function(...$args) { return this.$val.MarshalText(...$args); }; + $ptrType(Time).prototype.UnmarshalText = function UnmarshalText(data) { + var {_r$1, _tuple, data, err, t, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + err = $ifaceNil; + _r$1 = parseStrictRFC3339(data); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + Time.copy(t, _tuple[0]); + err = _tuple[1]; + $s = -1; return err; + /* */ } return; } var $f = {$blk: UnmarshalText, $c: true, $r, _r$1, _tuple, data, err, t, $s};return $f; + }; + Unix = function Unix$2(sec$1, nsec$1) { + var n, nsec$1, sec$1, x$1, x$2, x$3, x$4; + if ((nsec$1.$high < 0 || (nsec$1.$high === 0 && nsec$1.$low < 0)) || (nsec$1.$high > 0 || (nsec$1.$high === 0 && nsec$1.$low >= 1000000000))) { + n = $div64(nsec$1, new $Int64(0, 1000000000), false); + sec$1 = (x$1 = n, new $Int64(sec$1.$high + x$1.$high, sec$1.$low + x$1.$low)); + nsec$1 = (x$2 = $mul64(n, new $Int64(0, 1000000000)), new $Int64(nsec$1.$high - x$2.$high, nsec$1.$low - x$2.$low)); + if ((nsec$1.$high < 0 || (nsec$1.$high === 0 && nsec$1.$low < 0))) { + nsec$1 = (x$3 = new $Int64(0, 1000000000), new $Int64(nsec$1.$high + x$3.$high, nsec$1.$low + x$3.$low)); + sec$1 = (x$4 = new $Int64(0, 1), new $Int64(sec$1.$high - x$4.$high, sec$1.$low - x$4.$low)); + } + } + return unixTime(sec$1, (((nsec$1.$low + ((nsec$1.$high >> 31) * 4294967296)) >> 0))); + }; + $pkg.Unix = Unix; + $ptrType(Time).prototype.IsDST = function IsDST() { + var {_r$1, _tuple, isDST, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.loc.lookup($clone(t, Time).Unix()); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + isDST = _tuple[4]; + $s = -1; return isDST; + /* */ } return; } var $f = {$blk: IsDST, $c: true, $r, _r$1, _tuple, isDST, t, $s};return $f; + }; + Time.prototype.IsDST = function(...$args) { return this.$val.IsDST(...$args); }; + isLeap = function isLeap$1(year) { + var _r$1, _r$2, _r$3, year; + return ((_r$1 = year % 4, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0) && (!(((_r$2 = year % 100, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 0)) || ((_r$3 = year % 400, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) === 0)); + }; + norm = function norm$1(hi, lo, base) { + var _q, _q$1, _tmp, _tmp$1, base, hi, lo, n, n$1, nhi, nlo; + nhi = 0; + nlo = 0; + if (lo < 0) { + n = (_q = ((-lo - 1 >> 0)) / base, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0; + hi = hi - (n) >> 0; + lo = lo + (($imul(n, base))) >> 0; + } + if (lo >= base) { + n$1 = (_q$1 = lo / base, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); + hi = hi + (n$1) >> 0; + lo = lo - (($imul(n$1, base))) >> 0; + } + _tmp = hi; + _tmp$1 = lo; + nhi = _tmp; + nlo = _tmp$1; + return [nhi, nlo]; + }; + Date = function Date$2(year, month, day, hour, min, sec$1, nsec$1, loc) { + var {_r$1, _r$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, abs$1, d, day, end, hour, loc, m, min, month, nsec$1, offset, sec$1, start, t, unix, utc, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, year, $s, $r, $c} = $restore(this, {year, month, day, hour, min, sec$1, nsec$1, loc}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (loc === ptrType$1.nil) { + $panic(new $String("time: missing Location in call to Date")); + } + m = ((month >> 0)) - 1 >> 0; + _tuple = norm(year, m, 12); + year = _tuple[0]; + m = _tuple[1]; + month = ((m >> 0)) + 1 >> 0; + _tuple$1 = norm(sec$1, nsec$1, 1000000000); + sec$1 = _tuple$1[0]; + nsec$1 = _tuple$1[1]; + _tuple$2 = norm(min, sec$1, 60); + min = _tuple$2[0]; + sec$1 = _tuple$2[1]; + _tuple$3 = norm(hour, min, 60); + hour = _tuple$3[0]; + min = _tuple$3[1]; + _tuple$4 = norm(day, hour, 24); + day = _tuple$4[0]; + hour = _tuple$4[1]; + d = daysSinceEpoch(year); + d = (x$1 = (new $Uint64(0, (x$2 = month - 1 >> 0, ((x$2 < 0 || x$2 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$2])))), new $Uint64(d.$high + x$1.$high, d.$low + x$1.$low)); + if (isLeap(year) && month >= 3) { + d = (x$3 = new $Uint64(0, 1), new $Uint64(d.$high + x$3.$high, d.$low + x$3.$low)); + } + d = (x$4 = (new $Uint64(0, (day - 1 >> 0))), new $Uint64(d.$high + x$4.$high, d.$low + x$4.$low)); + abs$1 = $mul64(d, new $Uint64(0, 86400)); + abs$1 = (x$5 = (new $Uint64(0, ((($imul(hour, 3600)) + ($imul(min, 60)) >> 0) + sec$1 >> 0))), new $Uint64(abs$1.$high + x$5.$high, abs$1.$low + x$5.$low)); + unix = (x$6 = (new $Int64(abs$1.$high, abs$1.$low)), new $Int64(x$6.$high + -2147483647, x$6.$low + 3844486912)); + _r$1 = loc.lookup(unix); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$5 = _r$1; + offset = _tuple$5[1]; + start = _tuple$5[2]; + end = _tuple$5[3]; + /* */ if (!((offset === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((offset === 0))) { */ case 2: + utc = (x$7 = (new $Int64(0, offset)), new $Int64(unix.$high - x$7.$high, unix.$low - x$7.$low)); + /* */ if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low)) || (utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low)) || (utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { */ case 4: + _r$2 = loc.lookup(utc); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$6 = _r$2; + offset = _tuple$6[1]; + /* } */ case 5: + unix = (x$8 = (new $Int64(0, offset)), new $Int64(unix.$high - x$8.$high, unix.$low - x$8.$low)); + /* } */ case 3: + t = $clone(unixTime(unix, ((nsec$1 >> 0))), Time); + t.setLoc(loc); + $s = -1; return t; + /* */ } return; } var $f = {$blk: Date$2, $c: true, $r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, abs$1, d, day, end, hour, loc, m, min, month, nsec$1, offset, sec$1, start, t, unix, utc, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, year, $s};return $f; + }; + $pkg.Date = Date; + $ptrType(Time).prototype.Truncate = function Truncate$1(d) { + var _tuple, d, r, t; + t = this; + t.stripMono(); + if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { + return t; + } + _tuple = div($clone(t, Time), d); + r = _tuple[1]; + return $clone(t, Time).Add(new Duration(-r.$high, -r.$low)); + }; + Time.prototype.Truncate = function(...$args) { return this.$val.Truncate(...$args); }; + $ptrType(Time).prototype.Round = function Round$1(d) { + var _tuple, d, r, t; + t = this; + t.stripMono(); + if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { + return t; + } + _tuple = div($clone(t, Time), d); + r = _tuple[1]; + if (lessThanHalf(r, d)) { + return $clone(t, Time).Add(new Duration(-r.$high, -r.$low)); + } + return $clone(t, Time).Add(new Duration(d.$high - r.$high, d.$low - r.$low)); + }; + Time.prototype.Round = function(...$args) { return this.$val.Round(...$args); }; + div = function div$1(t, d) { + var _q, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, d, d0, d1, d1$1, neg, nsec$1, qmod2, r, sec$1, sec$2, t, tmp, u0, u0x, u1, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + qmod2 = 0; + r = new Duration(0, 0); + neg = false; + nsec$1 = t.nsec(); + sec$1 = t.sec(); + if ((sec$1.$high < 0 || (sec$1.$high === 0 && sec$1.$low < 0))) { + neg = true; + sec$1 = new $Int64(-sec$1.$high, -sec$1.$low); + nsec$1 = -nsec$1; + if (nsec$1 < 0) { + nsec$1 = nsec$1 + (1000000000) >> 0; + sec$1 = (x$1 = new $Int64(0, 1), new $Int64(sec$1.$high - x$1.$high, sec$1.$low - x$1.$low)); + } + } + if ((d.$high < 0 || (d.$high === 0 && d.$low < 1000000000)) && (x$2 = $div64(new Duration(0, 1000000000), (new Duration(d.$high + d.$high, d.$low + d.$low)), true), (x$2.$high === 0 && x$2.$low === 0))) { + qmod2 = (((_q = nsec$1 / (((d.$low + ((d.$high >> 31) * 4294967296)) >> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) & 1; + r = (new Duration(0, (_r$1 = nsec$1 % (((d.$low + ((d.$high >> 31) * 4294967296)) >> 0)), _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")))); + } else if ((x$3 = $div64(d, new Duration(0, 1000000000), true), (x$3.$high === 0 && x$3.$low === 0))) { + d1 = ((x$4 = $div64(d, new Duration(0, 1000000000), false), new $Int64(x$4.$high, x$4.$low))); + qmod2 = (((x$5 = $div64(sec$1, d1, false), x$5.$low + ((x$5.$high >> 31) * 4294967296)) >> 0)) & 1; + r = (x$6 = $mul64(((x$7 = $div64(sec$1, d1, true), new Duration(x$7.$high, x$7.$low))), new Duration(0, 1000000000)), x$8 = (new Duration(0, nsec$1)), new Duration(x$6.$high + x$8.$high, x$6.$low + x$8.$low)); + } else { + sec$2 = (new $Uint64(sec$1.$high, sec$1.$low)); + tmp = $mul64(($shiftRightUint64(sec$2, 32)), new $Uint64(0, 1000000000)); + u1 = $shiftRightUint64(tmp, 32); + u0 = $shiftLeft64(tmp, 32); + tmp = $mul64((new $Uint64(sec$2.$high & 0, (sec$2.$low & 4294967295) >>> 0)), new $Uint64(0, 1000000000)); + _tmp = u0; + _tmp$1 = new $Uint64(u0.$high + tmp.$high, u0.$low + tmp.$low); + u0x = _tmp; + u0 = _tmp$1; + if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) { + u1 = (x$9 = new $Uint64(0, 1), new $Uint64(u1.$high + x$9.$high, u1.$low + x$9.$low)); + } + _tmp$2 = u0; + _tmp$3 = (x$10 = (new $Uint64(0, nsec$1)), new $Uint64(u0.$high + x$10.$high, u0.$low + x$10.$low)); + u0x = _tmp$2; + u0 = _tmp$3; + if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) { + u1 = (x$11 = new $Uint64(0, 1), new $Uint64(u1.$high + x$11.$high, u1.$low + x$11.$low)); + } + d1$1 = (new $Uint64(d.$high, d.$low)); + while (true) { + if (!(!((x$12 = $shiftRightUint64(d1$1, 63), (x$12.$high === 0 && x$12.$low === 1))))) { break; } + d1$1 = $shiftLeft64(d1$1, (1)); + } + d0 = new $Uint64(0, 0); + while (true) { + qmod2 = 0; + if ((u1.$high > d1$1.$high || (u1.$high === d1$1.$high && u1.$low > d1$1.$low)) || (u1.$high === d1$1.$high && u1.$low === d1$1.$low) && (u0.$high > d0.$high || (u0.$high === d0.$high && u0.$low >= d0.$low))) { + qmod2 = 1; + _tmp$4 = u0; + _tmp$5 = new $Uint64(u0.$high - d0.$high, u0.$low - d0.$low); + u0x = _tmp$4; + u0 = _tmp$5; + if ((u0.$high > u0x.$high || (u0.$high === u0x.$high && u0.$low > u0x.$low))) { + u1 = (x$13 = new $Uint64(0, 1), new $Uint64(u1.$high - x$13.$high, u1.$low - x$13.$low)); + } + u1 = (x$14 = d1$1, new $Uint64(u1.$high - x$14.$high, u1.$low - x$14.$low)); + } + if ((d1$1.$high === 0 && d1$1.$low === 0) && (x$15 = (new $Uint64(d.$high, d.$low)), (d0.$high === x$15.$high && d0.$low === x$15.$low))) { + break; + } + d0 = $shiftRightUint64(d0, (1)); + d0 = (x$16 = $shiftLeft64((new $Uint64(d1$1.$high & 0, (d1$1.$low & 1) >>> 0)), 63), new $Uint64(d0.$high | x$16.$high, (d0.$low | x$16.$low) >>> 0)); + d1$1 = $shiftRightUint64(d1$1, (1)); + } + r = (new Duration(u0.$high, u0.$low)); + } + if (neg && !((r.$high === 0 && r.$low === 0))) { + qmod2 = (qmod2 ^ (1)) >> 0; + r = new Duration(d.$high - r.$high, d.$low - r.$low); + } + return [qmod2, r]; + }; + when = function when$1(d) { + var {$24r, _r$1, _r$2, d, t, x$1, x$2, $s, $r, $c} = $restore(this, {d}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) { */ case 1: + _r$1 = runtimeNano(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$2 = runtimeNano(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + t = (x$1 = _r$2, x$2 = (new $Int64(d.$high, d.$low)), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); + if ((t.$high < 0 || (t.$high === 0 && t.$low < 0))) { + t = new $Int64(2147483647, 4294967295); + } + $s = -1; return t; + /* */ } return; } var $f = {$blk: when$1, $c: true, $r, $24r, _r$1, _r$2, d, t, x$1, x$2, $s};return $f; + }; + $ptrType(Timer).prototype.Stop = function Stop$1() { + var t; + t = this; + if (t.r.f === $throwNilPointerError) { + $panic(new $String("time: Stop called on uninitialized Timer")); + } + return stopTimer(t.r); + }; + NewTimer = function NewTimer$1(d) { + var {_r$1, c, d, t, $s, $r, $c} = $restore(this, {d}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = new $Chan(Time, 1); + _r$1 = when(d); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + t = new Timer.ptr(c, $clone(new runtimeTimer.ptr(0, _r$1, new $Int64(0, 0), sendTime, new chanType(c), 0, null, false), runtimeTimer)); + $r = startTimer(t.r); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return t; + /* */ } return; } var $f = {$blk: NewTimer$1, $c: true, $r, _r$1, c, d, t, $s};return $f; + }; + $pkg.NewTimer = NewTimer; + $ptrType(Timer).prototype.Reset = function Reset$1(d) { + var {$24r, _r$1, _r$2, d, t, w, $s, $r, $c} = $restore(this, {d}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if (t.r.f === $throwNilPointerError) { + $panic(new $String("time: Reset called on uninitialized Timer")); + } + _r$1 = when(d); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + w = _r$1; + _r$2 = resetTimer(t.r, w); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Reset$1, $c: true, $r, $24r, _r$1, _r$2, d, t, w, $s};return $f; + }; + sendTime = function sendTime$1(c, seq) { + var {_r$1, _selection, c, seq, $s, $r, $c} = $restore(this, {c, seq}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _selection = $select([[$assertType(c, chanType), $clone(_r$1, Time)], []]); + /* */ if (_selection[0] === 0) { $s = 2; continue; } + /* */ if (_selection[0] === 1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_selection[0] === 0) { */ case 2: + $s = 4; continue; + /* } else if (_selection[0] === 1) { */ case 3: + /* } */ case 4: + $s = -1; return; + /* */ } return; } var $f = {$blk: sendTime$1, $c: true, $r, _r$1, _selection, c, seq, $s};return $f; + }; + AfterFunc = function AfterFunc$1(d, f) { + var {_r$1, d, f, t, $s, $r, $c} = $restore(this, {d, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = when(d); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + t = new Timer.ptr($chanNil, $clone(new runtimeTimer.ptr(0, _r$1, new $Int64(0, 0), goFunc, new funcType(f), 0, null, false), runtimeTimer)); + $r = startTimer(t.r); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return t; + /* */ } return; } var $f = {$blk: AfterFunc$1, $c: true, $r, _r$1, d, f, t, $s};return $f; + }; + $pkg.AfterFunc = AfterFunc; + goFunc = function goFunc$1(arg, seq) { + var arg, seq; + $go($assertType(arg, funcType), []); + }; + initLocal = function initLocal$1() { + var _q, _r$1, d, min, offset, z; + localLoc.name = "Local"; + z = new zone.ptr("", 0, false); + d = new ($global.Date)(); + offset = $imul(($parseInt(d.getTimezoneOffset()) >> 0), -1); + z.offset = $imul(offset, 60); + z.name = "UTC"; + if (offset < 0) { + z.name = z.name + ("-"); + offset = $imul(offset, (-1)); + } else { + z.name = z.name + ("+"); + } + z.name = z.name + (itoa((_q = offset / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")))); + min = (_r$1 = offset % 60, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")); + if (!((min === 0))) { + z.name = z.name + (":" + itoa(min)); + } + localLoc.zone = new sliceType([$clone(z, zone)]); + }; + itoa = function itoa$1(i) { + var i; + if (i < 10) { + return $substring("0123456789", i, (i + 1 >> 0)); + } + return $substring("00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899", ($imul(i, 2)), (($imul(i, 2)) + 2 >> 0)); + }; + init = function init$1() { + $unused(Unix(new $Int64(0, 0), new $Int64(0, 0))); + }; + now = function now$1() { + var {_r$1, _tmp, _tmp$1, _tmp$2, mono$1, n, nsec$1, sec$1, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + sec$1 = new $Int64(0, 0); + nsec$1 = 0; + mono$1 = new $Int64(0, 0); + _r$1 = runtimeNano(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + n = _r$1; + _tmp = $div64(n, new $Int64(0, 1000000000), false); + _tmp$1 = (((x$1 = $div64(n, new $Int64(0, 1000000000), true), x$1.$low + ((x$1.$high >> 31) * 4294967296)) >> 0)); + _tmp$2 = n; + sec$1 = _tmp; + nsec$1 = _tmp$1; + mono$1 = _tmp$2; + $s = -1; return [sec$1, nsec$1, mono$1]; + /* */ } return; } var $f = {$blk: now$1, $c: true, $r, _r$1, _tmp, _tmp$1, _tmp$2, mono$1, n, nsec$1, sec$1, x$1, $s};return $f; + }; + Sleep = function Sleep$1(d) { + var {_r$1, c, d, x$1, $s, $r, $c} = $restore(this, {d}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = [c]; + c[0] = new $Chan(structType, 0); + $setTimeout((function(c) { return function Sleep·func1() { + $close(c[0]); + }; })(c), (((x$1 = $div64(d, new Duration(0, 1000000), false), x$1.$low + ((x$1.$high >> 31) * 4294967296)) >> 0))); + _r$1 = $recv(c[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1[0]; + $s = -1; return; + /* */ } return; } var $f = {$blk: Sleep$1, $c: true, $r, _r$1, c, d, x$1, $s};return $f; + }; + $pkg.Sleep = Sleep; + startTimer = function startTimer$1(t) { + var {_r$1, diff, t, x$1, x$2, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = [t]; + t[0].active = true; + _r$1 = runtimeNano(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + diff = $div64(((x$1 = t[0].when, x$2 = _r$1, new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low))), new $Int64(0, 1000000), false); + if ((diff.$high > 0 || (diff.$high === 0 && diff.$low > 2147483647))) { + $s = -1; return; + } + if ((diff.$high < 0 || (diff.$high === 0 && diff.$low < 0))) { + diff = new $Int64(0, 0); + } + t[0].timeout = $setTimeout((function(t) { return function startTimer·func1() { + var {x$3, x$4, x$5, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t[0].active = false; + /* */ if (!((x$3 = t[0].period, (x$3.$high === 0 && x$3.$low === 0)))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((x$3 = t[0].period, (x$3.$high === 0 && x$3.$low === 0)))) { */ case 1: + t[0].when = (x$4 = t[0].when, x$5 = t[0].period, new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low)); + $r = startTimer(t[0]); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $go(t[0].f, [t[0].arg, 0]); + $s = -1; return; + /* */ } return; } var $f = {$blk: startTimer·func1, $c: true, $r, x$3, x$4, x$5, $s};return $f; + }; })(t), $externalize(new $Int64(diff.$high + 0, diff.$low + 1), $Int64)); + $s = -1; return; + /* */ } return; } var $f = {$blk: startTimer$1, $c: true, $r, _r$1, diff, t, x$1, x$2, $s};return $f; + }; + stopTimer = function stopTimer$1(t) { + var t, wasActive; + $global.clearTimeout(t.timeout); + wasActive = t.active; + t.active = false; + return wasActive; + }; + modTimer = function modTimer$1(t, when$2, period, f, arg, seq) { + var {arg, f, period, seq, t, when$2, $s, $r, $c} = $restore(this, {t, when$2, period, f, arg, seq}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + stopTimer(t); + t.when = when$2; + t.period = period; + t.f = f; + t.arg = arg; + t.seq = seq; + $r = startTimer(t); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: modTimer$1, $c: true, $r, arg, f, period, seq, t, when$2, $s};return $f; + }; + resetTimer = function resetTimer$1(t, when$2) { + var {t, wasActive, when$2, $s, $r, $c} = $restore(this, {t, when$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + wasActive = t.active; + $r = modTimer(t, when$2, t.period, t.f, t.arg, t.seq); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return wasActive; + /* */ } return; } var $f = {$blk: resetTimer$1, $c: true, $r, t, wasActive, when$2, $s};return $f; + }; + $ptrType(Time).prototype.appendFormatRFC3339 = function appendFormatRFC3339(b, nanos) { + var {_q, _q$1, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, abs$1, b, day, hour, min, month, nanos, offset, sec$1, std, t, year, zone$1, $s, $r, $c} = $restore(this, {b, nanos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).locabs(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + offset = _tuple[1]; + abs$1 = _tuple[2]; + _tuple$1 = absDate(abs$1, true); + year = _tuple$1[0]; + month = _tuple$1[1]; + day = _tuple$1[2]; + _r$2 = appendInt(b, year, 4); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + b = _r$2; + b = $append(b, 45); + _r$3 = appendInt(b, ((month >> 0)), 2); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + b = _r$3; + b = $append(b, 45); + _r$4 = appendInt(b, day, 2); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + b = _r$4; + b = $append(b, 84); + _tuple$2 = absClock(abs$1); + hour = _tuple$2[0]; + min = _tuple$2[1]; + sec$1 = _tuple$2[2]; + _r$5 = appendInt(b, hour, 2); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + b = _r$5; + b = $append(b, 58); + _r$6 = appendInt(b, min, 2); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + b = _r$6; + b = $append(b, 58); + _r$7 = appendInt(b, sec$1, 2); /* */ $s = 7; case 7: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + b = _r$7; + /* */ if (nanos) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (nanos) { */ case 8: + std = stdFracSecond(35, 9, 46); + _r$8 = appendNano(b, $clone(t, Time).Nanosecond(), std); /* */ $s = 10; case 10: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + b = _r$8; + /* } */ case 9: + if (offset === 0) { + $s = -1; return $append(b, 90); + } + zone$1 = (_q = offset / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + if (zone$1 < 0) { + b = $append(b, 45); + zone$1 = -zone$1; + } else { + b = $append(b, 43); + } + _r$9 = appendInt(b, (_q$1 = zone$1 / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 2); /* */ $s = 11; case 11: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + b = _r$9; + b = $append(b, 58); + _r$11 = appendInt(b, (_r$10 = zone$1 % 60, _r$10 === _r$10 ? _r$10 : $throwRuntimeError("integer divide by zero")), 2); /* */ $s = 12; case 12: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + b = _r$11; + $s = -1; return b; + /* */ } return; } var $f = {$blk: appendFormatRFC3339, $c: true, $r, _q, _q$1, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, abs$1, b, day, hour, min, month, nanos, offset, sec$1, std, t, year, zone$1, $s};return $f; + }; + Time.prototype.appendFormatRFC3339 = function(...$args) { return this.$val.appendFormatRFC3339(...$args); }; + $ptrType(Time).prototype.appendStrictRFC3339 = function appendStrictRFC3339(b) { + var {_r$1, _r$2, _v, b, c, n0, num2, t, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + n0 = b.$length; + _r$1 = $clone(t, Time).appendFormatRFC3339(b, true); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + b = _r$1; + num2 = (function Time·appendStrictRFC3339·func1(b$1) { + var b$1; + return (10 * (((0 >= b$1.$length ? ($throwRuntimeError("index out of range"), undefined) : b$1.$array[b$1.$offset + 0]) - 48 << 24 >>> 24)) << 24 >>> 24) + (((1 >= b$1.$length ? ($throwRuntimeError("index out of range"), undefined) : b$1.$array[b$1.$offset + 1]) - 48 << 24 >>> 24)) << 24 >>> 24; + }); + /* */ if (!(((x$1 = n0 + 4 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$1])) === 45))) { $s = 3; continue; } + /* */ if (!(((x$2 = b.$length - 1 >> 0, ((x$2 < 0 || x$2 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$2])) === 90))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(((x$1 = n0 + 4 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$1])) === 45))) { */ case 3: + $s = -1; return [b, errors.New("year outside of range [0,9999]")]; + /* } else if (!(((x$2 = b.$length - 1 >> 0, ((x$2 < 0 || x$2 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$2])) === 90))) { */ case 4: + c = (x$3 = b.$length - 6 >> 0, ((x$3 < 0 || x$3 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$3])); + if (48 <= c && c <= 57) { _v = true; $s = 8; continue s; } + _r$2 = num2($subslice(b, (b.$length - 5 >> 0))); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2 >= 24; case 8: + /* */ if (_v) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_v) { */ case 6: + $s = -1; return [b, errors.New("timezone hour outside of range [0,23]")]; + /* } */ case 7: + /* } */ case 5: + case 2: + $s = -1; return [b, $ifaceNil]; + /* */ } return; } var $f = {$blk: appendStrictRFC3339, $c: true, $r, _r$1, _r$2, _v, b, c, n0, num2, t, x$1, x$2, x$3, $s};return $f; + }; + Time.prototype.appendStrictRFC3339 = function(...$args) { return this.$val.appendStrictRFC3339(...$args); }; + parseRFC3339[0 /* []byte */] = function parseRFC3339$1(s, local) { + var {_r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, day, hour, hr, local, min, mm, month, n, nsec$1, offset, ok, parseUint, s, sec$1, t, x$1, year, zoneOffset, $s, $r, $c} = $restore(this, {s, local}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ok = [ok]; + ok[0] = true; + parseUint = (function(ok) { return function parseRFC3339·func1(s$1, min, max) { + var _i, _ref, c, max, min, s$1, x$1; + x$1 = 0; + _ref = (s$1); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (c < 48 || 57 < c) { + ok[0] = false; + x$1 = min; + return x$1; + } + x$1 = (($imul(x$1, 10)) + ((c >> 0)) >> 0) - 48 >> 0; + _i++; + } + if (x$1 < min || max < x$1) { + ok[0] = false; + x$1 = min; + return x$1; + } + x$1 = x$1; + return x$1; + }; })(ok); + if (s.$length < 19) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), false]; + } + _r$1 = parseUint($subslice(s, 0, 4), 0, 9999); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + year = _r$1; + _r$2 = parseUint($subslice(s, 5, 7), 1, 12); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + month = _r$2; + _r$3 = parseUint($subslice(s, 8, 10), 1, daysIn(((month >> 0)), year)); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + day = _r$3; + _r$4 = parseUint($subslice(s, 11, 13), 0, 23); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + hour = _r$4; + _r$5 = parseUint($subslice(s, 14, 16), 0, 59); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + min = _r$5; + _r$6 = parseUint($subslice(s, 17, 19), 0, 59); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + sec$1 = _r$6; + if (!ok[0] || !(((4 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 4]) === 45) && ((7 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 7]) === 45) && ((10 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 10]) === 84) && ((13 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 13]) === 58) && ((16 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 16]) === 58))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), false]; + } + s = $subslice(s, 19); + nsec$1 = 0; + if (s.$length >= 2 && ((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 46) && isDigit[6 /* []byte */](s, 1)) { + n = 2; + while (true) { + if (!(n < s.$length && isDigit[6 /* []byte */](s, n))) { break; } + n = n + (1) >> 0; + } + _tuple = parseNanoseconds[7 /* []byte */](s, n); + nsec$1 = _tuple[0]; + s = $subslice(s, n); + } + _r$7 = Date(year, ((month >> 0)), day, hour, min, sec$1, nsec$1, $pkg.UTC); /* */ $s = 7; case 7: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + t = $clone(_r$7, Time); + /* */ if (!((s.$length === 1)) || !(((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 90))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!((s.$length === 1)) || !(((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 90))) { */ case 8: + if (!((s.$length === 6))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), false]; + } + _r$8 = parseUint($subslice(s, 1, 3), 0, 23); /* */ $s = 10; case 10: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + hr = _r$8; + _r$9 = parseUint($subslice(s, 4, 6), 0, 59); /* */ $s = 11; case 11: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + mm = _r$9; + if (!ok[0] || !((((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 45) || ((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 43)) && ((3 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 3]) === 58))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), false]; + } + zoneOffset = $imul(((($imul(hr, 60)) + mm >> 0)), 60); + if ((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 45) { + zoneOffset = $imul(zoneOffset, (-1)); + } + t.addSec((x$1 = (new $Int64(0, zoneOffset)), new $Int64(-x$1.$high, -x$1.$low))); + _r$10 = local.lookup(t.unixSec()); /* */ $s = 12; case 12: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$1 = _r$10; + offset = _tuple$1[1]; + /* */ if (offset === zoneOffset) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (offset === zoneOffset) { */ case 13: + t.setLoc(local); + $s = 15; continue; + /* } else { */ case 14: + _r$11 = FixedZone("", zoneOffset); /* */ $s = 16; case 16: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $r = t.setLoc(_r$11); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 15: + /* } */ case 9: + $s = -1; return [t, true]; + /* */ } return; } var $f = {$blk: parseRFC3339$1, $c: true, $r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, day, hour, hr, local, min, mm, month, n, nsec$1, offset, ok, parseUint, s, sec$1, t, x$1, year, zoneOffset, $s};return $f; + }; + parseRFC3339[2 /* string */] = function parseRFC3339$2(s, local) { + var {_r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, day, hour, hr, local, min, mm, month, n, nsec$1, offset, ok, parseUint, s, sec$1, t, x$1, year, zoneOffset, $s, $r, $c} = $restore(this, {s, local}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ok = [ok]; + ok[0] = true; + parseUint = (function(ok) { return function parseRFC3339·func1$1(s$1, min, max) { + var _i, _ref, c, max, min, s$1, x$1; + x$1 = 0; + _ref = (new sliceType$4($stringToBytes(s$1))); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (c < 48 || 57 < c) { + ok[0] = false; + x$1 = min; + return x$1; + } + x$1 = (($imul(x$1, 10)) + ((c >> 0)) >> 0) - 48 >> 0; + _i++; + } + if (x$1 < min || max < x$1) { + ok[0] = false; + x$1 = min; + return x$1; + } + x$1 = x$1; + return x$1; + }; })(ok); + if (s.length < 19) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), false]; + } + _r$1 = parseUint($substring(s, 0, 4), 0, 9999); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + year = _r$1; + _r$2 = parseUint($substring(s, 5, 7), 1, 12); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + month = _r$2; + _r$3 = parseUint($substring(s, 8, 10), 1, daysIn(((month >> 0)), year)); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + day = _r$3; + _r$4 = parseUint($substring(s, 11, 13), 0, 23); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + hour = _r$4; + _r$5 = parseUint($substring(s, 14, 16), 0, 59); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + min = _r$5; + _r$6 = parseUint($substring(s, 17, 19), 0, 59); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + sec$1 = _r$6; + if (!ok[0] || !((s.charCodeAt(4) === 45) && (s.charCodeAt(7) === 45) && (s.charCodeAt(10) === 84) && (s.charCodeAt(13) === 58) && (s.charCodeAt(16) === 58))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), false]; + } + s = $substring(s, 19); + nsec$1 = 0; + if (s.length >= 2 && (s.charCodeAt(0) === 46) && isDigit[1 /* string */](s, 1)) { + n = 2; + while (true) { + if (!(n < s.length && isDigit[1 /* string */](s, n))) { break; } + n = n + (1) >> 0; + } + _tuple = parseNanoseconds[4 /* string */](s, n); + nsec$1 = _tuple[0]; + s = $substring(s, n); + } + _r$7 = Date(year, ((month >> 0)), day, hour, min, sec$1, nsec$1, $pkg.UTC); /* */ $s = 7; case 7: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + t = $clone(_r$7, Time); + /* */ if (!((s.length === 1)) || !((s.charCodeAt(0) === 90))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!((s.length === 1)) || !((s.charCodeAt(0) === 90))) { */ case 8: + if (!((s.length === 6))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), false]; + } + _r$8 = parseUint($substring(s, 1, 3), 0, 23); /* */ $s = 10; case 10: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + hr = _r$8; + _r$9 = parseUint($substring(s, 4, 6), 0, 59); /* */ $s = 11; case 11: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + mm = _r$9; + if (!ok[0] || !(((s.charCodeAt(0) === 45) || (s.charCodeAt(0) === 43)) && (s.charCodeAt(3) === 58))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), false]; + } + zoneOffset = $imul(((($imul(hr, 60)) + mm >> 0)), 60); + if (s.charCodeAt(0) === 45) { + zoneOffset = $imul(zoneOffset, (-1)); + } + t.addSec((x$1 = (new $Int64(0, zoneOffset)), new $Int64(-x$1.$high, -x$1.$low))); + _r$10 = local.lookup(t.unixSec()); /* */ $s = 12; case 12: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$1 = _r$10; + offset = _tuple$1[1]; + /* */ if (offset === zoneOffset) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (offset === zoneOffset) { */ case 13: + t.setLoc(local); + $s = 15; continue; + /* } else { */ case 14: + _r$11 = FixedZone("", zoneOffset); /* */ $s = 16; case 16: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $r = t.setLoc(_r$11); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 15: + /* } */ case 9: + $s = -1; return [t, true]; + /* */ } return; } var $f = {$blk: parseRFC3339$2, $c: true, $r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, day, hour, hr, local, min, mm, month, n, nsec$1, offset, ok, parseUint, s, sec$1, t, x$1, year, zoneOffset, $s};return $f; + }; + parseStrictRFC3339 = function parseStrictRFC3339$1(b) { + var {_r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, b, err, num2, ok, t, t$1, x$1, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = parseRFC3339[0 /* []byte */](b, $pkg.Local); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + t = $clone(_tuple[0], Time); + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + _r$2 = Parse("2006-01-02T15:04:05Z07:00", ($bytesToString(b))); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + t$1 = $clone(_tuple$1[0], Time); + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), err]; + } + num2 = (function parseStrictRFC3339·func1(b$1) { + var b$1; + return (10 * (((0 >= b$1.$length ? ($throwRuntimeError("index out of range"), undefined) : b$1.$array[b$1.$offset + 0]) - 48 << 24 >>> 24)) << 24 >>> 24) + (((1 >= b$1.$length ? ($throwRuntimeError("index out of range"), undefined) : b$1.$array[b$1.$offset + 1]) - 48 << 24 >>> 24)) << 24 >>> 24; + }); + /* */ if (true) { $s = 6; continue; } + /* */ if (((12 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 12]) === 58)) { $s = 7; continue; } + /* */ if (((19 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 19]) === 44)) { $s = 8; continue; } + /* */ if (!(((x$1 = b.$length - 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$1])) === 90))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (true) { */ case 6: + $s = -1; return [t$1, $ifaceNil]; + /* } else if (((12 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 12]) === 58)) { */ case 7: + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), new ParseError.ptr("2006-01-02T15:04:05Z07:00", ($bytesToString(b)), "15", ($bytesToString($subslice($subslice(b, 11), 0, 1))), "")]; + /* } else if (((19 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 19]) === 44)) { */ case 8: + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), new ParseError.ptr("2006-01-02T15:04:05Z07:00", ($bytesToString(b)), ".", ",", "")]; + /* } else if (!(((x$1 = b.$length - 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$1])) === 90))) { */ case 9: + _r$3 = num2($subslice(b, (b.$length - 5 >> 0))); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3 >= 24) { $s = 13; continue; } + _r$4 = num2($subslice(b, (b.$length - 2 >> 0))); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4 >= 60) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_r$3 >= 24) { */ case 13: + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), new ParseError.ptr("2006-01-02T15:04:05Z07:00", ($bytesToString(b)), "Z07:00", ($bytesToString($subslice(b, (b.$length - 6 >> 0)))), ": timezone hour out of range")]; + /* } else if (_r$4 >= 60) { */ case 14: + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), new ParseError.ptr("2006-01-02T15:04:05Z07:00", ($bytesToString(b)), "Z07:00", ($bytesToString($subslice(b, (b.$length - 6 >> 0)))), ": timezone minute out of range")]; + /* } */ case 15: + case 12: + $s = 11; continue; + /* } else { */ case 10: + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), new ParseError.ptr("2006-01-02T15:04:05Z07:00", ($bytesToString(b)), "2006-01-02T15:04:05Z07:00", ($bytesToString(b)), "")]; + /* } */ case 11: + case 5: + /* } */ case 3: + $s = -1; return [t, $ifaceNil]; + /* */ } return; } var $f = {$blk: parseStrictRFC3339$1, $c: true, $r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, b, err, num2, ok, t, t$1, x$1, $s};return $f; + }; + startsWithLowerCase = function startsWithLowerCase$1(str) { + var c, str; + if (str.length === 0) { + return false; + } + c = str.charCodeAt(0); + return 97 <= c && c <= 122; + }; + nextStdChunk = function nextStdChunk$1(layout) { + var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$51, _tmp$52, _tmp$53, _tmp$54, _tmp$55, _tmp$56, _tmp$57, _tmp$58, _tmp$59, _tmp$6, _tmp$60, _tmp$61, _tmp$62, _tmp$63, _tmp$64, _tmp$65, _tmp$66, _tmp$67, _tmp$68, _tmp$69, _tmp$7, _tmp$70, _tmp$71, _tmp$72, _tmp$73, _tmp$74, _tmp$75, _tmp$76, _tmp$77, _tmp$78, _tmp$79, _tmp$8, _tmp$80, _tmp$81, _tmp$82, _tmp$83, _tmp$84, _tmp$85, _tmp$86, _tmp$87, _tmp$88, _tmp$89, _tmp$9, _tmp$90, _tmp$91, _tmp$92, c, ch, code, i, j, layout, prefix, std, std$1, suffix, x$1; + prefix = ""; + std = 0; + suffix = ""; + i = 0; + while (true) { + if (!(i < layout.length)) { break; } + c = ((layout.charCodeAt(i) >> 0)); + _1 = c; + if (_1 === (74)) { + if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "Jan") { + if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "January") { + _tmp = $substring(layout, 0, i); + _tmp$1 = 257; + _tmp$2 = $substring(layout, (i + 7 >> 0)); + prefix = _tmp; + std = _tmp$1; + suffix = _tmp$2; + return [prefix, std, suffix]; + } + if (!startsWithLowerCase($substring(layout, (i + 3 >> 0)))) { + _tmp$3 = $substring(layout, 0, i); + _tmp$4 = 258; + _tmp$5 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$3; + std = _tmp$4; + suffix = _tmp$5; + return [prefix, std, suffix]; + } + } + } else if (_1 === (77)) { + if (layout.length >= (i + 3 >> 0)) { + if ($substring(layout, i, (i + 3 >> 0)) === "Mon") { + if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "Monday") { + _tmp$6 = $substring(layout, 0, i); + _tmp$7 = 261; + _tmp$8 = $substring(layout, (i + 6 >> 0)); + prefix = _tmp$6; + std = _tmp$7; + suffix = _tmp$8; + return [prefix, std, suffix]; + } + if (!startsWithLowerCase($substring(layout, (i + 3 >> 0)))) { + _tmp$9 = $substring(layout, 0, i); + _tmp$10 = 262; + _tmp$11 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$9; + std = _tmp$10; + suffix = _tmp$11; + return [prefix, std, suffix]; + } + } + if ($substring(layout, i, (i + 3 >> 0)) === "MST") { + _tmp$12 = $substring(layout, 0, i); + _tmp$13 = 23; + _tmp$14 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$12; + std = _tmp$13; + suffix = _tmp$14; + return [prefix, std, suffix]; + } + } + } else if (_1 === (48)) { + if (layout.length >= (i + 2 >> 0) && 49 <= layout.charCodeAt((i + 1 >> 0)) && layout.charCodeAt((i + 1 >> 0)) <= 54) { + _tmp$15 = $substring(layout, 0, i); + _tmp$16 = (x$1 = layout.charCodeAt((i + 1 >> 0)) - 49 << 24 >>> 24, ((x$1 < 0 || x$1 >= std0x.length) ? ($throwRuntimeError("index out of range"), undefined) : std0x[x$1])); + _tmp$17 = $substring(layout, (i + 2 >> 0)); + prefix = _tmp$15; + std = _tmp$16; + suffix = _tmp$17; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 3 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 48) && (layout.charCodeAt((i + 2 >> 0)) === 50)) { + _tmp$18 = $substring(layout, 0, i); + _tmp$19 = 267; + _tmp$20 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$18; + std = _tmp$19; + suffix = _tmp$20; + return [prefix, std, suffix]; + } + } else if (_1 === (49)) { + if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 53)) { + _tmp$21 = $substring(layout, 0, i); + _tmp$22 = 524; + _tmp$23 = $substring(layout, (i + 2 >> 0)); + prefix = _tmp$21; + std = _tmp$22; + suffix = _tmp$23; + return [prefix, std, suffix]; + } + _tmp$24 = $substring(layout, 0, i); + _tmp$25 = 259; + _tmp$26 = $substring(layout, (i + 1 >> 0)); + prefix = _tmp$24; + std = _tmp$25; + suffix = _tmp$26; + return [prefix, std, suffix]; + } else if (_1 === (50)) { + if (layout.length >= (i + 4 >> 0) && $substring(layout, i, (i + 4 >> 0)) === "2006") { + _tmp$27 = $substring(layout, 0, i); + _tmp$28 = 275; + _tmp$29 = $substring(layout, (i + 4 >> 0)); + prefix = _tmp$27; + std = _tmp$28; + suffix = _tmp$29; + return [prefix, std, suffix]; + } + _tmp$30 = $substring(layout, 0, i); + _tmp$31 = 263; + _tmp$32 = $substring(layout, (i + 1 >> 0)); + prefix = _tmp$30; + std = _tmp$31; + suffix = _tmp$32; + return [prefix, std, suffix]; + } else if (_1 === (95)) { + if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 50)) { + if (layout.length >= (i + 5 >> 0) && $substring(layout, (i + 1 >> 0), (i + 5 >> 0)) === "2006") { + _tmp$33 = $substring(layout, 0, (i + 1 >> 0)); + _tmp$34 = 275; + _tmp$35 = $substring(layout, (i + 5 >> 0)); + prefix = _tmp$33; + std = _tmp$34; + suffix = _tmp$35; + return [prefix, std, suffix]; + } + _tmp$36 = $substring(layout, 0, i); + _tmp$37 = 264; + _tmp$38 = $substring(layout, (i + 2 >> 0)); + prefix = _tmp$36; + std = _tmp$37; + suffix = _tmp$38; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 3 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 95) && (layout.charCodeAt((i + 2 >> 0)) === 50)) { + _tmp$39 = $substring(layout, 0, i); + _tmp$40 = 266; + _tmp$41 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$39; + std = _tmp$40; + suffix = _tmp$41; + return [prefix, std, suffix]; + } + } else if (_1 === (51)) { + _tmp$42 = $substring(layout, 0, i); + _tmp$43 = 525; + _tmp$44 = $substring(layout, (i + 1 >> 0)); + prefix = _tmp$42; + std = _tmp$43; + suffix = _tmp$44; + return [prefix, std, suffix]; + } else if (_1 === (52)) { + _tmp$45 = $substring(layout, 0, i); + _tmp$46 = 527; + _tmp$47 = $substring(layout, (i + 1 >> 0)); + prefix = _tmp$45; + std = _tmp$46; + suffix = _tmp$47; + return [prefix, std, suffix]; + } else if (_1 === (53)) { + _tmp$48 = $substring(layout, 0, i); + _tmp$49 = 529; + _tmp$50 = $substring(layout, (i + 1 >> 0)); + prefix = _tmp$48; + std = _tmp$49; + suffix = _tmp$50; + return [prefix, std, suffix]; + } else if (_1 === (80)) { + if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 77)) { + _tmp$51 = $substring(layout, 0, i); + _tmp$52 = 533; + _tmp$53 = $substring(layout, (i + 2 >> 0)); + prefix = _tmp$51; + std = _tmp$52; + suffix = _tmp$53; + return [prefix, std, suffix]; + } + } else if (_1 === (112)) { + if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 109)) { + _tmp$54 = $substring(layout, 0, i); + _tmp$55 = 534; + _tmp$56 = $substring(layout, (i + 2 >> 0)); + prefix = _tmp$54; + std = _tmp$55; + suffix = _tmp$56; + return [prefix, std, suffix]; + } + } else if (_1 === (45)) { + if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "-070000") { + _tmp$57 = $substring(layout, 0, i); + _tmp$58 = 30; + _tmp$59 = $substring(layout, (i + 7 >> 0)); + prefix = _tmp$57; + std = _tmp$58; + suffix = _tmp$59; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 9 >> 0) && $substring(layout, i, (i + 9 >> 0)) === "-07:00:00") { + _tmp$60 = $substring(layout, 0, i); + _tmp$61 = 33; + _tmp$62 = $substring(layout, (i + 9 >> 0)); + prefix = _tmp$60; + std = _tmp$61; + suffix = _tmp$62; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 5 >> 0) && $substring(layout, i, (i + 5 >> 0)) === "-0700") { + _tmp$63 = $substring(layout, 0, i); + _tmp$64 = 29; + _tmp$65 = $substring(layout, (i + 5 >> 0)); + prefix = _tmp$63; + std = _tmp$64; + suffix = _tmp$65; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "-07:00") { + _tmp$66 = $substring(layout, 0, i); + _tmp$67 = 32; + _tmp$68 = $substring(layout, (i + 6 >> 0)); + prefix = _tmp$66; + std = _tmp$67; + suffix = _tmp$68; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "-07") { + _tmp$69 = $substring(layout, 0, i); + _tmp$70 = 31; + _tmp$71 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$69; + std = _tmp$70; + suffix = _tmp$71; + return [prefix, std, suffix]; + } + } else if (_1 === (90)) { + if (layout.length >= (i + 7 >> 0) && $substring(layout, i, (i + 7 >> 0)) === "Z070000") { + _tmp$72 = $substring(layout, 0, i); + _tmp$73 = 25; + _tmp$74 = $substring(layout, (i + 7 >> 0)); + prefix = _tmp$72; + std = _tmp$73; + suffix = _tmp$74; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 9 >> 0) && $substring(layout, i, (i + 9 >> 0)) === "Z07:00:00") { + _tmp$75 = $substring(layout, 0, i); + _tmp$76 = 28; + _tmp$77 = $substring(layout, (i + 9 >> 0)); + prefix = _tmp$75; + std = _tmp$76; + suffix = _tmp$77; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 5 >> 0) && $substring(layout, i, (i + 5 >> 0)) === "Z0700") { + _tmp$78 = $substring(layout, 0, i); + _tmp$79 = 24; + _tmp$80 = $substring(layout, (i + 5 >> 0)); + prefix = _tmp$78; + std = _tmp$79; + suffix = _tmp$80; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 6 >> 0) && $substring(layout, i, (i + 6 >> 0)) === "Z07:00") { + _tmp$81 = $substring(layout, 0, i); + _tmp$82 = 27; + _tmp$83 = $substring(layout, (i + 6 >> 0)); + prefix = _tmp$81; + std = _tmp$82; + suffix = _tmp$83; + return [prefix, std, suffix]; + } + if (layout.length >= (i + 3 >> 0) && $substring(layout, i, (i + 3 >> 0)) === "Z07") { + _tmp$84 = $substring(layout, 0, i); + _tmp$85 = 26; + _tmp$86 = $substring(layout, (i + 3 >> 0)); + prefix = _tmp$84; + std = _tmp$85; + suffix = _tmp$86; + return [prefix, std, suffix]; + } + } else if ((_1 === (46)) || (_1 === (44))) { + if ((i + 1 >> 0) < layout.length && ((layout.charCodeAt((i + 1 >> 0)) === 48) || (layout.charCodeAt((i + 1 >> 0)) === 57))) { + ch = layout.charCodeAt((i + 1 >> 0)); + j = i + 1 >> 0; + while (true) { + if (!(j < layout.length && (layout.charCodeAt(j) === ch))) { break; } + j = j + (1) >> 0; + } + if (!isDigit[1 /* string */](layout, j)) { + code = 34; + if (layout.charCodeAt((i + 1 >> 0)) === 57) { + code = 35; + } + std$1 = stdFracSecond(code, j - ((i + 1 >> 0)) >> 0, c); + _tmp$87 = $substring(layout, 0, i); + _tmp$88 = std$1; + _tmp$89 = $substring(layout, j); + prefix = _tmp$87; + std = _tmp$88; + suffix = _tmp$89; + return [prefix, std, suffix]; + } + } + } + i = i + (1) >> 0; + } + _tmp$90 = layout; + _tmp$91 = 0; + _tmp$92 = ""; + prefix = _tmp$90; + std = _tmp$91; + suffix = _tmp$92; + return [prefix, std, suffix]; + }; + match = function match$1(s1, s2) { + var c1, c2, i, s1, s2; + i = 0; + while (true) { + if (!(i < s1.length)) { break; } + c1 = s1.charCodeAt(i); + c2 = s2.charCodeAt(i); + if (!((c1 === c2))) { + c1 = (c1 | (32)) >>> 0; + c2 = (c2 | (32)) >>> 0; + if (!((c1 === c2)) || c1 < 97 || c1 > 122) { + return false; + } + } + i = i + (1) >> 0; + } + return true; + }; + lookup = function lookup$2(tab, val) { + var _i, _ref, i, tab, v, val; + _ref = tab; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (val.length >= v.length && match($substring(val, 0, v.length), v)) { + return [i, $substring(val, v.length), $ifaceNil]; + } + _i++; + } + return [-1, val, errBad]; + }; + appendInt = function appendInt$1(b, x$1, width) { + var {$24r, $24r$1, _q, _q$1, _q$2, _q$3, _q$4, _q$5, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, b, i, n, pad, q, u, u2, utod, width, x$1, $s, $r, $c} = $restore(this, {b, x$1, width}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + u = ((x$1 >>> 0)); + if (x$1 < 0) { + b = $append(b, 45); + u = ((-x$1 >>> 0)); + } + utod = (function appendInt·func1(u$1) { + var u$1; + return 48 + ((u$1 << 24 >>> 24)) << 24 >>> 24; + }); + /* */ if ((width === 2) && u < 100) { $s = 2; continue; } + /* */ if ((width === 4) && u < 10000) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((width === 2) && u < 100) { */ case 2: + _r$1 = utod((_q = u / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$3 = utod((_r$2 = u % 10, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = $append(b, _r$1, _r$3); + $s = 7; case 7: return $24r; + /* } else if ((width === 4) && u < 10000) { */ case 3: + _r$4 = utod((_q$1 = u / 1000, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$6 = utod((_r$5 = (_q$2 = u / 100, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >>> 0 : $throwRuntimeError("integer divide by zero")) % 10, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$8 = utod((_r$7 = (_q$3 = u / 10, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >>> 0 : $throwRuntimeError("integer divide by zero")) % 10, _r$7 === _r$7 ? _r$7 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 10; case 10: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$10 = utod((_r$9 = u % 10, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 11; case 11: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $24r$1 = $append(b, _r$4, _r$6, _r$8, _r$10); + $s = 12; case 12: return $24r$1; + /* } */ case 4: + case 1: + n = 0; + if (u === 0) { + n = 1; + } + u2 = u; + while (true) { + if (!(u2 > 0)) { break; } + n = n + (1) >> 0; + u2 = (_q$4 = u2 / (10), (_q$4 === _q$4 && _q$4 !== 1/0 && _q$4 !== -1/0) ? _q$4 >>> 0 : $throwRuntimeError("integer divide by zero")); + } + pad = width - n >> 0; + while (true) { + if (!(pad > 0)) { break; } + b = $append(b, 48); + pad = pad - (1) >> 0; + } + if ((b.$length + n >> 0) <= b.$capacity) { + b = $subslice(b, 0, (b.$length + n >> 0)); + } else { + b = $appendSlice(b, $makeSlice(sliceType$4, n)); + } + i = b.$length - 1 >> 0; + /* while (true) { */ case 13: + /* if (!(u >= 10 && i > 0)) { break; } */ if(!(u >= 10 && i > 0)) { $s = 14; continue; } + q = (_q$5 = u / 10, (_q$5 === _q$5 && _q$5 !== 1/0 && _q$5 !== -1/0) ? _q$5 >>> 0 : $throwRuntimeError("integer divide by zero")); + _r$11 = utod(u - ($imul(q, 10) >>> 0) >>> 0); /* */ $s = 15; case 15: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i] = _r$11); + u = q; + i = i - (1) >> 0; + $s = 13; continue; + case 14: + _r$12 = utod(u); /* */ $s = 16; case 16: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i] = _r$12); + $s = -1; return b; + /* */ } return; } var $f = {$blk: appendInt$1, $c: true, $r, $24r, $24r$1, _q, _q$1, _q$2, _q$3, _q$4, _q$5, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, b, i, n, pad, q, u, u2, utod, width, x$1, $s};return $f; + }; + atoi[3 /* string */] = function atoi$1(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, neg, q, rem, s, x$1; + x$1 = 0; + err = $ifaceNil; + neg = false; + if (s.length > 0 && ((s.charCodeAt(0) === 45) || (s.charCodeAt(0) === 43))) { + neg = s.charCodeAt(0) === 45; + s = $substring(s, 1); + } + _tuple = leadingInt[5 /* string */](s); + q = _tuple[0]; + rem = _tuple[1]; + err = _tuple[2]; + x$1 = ((q.$low >> 0)); + if (!($interfaceIsEqual(err, $ifaceNil)) || rem.length > 0) { + _tmp = 0; + _tmp$1 = atoiError; + x$1 = _tmp; + err = _tmp$1; + return [x$1, err]; + } + if (neg) { + x$1 = -x$1; + } + _tmp$2 = x$1; + _tmp$3 = $ifaceNil; + x$1 = _tmp$2; + err = _tmp$3; + return [x$1, err]; + }; + atoi[8 /* []byte */] = function atoi$2(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, neg, q, rem, s, x$1; + x$1 = 0; + err = $ifaceNil; + neg = false; + if (s.$length > 0 && (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 45) || ((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 43))) { + neg = (0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === 45; + s = $subslice(s, 1); + } + _tuple = leadingInt[9 /* []byte */](s); + q = _tuple[0]; + rem = _tuple[1]; + err = _tuple[2]; + x$1 = ((q.$low >> 0)); + if (!($interfaceIsEqual(err, $ifaceNil)) || rem.$length > 0) { + _tmp = 0; + _tmp$1 = atoiError; + x$1 = _tmp; + err = _tmp$1; + return [x$1, err]; + } + if (neg) { + x$1 = -x$1; + } + _tmp$2 = x$1; + _tmp$3 = $ifaceNil; + x$1 = _tmp$2; + err = _tmp$3; + return [x$1, err]; + }; + stdFracSecond = function stdFracSecond$1(code, n, c) { + var c, code, n; + if (c === 46) { + return code | ((((n & 4095)) << 16 >> 0)); + } + return (code | ((((n & 4095)) << 16 >> 0))) | 268435456; + }; + digitsLen = function digitsLen$1(std) { + var std; + return ((std >> 16 >> 0)) & 4095; + }; + separator = function separator$1(std) { + var std; + if (((std >> 28 >> 0)) === 0) { + return 46; + } + return 44; + }; + appendNano = function appendNano$1(b, nanosec, std) { + var {_r$1, b, dot, n, nanosec, std, trim, x$1, x$2, $s, $r, $c} = $restore(this, {b, nanosec, std}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + trim = (std & 65535) === 35; + n = digitsLen(std); + if (trim && ((n === 0) || (nanosec === 0))) { + $s = -1; return b; + } + dot = separator(std); + b = $append(b, dot); + _r$1 = appendInt(b, nanosec, 9); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + b = _r$1; + if (n < 9) { + b = $subslice(b, 0, ((b.$length - 9 >> 0) + n >> 0)); + } + if (trim) { + while (true) { + if (!(b.$length > 0 && ((x$1 = b.$length - 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$1])) === 48))) { break; } + b = $subslice(b, 0, (b.$length - 1 >> 0)); + } + if (b.$length > 0 && ((x$2 = b.$length - 1 >> 0, ((x$2 < 0 || x$2 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$2])) === dot)) { + b = $subslice(b, 0, (b.$length - 1 >> 0)); + } + } + $s = -1; return b; + /* */ } return; } var $f = {$blk: appendNano$1, $c: true, $r, _r$1, b, dot, n, nanosec, std, trim, x$1, x$2, $s};return $f; + }; + $ptrType(Time).prototype.String = function String$4() { + var {_r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, buf, m0, m1, m2, s, sign, t, wid, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).Format("2006-01-02 15:04:05.999999999 -0700 MST"); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + s = _r$1; + /* */ if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((x$1 = (x$2 = t.wall, new $Uint64(x$2.$high & 2147483648, (x$2.$low & 0) >>> 0)), (x$1.$high === 0 && x$1.$low === 0)))) { */ case 2: + m2 = ((x$3 = t.ext, new $Uint64(x$3.$high, x$3.$low))); + sign = 43; + if ((x$4 = t.ext, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low < 0)))) { + sign = 45; + m2 = new $Uint64(-m2.$high, -m2.$low); + } + _tmp = $div64(m2, new $Uint64(0, 1000000000), false); + _tmp$1 = $div64(m2, new $Uint64(0, 1000000000), true); + m1 = _tmp; + m2 = _tmp$1; + _tmp$2 = $div64(m1, new $Uint64(0, 1000000000), false); + _tmp$3 = $div64(m1, new $Uint64(0, 1000000000), true); + m0 = _tmp$2; + m1 = _tmp$3; + buf = $makeSlice(sliceType$4, 0, 24); + buf = $appendSlice(buf, " m="); + buf = $append(buf, sign); + wid = 0; + /* */ if (!((m0.$high === 0 && m0.$low === 0))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!((m0.$high === 0 && m0.$low === 0))) { */ case 4: + _r$2 = appendInt(buf, ((m0.$low >> 0)), 0); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + buf = _r$2; + wid = 9; + /* } */ case 5: + _r$3 = appendInt(buf, ((m1.$low >> 0)), wid); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + buf = _r$3; + buf = $append(buf, 46); + _r$4 = appendInt(buf, ((m2.$low >> 0)), 9); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + buf = _r$4; + s = s + (($bytesToString(buf))); + /* } */ case 3: + $s = -1; return s; + /* */ } return; } var $f = {$blk: String$4, $c: true, $r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, buf, m0, m1, m2, s, sign, t, wid, x$1, x$2, x$3, x$4, $s};return $f; + }; + Time.prototype.String = function(...$args) { return this.$val.String(...$args); }; + $ptrType(Time).prototype.GoString = function GoString() { + var {_1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, abs$1, buf, day, hour, loc, minute, month, second, t, x$1, year, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + abs$1 = _r$1; + _tuple = absDate(abs$1, true); + year = _tuple[0]; + month = _tuple[1]; + day = _tuple[2]; + _tuple$1 = absClock(abs$1); + hour = _tuple$1[0]; + minute = _tuple$1[1]; + second = _tuple$1[2]; + buf = $makeSlice(sliceType$4, 0, 70); + buf = $appendSlice(buf, "time.Date("); + _r$2 = appendInt(buf, year, 0); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + buf = _r$2; + /* */ if (1 <= month && month <= 12) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (1 <= month && month <= 12) { */ case 3: + buf = $appendSlice(buf, ", time."); + buf = $appendSlice(buf, (x$1 = month - 1 >> 0, ((x$1 < 0 || x$1 >= longMonthNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : longMonthNames.$array[longMonthNames.$offset + x$1]))); + $s = 5; continue; + /* } else { */ case 4: + _r$3 = appendInt(buf, ((month >> 0)), 0); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + buf = _r$3; + /* } */ case 5: + buf = $appendSlice(buf, ", "); + _r$4 = appendInt(buf, day, 0); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + buf = _r$4; + buf = $appendSlice(buf, ", "); + _r$5 = appendInt(buf, hour, 0); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + buf = _r$5; + buf = $appendSlice(buf, ", "); + _r$6 = appendInt(buf, minute, 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + buf = _r$6; + buf = $appendSlice(buf, ", "); + _r$7 = appendInt(buf, second, 0); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + buf = _r$7; + buf = $appendSlice(buf, ", "); + _r$8 = appendInt(buf, $clone(t, Time).Nanosecond(), 0); /* */ $s = 11; case 11: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + buf = _r$8; + buf = $appendSlice(buf, ", "); + loc = $clone(t, Time).Location(); + _1 = loc; + if (_1 === ($pkg.UTC) || _1 === ptrType$1.nil) { + buf = $appendSlice(buf, "time.UTC"); + } else if (_1 === ($pkg.Local)) { + buf = $appendSlice(buf, "time.Local"); + } else { + buf = $appendSlice(buf, "time.Location("); + buf = $appendSlice(buf, quote(loc.name)); + buf = $append(buf, 41); + } + buf = $append(buf, 41); + $s = -1; return ($bytesToString(buf)); + /* */ } return; } var $f = {$blk: GoString, $c: true, $r, _1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, abs$1, buf, day, hour, loc, minute, month, second, t, x$1, year, $s};return $f; + }; + Time.prototype.GoString = function(...$args) { return this.$val.GoString(...$args); }; + $ptrType(Time).prototype.Format = function Format(layout) { + var {_r$1, b, buf, layout, max, t, $s, $r, $c} = $restore(this, {layout}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + b = sliceType$4.nil; + max = layout.length + 10 >> 0; + if (max < 64) { + buf = arrayType$3.zero(); + b = $subslice(new sliceType$4(buf), 0, 0); + } else { + b = $makeSlice(sliceType$4, 0, max); + } + _r$1 = $clone(t, Time).AppendFormat(b, layout); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + b = _r$1; + $s = -1; return ($bytesToString(b)); + /* */ } return; } var $f = {$blk: Format, $c: true, $r, _r$1, b, buf, layout, max, t, $s};return $f; + }; + Time.prototype.Format = function(...$args) { return this.$val.Format(...$args); }; + $ptrType(Time).prototype.AppendFormat = function AppendFormat(b, layout) { + var {$24r, $24r$1, $24r$2, _1, _r$1, _r$2, _r$3, b, layout, t, $s, $r, $c} = $restore(this, {b, layout}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _1 = layout; + /* */ if (_1 === ("2006-01-02T15:04:05Z07:00")) { $s = 2; continue; } + /* */ if (_1 === ("2006-01-02T15:04:05.999999999Z07:00")) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_1 === ("2006-01-02T15:04:05Z07:00")) { */ case 2: + _r$1 = $clone(t, Time).appendFormatRFC3339(b, false); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 7; case 7: return $24r; + /* } else if (_1 === ("2006-01-02T15:04:05.999999999Z07:00")) { */ case 3: + _r$2 = $clone(t, Time).appendFormatRFC3339(b, true); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = _r$2; + $s = 9; case 9: return $24r$1; + /* } else { */ case 4: + _r$3 = $clone(t, Time).appendFormat(b, layout); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$2 = _r$3; + $s = 11; case 11: return $24r$2; + /* } */ case 5: + case 1: + $s = -1; return sliceType$4.nil; + /* */ } return; } var $f = {$blk: AppendFormat, $c: true, $r, $24r, $24r$1, $24r$2, _1, _r$1, _r$2, _r$3, b, layout, t, $s};return $f; + }; + Time.prototype.AppendFormat = function(...$args) { return this.$val.AppendFormat(...$args); }; + $ptrType(Time).prototype.appendFormat = function appendFormat(b, layout) { + var {_1, _q, _q$1, _q$2, _q$3, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, abs$1, absoffset, b, day, hour, hr, hr$1, layout, m, min, month, name, offset, prefix, s, sec$1, std, suffix, t, y, yday, year, zone$1, zone$2, $s, $r, $c} = $restore(this, {b, layout}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = $clone(t, Time).locabs(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + name = _tuple[0]; + offset = _tuple[1]; + abs$1 = _tuple[2]; + year = -1; + month = 0; + day = 0; + yday = 0; + hour = -1; + min = 0; + sec$1 = 0; + /* while (true) { */ case 2: + /* if (!(!(layout === ""))) { break; } */ if(!(!(layout === ""))) { $s = 3; continue; } + _tuple$1 = nextStdChunk(layout); + prefix = _tuple$1[0]; + std = _tuple$1[1]; + suffix = _tuple$1[2]; + if (!(prefix === "")) { + b = $appendSlice(b, prefix); + } + if (std === 0) { + /* break; */ $s = 3; continue; + } + layout = suffix; + if (year < 0 && !(((std & 256) === 0))) { + _tuple$2 = absDate(abs$1, true); + year = _tuple$2[0]; + month = _tuple$2[1]; + day = _tuple$2[2]; + yday = _tuple$2[3]; + yday = yday + (1) >> 0; + } + if (hour < 0 && !(((std & 512) === 0))) { + _tuple$3 = absClock(abs$1); + hour = _tuple$3[0]; + min = _tuple$3[1]; + sec$1 = _tuple$3[2]; + } + _1 = std & 65535; + /* */ if (_1 === (276)) { $s = 5; continue; } + /* */ if (_1 === (275)) { $s = 6; continue; } + /* */ if (_1 === (258)) { $s = 7; continue; } + /* */ if (_1 === (257)) { $s = 8; continue; } + /* */ if (_1 === (259)) { $s = 9; continue; } + /* */ if (_1 === (260)) { $s = 10; continue; } + /* */ if (_1 === (262)) { $s = 11; continue; } + /* */ if (_1 === (261)) { $s = 12; continue; } + /* */ if (_1 === (263)) { $s = 13; continue; } + /* */ if (_1 === (264)) { $s = 14; continue; } + /* */ if (_1 === (265)) { $s = 15; continue; } + /* */ if (_1 === (266)) { $s = 16; continue; } + /* */ if (_1 === (267)) { $s = 17; continue; } + /* */ if (_1 === (524)) { $s = 18; continue; } + /* */ if (_1 === (525)) { $s = 19; continue; } + /* */ if (_1 === (526)) { $s = 20; continue; } + /* */ if (_1 === (527)) { $s = 21; continue; } + /* */ if (_1 === (528)) { $s = 22; continue; } + /* */ if (_1 === (529)) { $s = 23; continue; } + /* */ if (_1 === (530)) { $s = 24; continue; } + /* */ if (_1 === (533)) { $s = 25; continue; } + /* */ if (_1 === (534)) { $s = 26; continue; } + /* */ if ((_1 === (24)) || (_1 === (27)) || (_1 === (25)) || (_1 === (26)) || (_1 === (28)) || (_1 === (29)) || (_1 === (32)) || (_1 === (30)) || (_1 === (31)) || (_1 === (33))) { $s = 27; continue; } + /* */ if (_1 === (23)) { $s = 28; continue; } + /* */ if ((_1 === (34)) || (_1 === (35))) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (_1 === (276)) { */ case 5: + y = year; + if (y < 0) { + y = -y; + } + _r$3 = appendInt(b, (_r$2 = y % 100, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")), 2); /* */ $s = 31; case 31: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + b = _r$3; + $s = 30; continue; + /* } else if (_1 === (275)) { */ case 6: + _r$4 = appendInt(b, year, 4); /* */ $s = 32; case 32: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + b = _r$4; + $s = 30; continue; + /* } else if (_1 === (258)) { */ case 7: + b = $appendSlice(b, $substring(new Month(month).String(), 0, 3)); + $s = 30; continue; + /* } else if (_1 === (257)) { */ case 8: + m = new Month(month).String(); + b = $appendSlice(b, m); + $s = 30; continue; + /* } else if (_1 === (259)) { */ case 9: + _r$5 = appendInt(b, ((month >> 0)), 0); /* */ $s = 33; case 33: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + b = _r$5; + $s = 30; continue; + /* } else if (_1 === (260)) { */ case 10: + _r$6 = appendInt(b, ((month >> 0)), 2); /* */ $s = 34; case 34: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + b = _r$6; + $s = 30; continue; + /* } else if (_1 === (262)) { */ case 11: + b = $appendSlice(b, $substring(new Weekday(absWeekday(abs$1)).String(), 0, 3)); + $s = 30; continue; + /* } else if (_1 === (261)) { */ case 12: + s = new Weekday(absWeekday(abs$1)).String(); + b = $appendSlice(b, s); + $s = 30; continue; + /* } else if (_1 === (263)) { */ case 13: + _r$7 = appendInt(b, day, 0); /* */ $s = 35; case 35: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + b = _r$7; + $s = 30; continue; + /* } else if (_1 === (264)) { */ case 14: + if (day < 10) { + b = $append(b, 32); + } + _r$8 = appendInt(b, day, 0); /* */ $s = 36; case 36: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + b = _r$8; + $s = 30; continue; + /* } else if (_1 === (265)) { */ case 15: + _r$9 = appendInt(b, day, 2); /* */ $s = 37; case 37: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + b = _r$9; + $s = 30; continue; + /* } else if (_1 === (266)) { */ case 16: + if (yday < 100) { + b = $append(b, 32); + if (yday < 10) { + b = $append(b, 32); + } + } + _r$10 = appendInt(b, yday, 0); /* */ $s = 38; case 38: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + b = _r$10; + $s = 30; continue; + /* } else if (_1 === (267)) { */ case 17: + _r$11 = appendInt(b, yday, 3); /* */ $s = 39; case 39: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + b = _r$11; + $s = 30; continue; + /* } else if (_1 === (524)) { */ case 18: + _r$12 = appendInt(b, hour, 2); /* */ $s = 40; case 40: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + b = _r$12; + $s = 30; continue; + /* } else if (_1 === (525)) { */ case 19: + hr = (_r$13 = hour % 12, _r$13 === _r$13 ? _r$13 : $throwRuntimeError("integer divide by zero")); + if (hr === 0) { + hr = 12; + } + _r$14 = appendInt(b, hr, 0); /* */ $s = 41; case 41: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + b = _r$14; + $s = 30; continue; + /* } else if (_1 === (526)) { */ case 20: + hr$1 = (_r$15 = hour % 12, _r$15 === _r$15 ? _r$15 : $throwRuntimeError("integer divide by zero")); + if (hr$1 === 0) { + hr$1 = 12; + } + _r$16 = appendInt(b, hr$1, 2); /* */ $s = 42; case 42: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + b = _r$16; + $s = 30; continue; + /* } else if (_1 === (527)) { */ case 21: + _r$17 = appendInt(b, min, 0); /* */ $s = 43; case 43: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + b = _r$17; + $s = 30; continue; + /* } else if (_1 === (528)) { */ case 22: + _r$18 = appendInt(b, min, 2); /* */ $s = 44; case 44: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + b = _r$18; + $s = 30; continue; + /* } else if (_1 === (529)) { */ case 23: + _r$19 = appendInt(b, sec$1, 0); /* */ $s = 45; case 45: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + b = _r$19; + $s = 30; continue; + /* } else if (_1 === (530)) { */ case 24: + _r$20 = appendInt(b, sec$1, 2); /* */ $s = 46; case 46: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + b = _r$20; + $s = 30; continue; + /* } else if (_1 === (533)) { */ case 25: + if (hour >= 12) { + b = $appendSlice(b, "PM"); + } else { + b = $appendSlice(b, "AM"); + } + $s = 30; continue; + /* } else if (_1 === (534)) { */ case 26: + if (hour >= 12) { + b = $appendSlice(b, "pm"); + } else { + b = $appendSlice(b, "am"); + } + $s = 30; continue; + /* } else if ((_1 === (24)) || (_1 === (27)) || (_1 === (25)) || (_1 === (26)) || (_1 === (28)) || (_1 === (29)) || (_1 === (32)) || (_1 === (30)) || (_1 === (31)) || (_1 === (33))) { */ case 27: + if ((offset === 0) && ((std === 24) || (std === 27) || (std === 25) || (std === 26) || (std === 28))) { + b = $append(b, 90); + /* break; */ $s = 4; continue; + } + zone$1 = (_q = offset / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + absoffset = offset; + if (zone$1 < 0) { + b = $append(b, 45); + zone$1 = -zone$1; + absoffset = -absoffset; + } else { + b = $append(b, 43); + } + _r$21 = appendInt(b, (_q$1 = zone$1 / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 2); /* */ $s = 47; case 47: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + b = _r$21; + if ((std === 27) || (std === 32) || (std === 28) || (std === 33)) { + b = $append(b, 58); + } + /* */ if (!((std === 31)) && !((std === 26))) { $s = 48; continue; } + /* */ $s = 49; continue; + /* if (!((std === 31)) && !((std === 26))) { */ case 48: + _r$23 = appendInt(b, (_r$22 = zone$1 % 60, _r$22 === _r$22 ? _r$22 : $throwRuntimeError("integer divide by zero")), 2); /* */ $s = 50; case 50: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + b = _r$23; + /* } */ case 49: + /* */ if ((std === 25) || (std === 30) || (std === 33) || (std === 28)) { $s = 51; continue; } + /* */ $s = 52; continue; + /* if ((std === 25) || (std === 30) || (std === 33) || (std === 28)) { */ case 51: + if ((std === 33) || (std === 28)) { + b = $append(b, 58); + } + _r$25 = appendInt(b, (_r$24 = absoffset % 60, _r$24 === _r$24 ? _r$24 : $throwRuntimeError("integer divide by zero")), 2); /* */ $s = 53; case 53: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + b = _r$25; + /* } */ case 52: + $s = 30; continue; + /* } else if (_1 === (23)) { */ case 28: + if (!(name === "")) { + b = $appendSlice(b, name); + /* break; */ $s = 4; continue; + } + zone$2 = (_q$2 = offset / 60, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")); + if (zone$2 < 0) { + b = $append(b, 45); + zone$2 = -zone$2; + } else { + b = $append(b, 43); + } + _r$26 = appendInt(b, (_q$3 = zone$2 / 60, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")), 2); /* */ $s = 54; case 54: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + b = _r$26; + _r$28 = appendInt(b, (_r$27 = zone$2 % 60, _r$27 === _r$27 ? _r$27 : $throwRuntimeError("integer divide by zero")), 2); /* */ $s = 55; case 55: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + b = _r$28; + $s = 30; continue; + /* } else if ((_1 === (34)) || (_1 === (35))) { */ case 29: + _r$29 = appendNano(b, $clone(t, Time).Nanosecond(), std); /* */ $s = 56; case 56: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + b = _r$29; + /* } */ case 30: + case 4: + $s = 2; continue; + case 3: + $s = -1; return b; + /* */ } return; } var $f = {$blk: appendFormat, $c: true, $r, _1, _q, _q$1, _q$2, _q$3, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, abs$1, absoffset, b, day, hour, hr, hr$1, layout, m, min, month, name, offset, prefix, s, sec$1, std, suffix, t, y, yday, year, zone$1, zone$2, $s};return $f; + }; + Time.prototype.appendFormat = function(...$args) { return this.$val.appendFormat(...$args); }; + newParseError = function newParseError$1(layout, value, layoutElem, valueElem, message) { + var layout, layoutElem, message, value, valueCopy, valueElem, valueElemCopy; + valueCopy = cloneString(value); + valueElemCopy = cloneString(valueElem); + return new ParseError.ptr(layout, valueCopy, layoutElem, valueElemCopy, message); + }; + cloneString = function cloneString$1(s) { + var s; + return ($bytesToString((new sliceType$4($stringToBytes(s))))); + }; + quote = function quote$1(s) { + var _i, _ref, _rune, buf, c, i, j, s, width; + buf = $makeSlice(sliceType$4, 1, (s.length + 2 >> 0)); + (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = 34); + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + c = _rune[0]; + if (c >= 128 || c < 32) { + width = 0; + if (c === 65533) { + width = 1; + if ((i + 2 >> 0) < s.length && $substring(s, i, (i + 3 >> 0)) === "\xEF\xBF\xBD") { + width = 3; + } + } else { + width = ($encodeRune(c)).length; + } + j = 0; + while (true) { + if (!(j < width)) { break; } + buf = $appendSlice(buf, "\\x"); + buf = $append(buf, "0123456789abcdef".charCodeAt((s.charCodeAt((i + j >> 0)) >>> 4 << 24 >>> 24))); + buf = $append(buf, "0123456789abcdef".charCodeAt(((s.charCodeAt((i + j >> 0)) & 15) >>> 0))); + j = j + (1) >> 0; + } + } else { + if ((c === 34) || (c === 92)) { + buf = $append(buf, 92); + } + buf = $appendSlice(buf, ($encodeRune(c))); + } + _i += _rune[1]; + } + buf = $append(buf, 34); + return ($bytesToString(buf)); + }; + $ptrType(ParseError).prototype.Error = function Error$1() { + var e; + e = this; + if (e.Message === "") { + return "parsing time " + quote(e.Value) + " as " + quote(e.Layout) + ": cannot parse " + quote(e.ValueElem) + " as " + quote(e.LayoutElem); + } + return "parsing time " + quote(e.Value) + e.Message; + }; + isDigit[1 /* string */] = function isDigit$1(s, i) { + var c, i, s; + if (s.length <= i) { + return false; + } + c = s.charCodeAt(i); + return 48 <= c && c <= 57; + }; + isDigit[6 /* []byte */] = function isDigit$2(s, i) { + var c, i, s; + if (s.$length <= i) { + return false; + } + c = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]); + return 48 <= c && c <= 57; + }; + getnum = function getnum$1(s, fixed) { + var fixed, s; + if (!isDigit[1 /* string */](s, 0)) { + return [0, s, errBad]; + } + if (!isDigit[1 /* string */](s, 1)) { + if (fixed) { + return [0, s, errBad]; + } + return [(((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0)), $substring(s, 1), $ifaceNil]; + } + return [($imul((((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0)), 10)) + (((s.charCodeAt(1) - 48 << 24 >>> 24) >> 0)) >> 0, $substring(s, 2), $ifaceNil]; + }; + getnum3 = function getnum3$1(s, fixed) { + var _tmp, _tmp$1, fixed, i, n, s; + _tmp = 0; + _tmp$1 = 0; + n = _tmp; + i = _tmp$1; + i = 0; + while (true) { + if (!(i < 3 && isDigit[1 /* string */](s, i))) { break; } + n = ($imul(n, 10)) + (((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0)) >> 0; + i = i + (1) >> 0; + } + if ((i === 0) || fixed && !((i === 3))) { + return [0, s, errBad]; + } + return [n, $substring(s, i), $ifaceNil]; + }; + cutspace = function cutspace$1(s) { + var s; + while (true) { + if (!(s.length > 0 && (s.charCodeAt(0) === 32))) { break; } + s = $substring(s, 1); + } + return s; + }; + skip = function skip$1(value, prefix) { + var prefix, value; + while (true) { + if (!(prefix.length > 0)) { break; } + if (prefix.charCodeAt(0) === 32) { + if (value.length > 0 && !((value.charCodeAt(0) === 32))) { + return [value, errBad]; + } + prefix = cutspace(prefix); + value = cutspace(value); + continue; + } + if ((value.length === 0) || !((value.charCodeAt(0) === prefix.charCodeAt(0)))) { + return [value, errBad]; + } + prefix = $substring(prefix, 1); + value = $substring(value, 1); + } + return [value, $ifaceNil]; + }; + Parse = function Parse$1(layout, value) { + var {$24r, _r$1, _r$2, _tuple, layout, ok, t, value, $s, $r, $c} = $restore(this, {layout, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (layout === "2006-01-02T15:04:05Z07:00" || layout === "2006-01-02T15:04:05.999999999Z07:00") { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (layout === "2006-01-02T15:04:05Z07:00" || layout === "2006-01-02T15:04:05.999999999Z07:00") { */ case 1: + _r$1 = parseRFC3339[2 /* string */](value, $pkg.Local); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + t = $clone(_tuple[0], Time); + ok = _tuple[1]; + if (ok) { + $s = -1; return [t, $ifaceNil]; + } + /* } */ case 2: + _r$2 = parse(layout, value, $pkg.UTC, $pkg.Local); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: Parse$1, $c: true, $r, $24r, _r$1, _r$2, _tuple, layout, ok, t, value, $s};return $f; + }; + $pkg.Parse = Parse; + parse = function parse$1(layout, value, defaultLocation, local) { + var {$24r, $24r$1, _1, _2, _3, _4, _q, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$19, _tuple$2, _tuple$20, _tuple$21, _tuple$22, _tuple$23, _tuple$24, _tuple$25, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, alayout, amSet, avalue, d, day, defaultLocation, err, hold, hour, hour$1, hr, i, i$1, layout, local, m, min, min$1, mm, month, n, n$1, name, ndigit, nsec$1, offset, offset$1, ok, ok$1, p, pmSet, prefix, rangeErrString, sec$1, seconds, sign, ss, std, stdstr, suffix, t, t$1, value, x$1, x$2, x$3, yday, year, z, zoneName, zoneNameCopy, zoneNameCopy$1, zoneOffset, $s, $r, $c} = $restore(this, {layout, value, defaultLocation, local}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tmp = layout; + _tmp$1 = value; + alayout = _tmp; + avalue = _tmp$1; + rangeErrString = ""; + amSet = false; + pmSet = false; + year = 0; + month = -1; + day = -1; + yday = -1; + hour = 0; + min = 0; + sec$1 = 0; + nsec$1 = 0; + z = ptrType$1.nil; + zoneOffset = -1; + zoneName = ""; + while (true) { + err = $ifaceNil; + _tuple = nextStdChunk(layout); + prefix = _tuple[0]; + std = _tuple[1]; + suffix = _tuple[2]; + stdstr = $substring(layout, prefix.length, (layout.length - suffix.length >> 0)); + _tuple$1 = skip(value, prefix); + value = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), newParseError(alayout, avalue, prefix, value, "")]; + } + if (std === 0) { + if (!((value.length === 0))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), newParseError(alayout, avalue, "", value, ": extra text: " + quote(value))]; + } + break; + } + layout = suffix; + p = ""; + hold = value; + switch (0) { default: + _1 = std & 65535; + if (_1 === (276)) { + if (value.length < 2) { + err = errBad; + break; + } + _tmp$2 = $substring(value, 0, 2); + _tmp$3 = $substring(value, 2); + p = _tmp$2; + value = _tmp$3; + _tuple$2 = atoi[3 /* string */](p); + year = _tuple$2[0]; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + break; + } + if (year >= 69) { + year = year + (1900) >> 0; + } else { + year = year + (2000) >> 0; + } + } else if (_1 === (275)) { + if (value.length < 4 || !isDigit[1 /* string */](value, 0)) { + err = errBad; + break; + } + _tmp$4 = $substring(value, 0, 4); + _tmp$5 = $substring(value, 4); + p = _tmp$4; + value = _tmp$5; + _tuple$3 = atoi[3 /* string */](p); + year = _tuple$3[0]; + err = _tuple$3[1]; + } else if (_1 === (258)) { + _tuple$4 = lookup(shortMonthNames, value); + month = _tuple$4[0]; + value = _tuple$4[1]; + err = _tuple$4[2]; + month = month + (1) >> 0; + } else if (_1 === (257)) { + _tuple$5 = lookup(longMonthNames, value); + month = _tuple$5[0]; + value = _tuple$5[1]; + err = _tuple$5[2]; + month = month + (1) >> 0; + } else if ((_1 === (259)) || (_1 === (260))) { + _tuple$6 = getnum(value, std === 260); + month = _tuple$6[0]; + value = _tuple$6[1]; + err = _tuple$6[2]; + if ($interfaceIsEqual(err, $ifaceNil) && (month <= 0 || 12 < month)) { + rangeErrString = "month"; + } + } else if (_1 === (262)) { + _tuple$7 = lookup(shortDayNames, value); + value = _tuple$7[1]; + err = _tuple$7[2]; + } else if (_1 === (261)) { + _tuple$8 = lookup(longDayNames, value); + value = _tuple$8[1]; + err = _tuple$8[2]; + } else if ((_1 === (263)) || (_1 === (264)) || (_1 === (265))) { + if ((std === 264) && value.length > 0 && (value.charCodeAt(0) === 32)) { + value = $substring(value, 1); + } + _tuple$9 = getnum(value, std === 265); + day = _tuple$9[0]; + value = _tuple$9[1]; + err = _tuple$9[2]; + } else if ((_1 === (266)) || (_1 === (267))) { + i = 0; + while (true) { + if (!(i < 2)) { break; } + if ((std === 266) && value.length > 0 && (value.charCodeAt(0) === 32)) { + value = $substring(value, 1); + } + i = i + (1) >> 0; + } + _tuple$10 = getnum3(value, std === 267); + yday = _tuple$10[0]; + value = _tuple$10[1]; + err = _tuple$10[2]; + } else if (_1 === (524)) { + _tuple$11 = getnum(value, false); + hour = _tuple$11[0]; + value = _tuple$11[1]; + err = _tuple$11[2]; + if (hour < 0 || 24 <= hour) { + rangeErrString = "hour"; + } + } else if ((_1 === (525)) || (_1 === (526))) { + _tuple$12 = getnum(value, std === 526); + hour = _tuple$12[0]; + value = _tuple$12[1]; + err = _tuple$12[2]; + if (hour < 0 || 12 < hour) { + rangeErrString = "hour"; + } + } else if ((_1 === (527)) || (_1 === (528))) { + _tuple$13 = getnum(value, std === 528); + min = _tuple$13[0]; + value = _tuple$13[1]; + err = _tuple$13[2]; + if (min < 0 || 60 <= min) { + rangeErrString = "minute"; + } + } else if ((_1 === (529)) || (_1 === (530))) { + _tuple$14 = getnum(value, std === 530); + sec$1 = _tuple$14[0]; + value = _tuple$14[1]; + err = _tuple$14[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + break; + } + if (sec$1 < 0 || 60 <= sec$1) { + rangeErrString = "second"; + break; + } + if (value.length >= 2 && commaOrPeriod(value.charCodeAt(0)) && isDigit[1 /* string */](value, 1)) { + _tuple$15 = nextStdChunk(layout); + std = _tuple$15[1]; + std = std & (65535); + if ((std === 34) || (std === 35)) { + break; + } + n = 2; + while (true) { + if (!(n < value.length && isDigit[1 /* string */](value, n))) { break; } + n = n + (1) >> 0; + } + _tuple$16 = parseNanoseconds[4 /* string */](value, n); + nsec$1 = _tuple$16[0]; + rangeErrString = _tuple$16[1]; + err = _tuple$16[2]; + value = $substring(value, n); + } + } else if (_1 === (533)) { + if (value.length < 2) { + err = errBad; + break; + } + _tmp$6 = $substring(value, 0, 2); + _tmp$7 = $substring(value, 2); + p = _tmp$6; + value = _tmp$7; + _2 = p; + if (_2 === ("PM")) { + pmSet = true; + } else if (_2 === ("AM")) { + amSet = true; + } else { + err = errBad; + } + } else if (_1 === (534)) { + if (value.length < 2) { + err = errBad; + break; + } + _tmp$8 = $substring(value, 0, 2); + _tmp$9 = $substring(value, 2); + p = _tmp$8; + value = _tmp$9; + _3 = p; + if (_3 === ("pm")) { + pmSet = true; + } else if (_3 === ("am")) { + amSet = true; + } else { + err = errBad; + } + } else if ((_1 === (24)) || (_1 === (27)) || (_1 === (25)) || (_1 === (26)) || (_1 === (28)) || (_1 === (29)) || (_1 === (31)) || (_1 === (32)) || (_1 === (30)) || (_1 === (33))) { + if (((std === 24) || (std === 26) || (std === 27)) && value.length >= 1 && (value.charCodeAt(0) === 90)) { + value = $substring(value, 1); + z = $pkg.UTC; + break; + } + _tmp$10 = ""; + _tmp$11 = ""; + _tmp$12 = ""; + _tmp$13 = ""; + sign = _tmp$10; + hour$1 = _tmp$11; + min$1 = _tmp$12; + seconds = _tmp$13; + if ((std === 27) || (std === 32)) { + if (value.length < 6) { + err = errBad; + break; + } + if (!((value.charCodeAt(3) === 58))) { + err = errBad; + break; + } + _tmp$14 = $substring(value, 0, 1); + _tmp$15 = $substring(value, 1, 3); + _tmp$16 = $substring(value, 4, 6); + _tmp$17 = "00"; + _tmp$18 = $substring(value, 6); + sign = _tmp$14; + hour$1 = _tmp$15; + min$1 = _tmp$16; + seconds = _tmp$17; + value = _tmp$18; + } else if ((std === 31) || (std === 26)) { + if (value.length < 3) { + err = errBad; + break; + } + _tmp$19 = $substring(value, 0, 1); + _tmp$20 = $substring(value, 1, 3); + _tmp$21 = "00"; + _tmp$22 = "00"; + _tmp$23 = $substring(value, 3); + sign = _tmp$19; + hour$1 = _tmp$20; + min$1 = _tmp$21; + seconds = _tmp$22; + value = _tmp$23; + } else if ((std === 28) || (std === 33)) { + if (value.length < 9) { + err = errBad; + break; + } + if (!((value.charCodeAt(3) === 58)) || !((value.charCodeAt(6) === 58))) { + err = errBad; + break; + } + _tmp$24 = $substring(value, 0, 1); + _tmp$25 = $substring(value, 1, 3); + _tmp$26 = $substring(value, 4, 6); + _tmp$27 = $substring(value, 7, 9); + _tmp$28 = $substring(value, 9); + sign = _tmp$24; + hour$1 = _tmp$25; + min$1 = _tmp$26; + seconds = _tmp$27; + value = _tmp$28; + } else if ((std === 25) || (std === 30)) { + if (value.length < 7) { + err = errBad; + break; + } + _tmp$29 = $substring(value, 0, 1); + _tmp$30 = $substring(value, 1, 3); + _tmp$31 = $substring(value, 3, 5); + _tmp$32 = $substring(value, 5, 7); + _tmp$33 = $substring(value, 7); + sign = _tmp$29; + hour$1 = _tmp$30; + min$1 = _tmp$31; + seconds = _tmp$32; + value = _tmp$33; + } else { + if (value.length < 5) { + err = errBad; + break; + } + _tmp$34 = $substring(value, 0, 1); + _tmp$35 = $substring(value, 1, 3); + _tmp$36 = $substring(value, 3, 5); + _tmp$37 = "00"; + _tmp$38 = $substring(value, 5); + sign = _tmp$34; + hour$1 = _tmp$35; + min$1 = _tmp$36; + seconds = _tmp$37; + value = _tmp$38; + } + _tmp$39 = 0; + _tmp$40 = 0; + _tmp$41 = 0; + hr = _tmp$39; + mm = _tmp$40; + ss = _tmp$41; + _tuple$17 = getnum(hour$1, true); + hr = _tuple$17[0]; + err = _tuple$17[2]; + if ($interfaceIsEqual(err, $ifaceNil)) { + _tuple$18 = getnum(min$1, true); + mm = _tuple$18[0]; + err = _tuple$18[2]; + } + if ($interfaceIsEqual(err, $ifaceNil)) { + _tuple$19 = getnum(seconds, true); + ss = _tuple$19[0]; + err = _tuple$19[2]; + } + zoneOffset = ($imul(((($imul(hr, 60)) + mm >> 0)), 60)) + ss >> 0; + _4 = sign.charCodeAt(0); + if (_4 === (43)) { + } else if (_4 === (45)) { + zoneOffset = -zoneOffset; + } else { + err = errBad; + } + } else if (_1 === (23)) { + if (value.length >= 3 && $substring(value, 0, 3) === "UTC") { + z = $pkg.UTC; + value = $substring(value, 3); + break; + } + _tuple$20 = parseTimeZone(value); + n$1 = _tuple$20[0]; + ok = _tuple$20[1]; + if (!ok) { + err = errBad; + break; + } + _tmp$42 = $substring(value, 0, n$1); + _tmp$43 = $substring(value, n$1); + zoneName = _tmp$42; + value = _tmp$43; + } else if (_1 === (34)) { + ndigit = 1 + digitsLen(std) >> 0; + if (value.length < ndigit) { + err = errBad; + break; + } + _tuple$21 = parseNanoseconds[4 /* string */](value, ndigit); + nsec$1 = _tuple$21[0]; + rangeErrString = _tuple$21[1]; + err = _tuple$21[2]; + value = $substring(value, ndigit); + } else if (_1 === (35)) { + if (value.length < 2 || !commaOrPeriod(value.charCodeAt(0)) || value.charCodeAt(1) < 48 || 57 < value.charCodeAt(1)) { + break; + } + i$1 = 0; + while (true) { + if (!((i$1 + 1 >> 0) < value.length && 48 <= value.charCodeAt((i$1 + 1 >> 0)) && value.charCodeAt((i$1 + 1 >> 0)) <= 57)) { break; } + i$1 = i$1 + (1) >> 0; + } + _tuple$22 = parseNanoseconds[4 /* string */](value, 1 + i$1 >> 0); + nsec$1 = _tuple$22[0]; + rangeErrString = _tuple$22[1]; + err = _tuple$22[2]; + value = $substring(value, (1 + i$1 >> 0)); + } + } + if (!(rangeErrString === "")) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), newParseError(alayout, avalue, stdstr, value, ": " + rangeErrString + " out of range")]; + } + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), newParseError(alayout, avalue, stdstr, hold, "")]; + } + } + if (pmSet && hour < 12) { + hour = hour + (12) >> 0; + } else if (amSet && (hour === 12)) { + hour = 0; + } + if (yday >= 0) { + d = 0; + m = 0; + if (isLeap(year)) { + if (yday === 60) { + m = 2; + d = 29; + } else if (yday > 60) { + yday = yday - (1) >> 0; + } + } + if (yday < 1 || yday > 365) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), newParseError(alayout, avalue, "", value, ": day-of-year out of range")]; + } + if (m === 0) { + m = (_q = ((yday - 1 >> 0)) / 31, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0; + if (((((m < 0 || m >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[m]) >> 0)) < yday) { + m = m + (1) >> 0; + } + d = yday - (((x$1 = m - 1 >> 0, ((x$1 < 0 || x$1 >= daysBefore.length) ? ($throwRuntimeError("index out of range"), undefined) : daysBefore[x$1])) >> 0)) >> 0; + } + if (month >= 0 && !((month === m))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), newParseError(alayout, avalue, "", value, ": day-of-year does not match month")]; + } + month = m; + if (day >= 0 && !((day === d))) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), newParseError(alayout, avalue, "", value, ": day-of-year does not match day")]; + } + day = d; + } else { + if (month < 0) { + month = 1; + } + if (day < 0) { + day = 1; + } + } + if (day < 1 || day > daysIn(((month >> 0)), year)) { + $s = -1; return [new Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), newParseError(alayout, avalue, "", value, ": day out of range")]; + } + /* */ if (!(z === ptrType$1.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(z === ptrType$1.nil)) { */ case 1: + _r$1 = Date(year, ((month >> 0)), day, hour, min, sec$1, nsec$1, z); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = [_r$1, $ifaceNil]; + $s = 4; case 4: return $24r; + /* } */ case 2: + /* */ if (!((zoneOffset === -1))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((zoneOffset === -1))) { */ case 5: + _r$2 = Date(year, ((month >> 0)), day, hour, min, sec$1, nsec$1, $pkg.UTC); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + t = $clone(_r$2, Time); + t.addSec((x$2 = (new $Int64(0, zoneOffset)), new $Int64(-x$2.$high, -x$2.$low))); + _r$3 = local.lookup(t.unixSec()); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$23 = _r$3; + name = _tuple$23[0]; + offset = _tuple$23[1]; + if ((offset === zoneOffset) && (zoneName === "" || name === zoneName)) { + t.setLoc(local); + $s = -1; return [t, $ifaceNil]; + } + zoneNameCopy = cloneString(zoneName); + _r$4 = FixedZone(zoneNameCopy, zoneOffset); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $r = t.setLoc(_r$4); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [t, $ifaceNil]; + /* } */ case 6: + /* */ if (!(zoneName === "")) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!(zoneName === "")) { */ case 11: + _r$5 = Date(year, ((month >> 0)), day, hour, min, sec$1, nsec$1, $pkg.UTC); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + t$1 = $clone(_r$5, Time); + _r$6 = local.lookupName(zoneName, t$1.unixSec()); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$24 = _r$6; + offset$1 = _tuple$24[0]; + ok$1 = _tuple$24[1]; + if (ok$1) { + t$1.addSec((x$3 = (new $Int64(0, offset$1)), new $Int64(-x$3.$high, -x$3.$low))); + t$1.setLoc(local); + $s = -1; return [t$1, $ifaceNil]; + } + if (zoneName.length > 3 && $substring(zoneName, 0, 3) === "GMT") { + _tuple$25 = atoi[3 /* string */]($substring(zoneName, 3)); + offset$1 = _tuple$25[0]; + offset$1 = $imul(offset$1, (3600)); + } + zoneNameCopy$1 = cloneString(zoneName); + _r$7 = FixedZone(zoneNameCopy$1, offset$1); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $r = t$1.setLoc(_r$7); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [t$1, $ifaceNil]; + /* } */ case 12: + _r$8 = Date(year, ((month >> 0)), day, hour, min, sec$1, nsec$1, defaultLocation); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $24r$1 = [_r$8, $ifaceNil]; + $s = 18; case 18: return $24r$1; + /* */ } return; } var $f = {$blk: parse$1, $c: true, $r, $24r, $24r$1, _1, _2, _3, _4, _q, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$19, _tuple$2, _tuple$20, _tuple$21, _tuple$22, _tuple$23, _tuple$24, _tuple$25, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, alayout, amSet, avalue, d, day, defaultLocation, err, hold, hour, hour$1, hr, i, i$1, layout, local, m, min, min$1, mm, month, n, n$1, name, ndigit, nsec$1, offset, offset$1, ok, ok$1, p, pmSet, prefix, rangeErrString, sec$1, seconds, sign, ss, std, stdstr, suffix, t, t$1, value, x$1, x$2, x$3, yday, year, z, zoneName, zoneNameCopy, zoneNameCopy$1, zoneOffset, $s};return $f; + }; + parseTimeZone = function parseTimeZone$1(value) { + var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, length, nUpper, ok, ok$1, value; + length = 0; + ok = false; + if (value.length < 3) { + _tmp = 0; + _tmp$1 = false; + length = _tmp; + ok = _tmp$1; + return [length, ok]; + } + if (value.length >= 4 && ($substring(value, 0, 4) === "ChST" || $substring(value, 0, 4) === "MeST")) { + _tmp$2 = 4; + _tmp$3 = true; + length = _tmp$2; + ok = _tmp$3; + return [length, ok]; + } + if ($substring(value, 0, 3) === "GMT") { + length = parseGMT(value); + _tmp$4 = length; + _tmp$5 = true; + length = _tmp$4; + ok = _tmp$5; + return [length, ok]; + } + if ((value.charCodeAt(0) === 43) || (value.charCodeAt(0) === 45)) { + length = parseSignedOffset(value); + ok$1 = length > 0; + _tmp$6 = length; + _tmp$7 = ok$1; + length = _tmp$6; + ok = _tmp$7; + return [length, ok]; + } + nUpper = 0; + nUpper = 0; + while (true) { + if (!(nUpper < 6)) { break; } + if (nUpper >= value.length) { + break; + } + c = value.charCodeAt(nUpper); + if (c < 65 || 90 < c) { + break; + } + nUpper = nUpper + (1) >> 0; + } + _1 = nUpper; + if ((_1 === (0)) || (_1 === (1)) || (_1 === (2)) || (_1 === (6))) { + _tmp$8 = 0; + _tmp$9 = false; + length = _tmp$8; + ok = _tmp$9; + return [length, ok]; + } else if (_1 === (5)) { + if (value.charCodeAt(4) === 84) { + _tmp$10 = 5; + _tmp$11 = true; + length = _tmp$10; + ok = _tmp$11; + return [length, ok]; + } + } else if (_1 === (4)) { + if ((value.charCodeAt(3) === 84) || $substring(value, 0, 4) === "WITA") { + _tmp$12 = 4; + _tmp$13 = true; + length = _tmp$12; + ok = _tmp$13; + return [length, ok]; + } + } else if (_1 === (3)) { + _tmp$14 = 3; + _tmp$15 = true; + length = _tmp$14; + ok = _tmp$15; + return [length, ok]; + } + _tmp$16 = 0; + _tmp$17 = false; + length = _tmp$16; + ok = _tmp$17; + return [length, ok]; + }; + parseGMT = function parseGMT$1(value) { + var value; + value = $substring(value, 3); + if (value.length === 0) { + return 3; + } + return 3 + parseSignedOffset(value) >> 0; + }; + parseSignedOffset = function parseSignedOffset$1(value) { + var _tuple, err, rem, sign, value, x$1; + sign = value.charCodeAt(0); + if (!((sign === 45)) && !((sign === 43))) { + return 0; + } + _tuple = leadingInt[5 /* string */]($substring(value, 1)); + x$1 = _tuple[0]; + rem = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil)) || $substring(value, 1) === rem) { + return 0; + } + if ((x$1.$high > 0 || (x$1.$high === 0 && x$1.$low > 23))) { + return 0; + } + return value.length - rem.length >> 0; + }; + commaOrPeriod = function commaOrPeriod$1(b) { + var b; + return (b === 46) || (b === 44); + }; + parseNanoseconds[4 /* string */] = function parseNanoseconds$1(value, nbytes) { + var _tuple, err, i, nbytes, ns, rangeErrString, scaleDigits, value; + ns = 0; + rangeErrString = ""; + err = $ifaceNil; + if (!commaOrPeriod(value.charCodeAt(0))) { + err = errBad; + return [ns, rangeErrString, err]; + } + if (nbytes > 10) { + value = $substring(value, 0, 10); + nbytes = 10; + } + _tuple = atoi[3 /* string */]($substring(value, 1, nbytes)); + ns = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [ns, rangeErrString, err]; + } + if (ns < 0) { + rangeErrString = "fractional second"; + return [ns, rangeErrString, err]; + } + scaleDigits = 10 - nbytes >> 0; + i = 0; + while (true) { + if (!(i < scaleDigits)) { break; } + ns = $imul(ns, (10)); + i = i + (1) >> 0; + } + return [ns, rangeErrString, err]; + }; + parseNanoseconds[7 /* []byte */] = function parseNanoseconds$2(value, nbytes) { + var _tuple, err, i, nbytes, ns, rangeErrString, scaleDigits, value; + ns = 0; + rangeErrString = ""; + err = $ifaceNil; + if (!commaOrPeriod((0 >= value.$length ? ($throwRuntimeError("index out of range"), undefined) : value.$array[value.$offset + 0]))) { + err = errBad; + return [ns, rangeErrString, err]; + } + if (nbytes > 10) { + value = $subslice(value, 0, 10); + nbytes = 10; + } + _tuple = atoi[8 /* []byte */]($subslice(value, 1, nbytes)); + ns = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [ns, rangeErrString, err]; + } + if (ns < 0) { + rangeErrString = "fractional second"; + return [ns, rangeErrString, err]; + } + scaleDigits = 10 - nbytes >> 0; + i = 0; + while (true) { + if (!(i < scaleDigits)) { break; } + ns = $imul(ns, (10)); + i = i + (1) >> 0; + } + return [ns, rangeErrString, err]; + }; + leadingInt[5 /* string */] = function leadingInt$1(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, c, err, i, rem, s, x$1, x$2, x$3, x$4; + x$1 = new $Uint64(0, 0); + rem = ""; + err = $ifaceNil; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + c = s.charCodeAt(i); + if (c < 48 || c > 57) { + break; + } + if ((x$1.$high > 214748364 || (x$1.$high === 214748364 && x$1.$low > 3435973836))) { + _tmp = new $Uint64(0, 0); + _tmp$1 = rem; + _tmp$2 = errLeadingInt; + x$1 = _tmp; + rem = _tmp$1; + err = _tmp$2; + return [x$1, rem, err]; + } + x$1 = (x$2 = (x$3 = $mul64(x$1, new $Uint64(0, 10)), x$4 = (new $Uint64(0, c)), new $Uint64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)), new $Uint64(x$2.$high - 0, x$2.$low - 48)); + if ((x$1.$high > 2147483648 || (x$1.$high === 2147483648 && x$1.$low > 0))) { + _tmp$3 = new $Uint64(0, 0); + _tmp$4 = rem; + _tmp$5 = errLeadingInt; + x$1 = _tmp$3; + rem = _tmp$4; + err = _tmp$5; + return [x$1, rem, err]; + } + i = i + (1) >> 0; + } + _tmp$6 = x$1; + _tmp$7 = $substring(s, i); + _tmp$8 = $ifaceNil; + x$1 = _tmp$6; + rem = _tmp$7; + err = _tmp$8; + return [x$1, rem, err]; + }; + leadingInt[9 /* []byte */] = function leadingInt$2(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, c, err, i, rem, s, x$1, x$2, x$3, x$4; + x$1 = new $Uint64(0, 0); + rem = sliceType$4.nil; + err = $ifaceNil; + i = 0; + while (true) { + if (!(i < s.$length)) { break; } + c = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]); + if (c < 48 || c > 57) { + break; + } + if ((x$1.$high > 214748364 || (x$1.$high === 214748364 && x$1.$low > 3435973836))) { + _tmp = new $Uint64(0, 0); + _tmp$1 = rem; + _tmp$2 = errLeadingInt; + x$1 = _tmp; + rem = _tmp$1; + err = _tmp$2; + return [x$1, rem, err]; + } + x$1 = (x$2 = (x$3 = $mul64(x$1, new $Uint64(0, 10)), x$4 = (new $Uint64(0, c)), new $Uint64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)), new $Uint64(x$2.$high - 0, x$2.$low - 48)); + if ((x$1.$high > 2147483648 || (x$1.$high === 2147483648 && x$1.$low > 0))) { + _tmp$3 = new $Uint64(0, 0); + _tmp$4 = rem; + _tmp$5 = errLeadingInt; + x$1 = _tmp$3; + rem = _tmp$4; + err = _tmp$5; + return [x$1, rem, err]; + } + i = i + (1) >> 0; + } + _tmp$6 = x$1; + _tmp$7 = $subslice(s, i); + _tmp$8 = $ifaceNil; + x$1 = _tmp$6; + rem = _tmp$7; + err = _tmp$8; + return [x$1, rem, err]; + }; + ptrType$1.methods = [{prop: "get", name: "get", pkg: "time", typ: $funcType([], [ptrType$1], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "lookup", name: "lookup", pkg: "time", typ: $funcType([$Int64], [$String, $Int, $Int64, $Int64, $Bool], false)}, {prop: "lookupFirstZone", name: "lookupFirstZone", pkg: "time", typ: $funcType([], [$Int], false)}, {prop: "firstZoneUsed", name: "firstZoneUsed", pkg: "time", typ: $funcType([], [$Bool], false)}, {prop: "lookupName", name: "lookupName", pkg: "time", typ: $funcType([$String, $Int64], [$Int, $Bool], false)}]; + Time.methods = [{prop: "After", name: "After", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "Before", name: "Before", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "Compare", name: "Compare", pkg: "", typ: $funcType([Time], [$Int], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "IsZero", name: "IsZero", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "abs", name: "abs", pkg: "time", typ: $funcType([], [$Uint64], false)}, {prop: "locabs", name: "locabs", pkg: "time", typ: $funcType([], [$String, $Int, $Uint64], false)}, {prop: "Date", name: "Date", pkg: "", typ: $funcType([], [$Int, Month, $Int], false)}, {prop: "Year", name: "Year", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Month", name: "Month", pkg: "", typ: $funcType([], [Month], false)}, {prop: "Day", name: "Day", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Weekday", name: "Weekday", pkg: "", typ: $funcType([], [Weekday], false)}, {prop: "ISOWeek", name: "ISOWeek", pkg: "", typ: $funcType([], [$Int, $Int], false)}, {prop: "Clock", name: "Clock", pkg: "", typ: $funcType([], [$Int, $Int, $Int], false)}, {prop: "Hour", name: "Hour", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Minute", name: "Minute", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Second", name: "Second", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Nanosecond", name: "Nanosecond", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "YearDay", name: "YearDay", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([Duration], [Time], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([Time], [Duration], false)}, {prop: "AddDate", name: "AddDate", pkg: "", typ: $funcType([$Int, $Int, $Int], [Time], false)}, {prop: "date", name: "date", pkg: "time", typ: $funcType([$Bool], [$Int, Month, $Int, $Int], false)}, {prop: "UTC", name: "UTC", pkg: "", typ: $funcType([], [Time], false)}, {prop: "Local", name: "Local", pkg: "", typ: $funcType([], [Time], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([ptrType$1], [Time], false)}, {prop: "Location", name: "Location", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Zone", name: "Zone", pkg: "", typ: $funcType([], [$String, $Int], false)}, {prop: "ZoneBounds", name: "ZoneBounds", pkg: "", typ: $funcType([], [Time, Time], false)}, {prop: "Unix", name: "Unix", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "UnixMilli", name: "UnixMilli", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "UnixMicro", name: "UnixMicro", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "UnixNano", name: "UnixNano", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}, {prop: "MarshalJSON", name: "MarshalJSON", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}, {prop: "IsDST", name: "IsDST", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([Duration], [Time], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([Duration], [Time], false)}, {prop: "appendFormatRFC3339", name: "appendFormatRFC3339", pkg: "time", typ: $funcType([sliceType$4, $Bool], [sliceType$4], false)}, {prop: "appendStrictRFC3339", name: "appendStrictRFC3339", pkg: "time", typ: $funcType([sliceType$4], [sliceType$4, $error], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "AppendFormat", name: "AppendFormat", pkg: "", typ: $funcType([sliceType$4, $String], [sliceType$4], false)}, {prop: "appendFormat", name: "appendFormat", pkg: "time", typ: $funcType([sliceType$4, $String], [sliceType$4], false)}]; + ptrType$4.methods = [{prop: "nsec", name: "nsec", pkg: "time", typ: $funcType([], [$Int32], false)}, {prop: "sec", name: "sec", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "unixSec", name: "unixSec", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "addSec", name: "addSec", pkg: "time", typ: $funcType([$Int64], [], false)}, {prop: "setLoc", name: "setLoc", pkg: "time", typ: $funcType([ptrType$1], [], false)}, {prop: "stripMono", name: "stripMono", pkg: "time", typ: $funcType([], [], false)}, {prop: "setMono", name: "setMono", pkg: "time", typ: $funcType([$Int64], [], false)}, {prop: "mono", name: "mono", pkg: "time", typ: $funcType([], [$Int64], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType$4], [$error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$4], [$error], false)}, {prop: "UnmarshalJSON", name: "UnmarshalJSON", pkg: "", typ: $funcType([sliceType$4], [$error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$4], [$error], false)}]; + Month.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + Weekday.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + Duration.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Nanoseconds", name: "Nanoseconds", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Microseconds", name: "Microseconds", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Milliseconds", name: "Milliseconds", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seconds", name: "Seconds", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Minutes", name: "Minutes", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Hours", name: "Hours", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([Duration], [Duration], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([Duration], [Duration], false)}, {prop: "Abs", name: "Abs", pkg: "", typ: $funcType([], [Duration], false)}]; + ptrType$6.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([Duration], [$Bool], false)}]; + ptrType$8.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + Location.init("time", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "zone", name: "zone", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "tx", name: "tx", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "extend", name: "extend", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "cacheStart", name: "cacheStart", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "cacheEnd", name: "cacheEnd", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "cacheZone", name: "cacheZone", embedded: false, exported: false, typ: ptrType, tag: ""}]); + zone.init("time", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "isDST", name: "isDST", embedded: false, exported: false, typ: $Bool, tag: ""}]); + zoneTrans.init("time", [{prop: "when", name: "when", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "isstd", name: "isstd", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "isutc", name: "isutc", embedded: false, exported: false, typ: $Bool, tag: ""}]); + rule.init("time", [{prop: "kind", name: "kind", embedded: false, exported: false, typ: ruleKind, tag: ""}, {prop: "day", name: "day", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "week", name: "week", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "mon", name: "mon", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "time", name: "time", embedded: false, exported: false, typ: $Int, tag: ""}]); + Time.init("time", [{prop: "wall", name: "wall", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "ext", name: "ext", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "loc", name: "loc", embedded: false, exported: false, typ: ptrType$1, tag: ""}]); + Timer.init("time", [{prop: "C", name: "C", embedded: false, exported: true, typ: chanType$1, tag: ""}, {prop: "r", name: "r", embedded: false, exported: false, typ: runtimeTimer, tag: ""}]); + runtimeTimer.init("time", [{prop: "i", name: "i", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "when", name: "when", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "period", name: "period", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "f", name: "f", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "arg", name: "arg", embedded: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "seq", name: "seq", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "timeout", name: "timeout", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "active", name: "active", embedded: false, exported: false, typ: $Bool, tag: ""}]); + ParseError.init("", [{prop: "Layout", name: "Layout", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "LayoutElem", name: "LayoutElem", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ValueElem", name: "ValueElem", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Message", name: "Message", embedded: false, exported: true, typ: $String, tag: ""}]); + $pkg.$initLinknames = function() { + runtimeNano = $linknames["runtime.nanotime"]; + }; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = nosync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syscall.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + localLoc = new Location.ptr("", sliceType.nil, sliceType$1.nil, "", new $Int64(0, 0), new $Int64(0, 0), ptrType.nil); + localOnce = new nosync.Once.ptr(false, false); + unnamedFixedZones = sliceType$2.nil; + unnamedFixedZonesOnce = new nosync.Once.ptr(false, false); + badData = errors.New("malformed time zone information"); + utcLoc = new Location.ptr("UTC", sliceType.nil, sliceType$1.nil, "", new $Int64(0, 0), new $Int64(0, 0), ptrType.nil); + $pkg.UTC = utcLoc; + $pkg.Local = localLoc; + errLocation = errors.New("time: invalid location name"); + daysBefore = $toNativeArray($kindInt32, [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]); + _r = runtimeNano(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + startNano = (x = _r, new $Int64(x.$high - 0, x.$low - 1)); + zoneSources = new sliceType$3([runtime.GOROOT() + "/lib/time/zoneinfo.zip"]); + std0x = $toNativeArray($kindInt, [260, 265, 526, 528, 530, 276]); + longDayNames = new sliceType$3(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]); + shortDayNames = new sliceType$3(["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]); + shortMonthNames = new sliceType$3(["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]); + longMonthNames = new sliceType$3(["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]); + atoiError = errors.New("time: invalid number"); + errBad = errors.New("bad value for field"); + errLeadingInt = errors.New("time: bad [0-9]*"); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/poll"] = (function() { + var $pkg = {}, $init, errors, unix, io, atomic, syscall, time, FD, pollDesc, fdMutex, errNetClosing, DeadlineExceededError, ptrType, ptrType$1, ptrType$2, ptrType$3, sliceType, sliceType$1, ptrType$4, ptrType$5, ptrType$6, ptrType$7, funcType, funcType$1, ptrType$8, ptrType$9, ptrType$10, tryDupCloexec, tryDupCloexec$24ptr, accept, runtime_Semacquire, runtime_Semrelease, DupCloseOnExec, dupCloseOnExecOld, ignoringEINTRIO, ignoringEINTR, setDeadlineImpl, errClosing, fcntl; + errors = $packages["errors"]; + unix = $packages["internal/syscall/unix"]; + io = $packages["io"]; + atomic = $packages["sync/atomic"]; + syscall = $packages["syscall"]; + time = $packages["time"]; + FD = $newType(0, $kindStruct, "poll.FD", true, "internal/poll", true, function(fdmu_, Sysfd_, pd_, iovecs_, csema_, isBlocking_, IsStream_, ZeroReadIsEOF_, isFile_) { + this.$val = this; + if (arguments.length === 0) { + this.fdmu = new fdMutex.ptr(new $Uint64(0, 0), 0, 0); + this.Sysfd = 0; + this.pd = new pollDesc.ptr(ptrType$2.nil, false); + this.iovecs = ptrType$4.nil; + this.csema = 0; + this.isBlocking = 0; + this.IsStream = false; + this.ZeroReadIsEOF = false; + this.isFile = false; + return; + } + this.fdmu = fdmu_; + this.Sysfd = Sysfd_; + this.pd = pd_; + this.iovecs = iovecs_; + this.csema = csema_; + this.isBlocking = isBlocking_; + this.IsStream = IsStream_; + this.ZeroReadIsEOF = ZeroReadIsEOF_; + this.isFile = isFile_; + }); + pollDesc = $newType(0, $kindStruct, "poll.pollDesc", true, "internal/poll", false, function(fd_, closing_) { + this.$val = this; + if (arguments.length === 0) { + this.fd = ptrType$2.nil; + this.closing = false; + return; + } + this.fd = fd_; + this.closing = closing_; + }); + fdMutex = $newType(0, $kindStruct, "poll.fdMutex", true, "internal/poll", false, function(state_, rsema_, wsema_) { + this.$val = this; + if (arguments.length === 0) { + this.state = new $Uint64(0, 0); + this.rsema = 0; + this.wsema = 0; + return; + } + this.state = state_; + this.rsema = rsema_; + this.wsema = wsema_; + }); + errNetClosing = $newType(0, $kindStruct, "poll.errNetClosing", true, "internal/poll", false, function() { this.$val = this; }); + DeadlineExceededError = $newType(0, $kindStruct, "poll.DeadlineExceededError", true, "internal/poll", true, function() { this.$val = this; }); + $pkg.FD = FD; + $pkg.pollDesc = pollDesc; + $pkg.fdMutex = fdMutex; + $pkg.errNetClosing = errNetClosing; + $pkg.DeadlineExceededError = DeadlineExceededError; + $pkg.$finishSetup = function() { + ptrType = $ptrType($Uint32); + ptrType$1 = $ptrType($Int32); + ptrType$2 = $ptrType(FD); + ptrType$3 = $ptrType($Uint64); + sliceType = $sliceType($Uint8); + sliceType$1 = $sliceType(syscall.Iovec); + ptrType$4 = $ptrType(sliceType$1); + ptrType$5 = $ptrType(syscall.SockaddrInet4); + ptrType$6 = $ptrType(syscall.SockaddrInet6); + ptrType$7 = $ptrType(syscall.Stat_t); + funcType = $funcType([$Uintptr], [$Bool], false); + funcType$1 = $funcType([$Uintptr], [], false); + ptrType$8 = $ptrType(pollDesc); + ptrType$9 = $ptrType(fdMutex); + ptrType$10 = $ptrType(DeadlineExceededError); + accept = function accept$1(s) { + var {_r, _r$1, _tuple, err, ns, s, sa, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = $pkg.AcceptFunc(s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ns = _tuple[0]; + sa = _tuple[1]; + err = _tuple[2]; + if ($interfaceIsEqual(err, $ifaceNil)) { + syscall.CloseOnExec(ns); + } + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [-1, $ifaceNil, "accept", err]; + } + err = syscall.SetNonblock(ns, true); + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + _r$1 = $pkg.CloseFunc(ns); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return [-1, $ifaceNil, "setnonblock", err]; + /* } */ case 3: + $s = -1; return [ns, sa, "", $ifaceNil]; + /* */ } return; } var $f = {$blk: accept$1, $c: true, $r, _r, _r$1, _tuple, err, ns, s, sa, $s};return $f; + }; + runtime_Semacquire = function() { + $throwRuntimeError("native function not implemented: internal/poll.runtime_Semacquire"); + }; + runtime_Semrelease = function() { + $throwRuntimeError("native function not implemented: internal/poll.runtime_Semrelease"); + }; + $ptrType(FD).prototype.Init = function Init(net, pollable) { + var err, fd, net, pollable; + fd = this; + if (net === "file") { + fd.isFile = true; + } + if (!pollable) { + fd.isBlocking = 1; + return $ifaceNil; + } + err = fd.pd.init(fd); + if (!($interfaceIsEqual(err, $ifaceNil))) { + fd.isBlocking = 1; + } + return err; + }; + $ptrType(FD).prototype.destroy = function destroy() { + var {_r, err, fd, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fd = this; + fd.pd.close(); + _r = $pkg.CloseFunc(fd.Sysfd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + fd.Sysfd = -1; + $r = runtime_Semrelease((fd.$ptr_csema || (fd.$ptr_csema = new ptrType(function() { return this.$target.csema; }, function($v) { this.$target.csema = $v; }, fd)))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return err; + /* */ } return; } var $f = {$blk: destroy, $c: true, $r, _r, err, fd, $s};return $f; + }; + $ptrType(FD).prototype.Close = function Close() { + var {_r, _r$1, err, fd, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fd = this; + _r = fd.fdmu.increfAndClose(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r) { */ case 1: + $s = -1; return errClosing(fd.isFile); + /* } */ case 2: + fd.pd.evict(); + _r$1 = fd.decref(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err = _r$1; + /* */ if (fd.isBlocking === 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (fd.isBlocking === 0) { */ case 5: + $r = runtime_Semacquire((fd.$ptr_csema || (fd.$ptr_csema = new ptrType(function() { return this.$target.csema; }, function($v) { this.$target.csema = $v; }, fd)))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + $s = -1; return err; + /* */ } return; } var $f = {$blk: Close, $c: true, $r, _r, _r$1, err, fd, $s};return $f; + }; + $ptrType(FD).prototype.SetBlocking = function SetBlocking() { + var {$24r, err, fd, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + atomic.StoreUint32((fd.$ptr_isBlocking || (fd.$ptr_isBlocking = new ptrType(function() { return this.$target.isBlocking; }, function($v) { this.$target.isBlocking = $v; }, fd))), 1); + $24r = syscall.SetNonblock(fd.Sysfd, false); + $s = 1; case 1: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: SetBlocking, $c: true, $r, $24r, err, fd, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Read = function Read(p) { + var {$24r, $24r$1, $24r$2, _r, _r$1, _tuple, err, err$1, err$2, fd, n, p, $s, $deferred, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + /* */ if (p.$length === 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (p.$length === 0) { */ case 2: + $24r = [0, $ifaceNil]; + $s = 4; case 4: return $24r; + /* } */ case 3: + err$1 = fd.pd.prepareRead(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 5: + $24r$1 = [0, err$1]; + $s = 7; case 7: return $24r$1; + /* } */ case 6: + if (fd.IsStream && p.$length > 1073741824) { + p = $subslice(p, 0, 1073741824); + } + /* while (true) { */ case 8: + _r$1 = ignoringEINTRIO(syscall.Read, fd.Sysfd, p); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + n = _tuple[0]; + err$2 = _tuple[1]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + n = 0; + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 8; continue; + } + } + } + err$2 = fd.eofError(n, err$2); + $24r$2 = [n, err$2]; + $s = 11; case 11: return $24r$2; + case 9: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Read, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _tuple, err, err$1, err$2, fd, n, p, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Pread = function Pread(p, off) { + var {_r, _r$1, _tuple, err, err$1, fd, n, off, p, $s, $r, $c} = $restore(this, {p, off}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + if (fd.IsStream && p.$length > 1073741824) { + p = $subslice(p, 0, 1073741824); + } + n = 0; + err$1 = $ifaceNil; + /* while (true) { */ case 1: + _r = syscall.Pread(fd.Sysfd, p, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err$1 = _tuple[1]; + if (!($interfaceIsEqual(err$1, new syscall.Errno(4)))) { + /* break; */ $s = 2; continue; + } + $s = 1; continue; + case 2: + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + n = 0; + } + _r$1 = fd.decref(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + err$1 = fd.eofError(n, err$1); + $s = -1; return [n, err$1]; + /* */ } return; } var $f = {$blk: Pread, $c: true, $r, _r, _r$1, _tuple, err, err$1, fd, n, off, p, $s};return $f; + }; + $ptrType(FD).prototype.ReadFrom = function ReadFrom(p) { + var {$24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, n, p, sa, $s, $deferred, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, $ifaceNil, err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, $ifaceNil, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _tuple = syscall.Recvfrom(fd.Sysfd, p, 0); + n = _tuple[0]; + sa = _tuple[1]; + err$2 = _tuple[2]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + n = 0; + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + } + err$2 = fd.eofError(n, err$2); + $24r$1 = [n, sa, err$2]; + $s = 7; case 7: return $24r$1; + case 6: + $s = -1; return [0, $ifaceNil, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ReadFrom, $c: true, $r, $24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, n, p, sa, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.ReadFromInet4 = function ReadFromInet4(p, from) { + var {$24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, from, n, p, $s, $deferred, $r, $c} = $restore(this, {p, from}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _tuple = unix.RecvfromInet4(fd.Sysfd, p, 0, from); + n = _tuple[0]; + err$2 = _tuple[1]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + n = 0; + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + } + err$2 = fd.eofError(n, err$2); + $24r$1 = [n, err$2]; + $s = 7; case 7: return $24r$1; + case 6: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ReadFromInet4, $c: true, $r, $24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, from, n, p, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.ReadFromInet6 = function ReadFromInet6(p, from) { + var {$24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, from, n, p, $s, $deferred, $r, $c} = $restore(this, {p, from}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _tuple = unix.RecvfromInet6(fd.Sysfd, p, 0, from); + n = _tuple[0]; + err$2 = _tuple[1]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + n = 0; + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + } + err$2 = fd.eofError(n, err$2); + $24r$1 = [n, err$2]; + $s = 7; case 7: return $24r$1; + case 6: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ReadFromInet6, $c: true, $r, $24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, from, n, p, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.ReadMsg = function ReadMsg(p, oob, flags) { + var {$24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, flags, n, oob, oobn, p, sa, sysflags, $s, $deferred, $r, $c} = $restore(this, {p, oob, flags}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, 0, 0, $ifaceNil, err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, 0, 0, $ifaceNil, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _tuple = syscall.Recvmsg(fd.Sysfd, p, oob, flags); + n = _tuple[0]; + oobn = _tuple[1]; + sysflags = _tuple[2]; + sa = _tuple[3]; + err$2 = _tuple[4]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + } + err$2 = fd.eofError(n, err$2); + $24r$1 = [n, oobn, sysflags, sa, err$2]; + $s = 7; case 7: return $24r$1; + case 6: + $s = -1; return [0, 0, 0, $ifaceNil, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, 0, $ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ReadMsg, $c: true, $r, $24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, flags, n, oob, oobn, p, sa, sysflags, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.ReadMsgInet4 = function ReadMsgInet4(p, oob, flags, sa4) { + var {$24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, flags, n, oob, oobn, p, sa4, sysflags, $s, $deferred, $r, $c} = $restore(this, {p, oob, flags, sa4}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, 0, 0, err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, 0, 0, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _tuple = unix.RecvmsgInet4(fd.Sysfd, p, oob, flags, sa4); + n = _tuple[0]; + oobn = _tuple[1]; + sysflags = _tuple[2]; + err$2 = _tuple[3]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + } + err$2 = fd.eofError(n, err$2); + $24r$1 = [n, oobn, sysflags, err$2]; + $s = 7; case 7: return $24r$1; + case 6: + $s = -1; return [0, 0, 0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, 0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ReadMsgInet4, $c: true, $r, $24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, flags, n, oob, oobn, p, sa4, sysflags, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.ReadMsgInet6 = function ReadMsgInet6(p, oob, flags, sa6) { + var {$24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, flags, n, oob, oobn, p, sa6, sysflags, $s, $deferred, $r, $c} = $restore(this, {p, oob, flags, sa6}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, 0, 0, err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, 0, 0, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _tuple = unix.RecvmsgInet6(fd.Sysfd, p, oob, flags, sa6); + n = _tuple[0]; + oobn = _tuple[1]; + sysflags = _tuple[2]; + err$2 = _tuple[3]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + } + err$2 = fd.eofError(n, err$2); + $24r$1 = [n, oobn, sysflags, err$2]; + $s = 7; case 7: return $24r$1; + case 6: + $s = -1; return [0, 0, 0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, 0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ReadMsgInet6, $c: true, $r, $24r, $24r$1, _r, _tuple, err, err$1, err$2, fd, flags, n, oob, oobn, p, sa6, sysflags, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Write = function Write(p) { + var {$24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _tuple, err, err$1, err$2, fd, max, n, nn, p, $s, $deferred, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + nn = 0; + /* while (true) { */ case 5: + max = p.$length; + if (fd.IsStream && (max - nn >> 0) > 1073741824) { + max = nn + 1073741824 >> 0; + } + _r$1 = ignoringEINTRIO(syscall.Write, fd.Sysfd, $subslice(p, nn, max)); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + n = _tuple[0]; + err$2 = _tuple[1]; + if (n > 0) { + nn = nn + (n) >> 0; + } + /* */ if (nn === p.$length) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (nn === p.$length) { */ case 8: + $24r$1 = [nn, err$2]; + $s = 10; case 10: return $24r$1; + /* } */ case 9: + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitWrite(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 11: + $24r$2 = [nn, err$2]; + $s = 13; case 13: return $24r$2; + /* } */ case 12: + /* */ if (n === 0) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (n === 0) { */ case 14: + $24r$3 = [nn, io.ErrUnexpectedEOF]; + $s = 16; case 16: return $24r$3; + /* } */ case 15: + $s = 5; continue; + case 6: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Write, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _tuple, err, err$1, err$2, fd, max, n, nn, p, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Pwrite = function Pwrite(p, off) { + var {$24r, $24r$1, $24r$2, _r, _tuple, err, err$1, fd, max, n, nn, off, p, x, $s, $deferred, $r, $c} = $restore(this, {p, off}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "decref"), []]); + nn = 0; + /* while (true) { */ case 1: + max = p.$length; + if (fd.IsStream && (max - nn >> 0) > 1073741824) { + max = nn + 1073741824 >> 0; + } + _r = syscall.Pwrite(fd.Sysfd, $subslice(p, nn, max), (x = (new $Int64(0, nn)), new $Int64(off.$high + x.$high, off.$low + x.$low))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err$1 = _tuple[1]; + if ($interfaceIsEqual(err$1, new syscall.Errno(4))) { + /* continue; */ $s = 1; continue; + } + if (n > 0) { + nn = nn + (n) >> 0; + } + /* */ if (nn === p.$length) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (nn === p.$length) { */ case 4: + $24r = [nn, err$1]; + $s = 6; case 6: return $24r; + /* } */ case 5: + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 7: + $24r$1 = [nn, err$1]; + $s = 9; case 9: return $24r$1; + /* } */ case 8: + /* */ if (n === 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (n === 0) { */ case 10: + $24r$2 = [nn, io.ErrUnexpectedEOF]; + $s = 12; case 12: return $24r$2; + /* } */ case 11: + $s = 1; continue; + case 2: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Pwrite, $c: true, $r, $24r, $24r$1, $24r$2, _r, _tuple, err, err$1, fd, max, n, nn, off, p, x, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.WriteToInet4 = function WriteToInet4(p, sa) { + var {$24r, $24r$1, $24r$2, _r, err, err$1, err$2, fd, p, sa, $s, $deferred, $r, $c} = $restore(this, {p, sa}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + err$2 = unix.SendtoInet4(fd.Sysfd, p, 0, sa); + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitWrite(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 7: + $24r$1 = [0, err$2]; + $s = 9; case 9: return $24r$1; + /* } */ case 8: + $24r$2 = [p.$length, $ifaceNil]; + $s = 10; case 10: return $24r$2; + case 6: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: WriteToInet4, $c: true, $r, $24r, $24r$1, $24r$2, _r, err, err$1, err$2, fd, p, sa, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.WriteToInet6 = function WriteToInet6(p, sa) { + var {$24r, $24r$1, $24r$2, _r, err, err$1, err$2, fd, p, sa, $s, $deferred, $r, $c} = $restore(this, {p, sa}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + err$2 = unix.SendtoInet6(fd.Sysfd, p, 0, sa); + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitWrite(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 7: + $24r$1 = [0, err$2]; + $s = 9; case 9: return $24r$1; + /* } */ case 8: + $24r$2 = [p.$length, $ifaceNil]; + $s = 10; case 10: return $24r$2; + case 6: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: WriteToInet6, $c: true, $r, $24r, $24r$1, $24r$2, _r, err, err$1, err$2, fd, p, sa, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.WriteTo = function WriteTo(p, sa) { + var {$24r, $24r$1, $24r$2, _r, err, err$1, err$2, fd, p, sa, $s, $deferred, $r, $c} = $restore(this, {p, sa}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + err$2 = syscall.Sendto(fd.Sysfd, p, 0, sa); + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitWrite(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 7: + $24r$1 = [0, err$2]; + $s = 9; case 9: return $24r$1; + /* } */ case 8: + $24r$2 = [p.$length, $ifaceNil]; + $s = 10; case 10: return $24r$2; + case 6: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: WriteTo, $c: true, $r, $24r, $24r$1, $24r$2, _r, err, err$1, err$2, fd, p, sa, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.WriteMsg = function WriteMsg(p, oob, sa) { + var {$24r, $24r$1, $24r$2, _r, _tuple, err, err$1, err$2, fd, n, oob, p, sa, $s, $deferred, $r, $c} = $restore(this, {p, oob, sa}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, 0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, 0, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _tuple = syscall.SendmsgN(fd.Sysfd, p, oob, sa, 0); + n = _tuple[0]; + err$2 = _tuple[1]; + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitWrite(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 7: + $24r$1 = [n, 0, err$2]; + $s = 9; case 9: return $24r$1; + /* } */ case 8: + $24r$2 = [n, oob.$length, err$2]; + $s = 10; case 10: return $24r$2; + case 6: + $s = -1; return [0, 0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: WriteMsg, $c: true, $r, $24r, $24r$1, $24r$2, _r, _tuple, err, err$1, err$2, fd, n, oob, p, sa, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.WriteMsgInet4 = function WriteMsgInet4(p, oob, sa) { + var {$24r, $24r$1, $24r$2, _r, _tuple, err, err$1, err$2, fd, n, oob, p, sa, $s, $deferred, $r, $c} = $restore(this, {p, oob, sa}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, 0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, 0, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _tuple = unix.SendmsgNInet4(fd.Sysfd, p, oob, sa, 0); + n = _tuple[0]; + err$2 = _tuple[1]; + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitWrite(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 7: + $24r$1 = [n, 0, err$2]; + $s = 9; case 9: return $24r$1; + /* } */ case 8: + $24r$2 = [n, oob.$length, err$2]; + $s = 10; case 10: return $24r$2; + case 6: + $s = -1; return [0, 0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: WriteMsgInet4, $c: true, $r, $24r, $24r$1, $24r$2, _r, _tuple, err, err$1, err$2, fd, n, oob, p, sa, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.WriteMsgInet6 = function WriteMsgInet6(p, oob, sa) { + var {$24r, $24r$1, $24r$2, _r, _tuple, err, err$1, err$2, fd, n, oob, p, sa, $s, $deferred, $r, $c} = $restore(this, {p, oob, sa}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, 0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [0, 0, err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _tuple = unix.SendmsgNInet6(fd.Sysfd, p, oob, sa, 0); + n = _tuple[0]; + err$2 = _tuple[1]; + if ($interfaceIsEqual(err$2, new syscall.Errno(4))) { + /* continue; */ $s = 5; continue; + } + if ($interfaceIsEqual(err$2, new syscall.Errno(11)) && fd.pd.pollable()) { + err$2 = fd.pd.waitWrite(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 7: + $24r$1 = [n, 0, err$2]; + $s = 9; case 9: return $24r$1; + /* } */ case 8: + $24r$2 = [n, oob.$length, err$2]; + $s = 10; case 10: return $24r$2; + case 6: + $s = -1; return [0, 0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, 0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: WriteMsgInet6, $c: true, $r, $24r, $24r$1, $24r$2, _r, _tuple, err, err$1, err$2, fd, n, oob, p, sa, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Accept = function Accept() { + var {$24r, $24r$1, $24r$2, _1, _r, _r$1, _tuple, err, err$1, err$2, errcall, fd, rsa, s, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [-1, $ifaceNil, "", err]; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = [-1, $ifaceNil, "", err$1]; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _r$1 = accept(fd.Sysfd); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + s = _tuple[0]; + rsa = _tuple[1]; + errcall = _tuple[2]; + err$2 = _tuple[3]; + /* */ if ($interfaceIsEqual(err$2, $ifaceNil)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ($interfaceIsEqual(err$2, $ifaceNil)) { */ case 8: + $24r$1 = [s, rsa, "", err$2]; + $s = 10; case 10: return $24r$1; + /* } */ case 9: + _1 = err$2; + if ($interfaceIsEqual(_1, new syscall.Errno((4)))) { + /* continue; */ $s = 5; continue; + } else if ($interfaceIsEqual(_1, new syscall.Errno((11)))) { + if (fd.pd.pollable()) { + err$2 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + /* continue; */ $s = 5; continue; + } + } + } else if ($interfaceIsEqual(_1, new syscall.Errno((103)))) { + /* continue; */ $s = 5; continue; + } + $24r$2 = [-1, $ifaceNil, errcall, err$2]; + $s = 11; case 11: return $24r$2; + case 6: + $s = -1; return [0, $ifaceNil, "", $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil, "", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Accept, $c: true, $r, $24r, $24r$1, $24r$2, _1, _r, _r$1, _tuple, err, err$1, err$2, errcall, fd, rsa, s, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Seek = function Seek(offset, whence) { + var {$24r, _r, err, fd, offset, whence, $s, $deferred, $r, $c} = $restore(this, {offset, whence}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [new $Int64(0, 0), err]; + } + $deferred.push([$methodVal(fd, "decref"), []]); + _r = syscall.Seek(fd.Sysfd, offset, whence); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [new $Int64(0, 0), $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Seek, $c: true, $r, $24r, _r, err, fd, offset, whence, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.ReadDirent = function ReadDirent(buf) { + var {$24r, _r, _tuple, buf, err, err$1, fd, n, $s, $deferred, $r, $c} = $restore(this, {buf}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "decref"), []]); + /* while (true) { */ case 1: + _r = ignoringEINTRIO(syscall.ReadDirent, fd.Sysfd, buf); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err$1 = _tuple[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + n = 0; + if ($interfaceIsEqual(err$1, new syscall.Errno(11)) && fd.pd.pollable()) { + err$1 = fd.pd.waitRead(fd.isFile); + if ($interfaceIsEqual(err$1, $ifaceNil)) { + /* continue; */ $s = 1; continue; + } + } + } + $24r = [n, err$1]; + $s = 4; case 4: return $24r; + case 2: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ReadDirent, $c: true, $r, $24r, _r, _tuple, buf, err, err$1, fd, n, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Fchmod = function Fchmod(mode) { + var {$24r, _r, err, fd, mode, $s, $deferred, $r, $c} = $restore(this, {mode}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = [fd]; + mode = [mode]; + fd[0] = this; + err = fd[0].incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd[0], "decref"), []]); + _r = ignoringEINTR((function(fd, mode) { return function FD·Fchmod·func1() { + var {$24r, _r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = syscall.Fchmod(fd[0].Sysfd, mode[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: FD·Fchmod·func1, $c: true, $r, $24r, _r, $s};return $f; + }; })(fd, mode)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Fchmod, $c: true, $r, $24r, _r, err, fd, mode, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Fchdir = function Fchdir() { + var {$24r, _r, err, fd, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + _r = syscall.Fchdir(fd.Sysfd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Fchdir, $c: true, $r, $24r, _r, err, fd, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Fstat = function Fstat(s) { + var {$24r, _r, err, fd, s, $s, $deferred, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = [fd]; + s = [s]; + fd[0] = this; + err = fd[0].incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd[0], "decref"), []]); + _r = ignoringEINTR((function(fd, s) { return function FD·Fstat·func1() { + var {$24r, _r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = syscall.Fstat(fd[0].Sysfd, s[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: FD·Fstat·func1, $c: true, $r, $24r, _r, $s};return $f; + }; })(fd, s)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Fstat, $c: true, $r, $24r, _r, err, fd, s, $s, $deferred};return $f; } } + }; + DupCloseOnExec = function DupCloseOnExec$1(fd) { + var {$24r, _1, _r, _tuple, e1, fd, r0, $s, $r, $c} = $restore(this, {fd}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (true && (atomic.LoadInt32((tryDupCloexec$24ptr || (tryDupCloexec$24ptr = new ptrType$1(function() { return tryDupCloexec; }, function($v) { tryDupCloexec = $v; })))) === 1)) { + _tuple = fcntl(fd, 1, 0); + r0 = _tuple[0]; + e1 = _tuple[1]; + if ($interfaceIsEqual(e1, $ifaceNil)) { + $s = -1; return [r0, "", $ifaceNil]; + } + _1 = $assertType(e1, syscall.Errno); + if ((_1 === (22)) || (_1 === (38))) { + atomic.StoreInt32((tryDupCloexec$24ptr || (tryDupCloexec$24ptr = new ptrType$1(function() { return tryDupCloexec; }, function($v) { tryDupCloexec = $v; }))), 0); + } else { + $s = -1; return [-1, "fcntl", e1]; + } + } + _r = dupCloseOnExecOld(fd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: DupCloseOnExec$1, $c: true, $r, $24r, _1, _r, _tuple, e1, fd, r0, $s};return $f; + }; + $pkg.DupCloseOnExec = DupCloseOnExec; + dupCloseOnExecOld = function dupCloseOnExecOld$1(fd) { + var {$24r, $24r$1, _tuple, err, fd, newfd, $s, $deferred, $r, $c} = $restore(this, {fd}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + $r = syscall.ForkLock.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(syscall.ForkLock, "RUnlock"), []]); + _tuple = syscall.Dup(fd); + newfd = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + $24r = [-1, "dup", err]; + $s = 4; case 4: return $24r; + /* } */ case 3: + syscall.CloseOnExec(newfd); + $24r$1 = [newfd, "", $ifaceNil]; + $s = 5; case 5: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, "", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: dupCloseOnExecOld$1, $c: true, $r, $24r, $24r$1, _tuple, err, fd, newfd, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Dup = function Dup() { + var {$24r, _r, err, fd, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [-1, "", err]; + } + $deferred.push([$methodVal(fd, "decref"), []]); + _r = DupCloseOnExec(fd.Sysfd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, "", $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Dup, $c: true, $r, $24r, _r, err, fd, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.WaitWrite = function WaitWrite() { + var fd; + fd = this; + return fd.pd.waitWrite(fd.isFile); + }; + $ptrType(FD).prototype.WriteOnce = function WriteOnce(p) { + var {$24r, _r, _r$1, err, fd, p, $s, $deferred, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [0, err]; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + _r$1 = ignoringEINTRIO(syscall.Write, fd.Sysfd, p); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: WriteOnce, $c: true, $r, $24r, _r, _r$1, err, fd, p, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.RawRead = function RawRead(f) { + var {$24r, $24r$1, $24r$2, _r, _r$1, err, err$1, err$2, f, fd, $s, $deferred, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.readLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "readUnlock"), []]); + err$1 = fd.pd.prepareRead(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = err$1; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _r$1 = f(((fd.Sysfd >>> 0))); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_r$1) { */ case 7: + $24r$1 = $ifaceNil; + $s = 10; case 10: return $24r$1; + /* } */ case 8: + err$2 = fd.pd.waitRead(fd.isFile); + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 11: + $24r$2 = err$2; + $s = 13; case 13: return $24r$2; + /* } */ case 12: + $s = 5; continue; + case 6: + $s = -1; return $ifaceNil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: RawRead, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, err, err$1, err$2, f, fd, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.RawWrite = function RawWrite(f) { + var {$24r, $24r$1, $24r$2, _r, _r$1, err, err$1, err$2, f, fd, $s, $deferred, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + _r = fd.writeLock(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "writeUnlock"), []]); + err$1 = fd.pd.prepareWrite(fd.isFile); + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2: + $24r = err$1; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* while (true) { */ case 5: + _r$1 = f(((fd.Sysfd >>> 0))); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_r$1) { */ case 7: + $24r$1 = $ifaceNil; + $s = 10; case 10: return $24r$1; + /* } */ case 8: + err$2 = fd.pd.waitWrite(fd.isFile); + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 11: + $24r$2 = err$2; + $s = 13; case 13: return $24r$2; + /* } */ case 12: + $s = 5; continue; + case 6: + $s = -1; return $ifaceNil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: RawWrite, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, err, err$1, err$2, f, fd, $s, $deferred};return $f; } } + }; + ignoringEINTRIO = function ignoringEINTRIO$1(fn, fd, p) { + var {_r, _tuple, err, fd, fn, n, p, $s, $r, $c} = $restore(this, {fn, fd, p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* while (true) { */ case 1: + _r = fn(fd, p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, new syscall.Errno(4)))) { + $s = -1; return [n, err]; + } + $s = 1; continue; + case 2: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } var $f = {$blk: ignoringEINTRIO$1, $c: true, $r, _r, _tuple, err, fd, fn, n, p, $s};return $f; + }; + $ptrType(FD).prototype.eofError = function eofError(n, err) { + var err, fd, n; + fd = this; + if ((n === 0) && $interfaceIsEqual(err, $ifaceNil) && fd.ZeroReadIsEOF) { + return io.EOF; + } + return err; + }; + $ptrType(FD).prototype.Shutdown = function Shutdown(how) { + var {$24r, err, fd, how, $s, $deferred, $r, $c} = $restore(this, {how}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $24r = syscall.Shutdown(fd.Sysfd, how); + $s = 1; case 1: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Shutdown, $c: true, $r, $24r, err, fd, how, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Fchown = function Fchown(uid, gid) { + var {$24r, _r, err, fd, gid, uid, $s, $deferred, $r, $c} = $restore(this, {uid, gid}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = [fd]; + gid = [gid]; + uid = [uid]; + fd[0] = this; + err = fd[0].incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd[0], "decref"), []]); + _r = ignoringEINTR((function(fd, gid, uid) { return function FD·Fchown·func1() { + var {$24r, _r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = syscall.Fchown(fd[0].Sysfd, uid[0], gid[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: FD·Fchown·func1, $c: true, $r, $24r, _r, $s};return $f; + }; })(fd, gid, uid)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Fchown, $c: true, $r, $24r, _r, err, fd, gid, uid, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.Ftruncate = function Ftruncate(size) { + var {$24r, _r, err, fd, size, $s, $deferred, $r, $c} = $restore(this, {size}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = [fd]; + size = [size]; + fd[0] = this; + err = fd[0].incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd[0], "decref"), []]); + _r = ignoringEINTR((function(fd, size) { return function FD·Ftruncate·func1() { + var {$24r, _r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = syscall.Ftruncate(fd[0].Sysfd, size[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: FD·Ftruncate·func1, $c: true, $r, $24r, _r, $s};return $f; + }; })(fd, size)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Ftruncate, $c: true, $r, $24r, _r, err, fd, size, $s, $deferred};return $f; } } + }; + $ptrType(FD).prototype.RawControl = function RawControl(f) { + var {$24r, err, f, fd, $s, $deferred, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = this; + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd, "decref"), []]); + $r = f(((fd.Sysfd >>> 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r = $ifaceNil; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: RawControl, $c: true, $r, $24r, err, f, fd, $s, $deferred};return $f; } } + }; + ignoringEINTR = function ignoringEINTR$1(fn) { + var {_r, err, fn, $s, $r, $c} = $restore(this, {fn}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* while (true) { */ case 1: + _r = fn(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, new syscall.Errno(4)))) { + $s = -1; return err; + } + $s = 1; continue; + case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: ignoringEINTR$1, $c: true, $r, _r, err, fn, $s};return $f; + }; + $ptrType(pollDesc).prototype.init = function init(fd) { + var fd, pd; + pd = this; + pd.fd = fd; + return $ifaceNil; + }; + $ptrType(pollDesc).prototype.close = function close() { + var pd; + pd = this; + }; + $ptrType(pollDesc).prototype.evict = function evict() { + var pd; + pd = this; + pd.closing = true; + if (!(pd.fd === ptrType$2.nil)) { + syscall.StopIO(pd.fd.Sysfd); + } + }; + $ptrType(pollDesc).prototype.prepare = function prepare(mode, isFile) { + var isFile, mode, pd; + pd = this; + if (pd.closing) { + return errClosing(isFile); + } + return $ifaceNil; + }; + $ptrType(pollDesc).prototype.prepareRead = function prepareRead(isFile) { + var isFile, pd; + pd = this; + return pd.prepare(114, isFile); + }; + $ptrType(pollDesc).prototype.prepareWrite = function prepareWrite(isFile) { + var isFile, pd; + pd = this; + return pd.prepare(119, isFile); + }; + $ptrType(pollDesc).prototype.wait = function wait(mode, isFile) { + var isFile, mode, pd; + pd = this; + if (pd.closing) { + return errClosing(isFile); + } + if (isFile) { + return $ifaceNil; + } + return $pkg.ErrDeadlineExceeded; + }; + $ptrType(pollDesc).prototype.waitRead = function waitRead(isFile) { + var isFile, pd; + pd = this; + return pd.wait(114, isFile); + }; + $ptrType(pollDesc).prototype.waitWrite = function waitWrite(isFile) { + var isFile, pd; + pd = this; + return pd.wait(119, isFile); + }; + $ptrType(pollDesc).prototype.pollable = function pollable() { + var pd; + pd = this; + return true; + }; + $ptrType(FD).prototype.SetDeadline = function SetDeadline(t) { + var {$24r, _r, fd, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fd = this; + _r = setDeadlineImpl(fd, $clone(t, time.Time), 233); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetDeadline, $c: true, $r, $24r, _r, fd, t, $s};return $f; + }; + $ptrType(FD).prototype.SetReadDeadline = function SetReadDeadline(t) { + var {$24r, _r, fd, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fd = this; + _r = setDeadlineImpl(fd, $clone(t, time.Time), 114); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetReadDeadline, $c: true, $r, $24r, _r, fd, t, $s};return $f; + }; + $ptrType(FD).prototype.SetWriteDeadline = function SetWriteDeadline(t) { + var {$24r, _r, fd, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fd = this; + _r = setDeadlineImpl(fd, $clone(t, time.Time), 119); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetWriteDeadline, $c: true, $r, $24r, _r, fd, t, $s};return $f; + }; + setDeadlineImpl = function setDeadlineImpl$1(fd, t, mode) { + var {_1, _r, d, err, fd, mode, t, $s, $r, $c} = $restore(this, {fd, t, mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = $clone(t, time.Time).UnixNano(); + if ($clone(t, time.Time).IsZero()) { + d = new $Int64(0, 0); + } + err = fd.incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _1 = mode; + if (_1 === (114)) { + syscall.SetReadDeadline(fd.Sysfd, d); + } else if (_1 === (119)) { + syscall.SetWriteDeadline(fd.Sysfd, d); + } else if (_1 === (233)) { + syscall.SetReadDeadline(fd.Sysfd, d); + syscall.SetWriteDeadline(fd.Sysfd, d); + } + _r = fd.decref(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: setDeadlineImpl$1, $c: true, $r, _1, _r, d, err, fd, mode, t, $s};return $f; + }; + $ptrType(fdMutex).prototype.incref = function incref() { + var mu, new$1, old, x, x$1; + mu = this; + while (true) { + old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); + if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) { + return false; + } + new$1 = new $Uint64(old.$high + 0, old.$low + 8); + if ((x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) { + $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); + } + if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { + return true; + } + } + }; + $ptrType(fdMutex).prototype.increfAndClose = function increfAndClose() { + var {mu, new$1, old, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + mu = this; + /* while (true) { */ case 1: + old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); + if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) { + $s = -1; return false; + } + new$1 = (x$1 = new $Uint64(old.$high | 0, (old.$low | 1) >>> 0), new $Uint64(x$1.$high + 0, x$1.$low + 8)); + if ((x$2 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$2.$high === 0 && x$2.$low === 0))) { + $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); + } + new$1 = (x$3 = new $Uint64(2147483647, 4286578688), new $Uint64(new$1.$high & ~x$3.$high, (new$1.$low & ~x$3.$low) >>> 0)); + /* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3: + /* while (true) { */ case 5: + /* if (!(!((x$4 = new $Uint64(old.$high & 2047, (old.$low & 4286578688) >>> 0), (x$4.$high === 0 && x$4.$low === 0))))) { break; } */ if(!(!((x$4 = new $Uint64(old.$high & 2047, (old.$low & 4286578688) >>> 0), (x$4.$high === 0 && x$4.$low === 0))))) { $s = 6; continue; } + old = (x$5 = new $Uint64(0, 8388608), new $Uint64(old.$high - x$5.$high, old.$low - x$5.$low)); + $r = runtime_Semrelease((mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu)))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + case 6: + /* while (true) { */ case 8: + /* if (!(!((x$6 = new $Uint64(old.$high & 2147481600, (old.$low & 0) >>> 0), (x$6.$high === 0 && x$6.$low === 0))))) { break; } */ if(!(!((x$6 = new $Uint64(old.$high & 2147481600, (old.$low & 0) >>> 0), (x$6.$high === 0 && x$6.$low === 0))))) { $s = 9; continue; } + old = (x$7 = new $Uint64(2048, 0), new $Uint64(old.$high - x$7.$high, old.$low - x$7.$low)); + $r = runtime_Semrelease((mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu)))); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 8; continue; + case 9: + $s = -1; return true; + /* } */ case 4: + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: increfAndClose, $c: true, $r, mu, new$1, old, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + $ptrType(fdMutex).prototype.decref = function decref() { + var mu, new$1, old, x, x$1; + mu = this; + while (true) { + old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); + if ((x = new $Uint64(old.$high & 0, (old.$low & 8388600) >>> 0), (x.$high === 0 && x.$low === 0))) { + $panic(new $String("inconsistent poll.fdMutex")); + } + new$1 = new $Uint64(old.$high - 0, old.$low - 8); + if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { + return (x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$1.$high === 0 && x$1.$low === 1)); + } + } + }; + $ptrType(fdMutex).prototype.rwlock = function rwlock(read) { + var {_tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {read}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + mu = this; + _tmp = new $Uint64(0, 0); + _tmp$1 = new $Uint64(0, 0); + _tmp$2 = new $Uint64(0, 0); + mutexBit = _tmp; + mutexWait = _tmp$1; + mutexMask = _tmp$2; + mutexSema = ptrType.nil; + if (read) { + mutexBit = new $Uint64(0, 2); + mutexWait = new $Uint64(0, 8388608); + mutexMask = new $Uint64(2047, 4286578688); + mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu))); + } else { + mutexBit = new $Uint64(0, 4); + mutexWait = new $Uint64(2048, 0); + mutexMask = new $Uint64(2147481600, 0); + mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu))); + } + /* while (true) { */ case 1: + old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); + if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) { + $s = -1; return false; + } + new$1 = new $Uint64(0, 0); + if ((x$1 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) { + new$1 = (x$2 = new $Uint64(old.$high | mutexBit.$high, (old.$low | mutexBit.$low) >>> 0), new $Uint64(x$2.$high + 0, x$2.$low + 8)); + if ((x$3 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$3.$high === 0 && x$3.$low === 0))) { + $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); + } + } else { + new$1 = new $Uint64(old.$high + mutexWait.$high, old.$low + mutexWait.$low); + if ((x$4 = new $Uint64(new$1.$high & mutexMask.$high, (new$1.$low & mutexMask.$low) >>> 0), (x$4.$high === 0 && x$4.$low === 0))) { + $panic(new $String("too many concurrent operations on a single file or socket (max 1048575)")); + } + } + /* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3: + if ((x$5 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0))) { + $s = -1; return true; + } + $r = runtime_Semacquire(mutexSema); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: rwlock, $c: true, $r, _tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5, $s};return $f; + }; + $ptrType(fdMutex).prototype.rwunlock = function rwunlock(read) { + var {_tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r, $c} = $restore(this, {read}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + mu = this; + _tmp = new $Uint64(0, 0); + _tmp$1 = new $Uint64(0, 0); + _tmp$2 = new $Uint64(0, 0); + mutexBit = _tmp; + mutexWait = _tmp$1; + mutexMask = _tmp$2; + mutexSema = ptrType.nil; + if (read) { + mutexBit = new $Uint64(0, 2); + mutexWait = new $Uint64(0, 8388608); + mutexMask = new $Uint64(2047, 4286578688); + mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu))); + } else { + mutexBit = new $Uint64(0, 4); + mutexWait = new $Uint64(2048, 0); + mutexMask = new $Uint64(2147481600, 0); + mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu))); + } + /* while (true) { */ case 1: + old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu)))); + if ((x = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x.$high === 0 && x.$low === 0)) || (x$1 = new $Uint64(old.$high & 0, (old.$low & 8388600) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) { + $panic(new $String("inconsistent poll.fdMutex")); + } + new$1 = (x$2 = new $Uint64(old.$high & ~mutexBit.$high, (old.$low & ~mutexBit.$low) >>> 0), new $Uint64(x$2.$high - 0, x$2.$low - 8)); + if (!((x$3 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$3.$high === 0 && x$3.$low === 0)))) { + new$1 = (x$4 = mutexWait, new $Uint64(new$1.$high - x$4.$high, new$1.$low - x$4.$low)); + } + /* */ if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$3(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) { */ case 3: + /* */ if (!((x$5 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((x$5 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) { */ case 5: + $r = runtime_Semrelease(mutexSema); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + $s = -1; return (x$6 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$6.$high === 0 && x$6.$low === 1)); + /* } */ case 4: + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: rwunlock, $c: true, $r, _tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5, x$6, $s};return $f; + }; + $ptrType(FD).prototype.incref = function incref$1() { + var fd; + fd = this; + if (!fd.fdmu.incref()) { + return errClosing(fd.isFile); + } + return $ifaceNil; + }; + $ptrType(FD).prototype.decref = function decref$1() { + var {$24r, _r, fd, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fd = this; + /* */ if (fd.fdmu.decref()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (fd.fdmu.decref()) { */ case 1: + _r = fd.destroy(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: decref$1, $c: true, $r, $24r, _r, fd, $s};return $f; + }; + $ptrType(FD).prototype.readLock = function readLock() { + var {_r, fd, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fd = this; + _r = fd.fdmu.rwlock(true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r) { */ case 1: + $s = -1; return errClosing(fd.isFile); + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: readLock, $c: true, $r, _r, fd, $s};return $f; + }; + $ptrType(FD).prototype.readUnlock = function readUnlock() { + var {_r, _r$1, fd, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fd = this; + _r = fd.fdmu.rwunlock(true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + _r$1 = fd.destroy(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: readUnlock, $c: true, $r, _r, _r$1, fd, $s};return $f; + }; + $ptrType(FD).prototype.writeLock = function writeLock() { + var {_r, fd, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fd = this; + _r = fd.fdmu.rwlock(false); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r) { */ case 1: + $s = -1; return errClosing(fd.isFile); + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: writeLock, $c: true, $r, _r, fd, $s};return $f; + }; + $ptrType(FD).prototype.writeUnlock = function writeUnlock() { + var {_r, _r$1, fd, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fd = this; + _r = fd.fdmu.rwunlock(false); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + _r$1 = fd.destroy(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: writeUnlock, $c: true, $r, _r, _r$1, fd, $s};return $f; + }; + $ptrType(FD).prototype.Fsync = function Fsync() { + var {$24r, _r, err, fd, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + fd = [fd]; + fd[0] = this; + err = fd[0].incref(); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $deferred.push([$methodVal(fd[0], "decref"), []]); + _r = ignoringEINTR((function(fd) { return function FD·Fsync·func1() { + var {$24r, _r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = syscall.Fsync(fd[0].Sysfd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: FD·Fsync·func1, $c: true, $r, $24r, _r, $s};return $f; + }; })(fd)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Fsync, $c: true, $r, $24r, _r, err, fd, $s, $deferred};return $f; } } + }; + $ptrType(errNetClosing).prototype.Error = function Error() { + var e; + e = this; + return "use of closed network connection"; + }; + errNetClosing.prototype.Error = function(...$args) { return this.$val.Error(...$args); }; + $ptrType(errNetClosing).prototype.Timeout = function Timeout() { + var e; + e = this; + return false; + }; + errNetClosing.prototype.Timeout = function(...$args) { return this.$val.Timeout(...$args); }; + $ptrType(errNetClosing).prototype.Temporary = function Temporary() { + var e; + e = this; + return false; + }; + errNetClosing.prototype.Temporary = function(...$args) { return this.$val.Temporary(...$args); }; + errClosing = function errClosing$1(isFile) { + var isFile; + if (isFile) { + return $pkg.ErrFileClosing; + } + return new $pkg.ErrNetClosing.constructor.elem($pkg.ErrNetClosing); + }; + $ptrType(DeadlineExceededError).prototype.Error = function Error$1() { + var e; + e = this; + return "i/o timeout"; + }; + $ptrType(DeadlineExceededError).prototype.Timeout = function Timeout$1() { + var e; + e = this; + return true; + }; + $ptrType(DeadlineExceededError).prototype.Temporary = function Temporary$1() { + var e; + e = this; + return true; + }; + fcntl = function fcntl$1(fd, cmd, arg) { + var arg, cmd, fd; + return [0, new syscall.Errno(38)]; + }; + ptrType$2.methods = [{prop: "Init", name: "Init", pkg: "", typ: $funcType([$String, $Bool], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "SetBlocking", name: "SetBlocking", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Pread", name: "Pread", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([sliceType], [$Int, syscall.Sockaddr, $error], false)}, {prop: "ReadFromInet4", name: "ReadFromInet4", pkg: "", typ: $funcType([sliceType, ptrType$5], [$Int, $error], false)}, {prop: "ReadFromInet6", name: "ReadFromInet6", pkg: "", typ: $funcType([sliceType, ptrType$6], [$Int, $error], false)}, {prop: "ReadMsg", name: "ReadMsg", pkg: "", typ: $funcType([sliceType, sliceType, $Int], [$Int, $Int, $Int, syscall.Sockaddr, $error], false)}, {prop: "ReadMsgInet4", name: "ReadMsgInet4", pkg: "", typ: $funcType([sliceType, sliceType, $Int, ptrType$5], [$Int, $Int, $Int, $error], false)}, {prop: "ReadMsgInet6", name: "ReadMsgInet6", pkg: "", typ: $funcType([sliceType, sliceType, $Int, ptrType$6], [$Int, $Int, $Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Pwrite", name: "Pwrite", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "WriteToInet4", name: "WriteToInet4", pkg: "", typ: $funcType([sliceType, ptrType$5], [$Int, $error], false)}, {prop: "WriteToInet6", name: "WriteToInet6", pkg: "", typ: $funcType([sliceType, ptrType$6], [$Int, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([sliceType, syscall.Sockaddr], [$Int, $error], false)}, {prop: "WriteMsg", name: "WriteMsg", pkg: "", typ: $funcType([sliceType, sliceType, syscall.Sockaddr], [$Int, $Int, $error], false)}, {prop: "WriteMsgInet4", name: "WriteMsgInet4", pkg: "", typ: $funcType([sliceType, sliceType, ptrType$5], [$Int, $Int, $error], false)}, {prop: "WriteMsgInet6", name: "WriteMsgInet6", pkg: "", typ: $funcType([sliceType, sliceType, ptrType$6], [$Int, $Int, $error], false)}, {prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [$Int, syscall.Sockaddr, $String, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "ReadDirent", name: "ReadDirent", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Fchmod", name: "Fchmod", pkg: "", typ: $funcType([$Uint32], [$error], false)}, {prop: "Fchdir", name: "Fchdir", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Fstat", name: "Fstat", pkg: "", typ: $funcType([ptrType$7], [$error], false)}, {prop: "Dup", name: "Dup", pkg: "", typ: $funcType([], [$Int, $String, $error], false)}, {prop: "WaitWrite", name: "WaitWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WriteOnce", name: "WriteOnce", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "RawRead", name: "RawRead", pkg: "", typ: $funcType([funcType], [$error], false)}, {prop: "RawWrite", name: "RawWrite", pkg: "", typ: $funcType([funcType], [$error], false)}, {prop: "eofError", name: "eofError", pkg: "internal/poll", typ: $funcType([$Int, $error], [$error], false)}, {prop: "Shutdown", name: "Shutdown", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "Fchown", name: "Fchown", pkg: "", typ: $funcType([$Int, $Int], [$error], false)}, {prop: "Ftruncate", name: "Ftruncate", pkg: "", typ: $funcType([$Int64], [$error], false)}, {prop: "RawControl", name: "RawControl", pkg: "", typ: $funcType([funcType$1], [$error], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "incref", name: "incref", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "decref", name: "decref", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "readLock", name: "readLock", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "readUnlock", name: "readUnlock", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "writeLock", name: "writeLock", pkg: "internal/poll", typ: $funcType([], [$error], false)}, {prop: "writeUnlock", name: "writeUnlock", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "Fsync", name: "Fsync", pkg: "", typ: $funcType([], [$error], false)}]; + ptrType$8.methods = [{prop: "init", name: "init", pkg: "internal/poll", typ: $funcType([ptrType$2], [$error], false)}, {prop: "close", name: "close", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "evict", name: "evict", pkg: "internal/poll", typ: $funcType([], [], false)}, {prop: "prepare", name: "prepare", pkg: "internal/poll", typ: $funcType([$Int, $Bool], [$error], false)}, {prop: "prepareRead", name: "prepareRead", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "prepareWrite", name: "prepareWrite", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "wait", name: "wait", pkg: "internal/poll", typ: $funcType([$Int, $Bool], [$error], false)}, {prop: "waitRead", name: "waitRead", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "waitWrite", name: "waitWrite", pkg: "internal/poll", typ: $funcType([$Bool], [$error], false)}, {prop: "waitCanceled", name: "waitCanceled", pkg: "internal/poll", typ: $funcType([$Int], [], false)}, {prop: "pollable", name: "pollable", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}]; + ptrType$9.methods = [{prop: "incref", name: "incref", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "increfAndClose", name: "increfAndClose", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "decref", name: "decref", pkg: "internal/poll", typ: $funcType([], [$Bool], false)}, {prop: "rwlock", name: "rwlock", pkg: "internal/poll", typ: $funcType([$Bool], [$Bool], false)}, {prop: "rwunlock", name: "rwunlock", pkg: "internal/poll", typ: $funcType([$Bool], [$Bool], false)}]; + errNetClosing.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$10.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; + FD.init("internal/poll", [{prop: "fdmu", name: "fdmu", embedded: false, exported: false, typ: fdMutex, tag: ""}, {prop: "Sysfd", name: "Sysfd", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "pd", name: "pd", embedded: false, exported: false, typ: pollDesc, tag: ""}, {prop: "iovecs", name: "iovecs", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "csema", name: "csema", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "isBlocking", name: "isBlocking", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "IsStream", name: "IsStream", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "ZeroReadIsEOF", name: "ZeroReadIsEOF", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "isFile", name: "isFile", embedded: false, exported: false, typ: $Bool, tag: ""}]); + pollDesc.init("internal/poll", [{prop: "fd", name: "fd", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "closing", name: "closing", embedded: false, exported: false, typ: $Bool, tag: ""}]); + fdMutex.init("internal/poll", [{prop: "state", name: "state", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "rsema", name: "rsema", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "wsema", name: "wsema", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + errNetClosing.init("", []); + DeadlineExceededError.init("", []); + $pkg.$initLinknames = function() { + runtime_Semacquire = $linknames["sync.runtime_Semacquire"]; + runtime_Semrelease = $linknames["sync.runtime_Semrelease"]; + }; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unix.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syscall.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.CloseFunc = syscall.Close; + $pkg.AcceptFunc = syscall.Accept; + tryDupCloexec = 1; + $pkg.ErrNetClosing = new errNetClosing.ptr(); + $pkg.ErrFileClosing = errors.New("use of closed file"); + $pkg.ErrNoDeadline = errors.New("file type does not support deadline"); + $pkg.ErrDeadlineExceeded = new DeadlineExceededError.ptr(); + $pkg.ErrNotPollable = errors.New("not pollable"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/safefilepath"] = (function() { + var $pkg = {}, $init, errors, runtime, errInvalidPath; + errors = $packages["errors"]; + runtime = $packages["runtime"]; + $pkg.$finishSetup = function() { + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + errInvalidPath = errors.New("invalid path"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/syscall/execenv"] = (function() { + var $pkg = {}, $init, syscall, Default; + syscall = $packages["syscall"]; + $pkg.$finishSetup = function() { + Default = function Default$1(sys) { + var {$24r, _r, sys, $s, $r, $c} = $restore(this, {sys}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = syscall.Environ(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = [_r, $ifaceNil]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Default$1, $c: true, $r, $24r, _r, sys, $s};return $f; + }; + $pkg.Default = Default; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = syscall.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/testlog"] = (function() { + var $pkg = {}, $init, sync, atomic, Interface, structType, ptrType, logger, panicOnExit0, Logger, Getenv, Open, Stat, PanicOnExit0; + sync = $packages["sync"]; + atomic = $packages["sync/atomic"]; + Interface = $newType(8, $kindInterface, "testlog.Interface", true, "internal/testlog", true, null); + $pkg.Interface = Interface; + $pkg.$finishSetup = function() { + structType = $structType("internal/testlog", [{prop: "mu", name: "mu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "val", name: "val", embedded: false, exported: false, typ: $Bool, tag: ""}]); + ptrType = $ptrType(Interface); + Logger = function Logger$1() { + var impl; + impl = logger.Load(); + if ($interfaceIsEqual(impl, $ifaceNil)) { + return $ifaceNil; + } + return $assertType(impl, ptrType).$get(); + }; + $pkg.Logger = Logger; + Getenv = function Getenv$1(name) { + var {log, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + log = Logger(); + /* */ if (!($interfaceIsEqual(log, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(log, $ifaceNil))) { */ case 1: + $r = log.Getenv(name); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Getenv$1, $c: true, $r, log, name, $s};return $f; + }; + $pkg.Getenv = Getenv; + Open = function Open$1(name) { + var {log, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + log = Logger(); + /* */ if (!($interfaceIsEqual(log, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(log, $ifaceNil))) { */ case 1: + $r = log.Open(name); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Open$1, $c: true, $r, log, name, $s};return $f; + }; + $pkg.Open = Open; + Stat = function Stat$1(name) { + var {log, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + log = Logger(); + /* */ if (!($interfaceIsEqual(log, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(log, $ifaceNil))) { */ case 1: + $r = log.Stat(name); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Stat$1, $c: true, $r, log, name, $s};return $f; + }; + $pkg.Stat = Stat; + PanicOnExit0 = function PanicOnExit0$1() { + var {$24r, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + $r = panicOnExit0.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(panicOnExit0.mu, "Unlock"), []]); + $24r = panicOnExit0.val; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: PanicOnExit0$1, $c: true, $r, $24r, $s, $deferred};return $f; } } + }; + $pkg.PanicOnExit0 = PanicOnExit0; + Interface.init([{prop: "Chdir", name: "Chdir", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Getenv", name: "Getenv", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([$String], [], false)}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = sync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + logger = new atomic.Value.ptr($ifaceNil); + panicOnExit0 = new structType.ptr(new sync.Mutex.ptr(0, 0), false); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["path"] = (function() { + var $pkg = {}, $init, errors, bytealg, utf8, lazybuf, sliceType, ptrType, Clean, lastSlash, Split, Join, Ext, Base, IsAbs, Dir; + errors = $packages["errors"]; + bytealg = $packages["internal/bytealg"]; + utf8 = $packages["unicode/utf8"]; + lazybuf = $newType(0, $kindStruct, "path.lazybuf", true, "path", false, function(s_, buf_, w_) { + this.$val = this; + if (arguments.length === 0) { + this.s = ""; + this.buf = sliceType.nil; + this.w = 0; + return; + } + this.s = s_; + this.buf = buf_; + this.w = w_; + }); + $pkg.lazybuf = lazybuf; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint8); + ptrType = $ptrType(lazybuf); + $ptrType(lazybuf).prototype.index = function index(i) { + var b, i, x; + b = this; + if (!(b.buf === sliceType.nil)) { + return (x = b.buf, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + } + return b.s.charCodeAt(i); + }; + $ptrType(lazybuf).prototype.append = function append(c) { + var b, c, x, x$1; + b = this; + if (b.buf === sliceType.nil) { + if (b.w < b.s.length && (b.s.charCodeAt(b.w) === c)) { + b.w = b.w + (1) >> 0; + return; + } + b.buf = $makeSlice(sliceType, b.s.length); + $copyString(b.buf, $substring(b.s, 0, b.w)); + } + (x = b.buf, x$1 = b.w, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = c)); + b.w = b.w + (1) >> 0; + }; + $ptrType(lazybuf).prototype.string = function string() { + var b; + b = this; + if (b.buf === sliceType.nil) { + return $substring(b.s, 0, b.w); + } + return ($bytesToString($subslice(b.buf, 0, b.w))); + }; + Clean = function Clean$1(path) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, dotdot, n, out, path, r, rooted; + if (path === "") { + return "."; + } + rooted = path.charCodeAt(0) === 47; + n = path.length; + out = new lazybuf.ptr(path, sliceType.nil, 0); + _tmp = 0; + _tmp$1 = 0; + r = _tmp; + dotdot = _tmp$1; + if (rooted) { + out.append(47); + _tmp$2 = 1; + _tmp$3 = 1; + r = _tmp$2; + dotdot = _tmp$3; + } + while (true) { + if (!(r < n)) { break; } + if ((path.charCodeAt(r) === 47)) { + r = r + (1) >> 0; + } else if ((path.charCodeAt(r) === 46) && (((r + 1 >> 0) === n) || (path.charCodeAt((r + 1 >> 0)) === 47))) { + r = r + (1) >> 0; + } else if ((path.charCodeAt(r) === 46) && (path.charCodeAt((r + 1 >> 0)) === 46) && (((r + 2 >> 0) === n) || (path.charCodeAt((r + 2 >> 0)) === 47))) { + r = r + (2) >> 0; + if (out.w > dotdot) { + out.w = out.w - (1) >> 0; + while (true) { + if (!(out.w > dotdot && !((out.index(out.w) === 47)))) { break; } + out.w = out.w - (1) >> 0; + } + } else if (!rooted) { + if (out.w > 0) { + out.append(47); + } + out.append(46); + out.append(46); + dotdot = out.w; + } + } else { + if (rooted && !((out.w === 1)) || !rooted && !((out.w === 0))) { + out.append(47); + } + while (true) { + if (!(r < n && !((path.charCodeAt(r) === 47)))) { break; } + out.append(path.charCodeAt(r)); + r = r + (1) >> 0; + } + } + } + if (out.w === 0) { + return "."; + } + return out.string(); + }; + $pkg.Clean = Clean; + lastSlash = function lastSlash$1(s) { + var i, s; + i = s.length - 1 >> 0; + while (true) { + if (!(i >= 0 && !((s.charCodeAt(i) === 47)))) { break; } + i = i - (1) >> 0; + } + return i; + }; + Split = function Split$1(path) { + var _tmp, _tmp$1, dir, file, i, path; + dir = ""; + file = ""; + i = lastSlash(path); + _tmp = $substring(path, 0, (i + 1 >> 0)); + _tmp$1 = $substring(path, (i + 1 >> 0)); + dir = _tmp; + file = _tmp$1; + return [dir, file]; + }; + $pkg.Split = Split; + Join = function Join$1(elem) { + var _i, _i$1, _ref, _ref$1, buf, e, e$1, elem, size; + size = 0; + _ref = elem; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + size = size + (e.length) >> 0; + _i++; + } + if (size === 0) { + return ""; + } + buf = $makeSlice(sliceType, 0, ((size + elem.$length >> 0) - 1 >> 0)); + _ref$1 = elem; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + e$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (buf.$length > 0 || !(e$1 === "")) { + if (buf.$length > 0) { + buf = $append(buf, 47); + } + buf = $appendSlice(buf, e$1); + } + _i$1++; + } + return Clean(($bytesToString(buf))); + }; + $pkg.Join = Join; + Ext = function Ext$1(path) { + var i, path; + i = path.length - 1 >> 0; + while (true) { + if (!(i >= 0 && !((path.charCodeAt(i) === 47)))) { break; } + if (path.charCodeAt(i) === 46) { + return $substring(path, i); + } + i = i - (1) >> 0; + } + return ""; + }; + $pkg.Ext = Ext; + Base = function Base$1(path) { + var i, path; + if (path === "") { + return "."; + } + while (true) { + if (!(path.length > 0 && (path.charCodeAt((path.length - 1 >> 0)) === 47))) { break; } + path = $substring(path, 0, (path.length - 1 >> 0)); + } + i = lastSlash(path); + if (i >= 0) { + path = $substring(path, (i + 1 >> 0)); + } + if (path === "") { + return "/"; + } + return path; + }; + $pkg.Base = Base; + IsAbs = function IsAbs$1(path) { + var path; + return path.length > 0 && (path.charCodeAt(0) === 47); + }; + $pkg.IsAbs = IsAbs; + Dir = function Dir$1(path) { + var _tuple, dir, path; + _tuple = Split(path); + dir = _tuple[0]; + return Clean(dir); + }; + $pkg.Dir = Dir; + ptrType.methods = [{prop: "index", name: "index", pkg: "path", typ: $funcType([$Int], [$Uint8], false)}, {prop: "append", name: "append", pkg: "path", typ: $funcType([$Uint8], [], false)}, {prop: "string", name: "string", pkg: "path", typ: $funcType([], [$String], false)}]; + lazybuf.init("path", [{prop: "s", name: "s", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "w", name: "w", embedded: false, exported: false, typ: $Int, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytealg.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ErrBadPattern = errors.New("syntax error in pattern"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["io/fs"] = (function() { + var $pkg = {}, $init, errors, oserror, io, path, sort, time, utf8, dirInfo, File, DirEntry, FileInfo, FileMode, PathError, ptrType, sliceType$2, arrayType, interfaceType, FileInfoToDirEntry, ValidPath, errInvalid, errPermission, errExist, errNotExist, errClosed; + errors = $packages["errors"]; + oserror = $packages["internal/oserror"]; + io = $packages["io"]; + path = $packages["path"]; + sort = $packages["sort"]; + time = $packages["time"]; + utf8 = $packages["unicode/utf8"]; + dirInfo = $newType(0, $kindStruct, "fs.dirInfo", true, "io/fs", false, function(fileInfo_) { + this.$val = this; + if (arguments.length === 0) { + this.fileInfo = $ifaceNil; + return; + } + this.fileInfo = fileInfo_; + }); + File = $newType(8, $kindInterface, "fs.File", true, "io/fs", true, null); + DirEntry = $newType(8, $kindInterface, "fs.DirEntry", true, "io/fs", true, null); + FileInfo = $newType(8, $kindInterface, "fs.FileInfo", true, "io/fs", true, null); + FileMode = $newType(4, $kindUint32, "fs.FileMode", true, "io/fs", true, null); + PathError = $newType(0, $kindStruct, "fs.PathError", true, "io/fs", true, function(Op_, Path_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Op = ""; + this.Path = ""; + this.Err = $ifaceNil; + return; + } + this.Op = Op_; + this.Path = Path_; + this.Err = Err_; + }); + $pkg.dirInfo = dirInfo; + $pkg.File = File; + $pkg.DirEntry = DirEntry; + $pkg.FileInfo = FileInfo; + $pkg.FileMode = FileMode; + $pkg.PathError = PathError; + $pkg.$finishSetup = function() { + ptrType = $ptrType(PathError); + sliceType$2 = $sliceType($Uint8); + arrayType = $arrayType($Uint8, 32); + interfaceType = $interfaceType([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]); + $ptrType(dirInfo).prototype.IsDir = function IsDir$1() { + var {$24r, _r, di, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + di = this; + _r = di.fileInfo.IsDir(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: IsDir$1, $c: true, $r, $24r, _r, di, $s};return $f; + }; + dirInfo.prototype.IsDir = function(...$args) { return this.$val.IsDir(...$args); }; + $ptrType(dirInfo).prototype.Type = function Type$1() { + var {$24r, _r, _r$1, di, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + di = this; + _r = di.fileInfo.Mode(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = new FileMode(_r).Type(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Type$1, $c: true, $r, $24r, _r, _r$1, di, $s};return $f; + }; + dirInfo.prototype.Type = function(...$args) { return this.$val.Type(...$args); }; + $ptrType(dirInfo).prototype.Info = function Info$1() { + var di; + di = this; + return [di.fileInfo, $ifaceNil]; + }; + dirInfo.prototype.Info = function(...$args) { return this.$val.Info(...$args); }; + $ptrType(dirInfo).prototype.Name = function Name$1() { + var {$24r, _r, di, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + di = this; + _r = di.fileInfo.Name(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Name$1, $c: true, $r, $24r, _r, di, $s};return $f; + }; + dirInfo.prototype.Name = function(...$args) { return this.$val.Name(...$args); }; + FileInfoToDirEntry = function FileInfoToDirEntry$1(info) { + var info, x; + if ($interfaceIsEqual(info, $ifaceNil)) { + return $ifaceNil; + } + return (x = new dirInfo.ptr(info), new x.constructor.elem(x)); + }; + $pkg.FileInfoToDirEntry = FileInfoToDirEntry; + ValidPath = function ValidPath$1(name) { + var elem, i, name; + if (!utf8.ValidString(name)) { + return false; + } + if (name === ".") { + return true; + } + while (true) { + i = 0; + while (true) { + if (!(i < name.length && !((name.charCodeAt(i) === 47)))) { break; } + i = i + (1) >> 0; + } + elem = $substring(name, 0, i); + if (elem === "" || elem === "." || elem === "..") { + return false; + } + if (i === name.length) { + return true; + } + name = $substring(name, (i + 1 >> 0)); + } + }; + $pkg.ValidPath = ValidPath; + errInvalid = function errInvalid$1() { + return oserror.ErrInvalid; + }; + errPermission = function errPermission$1() { + return oserror.ErrPermission; + }; + errExist = function errExist$1() { + return oserror.ErrExist; + }; + errNotExist = function errNotExist$1() { + return oserror.ErrNotExist; + }; + errClosed = function errClosed$1() { + return oserror.ErrClosed; + }; + FileMode.prototype.String = function String() { + var _i, _i$1, _ref, _ref$1, _rune, _rune$1, buf, c, c$1, i, i$1, m, w, y, y$1; + m = this.$val; + buf = arrayType.zero(); + w = 0; + _ref = "dalTLDpSugct?"; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + c = _rune[0]; + if (!((((m & (((y = (((31 - i >> 0) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) { + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = ((c << 24 >>> 24))); + w = w + (1) >> 0; + } + _i += _rune[1]; + } + if (w === 0) { + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45); + w = w + (1) >> 0; + } + _ref$1 = "rwxrwxrwx"; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.length)) { break; } + _rune$1 = $decodeRune(_ref$1, _i$1); + i$1 = _i$1; + c$1 = _rune$1[0]; + if (!((((m & (((y$1 = (((8 - i$1 >> 0) >>> 0)), y$1 < 32 ? (1 << y$1) : 0) >>> 0))) >>> 0) === 0))) { + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = ((c$1 << 24 >>> 24))); + } else { + ((w < 0 || w >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[w] = 45); + } + w = w + (1) >> 0; + _i$1 += _rune$1[1]; + } + return ($bytesToString($subslice(new sliceType$2(buf), 0, w))); + }; + $ptrType(FileMode).prototype.String = function(...$args) { return new FileMode(this.$get()).String(...$args); }; + FileMode.prototype.IsDir = function IsDir$2() { + var m; + m = this.$val; + return !((((m & 2147483648) >>> 0) === 0)); + }; + $ptrType(FileMode).prototype.IsDir = function(...$args) { return new FileMode(this.$get()).IsDir(...$args); }; + FileMode.prototype.IsRegular = function IsRegular() { + var m; + m = this.$val; + return ((m & 2401763328) >>> 0) === 0; + }; + $ptrType(FileMode).prototype.IsRegular = function(...$args) { return new FileMode(this.$get()).IsRegular(...$args); }; + FileMode.prototype.Perm = function Perm() { + var m; + m = this.$val; + return (m & 511) >>> 0; + }; + $ptrType(FileMode).prototype.Perm = function(...$args) { return new FileMode(this.$get()).Perm(...$args); }; + FileMode.prototype.Type = function Type$2() { + var m; + m = this.$val; + return (m & 2401763328) >>> 0; + }; + $ptrType(FileMode).prototype.Type = function(...$args) { return new FileMode(this.$get()).Type(...$args); }; + $ptrType(PathError).prototype.Error = function Error() { + var {$24r, _r, e, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = e.Op + " " + e.Path + ": " + _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Error, $c: true, $r, $24r, _r, e, $s};return $f; + }; + $ptrType(PathError).prototype.Unwrap = function Unwrap() { + var e; + e = this; + return e.Err; + }; + $ptrType(PathError).prototype.Timeout = function Timeout() { + var {$24r, _r, _tuple, _v, e, ok, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _tuple = $assertType(e.Err, interfaceType, true); + t = _tuple[0]; + ok = _tuple[1]; + if (!(ok)) { _v = false; $s = 1; continue s; } + _r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 1: + $24r = _v; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Timeout, $c: true, $r, $24r, _r, _tuple, _v, e, ok, t, $s};return $f; + }; + dirInfo.methods = [{prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [FileMode], false)}, {prop: "Info", name: "Info", pkg: "", typ: $funcType([], [FileInfo, $error], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}]; + FileMode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsRegular", name: "IsRegular", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Perm", name: "Perm", pkg: "", typ: $funcType([], [FileMode], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [FileMode], false)}]; + ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]; + dirInfo.init("io/fs", [{prop: "fileInfo", name: "fileInfo", embedded: false, exported: false, typ: FileInfo, tag: ""}]); + File.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([], [FileInfo, $error], false)}]); + DirEntry.init([{prop: "Info", name: "Info", pkg: "", typ: $funcType([], [FileInfo, $error], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [FileMode], false)}]); + FileInfo.init([{prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "ModTime", name: "ModTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [FileMode], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}]); + PathError.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = oserror.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = path.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.SkipDir = errors.New("skip this directory"); + $pkg.SkipAll = errors.New("skip everything and stop the walk"); + $pkg.ErrInvalid = errInvalid(); + $pkg.ErrPermission = errPermission(); + $pkg.ErrExist = errExist(); + $pkg.ErrNotExist = errNotExist(); + $pkg.ErrClosed = errClosed(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["os"] = (function() { + var $pkg = {}, $init, errors, js, itoa, poll, safefilepath, execenv, unix, testlog, io, fs, runtime, sort, sync, atomic, syscall, time, fileStat, File, rawConn, file, unixDirent, LinkError, onlyWriter, ProcessState, Process, ProcAttr, Signal, timeout, SyscallError, dirInfo, readdirMode, sliceType, structType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, arrayType, ptrType$3, ptrType$5, arrayType$1, sliceType$3, ptrType$6, sliceType$4, ptrType$7, ptrType$8, ptrType$9, funcType, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, sliceType$6, funcType$1, ptrType$16, ptrType$17, sliceType$7, sliceType$8, funcType$2, funcType$3, ptrType$18, ptrType$19, sliceType$9, getwdCache, testingForceReadDirLstat, errPatternHasSeparator, errWriteAtInAppendMode, lstat, dirBufPool, _r, _r$1, _r$2, sameFile, SameFile, nextRandom, CreateTemp, prefixAndSuffix, joinPath, lastIndex, uitox, statNolog, lstatNolog, fillFileStatFromSys, Stat, Lstat, newRawConn, init, Exit, Pipe, IsPathSeparator, basename, runtime_args, init$1, runtime_beforeExit, fastrand, Getwd, fixLongPath, NewFile, net_newUnixFile, newFile, epipecheck, openFileNolog, Remove, tempDir, Readlink, newUnixDirent, sigpipe, syscallMode, chmod, ignoringEINTR, genericReadFrom, setStickyBit, Open, OpenFile, fixCount, TempDir, Chmod, ReadFile, startProcess, newProcess, StartProcess, errNoDeadline, errDeadlineExceeded, NewSyscallError, IsExist, IsNotExist, underlyingErrorIs, underlyingError, Getenv, LookupEnv, Environ, direntIno, direntReclen, direntNamlen, direntType, readInt, readIntBE, readIntLE, ReadDir; + errors = $packages["errors"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + itoa = $packages["internal/itoa"]; + poll = $packages["internal/poll"]; + safefilepath = $packages["internal/safefilepath"]; + execenv = $packages["internal/syscall/execenv"]; + unix = $packages["internal/syscall/unix"]; + testlog = $packages["internal/testlog"]; + io = $packages["io"]; + fs = $packages["io/fs"]; + runtime = $packages["runtime"]; + sort = $packages["sort"]; + sync = $packages["sync"]; + atomic = $packages["sync/atomic"]; + syscall = $packages["syscall"]; + time = $packages["time"]; + fileStat = $newType(0, $kindStruct, "os.fileStat", true, "os", false, function(name_, size_, mode_, modTime_, sys_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.size = new $Int64(0, 0); + this.mode = 0; + this.modTime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$3.nil); + this.sys = new syscall.Stat_t.ptr(new $Int64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), 0, 0, new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0)); + return; + } + this.name = name_; + this.size = size_; + this.mode = mode_; + this.modTime = modTime_; + this.sys = sys_; + }); + File = $newType(0, $kindStruct, "os.File", true, "os", true, function(file_) { + this.$val = this; + if (arguments.length === 0) { + this.file = ptrType$9.nil; + return; + } + this.file = file_; + }); + rawConn = $newType(0, $kindStruct, "os.rawConn", true, "os", false, function(file_) { + this.$val = this; + if (arguments.length === 0) { + this.file = ptrType$2.nil; + return; + } + this.file = file_; + }); + file = $newType(0, $kindStruct, "os.file", true, "os", false, function(pfd_, name_, dirinfo_, nonblock_, stdoutOrErr_, appendMode_) { + this.$val = this; + if (arguments.length === 0) { + this.pfd = new poll.FD.ptr(new poll.fdMutex.ptr(new $Uint64(0, 0), 0, 0), 0, new poll.pollDesc.ptr(ptrType$6.nil, false), ptrType$7.nil, 0, 0, false, false, false); + this.name = ""; + this.dirinfo = ptrType$8.nil; + this.nonblock = false; + this.stdoutOrErr = false; + this.appendMode = false; + return; + } + this.pfd = pfd_; + this.name = name_; + this.dirinfo = dirinfo_; + this.nonblock = nonblock_; + this.stdoutOrErr = stdoutOrErr_; + this.appendMode = appendMode_; + }); + unixDirent = $newType(0, $kindStruct, "os.unixDirent", true, "os", false, function(parent_, name_, typ_, info_) { + this.$val = this; + if (arguments.length === 0) { + this.parent = ""; + this.name = ""; + this.typ = 0; + this.info = $ifaceNil; + return; + } + this.parent = parent_; + this.name = name_; + this.typ = typ_; + this.info = info_; + }); + LinkError = $newType(0, $kindStruct, "os.LinkError", true, "os", true, function(Op_, Old_, New_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Op = ""; + this.Old = ""; + this.New = ""; + this.Err = $ifaceNil; + return; + } + this.Op = Op_; + this.Old = Old_; + this.New = New_; + this.Err = Err_; + }); + onlyWriter = $newType(0, $kindStruct, "os.onlyWriter", true, "os", false, function(Writer_) { + this.$val = this; + if (arguments.length === 0) { + this.Writer = $ifaceNil; + return; + } + this.Writer = Writer_; + }); + ProcessState = $newType(0, $kindStruct, "os.ProcessState", true, "os", true, function(pid_, status_, rusage_) { + this.$val = this; + if (arguments.length === 0) { + this.pid = 0; + this.status = 0; + this.rusage = ptrType$12.nil; + return; + } + this.pid = pid_; + this.status = status_; + this.rusage = rusage_; + }); + Process = $newType(0, $kindStruct, "os.Process", true, "os", true, function(Pid_, handle_, isdone_, sigMu_) { + this.$val = this; + if (arguments.length === 0) { + this.Pid = 0; + this.handle = 0; + this.isdone = new atomic.Bool.ptr(new atomic.noCopy.ptr(), 0); + this.sigMu = new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, new atomic.Int32.ptr(new atomic.noCopy.ptr(), 0), new atomic.Int32.ptr(new atomic.noCopy.ptr(), 0)); + return; + } + this.Pid = Pid_; + this.handle = handle_; + this.isdone = isdone_; + this.sigMu = sigMu_; + }); + ProcAttr = $newType(0, $kindStruct, "os.ProcAttr", true, "os", true, function(Dir_, Env_, Files_, Sys_) { + this.$val = this; + if (arguments.length === 0) { + this.Dir = ""; + this.Env = sliceType.nil; + this.Files = sliceType$9.nil; + this.Sys = ptrType$15.nil; + return; + } + this.Dir = Dir_; + this.Env = Env_; + this.Files = Files_; + this.Sys = Sys_; + }); + Signal = $newType(8, $kindInterface, "os.Signal", true, "os", true, null); + timeout = $newType(8, $kindInterface, "os.timeout", true, "os", false, null); + SyscallError = $newType(0, $kindStruct, "os.SyscallError", true, "os", true, function(Syscall_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Syscall = ""; + this.Err = $ifaceNil; + return; + } + this.Syscall = Syscall_; + this.Err = Err_; + }); + dirInfo = $newType(0, $kindStruct, "os.dirInfo", true, "os", false, function(buf_, nbuf_, bufp_) { + this.$val = this; + if (arguments.length === 0) { + this.buf = ptrType.nil; + this.nbuf = 0; + this.bufp = 0; + return; + } + this.buf = buf_; + this.nbuf = nbuf_; + this.bufp = bufp_; + }); + readdirMode = $newType(4, $kindInt, "os.readdirMode", true, "os", false, null); + $pkg.fileStat = fileStat; + $pkg.File = File; + $pkg.rawConn = rawConn; + $pkg.file = file; + $pkg.unixDirent = unixDirent; + $pkg.LinkError = LinkError; + $pkg.onlyWriter = onlyWriter; + $pkg.ProcessState = ProcessState; + $pkg.Process = Process; + $pkg.ProcAttr = ProcAttr; + $pkg.Signal = Signal; + $pkg.timeout = timeout; + $pkg.SyscallError = SyscallError; + $pkg.dirInfo = dirInfo; + $pkg.readdirMode = readdirMode; + $pkg.$finishSetup = function() { + sliceType = $sliceType($String); + structType = $structType("os", [{prop: "Mutex", name: "Mutex", embedded: true, exported: true, typ: sync.Mutex, tag: ""}, {prop: "dir", name: "dir", embedded: false, exported: false, typ: $String, tag: ""}]); + sliceType$1 = $sliceType($emptyInterface); + sliceType$2 = $sliceType($Uint8); + ptrType = $ptrType(sliceType$2); + ptrType$1 = $ptrType(fileStat); + ptrType$2 = $ptrType(File); + arrayType = $arrayType($Uint8, 20); + ptrType$3 = $ptrType(time.Location); + ptrType$5 = $ptrType(fs.PathError); + arrayType$1 = $arrayType($Int, 2); + sliceType$3 = $sliceType($Int); + ptrType$6 = $ptrType(poll.FD); + sliceType$4 = $sliceType(syscall.Iovec); + ptrType$7 = $ptrType(sliceType$4); + ptrType$8 = $ptrType(dirInfo); + ptrType$9 = $ptrType(file); + funcType = $funcType([ptrType$9], [$error], false); + ptrType$10 = $ptrType(ProcessState); + ptrType$11 = $ptrType(syscall.WaitStatus); + ptrType$12 = $ptrType(syscall.Rusage); + ptrType$13 = $ptrType(Process); + ptrType$14 = $ptrType(ProcAttr); + ptrType$15 = $ptrType(syscall.SysProcAttr); + sliceType$6 = $sliceType($Uintptr); + funcType$1 = $funcType([ptrType$13], [$error], false); + ptrType$16 = $ptrType(LinkError); + ptrType$17 = $ptrType(SyscallError); + sliceType$7 = $sliceType(fs.DirEntry); + sliceType$8 = $sliceType(fs.FileInfo); + funcType$2 = $funcType([$Uintptr], [], false); + funcType$3 = $funcType([$Uintptr], [$Bool], false); + ptrType$18 = $ptrType(rawConn); + ptrType$19 = $ptrType(unixDirent); + sliceType$9 = $sliceType(ptrType$2); + $ptrType(Process).prototype.blockUntilWaitable = function blockUntilWaitable() { + var p; + p = this; + return [false, $ifaceNil]; + }; + $ptrType(fileStat).prototype.Size = function Size() { + var fs$1; + fs$1 = this; + return fs$1.size; + }; + $ptrType(fileStat).prototype.Mode = function Mode() { + var fs$1; + fs$1 = this; + return fs$1.mode; + }; + $ptrType(fileStat).prototype.ModTime = function ModTime() { + var fs$1; + fs$1 = this; + return fs$1.modTime; + }; + $ptrType(fileStat).prototype.Sys = function Sys() { + var fs$1; + fs$1 = this; + return fs$1.sys; + }; + sameFile = function sameFile$1(fs1, fs2) { + var fs1, fs2, x, x$1, x$2, x$3; + return (x = fs1.sys.Dev, x$1 = fs2.sys.Dev, (x.$high === x$1.$high && x.$low === x$1.$low)) && (x$2 = fs1.sys.Ino, x$3 = fs2.sys.Ino, (x$2.$high === x$3.$high && x$2.$low === x$3.$low)); + }; + $ptrType(fileStat).prototype.Name = function Name() { + var fs$1; + fs$1 = this; + return fs$1.name; + }; + $ptrType(fileStat).prototype.IsDir = function IsDir() { + var fs$1; + fs$1 = this; + return new fs.FileMode(fs$1.Mode()).IsDir(); + }; + SameFile = function SameFile$1(fi1, fi2) { + var _tuple, _tuple$1, fi1, fi2, fs1, fs2, ok1, ok2; + _tuple = $assertType(fi1, ptrType$1, true); + fs1 = _tuple[0]; + ok1 = _tuple[1]; + _tuple$1 = $assertType(fi2, ptrType$1, true); + fs2 = _tuple$1[0]; + ok2 = _tuple$1[1]; + if (!ok1 || !ok2) { + return false; + } + return sameFile(fs1, fs2); + }; + $pkg.SameFile = SameFile; + nextRandom = function nextRandom$1() { + var {$24r, _r$3, _r$4, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = fastrand(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = itoa.Uitoa(((_r$3 >>> 0))); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: nextRandom$1, $c: true, $r, $24r, _r$3, _r$4, $s};return $f; + }; + CreateTemp = function CreateTemp$1(dir, pattern) { + var {_r$3, _r$4, _r$5, _tuple, _tuple$1, dir, err, err$1, f, name, pattern, prefix, suffix, try$1, $s, $r, $c} = $restore(this, {dir, pattern}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (dir === "") { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (dir === "") { */ case 1: + _r$3 = TempDir(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + dir = _r$3; + /* } */ case 2: + _tuple = prefixAndSuffix(pattern); + prefix = _tuple[0]; + suffix = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, new fs.PathError.ptr("createtemp", pattern, err)]; + } + prefix = joinPath(dir, prefix); + try$1 = 0; + /* while (true) { */ case 4: + _r$4 = nextRandom(); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + name = prefix + _r$4 + suffix; + _r$5 = OpenFile(name, 194, 384); /* */ $s = 7; case 7: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$1 = _r$5; + f = _tuple$1[0]; + err$1 = _tuple$1[1]; + if (IsExist(err$1)) { + try$1 = try$1 + (1) >> 0; + if (try$1 < 10000) { + /* continue; */ $s = 4; continue; + } + $s = -1; return [ptrType$2.nil, new fs.PathError.ptr("createtemp", prefix + "*" + suffix, $pkg.ErrExist)]; + } + $s = -1; return [f, err$1]; + case 5: + $s = -1; return [ptrType$2.nil, $ifaceNil]; + /* */ } return; } var $f = {$blk: CreateTemp$1, $c: true, $r, _r$3, _r$4, _r$5, _tuple, _tuple$1, dir, err, err$1, f, name, pattern, prefix, suffix, try$1, $s};return $f; + }; + $pkg.CreateTemp = CreateTemp; + prefixAndSuffix = function prefixAndSuffix$1(pattern) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, err, i, pattern, pos, prefix, suffix; + prefix = ""; + suffix = ""; + err = $ifaceNil; + i = 0; + while (true) { + if (!(i < pattern.length)) { break; } + if (IsPathSeparator(pattern.charCodeAt(i))) { + _tmp = ""; + _tmp$1 = ""; + _tmp$2 = errPatternHasSeparator; + prefix = _tmp; + suffix = _tmp$1; + err = _tmp$2; + return [prefix, suffix, err]; + } + i = i + (1) >> 0; + } + pos = lastIndex(pattern, 42); + if (!((pos === -1))) { + _tmp$3 = $substring(pattern, 0, pos); + _tmp$4 = $substring(pattern, (pos + 1 >> 0)); + prefix = _tmp$3; + suffix = _tmp$4; + } else { + prefix = pattern; + } + _tmp$5 = prefix; + _tmp$6 = suffix; + _tmp$7 = $ifaceNil; + prefix = _tmp$5; + suffix = _tmp$6; + err = _tmp$7; + return [prefix, suffix, err]; + }; + joinPath = function joinPath$1(dir, name) { + var dir, name; + if (dir.length > 0 && IsPathSeparator(dir.charCodeAt((dir.length - 1 >> 0)))) { + return dir + name; + } + return dir + "/" + name; + }; + lastIndex = function lastIndex$1(s, sep) { + var i, s, sep; + i = s.length - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + if (s.charCodeAt(i) === sep) { + return i; + } + i = i - (1) >> 0; + } + return -1; + }; + uitox = function uitox$1(val) { + var _q, _r$3, _r$4, buf, i, q, val; + if (val === 0) { + return "0x0"; + } + buf = arrayType.zero(); + i = 19; + while (true) { + if (!(val >= 16)) { break; } + q = (_q = val / 16, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = "0123456789abcdef".charCodeAt((_r$3 = val % 16, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")))); + i = i - (1) >> 0; + val = q; + } + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = "0123456789abcdef".charCodeAt((_r$4 = val % 16, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")))); + i = i - (1) >> 0; + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = 120); + i = i - (1) >> 0; + ((i < 0 || i >= buf.length) ? ($throwRuntimeError("index out of range"), undefined) : buf[i] = 48); + return ($bytesToString($subslice(new sliceType$2(buf), i))); + }; + $ptrType(File).prototype.Stat = function Stat$1() { + var {_r$3, err, f, fs$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fs$1 = [fs$1]; + f = this; + if (f === ptrType$2.nil) { + $s = -1; return [$ifaceNil, $pkg.ErrInvalid]; + } + fs$1[0] = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$3.nil), new syscall.Stat_t.ptr(new $Int64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), 0, 0, new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0))); + _r$3 = f.file.pfd.Fstat(fs$1[0].sys); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err = _r$3; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, new fs.PathError.ptr("stat", f.file.name, err)]; + } + fillFileStatFromSys(fs$1[0], f.file.name); + $s = -1; return [fs$1[0], $ifaceNil]; + /* */ } return; } var $f = {$blk: Stat$1, $c: true, $r, _r$3, err, f, fs$1, $s};return $f; + }; + statNolog = function statNolog$1(name) { + var {_r$3, err, fs$1, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fs$1 = [fs$1]; + name = [name]; + fs$1[0] = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$3.nil), new syscall.Stat_t.ptr(new $Int64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), 0, 0, new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0))); + _r$3 = ignoringEINTR((function(fs$1, name) { return function statNolog·func1() { + var {$24r, _r$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = syscall.Stat(name[0], fs$1[0].sys); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: statNolog·func1, $c: true, $r, $24r, _r$3, $s};return $f; + }; })(fs$1, name)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err = _r$3; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, new fs.PathError.ptr("stat", name[0], err)]; + } + fillFileStatFromSys(fs$1[0], name[0]); + $s = -1; return [fs$1[0], $ifaceNil]; + /* */ } return; } var $f = {$blk: statNolog$1, $c: true, $r, _r$3, err, fs$1, name, $s};return $f; + }; + lstatNolog = function lstatNolog$1(name) { + var {_r$3, err, fs$1, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fs$1 = [fs$1]; + name = [name]; + fs$1[0] = new fileStat.ptr("", new $Int64(0, 0), 0, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$3.nil), new syscall.Stat_t.ptr(new $Int64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), 0, 0, new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0))); + _r$3 = ignoringEINTR((function(fs$1, name) { return function lstatNolog·func1() { + var {$24r, _r$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = syscall.Lstat(name[0], fs$1[0].sys); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: lstatNolog·func1, $c: true, $r, $24r, _r$3, $s};return $f; + }; })(fs$1, name)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err = _r$3; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, new fs.PathError.ptr("lstat", name[0], err)]; + } + fillFileStatFromSys(fs$1[0], name[0]); + $s = -1; return [fs$1[0], $ifaceNil]; + /* */ } return; } var $f = {$blk: lstatNolog$1, $c: true, $r, _r$3, err, fs$1, name, $s};return $f; + }; + fillFileStatFromSys = function fillFileStatFromSys$1(fs$1, name) { + var _1, fs$1, name; + fs$1.name = basename(name); + fs$1.size = fs$1.sys.Size; + time.Time.copy(fs$1.modTime, time.Unix(fs$1.sys.Mtime, fs$1.sys.MtimeNsec)); + fs$1.mode = ((((fs$1.sys.Mode & 511) >>> 0) >>> 0)); + _1 = (fs$1.sys.Mode & 126976) >>> 0; + if (_1 === (24576)) { + fs$1.mode = (fs$1.mode | (67108864)) >>> 0; + } else if (_1 === (8192)) { + fs$1.mode = (fs$1.mode | (69206016)) >>> 0; + } else if (_1 === (16384)) { + fs$1.mode = (fs$1.mode | (2147483648)) >>> 0; + } else if (_1 === (4096)) { + fs$1.mode = (fs$1.mode | (33554432)) >>> 0; + } else if (_1 === (40960)) { + fs$1.mode = (fs$1.mode | (134217728)) >>> 0; + } else if (_1 === (32768)) { + } else if (_1 === (49152)) { + fs$1.mode = (fs$1.mode | (16777216)) >>> 0; + } + if (!((((fs$1.sys.Mode & 1024) >>> 0) === 0))) { + fs$1.mode = (fs$1.mode | (4194304)) >>> 0; + } + if (!((((fs$1.sys.Mode & 2048) >>> 0) === 0))) { + fs$1.mode = (fs$1.mode | (8388608)) >>> 0; + } + if (!((((fs$1.sys.Mode & 512) >>> 0) === 0))) { + fs$1.mode = (fs$1.mode | (1048576)) >>> 0; + } + }; + Stat = function Stat$2(name) { + var {$24r, _r$3, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = testlog.Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = statNolog(name); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Stat$2, $c: true, $r, $24r, _r$3, name, $s};return $f; + }; + $pkg.Stat = Stat; + Lstat = function Lstat$1(name) { + var {$24r, _r$3, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = testlog.Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = lstatNolog(name); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Lstat$1, $c: true, $r, $24r, _r$3, name, $s};return $f; + }; + $pkg.Lstat = Lstat; + $ptrType(File).prototype.readFrom = function readFrom(r) { + var _tmp, _tmp$1, _tmp$2, err, f, handled, n, r; + n = new $Int64(0, 0); + handled = false; + err = $ifaceNil; + f = this; + _tmp = new $Int64(0, 0); + _tmp$1 = false; + _tmp$2 = $ifaceNil; + n = _tmp; + handled = _tmp$1; + err = _tmp$2; + return [n, handled, err]; + }; + $ptrType(rawConn).prototype.Control = function Control(f) { + var {_r$3, c, err, err$1, f, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + err = c.file.checkValid("SyscallConn.Control"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$3 = c.file.file.pfd.RawControl(f); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err$1 = _r$3; + runtime.KeepAlive(c.file); + $s = -1; return err$1; + /* */ } return; } var $f = {$blk: Control, $c: true, $r, _r$3, c, err, err$1, f, $s};return $f; + }; + $ptrType(rawConn).prototype.Read = function Read(f) { + var {_r$3, c, err, err$1, f, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + err = c.file.checkValid("SyscallConn.Read"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$3 = c.file.file.pfd.RawRead(f); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err$1 = _r$3; + runtime.KeepAlive(c.file); + $s = -1; return err$1; + /* */ } return; } var $f = {$blk: Read, $c: true, $r, _r$3, c, err, err$1, f, $s};return $f; + }; + $ptrType(rawConn).prototype.Write = function Write(f) { + var {_r$3, c, err, err$1, f, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + err = c.file.checkValid("SyscallConn.Write"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$3 = c.file.file.pfd.RawWrite(f); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err$1 = _r$3; + runtime.KeepAlive(c.file); + $s = -1; return err$1; + /* */ } return; } var $f = {$blk: Write, $c: true, $r, _r$3, c, err, err$1, f, $s};return $f; + }; + newRawConn = function newRawConn$1(file$1) { + var file$1; + return [new rawConn.ptr(file$1), $ifaceNil]; + }; + init = function init$2() { + if (false) { + return; + } + $pkg.Args = runtime_args(); + }; + Exit = function Exit$1(code) { + var {_r$3, _v, code, $s, $r, $c} = $restore(this, {code}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(code === 0)) { _v = false; $s = 3; continue s; } + _r$3 = testlog.PanicOnExit0(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $panic(new $String("unexpected call to os.Exit(0) during test")); + /* } */ case 2: + runtime_beforeExit(code); + syscall.Exit(code); + $s = -1; return; + /* */ } return; } var $f = {$blk: Exit$1, $c: true, $r, _r$3, _v, code, $s};return $f; + }; + $pkg.Exit = Exit; + Pipe = function Pipe$1() { + var {$24r, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, e, err, p, r, w, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = ptrType$2.nil; + w = ptrType$2.nil; + err = $ifaceNil; + p = arrayType$1.zero(); + $r = syscall.ForkLock.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + e = syscall.Pipe($subslice(new sliceType$3(p), 0)); + /* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 2: + $r = syscall.ForkLock.RUnlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp = ptrType$2.nil; + _tmp$1 = ptrType$2.nil; + _tmp$2 = NewSyscallError("pipe", e); + r = _tmp; + w = _tmp$1; + err = _tmp$2; + $s = -1; return [r, w, err]; + /* } */ case 3: + syscall.CloseOnExec(p[0]); + syscall.CloseOnExec(p[1]); + $r = syscall.ForkLock.RUnlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = newFile(((p[0] >>> 0)), "|0", 2); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tmp$3 = _r$3; + _r$4 = newFile(((p[1] >>> 0)), "|1", 2); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tmp$4 = _r$4; + _tmp$5 = $ifaceNil; + r = _tmp$3; + w = _tmp$4; + err = _tmp$5; + $24r = [r, w, err]; + $s = 8; case 8: return $24r; + /* */ } return; } var $f = {$blk: Pipe$1, $c: true, $r, $24r, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, e, err, p, r, w, $s};return $f; + }; + $pkg.Pipe = Pipe; + IsPathSeparator = function IsPathSeparator$1(c) { + var c; + return 47 === c; + }; + $pkg.IsPathSeparator = IsPathSeparator; + basename = function basename$1(name) { + var i, name; + i = name.length - 1 >> 0; + while (true) { + if (!(i > 0 && (name.charCodeAt(i) === 47))) { break; } + name = $substring(name, 0, i); + i = i - (1) >> 0; + } + i = i - (1) >> 0; + while (true) { + if (!(i >= 0)) { break; } + if (name.charCodeAt(i) === 47) { + name = $substring(name, (i + 1 >> 0)); + break; + } + i = i - (1) >> 0; + } + return name; + }; + runtime_args = function runtime_args$1() { + return $pkg.Args; + }; + init$1 = function init$3() { + var argv, i, process; + process = $global.process; + if (!(process === undefined)) { + argv = process.argv; + if (!(argv === undefined) && $parseInt(argv.length) >= 1) { + $pkg.Args = $makeSlice(sliceType, ($parseInt(argv.length) - 1 >> 0)); + i = 0; + while (true) { + if (!(i < ($parseInt(argv.length) - 1 >> 0))) { break; } + ((i < 0 || i >= $pkg.Args.$length) ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Args.$array[$pkg.Args.$offset + i] = $internalize(argv[(i + 1 >> 0)], $String)); + i = i + (1) >> 0; + } + } + } + if ($pkg.Args.$length === 0) { + $pkg.Args = new sliceType(["?"]); + } + }; + runtime_beforeExit = function runtime_beforeExit$1(exitCode) { + var exitCode; + }; + fastrand = function() { + $throwRuntimeError("native function not implemented: os.fastrand"); + }; + $ptrType(File).prototype.WriteString = function WriteString(s) { + var {$24r, _r$3, _tuple, err, f, n, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + _r$3 = f.Write((new sliceType$2($stringToBytes(s)))); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: WriteString, $c: true, $r, $24r, _r$3, _tuple, err, f, n, s, $s};return $f; + }; + Getwd = function Getwd$1() { + var {_i, _r$10, _r$11, _r$12, _r$13, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, d, d$1, d$2, dir, dot, e, err, err$1, err$2, err$3, err$4, fd, name, names, parent, pd, root, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dir = ""; + err = $ifaceNil; + if (false) { + _tuple = syscall.Getwd(); + dir = _tuple[0]; + err = _tuple[1]; + $s = -1; return [dir, err]; + } + _r$3 = statNolog("."); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = _r$3; + dot = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = ""; + _tmp$1 = err; + dir = _tmp; + err = _tmp$1; + $s = -1; return [dir, err]; + } + _r$4 = Getenv("PWD"); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + dir = _r$4; + /* */ if (dir.length > 0 && (dir.charCodeAt(0) === 47)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (dir.length > 0 && (dir.charCodeAt(0) === 47)) { */ case 3: + _r$5 = statNolog(dir); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$2 = _r$5; + d = _tuple$2[0]; + err$1 = _tuple$2[1]; + if ($interfaceIsEqual(err$1, $ifaceNil) && SameFile(dot, d)) { + _tmp$2 = dir; + _tmp$3 = $ifaceNil; + dir = _tmp$2; + err = _tmp$3; + $s = -1; return [dir, err]; + } + /* } */ case 4: + if (true) { + s = ""; + e = $ifaceNil; + while (true) { + _tuple$3 = syscall.Getwd(); + s = _tuple$3[0]; + e = _tuple$3[1]; + if (!($interfaceIsEqual(e, new syscall.Errno(4)))) { + break; + } + } + _tmp$4 = s; + _tmp$5 = NewSyscallError("getwd", e); + dir = _tmp$4; + err = _tmp$5; + $s = -1; return [dir, err]; + } + $r = getwdCache.Mutex.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + dir = getwdCache.dir; + $r = getwdCache.Mutex.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (dir.length > 0) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (dir.length > 0) { */ case 8: + _r$6 = statNolog(dir); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$4 = _r$6; + d$1 = _tuple$4[0]; + err$2 = _tuple$4[1]; + if ($interfaceIsEqual(err$2, $ifaceNil) && SameFile(dot, d$1)) { + _tmp$6 = dir; + _tmp$7 = $ifaceNil; + dir = _tmp$6; + err = _tmp$7; + $s = -1; return [dir, err]; + } + /* } */ case 9: + _r$7 = statNolog("/"); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$5 = _r$7; + root = _tuple$5[0]; + err = _tuple$5[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$8 = ""; + _tmp$9 = err; + dir = _tmp$8; + err = _tmp$9; + $s = -1; return [dir, err]; + } + if (SameFile(root, dot)) { + _tmp$10 = "/"; + _tmp$11 = $ifaceNil; + dir = _tmp$10; + err = _tmp$11; + $s = -1; return [dir, err]; + } + dir = ""; + parent = ".."; + /* while (true) { */ case 12: + if (parent.length >= 1024) { + _tmp$12 = ""; + _tmp$13 = new syscall.Errno(36); + dir = _tmp$12; + err = _tmp$13; + $s = -1; return [dir, err]; + } + _r$8 = openFileNolog(parent, 0, 0); /* */ $s = 14; case 14: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tuple$6 = _r$8; + fd = _tuple$6[0]; + err$3 = _tuple$6[1]; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + _tmp$14 = ""; + _tmp$15 = err$3; + dir = _tmp$14; + err = _tmp$15; + $s = -1; return [dir, err]; + } + /* while (true) { */ case 15: + _r$9 = fd.Readdirnames(100); /* */ $s = 17; case 17: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple$7 = _r$9; + names = _tuple$7[0]; + err$4 = _tuple$7[1]; + /* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 18: + _r$10 = fd.Close(); /* */ $s = 20; case 20: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + _tmp$16 = ""; + _tmp$17 = err$4; + dir = _tmp$16; + err = _tmp$17; + $s = -1; return [dir, err]; + /* } */ case 19: + _ref = names; + _i = 0; + /* while (true) { */ case 21: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 22; continue; } + name = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$11 = lstatNolog(parent + "/" + name); /* */ $s = 23; case 23: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$8 = _r$11; + d$2 = _tuple$8[0]; + /* */ if (SameFile(d$2, dot)) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (SameFile(d$2, dot)) { */ case 24: + dir = "/" + name + dir; + /* goto Found */ $s = 26; continue; + /* } */ case 25: + _i++; + $s = 21; continue; + case 22: + $s = 15; continue; + case 16: + /* Found: */ case 26: + _r$12 = fd.Stat(); /* */ $s = 27; case 27: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _tuple$9 = _r$12; + pd = _tuple$9[0]; + err$3 = _tuple$9[1]; + _r$13 = fd.Close(); /* */ $s = 28; case 28: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$13; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + _tmp$18 = ""; + _tmp$19 = err$3; + dir = _tmp$18; + err = _tmp$19; + $s = -1; return [dir, err]; + } + if (SameFile(pd, root)) { + /* break; */ $s = 13; continue; + } + dot = pd; + parent = "../" + parent; + $s = 12; continue; + case 13: + $r = getwdCache.Mutex.Lock(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + getwdCache.dir = dir; + $r = getwdCache.Mutex.Unlock(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$20 = dir; + _tmp$21 = $ifaceNil; + dir = _tmp$20; + err = _tmp$21; + $s = -1; return [dir, err]; + /* */ } return; } var $f = {$blk: Getwd$1, $c: true, $r, _i, _r$10, _r$11, _r$12, _r$13, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, d, d$1, d$2, dir, dot, e, err, err$1, err$2, err$3, err$4, fd, name, names, parent, pd, root, s, $s};return $f; + }; + $pkg.Getwd = Getwd; + fixLongPath = function fixLongPath$1(path) { + var path; + return path; + }; + $ptrType(File).prototype.Fd = function Fd() { + var {_r$3, f, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + if (f === ptrType$2.nil) { + $s = -1; return 4294967295; + } + /* */ if (f.file.nonblock) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (f.file.nonblock) { */ case 1: + _r$3 = f.file.pfd.SetBlocking(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + /* } */ case 2: + $s = -1; return ((f.file.pfd.Sysfd >>> 0)); + /* */ } return; } var $f = {$blk: Fd, $c: true, $r, _r$3, f, $s};return $f; + }; + NewFile = function NewFile$1(fd, name) { + var {$24r, _r$3, _tuple, err, fd, kind, name, nb, $s, $r, $c} = $restore(this, {fd, name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + kind = 0; + _tuple = unix.IsNonblock(((fd >> 0))); + nb = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil) && nb) { + kind = 3; + } + _r$3 = newFile(fd, name, kind); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: NewFile$1, $c: true, $r, $24r, _r$3, _tuple, err, fd, kind, name, nb, $s};return $f; + }; + $pkg.NewFile = NewFile; + net_newUnixFile = function net_newUnixFile$1(fd, name) { + var {_r$3, f, fd, name, $s, $r, $c} = $restore(this, {fd, name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = newFile(fd, name, 3); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + f = _r$3; + f.file.nonblock = true; + $s = -1; return f; + /* */ } return; } var $f = {$blk: net_newUnixFile$1, $c: true, $r, _r$3, f, fd, name, $s};return $f; + }; + newFile = function newFile$1(fd, name, kind) { + var {_1, _r$3, clearNonBlock, err, err$1, err$2, f, fd, fdi, kind, name, pollErr, pollable, st, typ, $s, $r, $c} = $restore(this, {fd, name, kind}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fdi = [fdi]; + st = [st]; + fdi[0] = ((fd >> 0)); + if (fdi[0] < 0) { + $s = -1; return ptrType$2.nil; + } + f = new File.ptr(new file.ptr($clone(new poll.FD.ptr(new poll.fdMutex.ptr(new $Uint64(0, 0), 0, 0), fdi[0], new poll.pollDesc.ptr(ptrType$6.nil, false), ptrType$7.nil, 0, 0, true, true, false), poll.FD), name, ptrType$8.nil, false, (fdi[0] === 1) || (fdi[0] === 2), false)); + pollable = (kind === 1) || (kind === 2) || (kind === 3); + /* */ if (kind === 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (kind === 1) { */ case 1: + _1 = "js"; + /* */ if (_1 === ("darwin") || _1 === ("ios") || _1 === ("dragonfly") || _1 === ("freebsd") || _1 === ("netbsd") || _1 === ("openbsd")) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === ("darwin") || _1 === ("ios") || _1 === ("dragonfly") || _1 === ("freebsd") || _1 === ("netbsd") || _1 === ("openbsd")) { */ case 4: + st[0] = new syscall.Stat_t.ptr(new $Int64(0, 0), new $Uint64(0, 0), 0, 0, 0, 0, new $Int64(0, 0), new $Int64(0, 0), 0, 0, new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0)); + _r$3 = ignoringEINTR((function(fdi, st) { return function newFile·func1() { + var {$24r, _r$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = syscall.Fstat(fdi[0], st[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: newFile·func1, $c: true, $r, $24r, _r$3, $s};return $f; + }; })(fdi, st)); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err = _r$3; + typ = (st[0].Mode & 126976) >>> 0; + if ($interfaceIsEqual(err, $ifaceNil) && ((typ === 32768) || (typ === 16384))) { + pollable = false; + } + if (false && (typ === 4096)) { + pollable = false; + } + /* } */ case 5: + case 3: + /* } */ case 2: + clearNonBlock = false; + if (pollable) { + if (kind === 3) { + } else { + err$1 = syscall.SetNonblock(fdi[0], true); + if ($interfaceIsEqual(err$1, $ifaceNil)) { + f.file.nonblock = true; + clearNonBlock = true; + } else { + pollable = false; + } + } + } + pollErr = f.file.pfd.Init("file", pollable); + if (!($interfaceIsEqual(pollErr, $ifaceNil)) && clearNonBlock) { + err$2 = syscall.SetNonblock(fdi[0], false); + if ($interfaceIsEqual(err$2, $ifaceNil)) { + f.file.nonblock = false; + } + } + runtime.SetFinalizer(f.file, new funcType($methodExpr(ptrType$9, "close"))); + $s = -1; return f; + /* */ } return; } var $f = {$blk: newFile$1, $c: true, $r, _1, _r$3, clearNonBlock, err, err$1, err$2, f, fd, fdi, kind, name, pollErr, pollable, st, typ, $s};return $f; + }; + epipecheck = function epipecheck$1(file$1, e) { + var {e, file$1, $s, $r, $c} = $restore(this, {file$1, e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if ($interfaceIsEqual(e, new syscall.Errno(32)) && file$1.file.stdoutOrErr) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($interfaceIsEqual(e, new syscall.Errno(32)) && file$1.file.stdoutOrErr) { */ case 1: + $r = sigpipe(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: epipecheck$1, $c: true, $r, e, file$1, $s};return $f; + }; + openFileNolog = function openFileNolog$1(name, flag, perm) { + var {$24r, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, e, err, flag, kind, name, perm, r, setSticky, $s, $r, $c} = $restore(this, {name, flag, perm}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + setSticky = false; + /* */ if (true && !(((flag & 64) === 0)) && !((((perm & 1048576) >>> 0) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (true && !(((flag & 64) === 0)) && !((((perm & 1048576) >>> 0) === 0))) { */ case 1: + _r$3 = Stat(name); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + err = _tuple[1]; + if (IsNotExist(err)) { + setSticky = true; + } + /* } */ case 2: + r = 0; + /* while (true) { */ case 4: + e = $ifaceNil; + _r$4 = syscall.Open(name, flag | 0, syscallMode(perm)); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + r = _tuple$1[0]; + e = _tuple$1[1]; + if ($interfaceIsEqual(e, $ifaceNil)) { + /* break; */ $s = 5; continue; + } + if ($interfaceIsEqual(e, new syscall.Errno(4))) { + /* continue; */ $s = 4; continue; + } + $s = -1; return [ptrType$2.nil, new fs.PathError.ptr("open", name, e)]; + case 5: + /* */ if (setSticky) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (setSticky) { */ case 7: + _r$5 = setStickyBit(name); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + /* } */ case 8: + if (true) { + syscall.CloseOnExec(r); + } + kind = 1; + if (unix.HasNonblockFlag(flag)) { + kind = 3; + } + _r$6 = newFile(((r >>> 0)), name, kind); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r = [_r$6, $ifaceNil]; + $s = 11; case 11: return $24r; + /* */ } return; } var $f = {$blk: openFileNolog$1, $c: true, $r, $24r, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, e, err, flag, kind, name, perm, r, setSticky, $s};return $f; + }; + $ptrType(file).prototype.close = function close() { + var {_r$3, e, err, file$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + file$1 = this; + if (file$1 === ptrType$9.nil) { + $s = -1; return new syscall.Errno(22); + } + if (!(file$1.dirinfo === ptrType$8.nil)) { + file$1.dirinfo.close(); + file$1.dirinfo = ptrType$8.nil; + } + err = $ifaceNil; + _r$3 = file$1.pfd.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + e = _r$3; + if (!($interfaceIsEqual(e, $ifaceNil))) { + if ($interfaceIsEqual(e, poll.ErrFileClosing)) { + e = $pkg.ErrClosed; + } + err = new fs.PathError.ptr("close", file$1.name, e); + } + runtime.SetFinalizer(file$1, $ifaceNil); + $s = -1; return err; + /* */ } return; } var $f = {$blk: close, $c: true, $r, _r$3, e, err, file$1, $s};return $f; + }; + $ptrType(File).prototype.seek = function seek(offset, whence) { + var {_r$3, _tmp, _tmp$1, _tuple, err, f, offset, ret, whence, $s, $r, $c} = $restore(this, {offset, whence}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ret = new $Int64(0, 0); + err = $ifaceNil; + f = this; + if (!(f.file.dirinfo === ptrType$8.nil)) { + f.file.dirinfo.close(); + f.file.dirinfo = ptrType$8.nil; + } + _r$3 = f.file.pfd.Seek(offset, whence); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + ret = _tuple[0]; + err = _tuple[1]; + runtime.KeepAlive(f); + _tmp = ret; + _tmp$1 = err; + ret = _tmp; + err = _tmp$1; + $s = -1; return [ret, err]; + /* */ } return; } var $f = {$blk: seek, $c: true, $r, _r$3, _tmp, _tmp$1, _tuple, err, f, offset, ret, whence, $s};return $f; + }; + Remove = function Remove$1(name) { + var {_r$3, _r$4, e, e1, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + name = [name]; + _r$3 = ignoringEINTR((function(name) { return function Remove·func1() { + var {$24r, _r$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = syscall.Unlink(name[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Remove·func1, $c: true, $r, $24r, _r$3, $s};return $f; + }; })(name)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + e = _r$3; + if ($interfaceIsEqual(e, $ifaceNil)) { + $s = -1; return $ifaceNil; + } + _r$4 = ignoringEINTR((function(name) { return function Remove·func2() { + var {$24r, _r$4, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$4 = syscall.Rmdir(name[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Remove·func2, $c: true, $r, $24r, _r$4, $s};return $f; + }; })(name)); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + e1 = _r$4; + if ($interfaceIsEqual(e1, $ifaceNil)) { + $s = -1; return $ifaceNil; + } + if (!($interfaceIsEqual(e1, new syscall.Errno(20)))) { + e = e1; + } + $s = -1; return new fs.PathError.ptr("remove", name[0], e); + /* */ } return; } var $f = {$blk: Remove$1, $c: true, $r, _r$3, _r$4, e, e1, name, $s};return $f; + }; + $pkg.Remove = Remove; + tempDir = function tempDir$1() { + var {_r$3, dir, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = Getenv("TMPDIR"); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + dir = _r$3; + if (dir === "") { + if (false) { + dir = "/data/local/tmp"; + } else { + dir = "/tmp"; + } + } + $s = -1; return dir; + /* */ } return; } var $f = {$blk: tempDir$1, $c: true, $r, _r$3, dir, $s};return $f; + }; + Readlink = function Readlink$1(name) { + var {_r$3, _r$4, _tuple, _tuple$1, b, e, len, n, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + len = 128; + /* while (true) { */ case 1: + b = $makeSlice(sliceType$2, len); + n = 0; + e = $ifaceNil; + /* while (true) { */ case 3: + _r$3 = syscall.Readlink(name, b); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = _r$3; + _r$4 = fixCount(_tuple$1[0], _tuple$1[1]); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple = _r$4; + n = _tuple[0]; + e = _tuple[1]; + if (!($interfaceIsEqual(e, new syscall.Errno(4)))) { + /* break; */ $s = 4; continue; + } + $s = 3; continue; + case 4: + if (false && $interfaceIsEqual(e, new syscall.Errno(34))) { + len = $imul(len, (2)); + /* continue; */ $s = 1; continue; + } + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return ["", new fs.PathError.ptr("readlink", name, e)]; + } + if (n < len) { + $s = -1; return [($bytesToString($subslice(b, 0, n))), $ifaceNil]; + } + len = $imul(len, (2)); + $s = 1; continue; + case 2: + $s = -1; return ["", $ifaceNil]; + /* */ } return; } var $f = {$blk: Readlink$1, $c: true, $r, _r$3, _r$4, _tuple, _tuple$1, b, e, len, n, name, $s};return $f; + }; + $pkg.Readlink = Readlink; + $ptrType(unixDirent).prototype.Name = function Name$1() { + var d; + d = this; + return d.name; + }; + $ptrType(unixDirent).prototype.IsDir = function IsDir$1() { + var d; + d = this; + return new fs.FileMode(d.typ).IsDir(); + }; + $ptrType(unixDirent).prototype.Type = function Type() { + var d; + d = this; + return d.typ; + }; + $ptrType(unixDirent).prototype.Info = function Info() { + var {$24r, _r$3, d, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + if (!($interfaceIsEqual(d.info, $ifaceNil))) { + $s = -1; return [d.info, $ifaceNil]; + } + _r$3 = lstat(d.parent + "/" + d.name); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Info, $c: true, $r, $24r, _r$3, d, $s};return $f; + }; + newUnixDirent = function newUnixDirent$1(parent, name, typ) { + var {_r$3, _r$4, _r$5, _tuple, err, info, name, parent, typ, ude, $s, $r, $c} = $restore(this, {parent, name, typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ude = new unixDirent.ptr(parent, name, typ, $ifaceNil); + if (!((typ === 4294967295)) && !testingForceReadDirLstat) { + $s = -1; return [ude, $ifaceNil]; + } + _r$3 = lstat(parent + "/" + name); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + info = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, err]; + } + _r$4 = info.Mode(); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = new fs.FileMode(_r$4).Type(); /* */ $s = 3; case 3: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + ude.typ = _r$5; + ude.info = info; + $s = -1; return [ude, $ifaceNil]; + /* */ } return; } var $f = {$blk: newUnixDirent$1, $c: true, $r, _r$3, _r$4, _r$5, _tuple, err, info, name, parent, typ, ude, $s};return $f; + }; + sigpipe = function() { + $throwRuntimeError("native function not implemented: os.sigpipe"); + }; + $ptrType(File).prototype.Close = function Close() { + var {$24r, _r$3, f, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + if (f === ptrType$2.nil) { + $s = -1; return $pkg.ErrInvalid; + } + _r$3 = f.file.close(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Close, $c: true, $r, $24r, _r$3, f, $s};return $f; + }; + $ptrType(File).prototype.read = function read(b) { + var {_r$3, _tmp, _tmp$1, _tuple, b, err, f, n, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + _r$3 = f.file.pfd.Read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + n = _tuple[0]; + err = _tuple[1]; + runtime.KeepAlive(f); + _tmp = n; + _tmp$1 = err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: read, $c: true, $r, _r$3, _tmp, _tmp$1, _tuple, b, err, f, n, $s};return $f; + }; + $ptrType(File).prototype.pread = function pread(b, off) { + var {_r$3, _tmp, _tmp$1, _tuple, b, err, f, n, off, $s, $r, $c} = $restore(this, {b, off}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + _r$3 = f.file.pfd.Pread(b, off); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + n = _tuple[0]; + err = _tuple[1]; + runtime.KeepAlive(f); + _tmp = n; + _tmp$1 = err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: pread, $c: true, $r, _r$3, _tmp, _tmp$1, _tuple, b, err, f, n, off, $s};return $f; + }; + $ptrType(File).prototype.write = function write(b) { + var {_r$3, _tmp, _tmp$1, _tuple, b, err, f, n, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + _r$3 = f.file.pfd.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + n = _tuple[0]; + err = _tuple[1]; + runtime.KeepAlive(f); + _tmp = n; + _tmp$1 = err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: write, $c: true, $r, _r$3, _tmp, _tmp$1, _tuple, b, err, f, n, $s};return $f; + }; + $ptrType(File).prototype.pwrite = function pwrite(b, off) { + var {_r$3, _tmp, _tmp$1, _tuple, b, err, f, n, off, $s, $r, $c} = $restore(this, {b, off}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + _r$3 = f.file.pfd.Pwrite(b, off); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + n = _tuple[0]; + err = _tuple[1]; + runtime.KeepAlive(f); + _tmp = n; + _tmp$1 = err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: pwrite, $c: true, $r, _r$3, _tmp, _tmp$1, _tuple, b, err, f, n, off, $s};return $f; + }; + syscallMode = function syscallMode$1(i) { + var i, o; + o = 0; + o = (o | (((new fs.FileMode(i).Perm() >>> 0)))) >>> 0; + if (!((((i & 8388608) >>> 0) === 0))) { + o = (o | (2048)) >>> 0; + } + if (!((((i & 4194304) >>> 0) === 0))) { + o = (o | (1024)) >>> 0; + } + if (!((((i & 1048576) >>> 0) === 0))) { + o = (o | (512)) >>> 0; + } + return o; + }; + chmod = function chmod$1(name, mode) { + var {_r$3, e, longName, mode, name, $s, $r, $c} = $restore(this, {name, mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + longName = [longName]; + mode = [mode]; + longName[0] = fixLongPath(name); + _r$3 = ignoringEINTR((function(longName, mode) { return function chmod·func1() { + var {$24r, _r$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = syscall.Chmod(longName[0], syscallMode(mode[0])); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: chmod·func1, $c: true, $r, $24r, _r$3, $s};return $f; + }; })(longName, mode)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + e = _r$3; + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return new fs.PathError.ptr("chmod", name, e); + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: chmod$1, $c: true, $r, _r$3, e, longName, mode, name, $s};return $f; + }; + $ptrType(File).prototype.chmod = function chmod$2(mode) { + var {_r$3, e, err, f, mode, $s, $r, $c} = $restore(this, {mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("chmod"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$3 = f.file.pfd.Fchmod(syscallMode(mode)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + e = _r$3; + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return f.wrapErr("chmod", e); + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: chmod$2, $c: true, $r, _r$3, e, err, f, mode, $s};return $f; + }; + $ptrType(File).prototype.Chown = function Chown$2(uid, gid) { + var {_r$3, e, err, f, gid, uid, $s, $r, $c} = $restore(this, {uid, gid}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("chown"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$3 = f.file.pfd.Fchown(uid, gid); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + e = _r$3; + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return f.wrapErr("chown", e); + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Chown$2, $c: true, $r, _r$3, e, err, f, gid, uid, $s};return $f; + }; + $ptrType(File).prototype.Truncate = function Truncate$2(size) { + var {_r$3, e, err, f, size, $s, $r, $c} = $restore(this, {size}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("truncate"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$3 = f.file.pfd.Ftruncate(size); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + e = _r$3; + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return f.wrapErr("truncate", e); + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Truncate$2, $c: true, $r, _r$3, e, err, f, size, $s};return $f; + }; + $ptrType(File).prototype.Sync = function Sync() { + var {_r$3, e, err, f, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("sync"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$3 = f.file.pfd.Fsync(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + e = _r$3; + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return f.wrapErr("sync", e); + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Sync, $c: true, $r, _r$3, e, err, f, $s};return $f; + }; + $ptrType(File).prototype.Chdir = function Chdir$1() { + var {_r$3, e, err, f, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("chdir"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$3 = f.file.pfd.Fchdir(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + e = _r$3; + if (!($interfaceIsEqual(e, $ifaceNil))) { + $s = -1; return f.wrapErr("chdir", e); + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Chdir$1, $c: true, $r, _r$3, e, err, f, $s};return $f; + }; + $ptrType(File).prototype.setDeadline = function setDeadline(t) { + var {$24r, _r$3, err, f, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("SetDeadline"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$3 = f.file.pfd.SetDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: setDeadline, $c: true, $r, $24r, _r$3, err, f, t, $s};return $f; + }; + $ptrType(File).prototype.setReadDeadline = function setReadDeadline(t) { + var {$24r, _r$3, err, f, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("SetReadDeadline"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$3 = f.file.pfd.SetReadDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: setReadDeadline, $c: true, $r, $24r, _r$3, err, f, t, $s};return $f; + }; + $ptrType(File).prototype.setWriteDeadline = function setWriteDeadline(t) { + var {$24r, _r$3, err, f, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + err = f.checkValid("SetWriteDeadline"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$3 = f.file.pfd.SetWriteDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: setWriteDeadline, $c: true, $r, $24r, _r$3, err, f, t, $s};return $f; + }; + $ptrType(File).prototype.checkValid = function checkValid(op) { + var f, op; + f = this; + if (f === ptrType$2.nil) { + return $pkg.ErrInvalid; + } + return $ifaceNil; + }; + ignoringEINTR = function ignoringEINTR$1(fn) { + var {_r$3, err, fn, $s, $r, $c} = $restore(this, {fn}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* while (true) { */ case 1: + _r$3 = fn(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err = _r$3; + if (!($interfaceIsEqual(err, new syscall.Errno(4)))) { + $s = -1; return err; + } + $s = 1; continue; + case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: ignoringEINTR$1, $c: true, $r, _r$3, err, fn, $s};return $f; + }; + $ptrType(File).prototype.Name = function Name$2() { + var f; + f = this; + return f.file.name; + }; + $ptrType(LinkError).prototype.Error = function Error() { + var {$24r, _r$3, e, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _r$3 = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = e.Op + " " + e.Old + " " + e.New + ": " + _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Error, $c: true, $r, $24r, _r$3, e, $s};return $f; + }; + $ptrType(LinkError).prototype.Unwrap = function Unwrap() { + var e; + e = this; + return e.Err; + }; + $ptrType(File).prototype.Read = function Read$1(b) { + var {_r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, n, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + err$1 = f.checkValid("read"); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + _r$3 = f.read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + n = _tuple[0]; + e = _tuple[1]; + _tmp$2 = n; + _tmp$3 = f.wrapErr("read", e); + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Read$1, $c: true, $r, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, n, $s};return $f; + }; + $ptrType(File).prototype.ReadAt = function ReadAt(b, off) { + var {_r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, m, n, off, x, $s, $r, $c} = $restore(this, {b, off}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + err$1 = f.checkValid("read"); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) { + _tmp$2 = 0; + _tmp$3 = new fs.PathError.ptr("readat", f.file.name, errors.New("negative offset")); + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + /* while (true) { */ case 1: + /* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; } + _r$3 = f.pread(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + m = _tuple[0]; + e = _tuple[1]; + if (!($interfaceIsEqual(e, $ifaceNil))) { + err = f.wrapErr("read", e); + /* break; */ $s = 2; continue; + } + n = n + (m) >> 0; + b = $subslice(b, m); + off = (x = (new $Int64(0, m)), new $Int64(off.$high + x.$high, off.$low + x.$low)); + $s = 1; continue; + case 2: + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: ReadAt, $c: true, $r, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, m, n, off, x, $s};return $f; + }; + $ptrType(File).prototype.ReadFrom = function ReadFrom(r) { + var {$24r, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, e, err, err$1, f, handled, n, r, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + f = this; + err$1 = f.checkValid("write"); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = new $Int64(0, 0); + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + _tuple = f.readFrom(r); + n = _tuple[0]; + handled = _tuple[1]; + e = _tuple[2]; + /* */ if (!handled) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!handled) { */ case 1: + _r$3 = genericReadFrom(f, r); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = _r$3; + n = _tuple$1[0]; + err = _tuple$1[1]; + $24r = [n, err]; + $s = 4; case 4: return $24r; + /* } */ case 2: + _tmp$2 = n; + _tmp$3 = f.wrapErr("write", e); + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: ReadFrom, $c: true, $r, $24r, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, e, err, err$1, f, handled, n, r, $s};return $f; + }; + genericReadFrom = function genericReadFrom$1(f, r) { + var {$24r, _r$3, f, r, x, $s, $r, $c} = $restore(this, {f, r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = io.Copy((x = new onlyWriter.ptr(f), new x.constructor.elem(x)), r); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: genericReadFrom$1, $c: true, $r, $24r, _r$3, f, r, x, $s};return $f; + }; + $ptrType(File).prototype.Write = function Write$1(b) { + var {_r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, n, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + err$1 = f.checkValid("write"); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + _r$3 = f.write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + n = _tuple[0]; + e = _tuple[1]; + if (n < 0) { + n = 0; + } + if (!((n === b.$length))) { + err = io.ErrShortWrite; + } + $r = epipecheck(f, e); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(e, $ifaceNil))) { + err = f.wrapErr("write", e); + } + _tmp$2 = n; + _tmp$3 = err; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Write$1, $c: true, $r, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, err$1, f, n, $s};return $f; + }; + $ptrType(File).prototype.WriteAt = function WriteAt(b, off) { + var {_r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, e, err, err$1, f, m, n, off, x, $s, $r, $c} = $restore(this, {b, off}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + f = this; + err$1 = f.checkValid("write"); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + if (f.file.appendMode) { + _tmp$2 = 0; + _tmp$3 = errWriteAtInAppendMode; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) { + _tmp$4 = 0; + _tmp$5 = new fs.PathError.ptr("writeat", f.file.name, errors.New("negative offset")); + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + } + /* while (true) { */ case 1: + /* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; } + _r$3 = f.pwrite(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + m = _tuple[0]; + e = _tuple[1]; + if (!($interfaceIsEqual(e, $ifaceNil))) { + err = f.wrapErr("write", e); + /* break; */ $s = 2; continue; + } + n = n + (m) >> 0; + b = $subslice(b, m); + off = (x = (new $Int64(0, m)), new $Int64(off.$high + x.$high, off.$low + x.$low)); + $s = 1; continue; + case 2: + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: WriteAt, $c: true, $r, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, e, err, err$1, f, m, n, off, x, $s};return $f; + }; + $ptrType(File).prototype.Seek = function Seek(offset, whence) { + var {_r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, e, err, err$1, f, offset, r, ret, whence, $s, $r, $c} = $restore(this, {offset, whence}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ret = new $Int64(0, 0); + err = $ifaceNil; + f = this; + err$1 = f.checkValid("seek"); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = new $Int64(0, 0); + _tmp$1 = err$1; + ret = _tmp; + err = _tmp$1; + $s = -1; return [ret, err]; + } + _r$3 = f.seek(offset, whence); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + r = _tuple[0]; + e = _tuple[1]; + if ($interfaceIsEqual(e, $ifaceNil) && !(f.file.dirinfo === ptrType$8.nil) && !((r.$high === 0 && r.$low === 0))) { + e = new syscall.Errno(21); + } + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tmp$2 = new $Int64(0, 0); + _tmp$3 = f.wrapErr("seek", e); + ret = _tmp$2; + err = _tmp$3; + $s = -1; return [ret, err]; + } + _tmp$4 = r; + _tmp$5 = $ifaceNil; + ret = _tmp$4; + err = _tmp$5; + $s = -1; return [ret, err]; + /* */ } return; } var $f = {$blk: Seek, $c: true, $r, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, e, err, err$1, f, offset, r, ret, whence, $s};return $f; + }; + setStickyBit = function setStickyBit$1(name) { + var {$24r, _arg, _arg$1, _r$3, _r$4, _r$5, _tuple, err, fi, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = Stat(name); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + fi = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _arg = name; + _r$4 = fi.Mode(); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$1 = (_r$4 | 1048576) >>> 0; + _r$5 = Chmod(_arg, _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r = _r$5; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: setStickyBit$1, $c: true, $r, $24r, _arg, _arg$1, _r$3, _r$4, _r$5, _tuple, err, fi, name, $s};return $f; + }; + Open = function Open$1(name) { + var {$24r, _r$3, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = OpenFile(name, 0, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Open$1, $c: true, $r, $24r, _r$3, name, $s};return $f; + }; + $pkg.Open = Open; + OpenFile = function OpenFile$1(name, flag, perm) { + var {_r$3, _tuple, err, f, flag, name, perm, $s, $r, $c} = $restore(this, {name, flag, perm}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = testlog.Open(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = openFileNolog(name, flag, perm); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, err]; + } + f.file.appendMode = !(((flag & 1024) === 0)); + $s = -1; return [f, $ifaceNil]; + /* */ } return; } var $f = {$blk: OpenFile$1, $c: true, $r, _r$3, _tuple, err, f, flag, name, perm, $s};return $f; + }; + $pkg.OpenFile = OpenFile; + fixCount = function fixCount$1(n, err) { + var err, n; + if (n < 0) { + n = 0; + } + return [n, err]; + }; + $ptrType(File).prototype.wrapErr = function wrapErr(op, err) { + var err, f, op; + f = this; + if ($interfaceIsEqual(err, $ifaceNil) || $interfaceIsEqual(err, io.EOF)) { + return err; + } + if ($interfaceIsEqual(err, poll.ErrFileClosing)) { + err = $pkg.ErrClosed; + } + return new fs.PathError.ptr(op, f.file.name, err); + }; + TempDir = function TempDir$1() { + var {$24r, _r$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = tempDir(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: TempDir$1, $c: true, $r, $24r, _r$3, $s};return $f; + }; + $pkg.TempDir = TempDir; + Chmod = function Chmod$1(name, mode) { + var {$24r, _r$3, mode, name, $s, $r, $c} = $restore(this, {name, mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = chmod(name, mode); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Chmod$1, $c: true, $r, $24r, _r$3, mode, name, $s};return $f; + }; + $pkg.Chmod = Chmod; + $ptrType(File).prototype.Chmod = function Chmod$2(mode) { + var {$24r, _r$3, f, mode, $s, $r, $c} = $restore(this, {mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + _r$3 = f.chmod(mode); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Chmod$2, $c: true, $r, $24r, _r$3, f, mode, $s};return $f; + }; + $ptrType(File).prototype.SetDeadline = function SetDeadline(t) { + var {$24r, _r$3, f, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + _r$3 = f.setDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetDeadline, $c: true, $r, $24r, _r$3, f, t, $s};return $f; + }; + $ptrType(File).prototype.SetReadDeadline = function SetReadDeadline(t) { + var {$24r, _r$3, f, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + _r$3 = f.setReadDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetReadDeadline, $c: true, $r, $24r, _r$3, f, t, $s};return $f; + }; + $ptrType(File).prototype.SetWriteDeadline = function SetWriteDeadline(t) { + var {$24r, _r$3, f, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + _r$3 = f.setWriteDeadline($clone(t, time.Time)); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetWriteDeadline, $c: true, $r, $24r, _r$3, f, t, $s};return $f; + }; + $ptrType(File).prototype.SyscallConn = function SyscallConn() { + var _returncast, err, f; + f = this; + err = f.checkValid("SyscallConn"); + if (!($interfaceIsEqual(err, $ifaceNil))) { + return [$ifaceNil, err]; + } + _returncast = newRawConn(f); + return [_returncast[0], _returncast[1]]; + }; + ReadFile = function ReadFile$1(name) { + var {$24r, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, _tuple$2, d, data, err, err$1, err$2, f, info, n, name, size, size64, x, $s, $deferred, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + _r$3 = Open(name); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType$2.nil, err]; + } + $deferred.push([$methodVal(f, "Close"), []]); + size = 0; + _r$4 = f.Stat(); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + info = _tuple$1[0]; + err$1 = _tuple$1[1]; + /* */ if ($interfaceIsEqual(err$1, $ifaceNil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($interfaceIsEqual(err$1, $ifaceNil)) { */ case 3: + _r$5 = info.Size(); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + size64 = _r$5; + if ((x = (new $Int64(0, (((size64.$low + ((size64.$high >> 31) * 4294967296)) >> 0)))), (x.$high === size64.$high && x.$low === size64.$low))) { + size = (((size64.$low + ((size64.$high >> 31) * 4294967296)) >> 0)); + } + /* } */ case 4: + size = size + (1) >> 0; + if (size < 512) { + size = 512; + } + data = $makeSlice(sliceType$2, 0, size); + /* while (true) { */ case 6: + if (data.$length >= data.$capacity) { + d = $append($subslice(data, 0, data.$capacity), 0); + data = $subslice(d, 0, data.$length); + } + _r$6 = f.Read($subslice(data, data.$length, data.$capacity)); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$2 = _r$6; + n = _tuple$2[0]; + err$2 = _tuple$2[1]; + data = $subslice(data, 0, (data.$length + n >> 0)); + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 9: + if ($interfaceIsEqual(err$2, io.EOF)) { + err$2 = $ifaceNil; + } + $24r = [data, err$2]; + $s = 11; case 11: return $24r; + /* } */ case 10: + $s = 6; continue; + case 7: + $s = -1; return [sliceType$2.nil, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType$2.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ReadFile$1, $c: true, $r, $24r, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, _tuple$2, d, data, err, err$1, err$2, f, info, n, name, size, size64, x, $s, $deferred};return $f; } } + }; + $pkg.ReadFile = ReadFile; + $ptrType(Process).prototype.wait = function wait() { + var {_tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, e, err, p, pid1, ps, ready, rusage, status, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rusage = [rusage]; + status = [status]; + ps = ptrType$10.nil; + err = $ifaceNil; + p = this; + if (p.Pid === -1) { + _tmp = ptrType$10.nil; + _tmp$1 = new syscall.Errno(22); + ps = _tmp; + err = _tmp$1; + $s = -1; return [ps, err]; + } + _tuple = p.blockUntilWaitable(); + ready = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$2 = ptrType$10.nil; + _tmp$3 = err; + ps = _tmp$2; + err = _tmp$3; + $s = -1; return [ps, err]; + } + /* */ if (ready) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ready) { */ case 1: + p.setDone(); + $r = p.sigMu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.sigMu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + status[0] = 0; + rusage[0] = new syscall.Rusage.ptr(new syscall.Timeval.ptr(new $Int64(0, 0), new $Int64(0, 0)), new syscall.Timeval.ptr(new $Int64(0, 0), new $Int64(0, 0))); + pid1 = 0; + e = $ifaceNil; + while (true) { + _tuple$1 = syscall.Wait4(p.Pid, (status.$ptr || (status.$ptr = new ptrType$11(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, status))), 0, rusage[0]); + pid1 = _tuple$1[0]; + e = _tuple$1[1]; + if (!($interfaceIsEqual(e, new syscall.Errno(4)))) { + break; + } + } + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tmp$4 = ptrType$10.nil; + _tmp$5 = NewSyscallError("wait", e); + ps = _tmp$4; + err = _tmp$5; + $s = -1; return [ps, err]; + } + if (!((pid1 === 0))) { + p.setDone(); + } + ps = new ProcessState.ptr(pid1, status[0], rusage[0]); + _tmp$6 = ps; + _tmp$7 = $ifaceNil; + ps = _tmp$6; + err = _tmp$7; + $s = -1; return [ps, err]; + /* */ } return; } var $f = {$blk: wait, $c: true, $r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, e, err, p, pid1, ps, ready, rusage, status, $s};return $f; + }; + $ptrType(Process).prototype.signal = function signal(sig) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, _tuple, e, ok, p, s, sig, $s, $deferred, $r, $c} = $restore(this, {sig}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + if (p.Pid === -1) { + $s = -1; return errors.New("os: process already released"); + } + if (p.Pid === 0) { + $s = -1; return errors.New("os: process not initialized"); + } + $r = p.sigMu.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(p.sigMu, "RUnlock"), []]); + /* */ if (p.done()) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (p.done()) { */ case 2: + $24r = $pkg.ErrProcessDone; + $s = 4; case 4: return $24r; + /* } */ case 3: + _tuple = $assertType(sig, syscall.Signal, true); + s = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!ok) { */ case 5: + $24r$1 = errors.New("os: unsupported signal type"); + $s = 7; case 7: return $24r$1; + /* } */ case 6: + e = syscall.Kill(p.Pid, s); + /* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 8: + /* */ if ($interfaceIsEqual(e, new syscall.Errno(3))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ($interfaceIsEqual(e, new syscall.Errno(3))) { */ case 10: + $24r$2 = $pkg.ErrProcessDone; + $s = 12; case 12: return $24r$2; + /* } */ case 11: + $24r$3 = e; + $s = 13; case 13: return $24r$3; + /* } */ case 9: + $24r$4 = $ifaceNil; + $s = 14; case 14: return $24r$4; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: signal, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, _tuple, e, ok, p, s, sig, $s, $deferred};return $f; } } + }; + $ptrType(Process).prototype.release = function release() { + var p; + p = this; + p.Pid = -1; + runtime.SetFinalizer(p, $ifaceNil); + return $ifaceNil; + }; + $ptrType(ProcessState).prototype.userTime = function userTime() { + var p, x; + p = this; + return $mul64(((x = p.rusage.Utime.Nano(), new time.Duration(x.$high, x.$low))), new time.Duration(0, 1)); + }; + $ptrType(ProcessState).prototype.systemTime = function systemTime() { + var p, x; + p = this; + return $mul64(((x = p.rusage.Stime.Nano(), new time.Duration(x.$high, x.$low))), new time.Duration(0, 1)); + }; + startProcess = function startProcess$1(name, argv, attr) { + var {_i, _r$3, _r$4, _r$5, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, argv, attr, e, err, err$1, f, h, name, p, pe, pid, sysattr, $s, $r, $c} = $restore(this, {name, argv, attr}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = ptrType$13.nil; + err = $ifaceNil; + /* */ if (!(attr === ptrType$14.nil) && attr.Sys === ptrType$15.nil && !(attr.Dir === "")) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(attr === ptrType$14.nil) && attr.Sys === ptrType$15.nil && !(attr.Dir === "")) { */ case 1: + _r$3 = Stat(attr.Dir); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + err$1 = _tuple[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + pe = $assertType(err$1, ptrType$5); + pe.Op = "chdir"; + _tmp = ptrType$13.nil; + _tmp$1 = pe; + p = _tmp; + err = _tmp$1; + $s = -1; return [p, err]; + } + /* } */ case 2: + sysattr = new syscall.ProcAttr.ptr(attr.Dir, attr.Env, sliceType$6.nil, attr.Sys); + /* */ if (sysattr.Env === sliceType.nil) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (sysattr.Env === sliceType.nil) { */ case 4: + _r$4 = execenv.Default(sysattr.Sys); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + sysattr.Env = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$2 = ptrType$13.nil; + _tmp$3 = err; + p = _tmp$2; + err = _tmp$3; + $s = -1; return [p, err]; + } + /* } */ case 5: + sysattr.Files = $makeSlice(sliceType$6, 0, attr.Files.$length); + _ref = attr.Files; + _i = 0; + /* while (true) { */ case 7: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 8; continue; } + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$5 = f.Fd(); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + sysattr.Files = $append(sysattr.Files, _r$5); + _i++; + $s = 7; continue; + case 8: + _tuple$2 = syscall.StartProcess(name, argv, sysattr); + pid = _tuple$2[0]; + h = _tuple$2[1]; + e = _tuple$2[2]; + runtime.KeepAlive(attr); + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tmp$4 = ptrType$13.nil; + _tmp$5 = new fs.PathError.ptr("fork/exec", name, e); + p = _tmp$4; + err = _tmp$5; + $s = -1; return [p, err]; + } + _tmp$6 = newProcess(pid, h); + _tmp$7 = $ifaceNil; + p = _tmp$6; + err = _tmp$7; + $s = -1; return [p, err]; + /* */ } return; } var $f = {$blk: startProcess$1, $c: true, $r, _i, _r$3, _r$4, _r$5, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, argv, attr, e, err, err$1, f, h, name, p, pe, pid, sysattr, $s};return $f; + }; + $ptrType(Process).prototype.kill = function kill() { + var {$24r, _r$3, p, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r$3 = p.Signal($pkg.Kill); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: kill, $c: true, $r, $24r, _r$3, p, $s};return $f; + }; + $ptrType(ProcessState).prototype.Pid = function Pid() { + var p; + p = this; + return p.pid; + }; + $ptrType(ProcessState).prototype.exited = function exited() { + var p; + p = this; + return new syscall.WaitStatus(p.status).Exited(); + }; + $ptrType(ProcessState).prototype.success = function success() { + var p; + p = this; + return new syscall.WaitStatus(p.status).ExitStatus() === 0; + }; + $ptrType(ProcessState).prototype.sys = function sys() { + var p; + p = this; + return new syscall.WaitStatus(p.status); + }; + $ptrType(ProcessState).prototype.sysUsage = function sysUsage() { + var p; + p = this; + return p.rusage; + }; + $ptrType(ProcessState).prototype.String = function String() { + var code, p, res, status; + p = this; + if (p === ptrType$10.nil) { + return ""; + } + status = $assertType(p.Sys(), syscall.WaitStatus); + res = ""; + if (new syscall.WaitStatus(status).Exited()) { + code = new syscall.WaitStatus(status).ExitStatus(); + if (false && ((code >>> 0)) >= 65536) { + res = "exit status " + uitox(((code >>> 0))); + } else { + res = "exit status " + itoa.Itoa(code); + } + } else if (new syscall.WaitStatus(status).Signaled()) { + res = "signal: " + new syscall.Signal(new syscall.WaitStatus(status).Signal()).String(); + } else if (new syscall.WaitStatus(status).Stopped()) { + res = "stop signal: " + new syscall.Signal(new syscall.WaitStatus(status).StopSignal()).String(); + if ((new syscall.WaitStatus(status).StopSignal() === 4) && !((new syscall.WaitStatus(status).TrapCause() === 0))) { + res = res + (" (trap " + itoa.Itoa(new syscall.WaitStatus(status).TrapCause()) + ")"); + } + } else if (new syscall.WaitStatus(status).Continued()) { + res = "continued"; + } + if (new syscall.WaitStatus(status).CoreDump()) { + res = res + (" (core dumped)"); + } + return res; + }; + $ptrType(ProcessState).prototype.ExitCode = function ExitCode() { + var p; + p = this; + if (p === ptrType$10.nil) { + return -1; + } + return new syscall.WaitStatus(p.status).ExitStatus(); + }; + newProcess = function newProcess$1(pid, handle) { + var handle, p, pid; + p = new Process.ptr(pid, handle, new atomic.Bool.ptr(new atomic.noCopy.ptr(), 0), new sync.RWMutex.ptr(new sync.Mutex.ptr(0, 0), 0, 0, new atomic.Int32.ptr(new atomic.noCopy.ptr(), 0), new atomic.Int32.ptr(new atomic.noCopy.ptr(), 0))); + runtime.SetFinalizer(p, new funcType$1($methodExpr(ptrType$13, "Release"))); + return p; + }; + $ptrType(Process).prototype.setDone = function setDone() { + var p; + p = this; + p.isdone.Store(true); + }; + $ptrType(Process).prototype.done = function done() { + var p; + p = this; + return p.isdone.Load(); + }; + StartProcess = function StartProcess$1(name, argv, attr) { + var {$24r, _r$3, argv, attr, name, $s, $r, $c} = $restore(this, {name, argv, attr}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = testlog.Open(name); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = startProcess(name, argv, attr); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: StartProcess$1, $c: true, $r, $24r, _r$3, argv, attr, name, $s};return $f; + }; + $pkg.StartProcess = StartProcess; + $ptrType(Process).prototype.Release = function Release() { + var p; + p = this; + return p.release(); + }; + $ptrType(Process).prototype.Kill = function Kill() { + var {$24r, _r$3, p, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r$3 = p.kill(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Kill, $c: true, $r, $24r, _r$3, p, $s};return $f; + }; + $ptrType(Process).prototype.Wait = function Wait() { + var {$24r, _r$3, p, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r$3 = p.wait(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Wait, $c: true, $r, $24r, _r$3, p, $s};return $f; + }; + $ptrType(Process).prototype.Signal = function Signal$1(sig) { + var {$24r, _r$3, p, sig, $s, $r, $c} = $restore(this, {sig}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r$3 = p.signal(sig); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Signal$1, $c: true, $r, $24r, _r$3, p, sig, $s};return $f; + }; + $ptrType(ProcessState).prototype.UserTime = function UserTime() { + var p; + p = this; + return p.userTime(); + }; + $ptrType(ProcessState).prototype.SystemTime = function SystemTime() { + var p; + p = this; + return p.systemTime(); + }; + $ptrType(ProcessState).prototype.Exited = function Exited() { + var p; + p = this; + return p.exited(); + }; + $ptrType(ProcessState).prototype.Success = function Success() { + var p; + p = this; + return p.success(); + }; + $ptrType(ProcessState).prototype.Sys = function Sys$1() { + var p; + p = this; + return p.sys(); + }; + $ptrType(ProcessState).prototype.SysUsage = function SysUsage() { + var p; + p = this; + return p.sysUsage(); + }; + errNoDeadline = function errNoDeadline$1() { + return poll.ErrNoDeadline; + }; + errDeadlineExceeded = function errDeadlineExceeded$1() { + return poll.ErrDeadlineExceeded; + }; + $ptrType(SyscallError).prototype.Error = function Error$1() { + var {$24r, _r$3, e, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _r$3 = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = e.Syscall + ": " + _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Error$1, $c: true, $r, $24r, _r$3, e, $s};return $f; + }; + $ptrType(SyscallError).prototype.Unwrap = function Unwrap$1() { + var e; + e = this; + return e.Err; + }; + $ptrType(SyscallError).prototype.Timeout = function Timeout() { + var {$24r, _r$3, _tuple, _v, e, ok, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _tuple = $assertType(e.Err, timeout, true); + t = _tuple[0]; + ok = _tuple[1]; + if (!(ok)) { _v = false; $s = 1; continue s; } + _r$3 = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3; case 1: + $24r = _v; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Timeout, $c: true, $r, $24r, _r$3, _tuple, _v, e, ok, t, $s};return $f; + }; + NewSyscallError = function NewSyscallError$1(syscall$1, err) { + var err, syscall$1; + if ($interfaceIsEqual(err, $ifaceNil)) { + return $ifaceNil; + } + return new SyscallError.ptr(syscall$1, err); + }; + $pkg.NewSyscallError = NewSyscallError; + IsExist = function IsExist$1(err) { + var err; + return underlyingErrorIs(err, $pkg.ErrExist); + }; + $pkg.IsExist = IsExist; + IsNotExist = function IsNotExist$1(err) { + var err; + return underlyingErrorIs(err, $pkg.ErrNotExist); + }; + $pkg.IsNotExist = IsNotExist; + underlyingErrorIs = function underlyingErrorIs$1(err, target) { + var _tuple, e, err, ok, target; + err = underlyingError(err); + if ($interfaceIsEqual(err, target)) { + return true; + } + _tuple = $assertType(err, syscall.Errno, true); + e = _tuple[0]; + ok = _tuple[1]; + return ok && new syscall.Errno(e).Is(target); + }; + underlyingError = function underlyingError$1(err) { + var _ref, err, err$1, err$2, err$3; + _ref = err; + if ($assertType(_ref, ptrType$5, true)[1]) { + err$1 = _ref.$val; + return err$1.Err; + } else if ($assertType(_ref, ptrType$16, true)[1]) { + err$2 = _ref.$val; + return err$2.Err; + } else if ($assertType(_ref, ptrType$17, true)[1]) { + err$3 = _ref.$val; + return err$3.Err; + } + return err; + }; + Getenv = function Getenv$1(key) { + var {_r$3, _tuple, key, v, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = testlog.Getenv(key); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = syscall.Getenv(key); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + v = _tuple[0]; + $s = -1; return v; + /* */ } return; } var $f = {$blk: Getenv$1, $c: true, $r, _r$3, _tuple, key, v, $s};return $f; + }; + $pkg.Getenv = Getenv; + LookupEnv = function LookupEnv$1(key) { + var {$24r, _r$3, key, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = testlog.Getenv(key); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = syscall.Getenv(key); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: LookupEnv$1, $c: true, $r, $24r, _r$3, key, $s};return $f; + }; + $pkg.LookupEnv = LookupEnv; + Environ = function Environ$1() { + var {$24r, _r$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = syscall.Environ(); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Environ$1, $c: true, $r, $24r, _r$3, $s};return $f; + }; + $pkg.Environ = Environ; + direntIno = function direntIno$1(buf) { + var buf; + return [new $Uint64(0, 1), true]; + }; + direntReclen = function direntReclen$1(buf) { + var buf; + return readInt(buf, 0, 2); + }; + direntNamlen = function direntNamlen$1(buf) { + var _tuple, buf, ok, reclen; + _tuple = direntReclen(buf); + reclen = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + return [new $Uint64(0, 0), false]; + } + return [new $Uint64(reclen.$high - 0, reclen.$low - 2), true]; + }; + direntType = function direntType$1(buf) { + var buf; + return 4294967295; + }; + $ptrType(dirInfo).prototype.close = function close$1() { + var d; + d = this; + if (!(d.buf === ptrType.nil)) { + dirBufPool.Put(d.buf); + d.buf = ptrType.nil; + } + }; + $ptrType(File).prototype.readdir = function readdir(n, mode) { + var {_i, _r$3, _r$4, _r$5, _r$6, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, buf, c, d, de, dirents, err, err$1, err$2, errno, f, i, info, infos, ino, mode, n, name, names, namlen, ok, rec, reclen, x, x$1, x$2, $s, $r, $c} = $restore(this, {n, mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + names = sliceType.nil; + dirents = sliceType$7.nil; + infos = sliceType$8.nil; + err = $ifaceNil; + f = this; + /* */ if (f.file.dirinfo === ptrType$8.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (f.file.dirinfo === ptrType$8.nil) { */ case 1: + f.file.dirinfo = new dirInfo.ptr(ptrType.nil, 0, 0); + _r$3 = dirBufPool.Get(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + f.file.dirinfo.buf = $assertType(_r$3, ptrType); + /* } */ case 2: + d = f.file.dirinfo; + if (n === 0) { + n = -1; + } + /* while (true) { */ case 4: + /* if (!(!((n === 0)))) { break; } */ if(!(!((n === 0)))) { $s = 5; continue; } + /* */ if (d.bufp >= d.nbuf) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (d.bufp >= d.nbuf) { */ case 6: + d.bufp = 0; + errno = $ifaceNil; + _r$4 = f.file.pfd.ReadDirent(d.buf.$get()); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple = _r$4; + d.nbuf = _tuple[0]; + errno = _tuple[1]; + runtime.KeepAlive(f); + if (!($interfaceIsEqual(errno, $ifaceNil))) { + _tmp = names; + _tmp$1 = dirents; + _tmp$2 = infos; + _tmp$3 = new fs.PathError.ptr("readdirent", f.file.name, errno); + names = _tmp; + dirents = _tmp$1; + infos = _tmp$2; + err = _tmp$3; + $s = -1; return [names, dirents, infos, err]; + } + if (d.nbuf <= 0) { + /* break; */ $s = 5; continue; + } + /* } */ case 7: + buf = $subslice((d.buf.$get()), d.bufp, d.nbuf); + _tuple$1 = direntReclen(buf); + reclen = _tuple$1[0]; + ok = _tuple$1[1]; + if (!ok || (x = (new $Uint64(0, buf.$length)), (reclen.$high > x.$high || (reclen.$high === x.$high && reclen.$low > x.$low)))) { + /* break; */ $s = 5; continue; + } + rec = $subslice(buf, 0, $flatten64(reclen)); + d.bufp = d.bufp + (((reclen.$low >> 0))) >> 0; + _tuple$2 = direntIno(rec); + ino = _tuple$2[0]; + ok = _tuple$2[1]; + if (!ok) { + /* break; */ $s = 5; continue; + } + if ((ino.$high === 0 && ino.$low === 0)) { + /* continue; */ $s = 4; continue; + } + _tuple$3 = direntNamlen(rec); + namlen = _tuple$3[0]; + ok = _tuple$3[1]; + if (!ok || (x$1 = new $Uint64(0 + namlen.$high, 2 + namlen.$low), x$2 = (new $Uint64(0, rec.$length)), (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) { + /* break; */ $s = 5; continue; + } + name = $subslice(rec, 2, $flatten64(new $Uint64(0 + namlen.$high, 2 + namlen.$low))); + _ref = name; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (c === 0) { + name = $subslice(name, 0, i); + break; + } + _i++; + } + if (($bytesToString(name)) === "." || ($bytesToString(name)) === "..") { + /* continue; */ $s = 4; continue; + } + if (n > 0) { + n = n - (1) >> 0; + } + /* */ if (mode === 0) { $s = 9; continue; } + /* */ if (mode === 1) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (mode === 0) { */ case 9: + names = $append(names, ($bytesToString(name))); + $s = 12; continue; + /* } else if (mode === 1) { */ case 10: + _r$5 = newUnixDirent(f.file.name, ($bytesToString(name)), direntType(rec)); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$4 = _r$5; + de = _tuple$4[0]; + err$1 = _tuple$4[1]; + if (IsNotExist(err$1)) { + /* continue; */ $s = 4; continue; + } + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp$4 = sliceType.nil; + _tmp$5 = dirents; + _tmp$6 = sliceType$8.nil; + _tmp$7 = err$1; + names = _tmp$4; + dirents = _tmp$5; + infos = _tmp$6; + err = _tmp$7; + $s = -1; return [names, dirents, infos, err]; + } + dirents = $append(dirents, de); + $s = 12; continue; + /* } else { */ case 11: + _r$6 = lstat(f.file.name + "/" + ($bytesToString(name))); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$5 = _r$6; + info = _tuple$5[0]; + err$2 = _tuple$5[1]; + if (IsNotExist(err$2)) { + /* continue; */ $s = 4; continue; + } + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + _tmp$8 = sliceType.nil; + _tmp$9 = sliceType$7.nil; + _tmp$10 = infos; + _tmp$11 = err$2; + names = _tmp$8; + dirents = _tmp$9; + infos = _tmp$10; + err = _tmp$11; + $s = -1; return [names, dirents, infos, err]; + } + infos = $append(infos, info); + /* } */ case 12: + $s = 4; continue; + case 5: + if (n > 0 && (((names.$length + dirents.$length >> 0) + infos.$length >> 0) === 0)) { + _tmp$12 = sliceType.nil; + _tmp$13 = sliceType$7.nil; + _tmp$14 = sliceType$8.nil; + _tmp$15 = io.EOF; + names = _tmp$12; + dirents = _tmp$13; + infos = _tmp$14; + err = _tmp$15; + $s = -1; return [names, dirents, infos, err]; + } + _tmp$16 = names; + _tmp$17 = dirents; + _tmp$18 = infos; + _tmp$19 = $ifaceNil; + names = _tmp$16; + dirents = _tmp$17; + infos = _tmp$18; + err = _tmp$19; + $s = -1; return [names, dirents, infos, err]; + /* */ } return; } var $f = {$blk: readdir, $c: true, $r, _i, _r$3, _r$4, _r$5, _r$6, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, buf, c, d, de, dirents, err, err$1, err$2, errno, f, i, info, infos, ino, mode, n, name, names, namlen, ok, rec, reclen, x, x$1, x$2, $s};return $f; + }; + readInt = function readInt$1(b, off, size) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, off, ok, size, u; + u = new $Uint64(0, 0); + ok = false; + if (b.$length < (((off + size >>> 0) >> 0))) { + _tmp = new $Uint64(0, 0); + _tmp$1 = false; + u = _tmp; + ok = _tmp$1; + return [u, ok]; + } + if (false) { + _tmp$2 = readIntBE($subslice(b, off), size); + _tmp$3 = true; + u = _tmp$2; + ok = _tmp$3; + return [u, ok]; + } + _tmp$4 = readIntLE($subslice(b, off), size); + _tmp$5 = true; + u = _tmp$4; + ok = _tmp$5; + return [u, ok]; + }; + readIntBE = function readIntBE$1(b, size) { + var _1, b, size, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + _1 = size; + if (_1 === (1)) { + return (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))); + } else if (_1 === (2)) { + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + return (x = (new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), x$1 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 8), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)); + } else if (_1 === (4)) { + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + return (x$2 = (x$3 = (x$4 = (new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), x$5 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 8), new $Uint64(x$4.$high | x$5.$high, (x$4.$low | x$5.$low) >>> 0)), x$6 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 16), new $Uint64(x$3.$high | x$6.$high, (x$3.$low | x$6.$low) >>> 0)), x$7 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 24), new $Uint64(x$2.$high | x$7.$high, (x$2.$low | x$7.$low) >>> 0)); + } else if (_1 === (8)) { + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + return (x$8 = (x$9 = (x$10 = (x$11 = (x$12 = (x$13 = (x$14 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$15 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$14.$high | x$15.$high, (x$14.$low | x$15.$low) >>> 0)), x$16 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$13.$high | x$16.$high, (x$13.$low | x$16.$low) >>> 0)), x$17 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$12.$high | x$17.$high, (x$12.$low | x$17.$low) >>> 0)), x$18 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$11.$high | x$18.$high, (x$11.$low | x$18.$low) >>> 0)), x$19 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$10.$high | x$19.$high, (x$10.$low | x$19.$low) >>> 0)), x$20 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$9.$high | x$20.$high, (x$9.$low | x$20.$low) >>> 0)), x$21 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x$8.$high | x$21.$high, (x$8.$low | x$21.$low) >>> 0)); + } else { + $panic(new $String("syscall: readInt with unsupported size")); + } + }; + readIntLE = function readIntLE$1(b, size) { + var _1, b, size, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + _1 = size; + if (_1 === (1)) { + return (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))); + } else if (_1 === (2)) { + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + return (x = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$1 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)); + } else if (_1 === (4)) { + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + return (x$2 = (x$3 = (x$4 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$5 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$4.$high | x$5.$high, (x$4.$low | x$5.$low) >>> 0)), x$6 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$3.$high | x$6.$high, (x$3.$low | x$6.$low) >>> 0)), x$7 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$2.$high | x$7.$high, (x$2.$low | x$7.$low) >>> 0)); + } else if (_1 === (8)) { + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + return (x$8 = (x$9 = (x$10 = (x$11 = (x$12 = (x$13 = (x$14 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$15 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$14.$high | x$15.$high, (x$14.$low | x$15.$low) >>> 0)), x$16 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$13.$high | x$16.$high, (x$13.$low | x$16.$low) >>> 0)), x$17 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$12.$high | x$17.$high, (x$12.$low | x$17.$low) >>> 0)), x$18 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 32), new $Uint64(x$11.$high | x$18.$high, (x$11.$low | x$18.$low) >>> 0)), x$19 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 40), new $Uint64(x$10.$high | x$19.$high, (x$10.$low | x$19.$low) >>> 0)), x$20 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 48), new $Uint64(x$9.$high | x$20.$high, (x$9.$low | x$20.$low) >>> 0)), x$21 = $shiftLeft64((new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), 56), new $Uint64(x$8.$high | x$21.$high, (x$8.$low | x$21.$low) >>> 0)); + } else { + $panic(new $String("syscall: readInt with unsupported size")); + } + }; + $ptrType(File).prototype.Readdir = function Readdir(n) { + var {_r$3, _tuple, err, f, infos, n, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + if (f === ptrType$2.nil) { + $s = -1; return [sliceType$8.nil, $pkg.ErrInvalid]; + } + _r$3 = f.readdir(n, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + infos = _tuple[2]; + err = _tuple[3]; + if (infos === sliceType$8.nil) { + infos = new sliceType$8([]); + } + $s = -1; return [infos, err]; + /* */ } return; } var $f = {$blk: Readdir, $c: true, $r, _r$3, _tuple, err, f, infos, n, $s};return $f; + }; + $ptrType(File).prototype.Readdirnames = function Readdirnames(n) { + var {_r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, f, n, names, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + names = sliceType.nil; + err = $ifaceNil; + f = this; + if (f === ptrType$2.nil) { + _tmp = sliceType.nil; + _tmp$1 = $pkg.ErrInvalid; + names = _tmp; + err = _tmp$1; + $s = -1; return [names, err]; + } + _r$3 = f.readdir(n, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + names = _tuple[0]; + err = _tuple[3]; + if (names === sliceType.nil) { + names = new sliceType([]); + } + _tmp$2 = names; + _tmp$3 = err; + names = _tmp$2; + err = _tmp$3; + $s = -1; return [names, err]; + /* */ } return; } var $f = {$blk: Readdirnames, $c: true, $r, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, f, n, names, $s};return $f; + }; + $ptrType(File).prototype.ReadDir = function ReadDir$1(n) { + var {_r$3, _tuple, dirents, err, f, n, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + if (f === ptrType$2.nil) { + $s = -1; return [sliceType$7.nil, $pkg.ErrInvalid]; + } + _r$3 = f.readdir(n, 1); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + dirents = _tuple[1]; + err = _tuple[3]; + if (dirents === sliceType$7.nil) { + dirents = new sliceType$7([]); + } + $s = -1; return [dirents, err]; + /* */ } return; } var $f = {$blk: ReadDir$1, $c: true, $r, _r$3, _tuple, dirents, err, f, n, $s};return $f; + }; + ReadDir = function ReadDir$2(name) { + var {$24r, _r$3, _r$4, _tuple, _tuple$1, dirs, err, f, name, $s, $deferred, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + dirs = [dirs]; + _r$3 = Open(name); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType$7.nil, err]; + } + $deferred.push([$methodVal(f, "Close"), []]); + _r$4 = f.ReadDir(-1); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + dirs[0] = _tuple$1[0]; + err = _tuple$1[1]; + $r = sort.Slice(dirs[0], (function(dirs) { return function ReadDir·func1(i, j) { + var {$24r, _r$5, _r$6, i, j, $s, $r, $c} = $restore(this, {i, j}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$5 = ((i < 0 || i >= dirs[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : dirs[0].$array[dirs[0].$offset + i]).Name(); /* */ $s = 1; case 1: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = ((j < 0 || j >= dirs[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : dirs[0].$array[dirs[0].$offset + j]).Name(); /* */ $s = 2; case 2: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r = _r$5 < _r$6; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: ReadDir·func1, $c: true, $r, $24r, _r$5, _r$6, i, j, $s};return $f; + }; })(dirs)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r = [dirs[0], err]; + $s = 4; case 4: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType$7.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ReadDir$2, $c: true, $r, $24r, _r$3, _r$4, _tuple, _tuple$1, dirs, err, f, name, $s, $deferred};return $f; } } + }; + $pkg.ReadDir = ReadDir; + ptrType$1.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [fs.FileMode], false)}, {prop: "ModTime", name: "ModTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$2.methods = [{prop: "Stat", name: "Stat", pkg: "", typ: $funcType([], [fs.FileInfo, $error], false)}, {prop: "readFrom", name: "readFrom", pkg: "os", typ: $funcType([io.Reader], [$Int64, $Bool, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "Fd", name: "Fd", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "seek", name: "seek", pkg: "os", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "read", name: "read", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pread", name: "pread", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pwrite", name: "pwrite", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "chmod", name: "chmod", pkg: "os", typ: $funcType([fs.FileMode], [$error], false)}, {prop: "Chown", name: "Chown", pkg: "", typ: $funcType([$Int, $Int], [$error], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([$Int64], [$error], false)}, {prop: "Sync", name: "Sync", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Chdir", name: "Chdir", pkg: "", typ: $funcType([], [$error], false)}, {prop: "setDeadline", name: "setDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "setReadDeadline", name: "setReadDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "setWriteDeadline", name: "setWriteDeadline", pkg: "os", typ: $funcType([time.Time], [$error], false)}, {prop: "checkValid", name: "checkValid", pkg: "os", typ: $funcType([$String], [$error], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteAt", name: "WriteAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "wrapErr", name: "wrapErr", pkg: "os", typ: $funcType([$String, $error], [$error], false)}, {prop: "Chmod", name: "Chmod", pkg: "", typ: $funcType([fs.FileMode], [$error], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SyscallConn", name: "SyscallConn", pkg: "", typ: $funcType([], [syscall.RawConn, $error], false)}, {prop: "readdir", name: "readdir", pkg: "os", typ: $funcType([$Int, readdirMode], [sliceType, sliceType$7, sliceType$8, $error], false)}, {prop: "Readdir", name: "Readdir", pkg: "", typ: $funcType([$Int], [sliceType$8, $error], false)}, {prop: "Readdirnames", name: "Readdirnames", pkg: "", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "ReadDir", name: "ReadDir", pkg: "", typ: $funcType([$Int], [sliceType$7, $error], false)}]; + ptrType$18.methods = [{prop: "Control", name: "Control", pkg: "", typ: $funcType([funcType$2], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([funcType$3], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([funcType$3], [$error], false)}]; + ptrType$9.methods = [{prop: "close", name: "close", pkg: "os", typ: $funcType([], [$error], false)}]; + ptrType$19.methods = [{prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [fs.FileMode], false)}, {prop: "Info", name: "Info", pkg: "", typ: $funcType([], [fs.FileInfo, $error], false)}]; + ptrType$16.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [$error], false)}]; + ptrType$10.methods = [{prop: "userTime", name: "userTime", pkg: "os", typ: $funcType([], [time.Duration], false)}, {prop: "systemTime", name: "systemTime", pkg: "os", typ: $funcType([], [time.Duration], false)}, {prop: "Pid", name: "Pid", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "exited", name: "exited", pkg: "os", typ: $funcType([], [$Bool], false)}, {prop: "success", name: "success", pkg: "os", typ: $funcType([], [$Bool], false)}, {prop: "sys", name: "sys", pkg: "os", typ: $funcType([], [$emptyInterface], false)}, {prop: "sysUsage", name: "sysUsage", pkg: "os", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ExitCode", name: "ExitCode", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "UserTime", name: "UserTime", pkg: "", typ: $funcType([], [time.Duration], false)}, {prop: "SystemTime", name: "SystemTime", pkg: "", typ: $funcType([], [time.Duration], false)}, {prop: "Exited", name: "Exited", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Success", name: "Success", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "SysUsage", name: "SysUsage", pkg: "", typ: $funcType([], [$emptyInterface], false)}]; + ptrType$13.methods = [{prop: "blockUntilWaitable", name: "blockUntilWaitable", pkg: "os", typ: $funcType([], [$Bool, $error], false)}, {prop: "wait", name: "wait", pkg: "os", typ: $funcType([], [ptrType$10, $error], false)}, {prop: "signal", name: "signal", pkg: "os", typ: $funcType([Signal], [$error], false)}, {prop: "release", name: "release", pkg: "os", typ: $funcType([], [$error], false)}, {prop: "kill", name: "kill", pkg: "os", typ: $funcType([], [$error], false)}, {prop: "setDone", name: "setDone", pkg: "os", typ: $funcType([], [], false)}, {prop: "done", name: "done", pkg: "os", typ: $funcType([], [$Bool], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Kill", name: "Kill", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [ptrType$10, $error], false)}, {prop: "Signal", name: "Signal", pkg: "", typ: $funcType([Signal], [$error], false)}]; + ptrType$17.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$8.methods = [{prop: "close", name: "close", pkg: "os", typ: $funcType([], [], false)}]; + fileStat.init("os", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "mode", name: "mode", embedded: false, exported: false, typ: fs.FileMode, tag: ""}, {prop: "modTime", name: "modTime", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "sys", name: "sys", embedded: false, exported: false, typ: syscall.Stat_t, tag: ""}]); + File.init("os", [{prop: "file", name: "file", embedded: true, exported: false, typ: ptrType$9, tag: ""}]); + rawConn.init("os", [{prop: "file", name: "file", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); + file.init("os", [{prop: "pfd", name: "pfd", embedded: false, exported: false, typ: poll.FD, tag: ""}, {prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "dirinfo", name: "dirinfo", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "nonblock", name: "nonblock", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "stdoutOrErr", name: "stdoutOrErr", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "appendMode", name: "appendMode", embedded: false, exported: false, typ: $Bool, tag: ""}]); + unixDirent.init("os", [{prop: "parent", name: "parent", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: fs.FileMode, tag: ""}, {prop: "info", name: "info", embedded: false, exported: false, typ: fs.FileInfo, tag: ""}]); + LinkError.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Old", name: "Old", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "New", name: "New", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + onlyWriter.init("", [{prop: "Writer", name: "Writer", embedded: true, exported: true, typ: io.Writer, tag: ""}]); + ProcessState.init("os", [{prop: "pid", name: "pid", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "status", name: "status", embedded: false, exported: false, typ: syscall.WaitStatus, tag: ""}, {prop: "rusage", name: "rusage", embedded: false, exported: false, typ: ptrType$12, tag: ""}]); + Process.init("os", [{prop: "Pid", name: "Pid", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "handle", name: "handle", embedded: false, exported: false, typ: $Uintptr, tag: ""}, {prop: "isdone", name: "isdone", embedded: false, exported: false, typ: atomic.Bool, tag: ""}, {prop: "sigMu", name: "sigMu", embedded: false, exported: false, typ: sync.RWMutex, tag: ""}]); + ProcAttr.init("", [{prop: "Dir", name: "Dir", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Env", name: "Env", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Files", name: "Files", embedded: false, exported: true, typ: sliceType$9, tag: ""}, {prop: "Sys", name: "Sys", embedded: false, exported: true, typ: ptrType$15, tag: ""}]); + Signal.init([{prop: "Signal", name: "Signal", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]); + timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]); + SyscallError.init("", [{prop: "Syscall", name: "Syscall", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + dirInfo.init("os", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "nbuf", name: "nbuf", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "bufp", name: "bufp", embedded: false, exported: false, typ: $Int, tag: ""}]); + $linknames["os.net_newUnixFile"] = net_newUnixFile; + $pkg.$initLinknames = function() { + fastrand = $linknames["runtime.fastrand"]; + }; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = itoa.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = poll.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = safefilepath.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = execenv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unix.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = testlog.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fs.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syscall.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.Args = sliceType.nil; + getwdCache = new structType.ptr(new sync.Mutex.ptr(0, 0), ""); + testingForceReadDirLstat = false; + errPatternHasSeparator = errors.New("pattern contains path separator"); + errWriteAtInAppendMode = errors.New("os: invalid use of WriteAt on file opened with O_APPEND"); + lstat = Lstat; + $pkg.Kill = new syscall.Signal(3); + $pkg.ErrProcessDone = errors.New("os: process already finished"); + $pkg.ErrInvalid = fs.ErrInvalid; + $pkg.ErrExist = fs.ErrExist; + $pkg.ErrNotExist = fs.ErrNotExist; + $pkg.ErrClosed = fs.ErrClosed; + $pkg.ErrNoDeadline = errNoDeadline(); + $pkg.ErrDeadlineExceeded = errDeadlineExceeded(); + dirBufPool = new sync.Pool.ptr(sliceType$1.nil, (function func1() { + var buf, buf$24ptr; + buf = $makeSlice(sliceType$2, 8192); + return (buf$24ptr || (buf$24ptr = new ptrType(function() { return buf; }, function($v) { buf = $v; }))); + })); + _r = NewFile(0, "/dev/stdin"); /* */ $s = 17; case 17: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $pkg.Stdin = _r; + _r$1 = NewFile(1, "/dev/stdout"); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $pkg.Stdout = _r$1; + _r$2 = NewFile(2, "/dev/stderr"); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $pkg.Stderr = _r$2; + init(); + init$1(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["fmt"] = (function() { + var $pkg = {}, $init, errors, fmtsort, io, math, os, reflect, sort, strconv, sync, utf8, ScanState, Scanner, stringReader, scanError, ss, ssave, readRune, State, Formatter, Stringer, GoStringer, buffer, pp, fmtFlags, fmt, wrapError, wrapErrors, arrayType, sliceType, sliceType$1, ptrType, ptrType$1, arrayType$1, sliceType$2, ptrType$2, ptrType$3, sliceType$3, ptrType$4, arrayType$2, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, ptrType$16, ptrType$17, ptrType$18, ptrType$19, ptrType$20, ptrType$21, ptrType$22, ptrType$23, ptrType$24, arrayType$4, sliceType$4, funcType, ptrType$25, ptrType$26, ptrType$27, ptrType$28, space, ssFree, complexError, boolError, ppFree, Sscan, Fscan, isSpace, notSpace, newScanState, indexRune, hasX, hexDigit, errorHandler, newPrinter, Fprintf, Printf, Sprintf, Appendf, Fprint, Print, Sprint, Fprintln, Println, Sprintln, getField, tooLarge, parsenum, intFromArg, parseArgNumber, Errorf; + errors = $packages["errors"]; + fmtsort = $packages["internal/fmtsort"]; + io = $packages["io"]; + math = $packages["math"]; + os = $packages["os"]; + reflect = $packages["reflect"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + sync = $packages["sync"]; + utf8 = $packages["unicode/utf8"]; + ScanState = $newType(8, $kindInterface, "fmt.ScanState", true, "fmt", true, null); + Scanner = $newType(8, $kindInterface, "fmt.Scanner", true, "fmt", true, null); + stringReader = $newType(8, $kindString, "fmt.stringReader", true, "fmt", false, null); + scanError = $newType(0, $kindStruct, "fmt.scanError", true, "fmt", false, function(err_) { + this.$val = this; + if (arguments.length === 0) { + this.err = $ifaceNil; + return; + } + this.err = err_; + }); + ss = $newType(0, $kindStruct, "fmt.ss", true, "fmt", false, function(rs_, buf_, count_, atEOF_, ssave_) { + this.$val = this; + if (arguments.length === 0) { + this.rs = $ifaceNil; + this.buf = buffer.nil; + this.count = 0; + this.atEOF = false; + this.ssave = new ssave.ptr(false, false, false, 0, 0, 0); + return; + } + this.rs = rs_; + this.buf = buf_; + this.count = count_; + this.atEOF = atEOF_; + this.ssave = ssave_; + }); + ssave = $newType(0, $kindStruct, "fmt.ssave", true, "fmt", false, function(validSave_, nlIsEnd_, nlIsSpace_, argLimit_, limit_, maxWid_) { + this.$val = this; + if (arguments.length === 0) { + this.validSave = false; + this.nlIsEnd = false; + this.nlIsSpace = false; + this.argLimit = 0; + this.limit = 0; + this.maxWid = 0; + return; + } + this.validSave = validSave_; + this.nlIsEnd = nlIsEnd_; + this.nlIsSpace = nlIsSpace_; + this.argLimit = argLimit_; + this.limit = limit_; + this.maxWid = maxWid_; + }); + readRune = $newType(0, $kindStruct, "fmt.readRune", true, "fmt", false, function(reader_, buf_, pending_, pendBuf_, peekRune_) { + this.$val = this; + if (arguments.length === 0) { + this.reader = $ifaceNil; + this.buf = arrayType$2.zero(); + this.pending = 0; + this.pendBuf = arrayType$2.zero(); + this.peekRune = 0; + return; + } + this.reader = reader_; + this.buf = buf_; + this.pending = pending_; + this.pendBuf = pendBuf_; + this.peekRune = peekRune_; + }); + State = $newType(8, $kindInterface, "fmt.State", true, "fmt", true, null); + Formatter = $newType(8, $kindInterface, "fmt.Formatter", true, "fmt", true, null); + Stringer = $newType(8, $kindInterface, "fmt.Stringer", true, "fmt", true, null); + GoStringer = $newType(8, $kindInterface, "fmt.GoStringer", true, "fmt", true, null); + buffer = $newType(12, $kindSlice, "fmt.buffer", true, "fmt", false, null); + pp = $newType(0, $kindStruct, "fmt.pp", true, "fmt", false, function(buf_, arg_, value_, fmt_, reordered_, goodArgNum_, panicking_, erroring_, wrapErrs_, wrappedErrs_) { + this.$val = this; + if (arguments.length === 0) { + this.buf = buffer.nil; + this.arg = $ifaceNil; + this.value = new reflect.Value.ptr(ptrType.nil, 0, 0); + this.fmt = new fmt.ptr(ptrType$1.nil, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false), 0, 0, arrayType$1.zero()); + this.reordered = false; + this.goodArgNum = false; + this.panicking = false; + this.erroring = false; + this.wrapErrs = false; + this.wrappedErrs = sliceType$2.nil; + return; + } + this.buf = buf_; + this.arg = arg_; + this.value = value_; + this.fmt = fmt_; + this.reordered = reordered_; + this.goodArgNum = goodArgNum_; + this.panicking = panicking_; + this.erroring = erroring_; + this.wrapErrs = wrapErrs_; + this.wrappedErrs = wrappedErrs_; + }); + fmtFlags = $newType(0, $kindStruct, "fmt.fmtFlags", true, "fmt", false, function(widPresent_, precPresent_, minus_, plus_, sharp_, space_, zero_, plusV_, sharpV_) { + this.$val = this; + if (arguments.length === 0) { + this.widPresent = false; + this.precPresent = false; + this.minus = false; + this.plus = false; + this.sharp = false; + this.space = false; + this.zero = false; + this.plusV = false; + this.sharpV = false; + return; + } + this.widPresent = widPresent_; + this.precPresent = precPresent_; + this.minus = minus_; + this.plus = plus_; + this.sharp = sharp_; + this.space = space_; + this.zero = zero_; + this.plusV = plusV_; + this.sharpV = sharpV_; + }); + fmt = $newType(0, $kindStruct, "fmt.fmt", true, "fmt", false, function(buf_, fmtFlags_, wid_, prec_, intbuf_) { + this.$val = this; + if (arguments.length === 0) { + this.buf = ptrType$1.nil; + this.fmtFlags = new fmtFlags.ptr(false, false, false, false, false, false, false, false, false); + this.wid = 0; + this.prec = 0; + this.intbuf = arrayType$1.zero(); + return; + } + this.buf = buf_; + this.fmtFlags = fmtFlags_; + this.wid = wid_; + this.prec = prec_; + this.intbuf = intbuf_; + }); + wrapError = $newType(0, $kindStruct, "fmt.wrapError", true, "fmt", false, function(msg_, err_) { + this.$val = this; + if (arguments.length === 0) { + this.msg = ""; + this.err = $ifaceNil; + return; + } + this.msg = msg_; + this.err = err_; + }); + wrapErrors = $newType(0, $kindStruct, "fmt.wrapErrors", true, "fmt", false, function(msg_, errs_) { + this.$val = this; + if (arguments.length === 0) { + this.msg = ""; + this.errs = sliceType$4.nil; + return; + } + this.msg = msg_; + this.errs = errs_; + }); + $pkg.ScanState = ScanState; + $pkg.Scanner = Scanner; + $pkg.stringReader = stringReader; + $pkg.scanError = scanError; + $pkg.ss = ss; + $pkg.ssave = ssave; + $pkg.readRune = readRune; + $pkg.State = State; + $pkg.Formatter = Formatter; + $pkg.Stringer = Stringer; + $pkg.GoStringer = GoStringer; + $pkg.buffer = buffer; + $pkg.pp = pp; + $pkg.fmtFlags = fmtFlags; + $pkg.fmt = fmt; + $pkg.wrapError = wrapError; + $pkg.wrapErrors = wrapErrors; + $pkg.$finishSetup = function() { + arrayType = $arrayType($Uint16, 2); + sliceType = $sliceType(arrayType); + sliceType$1 = $sliceType($emptyInterface); + ptrType = $ptrType(reflect.rtype); + ptrType$1 = $ptrType(buffer); + arrayType$1 = $arrayType($Uint8, 68); + sliceType$2 = $sliceType($Int); + ptrType$2 = $ptrType(stringReader); + ptrType$3 = $ptrType($String); + sliceType$3 = $sliceType($Uint8); + ptrType$4 = $ptrType(ss); + arrayType$2 = $arrayType($Uint8, 4); + ptrType$5 = $ptrType(strconv.NumError); + ptrType$6 = $ptrType($Bool); + ptrType$7 = $ptrType($Complex64); + ptrType$8 = $ptrType($Complex128); + ptrType$9 = $ptrType($Int); + ptrType$10 = $ptrType($Int8); + ptrType$11 = $ptrType($Int16); + ptrType$12 = $ptrType($Int32); + ptrType$13 = $ptrType($Int64); + ptrType$14 = $ptrType($Uint); + ptrType$15 = $ptrType($Uint8); + ptrType$16 = $ptrType($Uint16); + ptrType$17 = $ptrType($Uint32); + ptrType$18 = $ptrType($Uint64); + ptrType$19 = $ptrType($Uintptr); + ptrType$20 = $ptrType($Float32); + ptrType$21 = $ptrType($Float64); + ptrType$22 = $ptrType(sliceType$3); + ptrType$23 = $ptrType($error); + ptrType$24 = $ptrType(pp); + arrayType$4 = $arrayType($Uint8, 6); + sliceType$4 = $sliceType($error); + funcType = $funcType([$Int32], [$Bool], false); + ptrType$25 = $ptrType(readRune); + ptrType$26 = $ptrType(fmt); + ptrType$27 = $ptrType(wrapError); + ptrType$28 = $ptrType(wrapErrors); + $ptrType(stringReader).prototype.Read = function Read(b) { + var b, err, n, r; + n = 0; + err = $ifaceNil; + r = this; + n = $copyString(b, r.$get()); + r.$set($substring((r.$get()), n)); + if (n === 0) { + err = io.EOF; + } + return [n, err]; + }; + Sscan = function Sscan$1(str, a) { + var {$24r, _ptr, _r, _tuple, a, err, n, str, $s, $r, $c} = $restore(this, {str, a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + str = [str]; + n = 0; + err = $ifaceNil; + _r = Fscan(((_ptr = (str.$ptr || (str.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, str))), new ptrType$2(function() { return _ptr.$get(); }, function($v) { _ptr.$set($v); }, _ptr.$target))), a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Sscan$1, $c: true, $r, $24r, _ptr, _r, _tuple, a, err, n, str, $s};return $f; + }; + $pkg.Sscan = Sscan; + Fscan = function Fscan$1(r, a) { + var {_r, _r$1, _tuple, _tuple$1, a, err, n, old, r, s, $s, $r, $c} = $restore(this, {r, a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = newScanState(r, true, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + s = _tuple[0]; + old = $clone(_tuple[1], ssave); + _r$1 = s.doScan(a); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + n = _tuple$1[0]; + err = _tuple$1[1]; + s.free($clone(old, ssave)); + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Fscan$1, $c: true, $r, _r, _r$1, _tuple, _tuple$1, a, err, n, old, r, s, $s};return $f; + }; + $pkg.Fscan = Fscan; + $ptrType(ss).prototype.Read = function Read$1(buf) { + var _tmp, _tmp$1, buf, err, n, s; + n = 0; + err = $ifaceNil; + s = this; + _tmp = 0; + _tmp$1 = errors.New("ScanState's Read should not be called. Use ReadRune"); + n = _tmp; + err = _tmp$1; + return [n, err]; + }; + $ptrType(ss).prototype.ReadRune = function ReadRune() { + var {_r, _tuple, err, r, s, size, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = 0; + size = 0; + err = $ifaceNil; + s = this; + if (s.atEOF || s.count >= s.ssave.argLimit) { + err = io.EOF; + $s = -1; return [r, size, err]; + } + _r = s.rs.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r = _tuple[0]; + size = _tuple[1]; + err = _tuple[2]; + if ($interfaceIsEqual(err, $ifaceNil)) { + s.count = s.count + (1) >> 0; + if (s.ssave.nlIsEnd && (r === 10)) { + s.atEOF = true; + } + } else if ($interfaceIsEqual(err, io.EOF)) { + s.atEOF = true; + } + $s = -1; return [r, size, err]; + /* */ } return; } var $f = {$blk: ReadRune, $c: true, $r, _r, _tuple, err, r, s, size, $s};return $f; + }; + $ptrType(ss).prototype.Width = function Width() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, ok, s, wid; + wid = 0; + ok = false; + s = this; + if (s.ssave.maxWid === 1073741824) { + _tmp = 0; + _tmp$1 = false; + wid = _tmp; + ok = _tmp$1; + return [wid, ok]; + } + _tmp$2 = s.ssave.maxWid; + _tmp$3 = true; + wid = _tmp$2; + ok = _tmp$3; + return [wid, ok]; + }; + $ptrType(ss).prototype.getRune = function getRune() { + var {_r, _tuple, err, r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = 0; + s = this; + _r = s.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r = _tuple[0]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + if ($interfaceIsEqual(err, io.EOF)) { + r = -1; + $s = -1; return r; + } + s.error(err); + } + $s = -1; return r; + /* */ } return; } var $f = {$blk: getRune, $c: true, $r, _r, _tuple, err, r, s, $s};return $f; + }; + $ptrType(ss).prototype.mustReadRune = function mustReadRune() { + var {_r, r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = 0; + s = this; + _r = s.getRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if (r === -1) { + s.error(io.ErrUnexpectedEOF); + } + $s = -1; return r; + /* */ } return; } var $f = {$blk: mustReadRune, $c: true, $r, _r, r, s, $s};return $f; + }; + $ptrType(ss).prototype.UnreadRune = function UnreadRune() { + var {_r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.rs.UnreadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + s.atEOF = false; + s.count = s.count - (1) >> 0; + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: UnreadRune, $c: true, $r, _r, s, $s};return $f; + }; + $ptrType(ss).prototype.error = function error(err) { + var err, s, x; + s = this; + $panic((x = new scanError.ptr(err), new x.constructor.elem(x))); + }; + $ptrType(ss).prototype.errorString = function errorString(err) { + var err, s, x; + s = this; + $panic((x = new scanError.ptr(errors.New(err)), new x.constructor.elem(x))); + }; + $ptrType(ss).prototype.Token = function Token(skipSpace, f) { + var {_r, err, f, s, skipSpace, tok, $s, $deferred, $r, $c} = $restore(this, {skipSpace, f}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + err = [err]; + tok = sliceType$3.nil; + err[0] = $ifaceNil; + s = this; + $deferred.push([(function(err) { return function ss·Token·func1() { + var _tuple, e, ok, se; + e = $recover(); + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tuple = $assertType(e, scanError, true); + se = $clone(_tuple[0], scanError); + ok = _tuple[1]; + if (ok) { + err[0] = se.err; + } else { + $panic(e); + } + } + }; })(err), []]); + if (f === $throwNilPointerError) { + f = notSpace; + } + s.buf = $subslice(s.buf, 0, 0); + _r = s.token(skipSpace, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tok = _r; + $s = -1; return [tok, err[0]]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [tok, err[0]]; } if($curGoroutine.asleep) { var $f = {$blk: Token, $c: true, $r, _r, err, f, s, skipSpace, tok, $s, $deferred};return $f; } } + }; + isSpace = function isSpace$1(r) { + var _i, _ref, r, rng, rx; + if (r >= 65536) { + return false; + } + rx = ((r << 16 >>> 16)); + _ref = space; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + rng = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), arrayType); + if (rx < rng[0]) { + return false; + } + if (rx <= rng[1]) { + return true; + } + _i++; + } + return false; + }; + notSpace = function notSpace$1(r) { + var r; + return !isSpace(r); + }; + $ptrType(readRune).prototype.readByte = function readByte() { + var {_r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, n, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = 0; + err = $ifaceNil; + r = this; + if (r.pending > 0) { + b = r.pendBuf[0]; + $copySlice($subslice(new sliceType$3(r.pendBuf), 0), $subslice(new sliceType$3(r.pendBuf), 1)); + r.pending = r.pending - (1) >> 0; + $s = -1; return [b, err]; + } + _r = io.ReadFull(r.reader, $subslice(new sliceType$3(r.pendBuf), 0, 1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + if (!((n === 1))) { + _tmp = 0; + _tmp$1 = err; + b = _tmp; + err = _tmp$1; + $s = -1; return [b, err]; + } + _tmp$2 = r.pendBuf[0]; + _tmp$3 = err; + b = _tmp$2; + err = _tmp$3; + $s = -1; return [b, err]; + /* */ } return; } var $f = {$blk: readByte, $c: true, $r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, n, r, $s};return $f; + }; + $ptrType(readRune).prototype.ReadRune = function ReadRune$1() { + var {_r, _r$1, _tuple, _tuple$1, _tuple$2, err, n, r, rr, size, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rr = 0; + size = 0; + err = $ifaceNil; + r = this; + if (r.peekRune >= 0) { + rr = r.peekRune; + r.peekRune = ~r.peekRune >> 0; + size = utf8.RuneLen(rr); + $s = -1; return [rr, size, err]; + } + _r = r.readByte(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r.buf[0] = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [rr, size, err]; + } + if (r.buf[0] < 128) { + rr = ((r.buf[0] >> 0)); + size = 1; + r.peekRune = ~rr >> 0; + $s = -1; return [rr, size, err]; + } + n = 0; + n = 1; + /* while (true) { */ case 2: + /* if (!(!utf8.FullRune($subslice(new sliceType$3(r.buf), 0, n)))) { break; } */ if(!(!utf8.FullRune($subslice(new sliceType$3(r.buf), 0, n)))) { $s = 3; continue; } + _r$1 = r.readByte(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + (x = r.buf, ((n < 0 || n >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[n] = _tuple$1[0])); + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + if ($interfaceIsEqual(err, io.EOF)) { + err = $ifaceNil; + /* break; */ $s = 3; continue; + } + $s = -1; return [rr, size, err]; + } + n = n + (1) >> 0; + $s = 2; continue; + case 3: + _tuple$2 = utf8.DecodeRune($subslice(new sliceType$3(r.buf), 0, n)); + rr = _tuple$2[0]; + size = _tuple$2[1]; + if (size < n) { + $copySlice($subslice(new sliceType$3(r.pendBuf), r.pending), $subslice(new sliceType$3(r.buf), size, n)); + r.pending = r.pending + ((n - size >> 0)) >> 0; + } + r.peekRune = ~rr >> 0; + $s = -1; return [rr, size, err]; + /* */ } return; } var $f = {$blk: ReadRune$1, $c: true, $r, _r, _r$1, _tuple, _tuple$1, _tuple$2, err, n, r, rr, size, x, $s};return $f; + }; + $ptrType(readRune).prototype.UnreadRune = function UnreadRune$1() { + var r; + r = this; + if (r.peekRune >= 0) { + return errors.New("fmt: scanning called UnreadRune with no rune available"); + } + r.peekRune = ~r.peekRune >> 0; + return $ifaceNil; + }; + newScanState = function newScanState$1(r, nlIsSpace, nlIsEnd) { + var {_r, _tuple, nlIsEnd, nlIsSpace, ok, old, r, rs, s, $s, $r, $c} = $restore(this, {r, nlIsSpace, nlIsEnd}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = ptrType$4.nil; + old = new ssave.ptr(false, false, false, 0, 0, 0); + _r = ssFree.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s = $assertType(_r, ptrType$4); + _tuple = $assertType(r, io.RuneScanner, true); + rs = _tuple[0]; + ok = _tuple[1]; + if (ok) { + s.rs = rs; + } else { + s.rs = new readRune.ptr(r, arrayType$2.zero(), 0, arrayType$2.zero(), -1); + } + s.ssave.nlIsSpace = nlIsSpace; + s.ssave.nlIsEnd = nlIsEnd; + s.atEOF = false; + s.ssave.limit = 1073741824; + s.ssave.argLimit = 1073741824; + s.ssave.maxWid = 1073741824; + s.ssave.validSave = true; + s.count = 0; + $s = -1; return [s, old]; + /* */ } return; } var $f = {$blk: newScanState$1, $c: true, $r, _r, _tuple, nlIsEnd, nlIsSpace, ok, old, r, rs, s, $s};return $f; + }; + $ptrType(ss).prototype.free = function free(old) { + var old, s; + s = this; + if (old.validSave) { + ssave.copy(s.ssave, old); + return; + } + if (s.buf.$capacity > 1024) { + return; + } + s.buf = $subslice(s.buf, 0, 0); + s.rs = $ifaceNil; + ssFree.Put(s); + }; + $ptrType(ss).prototype.SkipSpace = function SkipSpace() { + var {_r, _r$1, _r$2, _v, r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* while (true) { */ case 1: + _r = s.getRune(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if (r === -1) { + $s = -1; return; + } + if (!(r === 13)) { _v = false; $s = 6; continue s; } + _r$1 = s.peek("\n"); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 6: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + /* continue; */ $s = 1; continue; + /* } */ case 5: + if (r === 10) { + if (s.ssave.nlIsSpace) { + /* continue; */ $s = 1; continue; + } + s.errorString("unexpected newline"); + $s = -1; return; + } + /* */ if (!isSpace(r)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!isSpace(r)) { */ case 8: + _r$2 = s.UnreadRune(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* break; */ $s = 2; continue; + /* } */ case 9: + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: SkipSpace, $c: true, $r, _r, _r$1, _r$2, _v, r, s, $s};return $f; + }; + $ptrType(ss).prototype.token = function token(skipSpace, f) { + var {_r, _r$1, _r$2, f, r, s, skipSpace, $s, $r, $c} = $restore(this, {skipSpace, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (skipSpace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (skipSpace) { */ case 1: + $r = s.SkipSpace(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + /* while (true) { */ case 4: + _r = s.getRune(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if (r === -1) { + /* break; */ $s = 5; continue; + } + _r$1 = f(r); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!_r$1) { */ case 7: + _r$2 = s.UnreadRune(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* break; */ $s = 5; continue; + /* } */ case 8: + (s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).writeRune(r); + $s = 4; continue; + case 5: + $s = -1; return $convertSliceType(s.buf, sliceType$3); + /* */ } return; } var $f = {$blk: token, $c: true, $r, _r, _r$1, _r$2, f, r, s, skipSpace, $s};return $f; + }; + indexRune = function indexRune$1(s, r) { + var _i, _ref, _rune, c, i, r, s; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + c = _rune[0]; + if (c === r) { + return i; + } + _i += _rune[1]; + } + return -1; + }; + $ptrType(ss).prototype.consume = function consume(ok, accept) { + var {_r, _r$1, accept, ok, r, s, $s, $r, $c} = $restore(this, {ok, accept}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.getRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if (r === -1) { + $s = -1; return false; + } + if (indexRune(ok, r) >= 0) { + if (accept) { + (s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).writeRune(r); + } + $s = -1; return true; + } + /* */ if (!((r === -1)) && accept) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((r === -1)) && accept) { */ case 2: + _r$1 = s.UnreadRune(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 3: + $s = -1; return false; + /* */ } return; } var $f = {$blk: consume, $c: true, $r, _r, _r$1, accept, ok, r, s, $s};return $f; + }; + $ptrType(ss).prototype.peek = function peek(ok) { + var {_r, _r$1, ok, r, s, $s, $r, $c} = $restore(this, {ok}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.getRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + /* */ if (!((r === -1))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((r === -1))) { */ case 2: + _r$1 = s.UnreadRune(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 3: + $s = -1; return indexRune(ok, r) >= 0; + /* */ } return; } var $f = {$blk: peek, $c: true, $r, _r, _r$1, ok, r, s, $s};return $f; + }; + $ptrType(ss).prototype.notEOF = function notEOF() { + var {_r, _r$1, r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.getRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if (r === -1) { + $panic(io.EOF); + } + _r$1 = s.UnreadRune(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return; + /* */ } return; } var $f = {$blk: notEOF, $c: true, $r, _r, _r$1, r, s, $s};return $f; + }; + $ptrType(ss).prototype.accept = function accept(ok) { + var {$24r, _r, ok, s, $s, $r, $c} = $restore(this, {ok}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.consume(ok, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: accept, $c: true, $r, $24r, _r, ok, s, $s};return $f; + }; + $ptrType(ss).prototype.okVerb = function okVerb(verb, okVerbs, typ) { + var _i, _ref, _rune, okVerbs, s, typ, v, verb; + s = this; + _ref = okVerbs; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + v = _rune[0]; + if (v === verb) { + return true; + } + _i += _rune[1]; + } + s.errorString("bad verb '%" + ($encodeRune(verb)) + "' for " + typ); + return false; + }; + $ptrType(ss).prototype.scanBool = function scanBool(verb) { + var {_1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _v, _v$1, _v$2, _v$3, _v$4, s, verb, $s, $r, $c} = $restore(this, {verb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + $r = s.SkipSpace(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = s.notEOF(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!s.okVerb(verb, "tv", "boolean")) { + $s = -1; return false; + } + _r = s.getRune(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _1 = _r; + /* */ if (_1 === (48)) { $s = 5; continue; } + /* */ if (_1 === (49)) { $s = 6; continue; } + /* */ if ((_1 === (116)) || (_1 === (84))) { $s = 7; continue; } + /* */ if ((_1 === (102)) || (_1 === (70))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === (48)) { */ case 5: + $s = -1; return false; + /* } else if (_1 === (49)) { */ case 6: + $s = -1; return true; + /* } else if ((_1 === (116)) || (_1 === (84))) { */ case 7: + _r$1 = s.accept("rR"); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (!(_r$1)) { _v = false; $s = 12; continue s; } + _r$2 = s.accept("uU"); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + if (!_r$2) { _v$1 = true; $s = 14; continue s; } + _r$3 = s.accept("eE"); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v$1 = !_r$3; case 14: + _v = _v$1; case 12: + /* */ if (_v) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v) { */ case 10: + s.error(boolError); + /* } */ case 11: + $s = -1; return true; + /* } else if ((_1 === (102)) || (_1 === (70))) { */ case 8: + _r$4 = s.accept("aA"); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + if (!(_r$4)) { _v$2 = false; $s = 19; continue s; } + _r$5 = s.accept("lL"); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + if (!_r$5) { _v$4 = true; $s = 22; continue s; } + _r$6 = s.accept("sS"); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$4 = !_r$6; case 22: + if (_v$4) { _v$3 = true; $s = 21; continue s; } + _r$7 = s.accept("eE"); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _v$3 = !_r$7; case 21: + _v$2 = _v$3; case 19: + /* */ if (_v$2) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_v$2) { */ case 17: + s.error(boolError); + /* } */ case 18: + $s = -1; return false; + /* } */ case 9: + case 3: + $s = -1; return false; + /* */ } return; } var $f = {$blk: scanBool, $c: true, $r, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _v, _v$1, _v$2, _v$3, _v$4, s, verb, $s};return $f; + }; + $ptrType(ss).prototype.getBase = function getBase(verb) { + var _1, base, digits, s, verb; + base = 0; + digits = ""; + s = this; + s.okVerb(verb, "bdoUxXv", "integer"); + base = 10; + digits = "0123456789"; + _1 = verb; + if (_1 === (98)) { + base = 2; + digits = "01"; + } else if (_1 === (111)) { + base = 8; + digits = "01234567"; + } else if ((_1 === (120)) || (_1 === (88)) || (_1 === (85))) { + base = 16; + digits = "0123456789aAbBcCdDeEfF"; + } + return [base, digits]; + }; + $ptrType(ss).prototype.scanNumber = function scanNumber(digits, haveDigits) { + var {_r, _r$1, digits, haveDigits, s, $s, $r, $c} = $restore(this, {digits, haveDigits}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (!haveDigits) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!haveDigits) { */ case 1: + $r = s.notEOF(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = s.accept(digits); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!_r) { */ case 4: + s.errorString("expected integer"); + /* } */ case 5: + /* } */ case 2: + /* while (true) { */ case 7: + _r$1 = s.accept(digits); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* if (!(_r$1)) { break; } */ if(!(_r$1)) { $s = 8; continue; } + $s = 7; continue; + case 8: + $s = -1; return ($bytesToString(s.buf)); + /* */ } return; } var $f = {$blk: scanNumber, $c: true, $r, _r, _r$1, digits, haveDigits, s, $s};return $f; + }; + $ptrType(ss).prototype.scanRune = function scanRune(bitSize) { + var {_r, bitSize, n, r, s, x, x$1, $s, $r, $c} = $restore(this, {bitSize}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + $r = s.notEOF(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = s.getRune(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + n = ((bitSize >>> 0)); + x = $shiftRightInt64(($shiftLeft64((new $Int64(0, r)), ((64 - n >>> 0)))), ((64 - n >>> 0))); + if (!((x$1 = (new $Int64(0, r)), (x.$high === x$1.$high && x.$low === x$1.$low)))) { + s.errorString("overflow on character value " + ($encodeRune(r))); + } + $s = -1; return (new $Int64(0, r)); + /* */ } return; } var $f = {$blk: scanRune, $c: true, $r, _r, bitSize, n, r, s, x, x$1, $s};return $f; + }; + $ptrType(ss).prototype.scanBasePrefix = function scanBasePrefix() { + var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, base, digits, s, zeroFound, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + base = 0; + digits = ""; + zeroFound = false; + s = this; + _r = s.peek("0"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r) { */ case 1: + _tmp = 0; + _tmp$1 = "0123456789_"; + _tmp$2 = false; + base = _tmp; + digits = _tmp$1; + zeroFound = _tmp$2; + $s = -1; return [base, digits, zeroFound]; + /* } */ case 2: + _r$1 = s.accept("0"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = s.peek("bB"); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 6; continue; } + _r$3 = s.peek("oO"); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 7; continue; } + _r$4 = s.peek("xX"); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_r$2) { */ case 6: + _r$5 = s.consume("bB", true); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + _tmp$3 = 0; + _tmp$4 = "01_"; + _tmp$5 = true; + base = _tmp$3; + digits = _tmp$4; + zeroFound = _tmp$5; + $s = -1; return [base, digits, zeroFound]; + /* } else if (_r$3) { */ case 7: + _r$6 = s.consume("oO", true); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$6; + _tmp$6 = 0; + _tmp$7 = "01234567_"; + _tmp$8 = true; + base = _tmp$6; + digits = _tmp$7; + zeroFound = _tmp$8; + $s = -1; return [base, digits, zeroFound]; + /* } else if (_r$4) { */ case 8: + _r$7 = s.consume("xX", true); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + _tmp$9 = 0; + _tmp$10 = "0123456789aAbBcCdDeEfF_"; + _tmp$11 = true; + base = _tmp$9; + digits = _tmp$10; + zeroFound = _tmp$11; + $s = -1; return [base, digits, zeroFound]; + /* } else { */ case 9: + _tmp$12 = 0; + _tmp$13 = "01234567_"; + _tmp$14 = true; + base = _tmp$12; + digits = _tmp$13; + zeroFound = _tmp$14; + $s = -1; return [base, digits, zeroFound]; + /* } */ case 10: + case 5: + $s = -1; return [base, digits, zeroFound]; + /* */ } return; } var $f = {$blk: scanBasePrefix, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, base, digits, s, zeroFound, $s};return $f; + }; + $ptrType(ss).prototype.scanInt = function scanInt(verb, bitSize) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _v, base, bitSize, digits, err, haveDigits, i, n, s, tok, verb, x, $s, $r, $c} = $restore(this, {verb, bitSize}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (verb === 99) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (verb === 99) { */ case 1: + _r = s.scanRune(bitSize); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $r = s.SkipSpace(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = s.notEOF(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple = s.getBase(verb); + base = _tuple[0]; + digits = _tuple[1]; + haveDigits = false; + /* */ if (verb === 85) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (verb === 85) { */ case 7: + _r$1 = s.consume("U", false); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (!_r$1) { _v = true; $s = 12; continue s; } + _r$2 = s.consume("+", false); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = !_r$2; case 12: + /* */ if (_v) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v) { */ case 10: + s.errorString("bad unicode format "); + /* } */ case 11: + $s = 9; continue; + /* } else { */ case 8: + _r$3 = s.accept("+-"); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + /* */ if (verb === 118) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (verb === 118) { */ case 16: + _r$4 = s.scanBasePrefix(); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + base = _tuple$1[0]; + digits = _tuple$1[1]; + haveDigits = _tuple$1[2]; + /* } */ case 17: + /* } */ case 9: + _r$5 = s.scanNumber(digits, haveDigits); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + tok = _r$5; + _tuple$2 = strconv.ParseInt(tok, base, 64); + i = _tuple$2[0]; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + s.error(err); + } + n = ((bitSize >>> 0)); + x = $shiftRightInt64(($shiftLeft64(i, ((64 - n >>> 0)))), ((64 - n >>> 0))); + if (!((x.$high === i.$high && x.$low === i.$low))) { + s.errorString("integer overflow on token " + tok); + } + $s = -1; return i; + /* */ } return; } var $f = {$blk: scanInt, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _v, base, bitSize, digits, err, haveDigits, i, n, s, tok, verb, x, $s};return $f; + }; + $ptrType(ss).prototype.scanUint = function scanUint(verb, bitSize) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _v, base, bitSize, digits, err, haveDigits, i, n, s, tok, verb, x, x$1, $s, $r, $c} = $restore(this, {verb, bitSize}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (verb === 99) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (verb === 99) { */ case 1: + _r = s.scanRune(bitSize); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = ((x = _r, new $Uint64(x.$high, x.$low))); + $s = 4; case 4: return $24r; + /* } */ case 2: + $r = s.SkipSpace(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = s.notEOF(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple = s.getBase(verb); + base = _tuple[0]; + digits = _tuple[1]; + haveDigits = false; + /* */ if (verb === 85) { $s = 7; continue; } + /* */ if (verb === 118) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (verb === 85) { */ case 7: + _r$1 = s.consume("U", false); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (!_r$1) { _v = true; $s = 12; continue s; } + _r$2 = s.consume("+", false); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = !_r$2; case 12: + /* */ if (_v) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v) { */ case 10: + s.errorString("bad unicode format "); + /* } */ case 11: + $s = 9; continue; + /* } else if (verb === 118) { */ case 8: + _r$3 = s.scanBasePrefix(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = _r$3; + base = _tuple$1[0]; + digits = _tuple$1[1]; + haveDigits = _tuple$1[2]; + /* } */ case 9: + _r$4 = s.scanNumber(digits, haveDigits); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + tok = _r$4; + _tuple$2 = strconv.ParseUint(tok, base, 64); + i = _tuple$2[0]; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + s.error(err); + } + n = ((bitSize >>> 0)); + x$1 = $shiftRightUint64(($shiftLeft64(i, ((64 - n >>> 0)))), ((64 - n >>> 0))); + if (!((x$1.$high === i.$high && x$1.$low === i.$low))) { + s.errorString("unsigned integer overflow on token " + tok); + } + $s = -1; return i; + /* */ } return; } var $f = {$blk: scanUint, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _v, base, bitSize, digits, err, haveDigits, i, n, s, tok, verb, x, x$1, $s};return $f; + }; + $ptrType(ss).prototype.floatToken = function floatToken() { + var {_r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, _v$1, _v$2, _v$3, _v$4, digits, exp, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + s.buf = $subslice(s.buf, 0, 0); + _r = s.accept("nN"); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + if (!(_r)) { _v$1 = false; $s = 4; continue s; } + _r$1 = s.accept("aA"); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v$1 = _r$1; case 4: + if (!(_v$1)) { _v = false; $s = 3; continue s; } + _r$2 = s.accept("nN"); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return ($bytesToString(s.buf)); + /* } */ case 2: + _r$3 = s.accept("+-"); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + _r$4 = s.accept("iI"); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + if (!(_r$4)) { _v$3 = false; $s = 12; continue s; } + _r$5 = s.accept("nN"); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _v$3 = _r$5; case 12: + if (!(_v$3)) { _v$2 = false; $s = 11; continue s; } + _r$6 = s.accept("fF"); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$2 = _r$6; case 11: + /* */ if (_v$2) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_v$2) { */ case 9: + $s = -1; return ($bytesToString(s.buf)); + /* } */ case 10: + digits = "0123456789_"; + exp = "eEpP"; + _r$7 = s.accept("0"); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + if (!(_r$7)) { _v$4 = false; $s = 18; continue s; } + _r$8 = s.accept("xX"); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _v$4 = _r$8; case 18: + /* */ if (_v$4) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_v$4) { */ case 16: + digits = "0123456789aAbBcCdDeEfF_"; + exp = "pP"; + /* } */ case 17: + /* while (true) { */ case 21: + _r$9 = s.accept(digits); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* if (!(_r$9)) { break; } */ if(!(_r$9)) { $s = 22; continue; } + $s = 21; continue; + case 22: + _r$10 = s.accept("."); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + /* */ if (_r$10) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (_r$10) { */ case 24: + /* while (true) { */ case 27: + _r$11 = s.accept(digits); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* if (!(_r$11)) { break; } */ if(!(_r$11)) { $s = 28; continue; } + $s = 27; continue; + case 28: + /* } */ case 25: + _r$12 = s.accept(exp); /* */ $s = 32; case 32: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + /* */ if (_r$12) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (_r$12) { */ case 30: + _r$13 = s.accept("+-"); /* */ $s = 33; case 33: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$13; + /* while (true) { */ case 34: + _r$14 = s.accept("0123456789_"); /* */ $s = 36; case 36: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + /* if (!(_r$14)) { break; } */ if(!(_r$14)) { $s = 35; continue; } + $s = 34; continue; + case 35: + /* } */ case 31: + $s = -1; return ($bytesToString(s.buf)); + /* */ } return; } var $f = {$blk: floatToken, $c: true, $r, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, _v$1, _v$2, _v$3, _v$4, digits, exp, s, $s};return $f; + }; + $ptrType(ss).prototype.complexTokens = function complexTokens() { + var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _v, imag, imagSign, parens, real, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + real = ""; + imag = ""; + s = this; + _r = s.accept("("); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + parens = _r; + _r$1 = s.floatToken(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + real = _r$1; + s.buf = $subslice(s.buf, 0, 0); + _r$2 = s.accept("+-"); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r$2) { */ case 3: + s.error(complexError); + /* } */ case 4: + imagSign = ($bytesToString(s.buf)); + _r$3 = s.floatToken(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + imag = _r$3; + _r$4 = s.accept("i"); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!_r$4) { */ case 7: + s.error(complexError); + /* } */ case 8: + if (!(parens)) { _v = false; $s = 12; continue s; } + _r$5 = s.accept(")"); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _v = !_r$5; case 12: + /* */ if (_v) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v) { */ case 10: + s.error(complexError); + /* } */ case 11: + _tmp = real; + _tmp$1 = imagSign + imag; + real = _tmp; + imag = _tmp$1; + $s = -1; return [real, imag]; + /* */ } return; } var $f = {$blk: complexTokens, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _v, imag, imagSign, parens, real, s, $s};return $f; + }; + hasX = function hasX$1(s) { + var i, s; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if ((s.charCodeAt(i) === 120) || (s.charCodeAt(i) === 88)) { + return true; + } + i = i + (1) >> 0; + } + return false; + }; + $ptrType(ss).prototype.convertFloat = function convertFloat(str, n) { + var _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, e, e$1, err, err$1, f, f$1, m, n, ok, ok$1, p, s, str; + s = this; + p = indexRune(str, 112); + if (p >= 0 && !hasX(str)) { + _tuple = strconv.ParseFloat($substring(str, 0, p), n); + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tuple$1 = $assertType(err, ptrType$5, true); + e = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok) { + e.Num = str; + } + s.error(err); + } + _tuple$2 = strconv.Atoi($substring(str, (p + 1 >> 0))); + m = _tuple$2[0]; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tuple$3 = $assertType(err, ptrType$5, true); + e$1 = _tuple$3[0]; + ok$1 = _tuple$3[1]; + if (ok$1) { + e$1.Num = str; + } + s.error(err); + } + return math.Ldexp(f, m); + } + _tuple$4 = strconv.ParseFloat(str, n); + f$1 = _tuple$4[0]; + err$1 = _tuple$4[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + s.error(err$1); + } + return f$1; + }; + $ptrType(ss).prototype.scanComplex = function scanComplex(verb, n) { + var {_q, _q$1, _r, _tuple, imag, n, real, s, simag, sreal, verb, $s, $r, $c} = $restore(this, {verb, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + if (!s.okVerb(verb, "beEfFgGv", "complex")) { + $s = -1; return new $Complex128(0, 0); + } + $r = s.SkipSpace(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = s.notEOF(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = s.complexTokens(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + sreal = _tuple[0]; + simag = _tuple[1]; + real = s.convertFloat(sreal, (_q = n / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); + imag = s.convertFloat(simag, (_q$1 = n / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))); + $s = -1; return new $Complex128(real, imag); + /* */ } return; } var $f = {$blk: scanComplex, $c: true, $r, _q, _q$1, _r, _tuple, imag, n, real, s, simag, sreal, verb, $s};return $f; + }; + $ptrType(ss).prototype.convertString = function convertString(verb) { + var {_1, _r, _r$1, _r$2, s, str, verb, $s, $r, $c} = $restore(this, {verb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + str = ""; + s = this; + if (!s.okVerb(verb, "svqxX", "string")) { + str = ""; + $s = -1; return str; + } + $r = s.SkipSpace(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = s.notEOF(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _1 = verb; + /* */ if (_1 === (113)) { $s = 4; continue; } + /* */ if ((_1 === (120)) || (_1 === (88))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (113)) { */ case 4: + _r = s.quotedString(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + str = _r; + $s = 7; continue; + /* } else if ((_1 === (120)) || (_1 === (88))) { */ case 5: + _r$1 = s.hexString(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + str = _r$1; + $s = 7; continue; + /* } else { */ case 6: + _r$2 = s.token(true, notSpace); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + str = ($bytesToString(_r$2)); + /* } */ case 7: + case 3: + $s = -1; return str; + /* */ } return; } var $f = {$blk: convertString, $c: true, $r, _1, _r, _r$1, _r$2, s, str, verb, $s};return $f; + }; + $ptrType(ss).prototype.quotedString = function quotedString() { + var {_1, _r, _r$1, _r$2, _r$3, _tuple, err, quote, r, r$1, result, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + $r = s.notEOF(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = s.getRune(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + quote = _r; + _1 = quote; + /* */ if (_1 === (96)) { $s = 4; continue; } + /* */ if (_1 === (34)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (96)) { */ case 4: + /* while (true) { */ case 8: + _r$1 = s.mustReadRune(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + r = _r$1; + if (r === quote) { + /* break; */ $s = 9; continue; + } + (s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).writeRune(r); + $s = 8; continue; + case 9: + $s = -1; return ($bytesToString(s.buf)); + /* } else if (_1 === (34)) { */ case 5: + (s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).writeByte(34); + /* while (true) { */ case 11: + _r$2 = s.mustReadRune(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + r$1 = _r$2; + (s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).writeRune(r$1); + /* */ if (r$1 === 92) { $s = 14; continue; } + /* */ if (r$1 === 34) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (r$1 === 92) { */ case 14: + _r$3 = s.mustReadRune(); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = (s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).writeRune(_r$3); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 16; continue; + /* } else if (r$1 === 34) { */ case 15: + /* break; */ $s = 12; continue; + /* } */ case 16: + $s = 11; continue; + case 12: + _tuple = strconv.Unquote(($bytesToString(s.buf))); + result = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + s.error(err); + } + $s = -1; return result; + /* } else { */ case 6: + s.errorString("expected quoted string"); + /* } */ case 7: + case 3: + $s = -1; return ""; + /* */ } return; } var $f = {$blk: quotedString, $c: true, $r, _1, _r, _r$1, _r$2, _r$3, _tuple, err, quote, r, r$1, result, s, $s};return $f; + }; + hexDigit = function hexDigit$1(d) { + var _1, d, digit; + digit = ((d >> 0)); + _1 = digit; + if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55)) || (_1 === (56)) || (_1 === (57))) { + return [digit - 48 >> 0, true]; + } else if ((_1 === (97)) || (_1 === (98)) || (_1 === (99)) || (_1 === (100)) || (_1 === (101)) || (_1 === (102))) { + return [(10 + digit >> 0) - 97 >> 0, true]; + } else if ((_1 === (65)) || (_1 === (66)) || (_1 === (67)) || (_1 === (68)) || (_1 === (69)) || (_1 === (70))) { + return [(10 + digit >> 0) - 65 >> 0, true]; + } + return [-1, false]; + }; + $ptrType(ss).prototype.hexByte = function hexByte() { + var {_r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, b, ok, rune1, s, value1, value2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = 0; + ok = false; + s = this; + _r = s.getRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + rune1 = _r; + if (rune1 === -1) { + $s = -1; return [b, ok]; + } + _tuple = hexDigit(rune1); + value1 = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + _r$1 = s.UnreadRune(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return [b, ok]; + /* } */ case 3: + _r$2 = s.mustReadRune(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = hexDigit(_r$2); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = _r$3; + value2 = _tuple$1[0]; + ok = _tuple$1[1]; + if (!ok) { + s.errorString("illegal hex digit"); + $s = -1; return [b, ok]; + } + _tmp = ((((value1 << 4 >> 0) | value2) << 24 >>> 24)); + _tmp$1 = true; + b = _tmp; + ok = _tmp$1; + $s = -1; return [b, ok]; + /* */ } return; } var $f = {$blk: hexByte, $c: true, $r, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, b, ok, rune1, s, value1, value2, $s};return $f; + }; + $ptrType(ss).prototype.hexString = function hexString() { + var {_r, _tuple, b, ok, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + $r = s.notEOF(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* while (true) { */ case 2: + _r = s.hexByte(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + b = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + /* break; */ $s = 3; continue; + } + (s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).writeByte(b); + $s = 2; continue; + case 3: + if (s.buf.$length === 0) { + s.errorString("no hex data for %x string"); + $s = -1; return ""; + } + $s = -1; return ($bytesToString(s.buf)); + /* */ } return; } var $f = {$blk: hexString, $c: true, $r, _r, _tuple, b, ok, s, $s};return $f; + }; + $ptrType(ss).prototype.scanOne = function scanOne(verb, arg) { + var {_1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, arg, err, i, ok, ptr, s, str, typ, v, v$1, v$10, v$11, v$12, v$13, v$14, v$15, v$16, v$17, v$18, v$19, v$2, v$20, v$3, v$4, v$5, v$6, v$7, v$8, v$9, val, verb, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {verb, arg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + s.buf = $subslice(s.buf, 0, 0); + err = $ifaceNil; + _tuple = $assertType(arg, Scanner, true); + v = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = v.Scan(s, verb); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + if ($interfaceIsEqual(err, io.EOF)) { + err = io.ErrUnexpectedEOF; + } + s.error(err); + } + $s = -1; return; + /* } */ case 2: + _ref = arg; + /* */ if ($assertType(_ref, ptrType$6, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$17, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, ptrType$18, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, ptrType$19, true)[1]) { $s = 17; continue; } + /* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 18; continue; } + /* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 19; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 20; continue; } + /* */ if ($assertType(_ref, ptrType$22, true)[1]) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if ($assertType(_ref, ptrType$6, true)[1]) { */ case 4: + v$1 = _ref.$val; + _r$1 = s.scanBool(verb); /* */ $s = 24; case 24: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v$1.$set(_r$1); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 5: + v$2 = _ref.$val; + _r$2 = s.scanComplex(verb, 64); /* */ $s = 25; case 25: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v$2.$set(((x = _r$2, new $Complex64(x.$real, x.$imag)))); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 6: + v$3 = _ref.$val; + _r$3 = s.scanComplex(verb, 128); /* */ $s = 26; case 26: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + v$3.$set(_r$3); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 7: + v$4 = _ref.$val; + _r$4 = s.scanInt(verb, 32); /* */ $s = 27; case 27: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + v$4.$set((((x$1 = _r$4, x$1.$low + ((x$1.$high >> 31) * 4294967296)) >> 0))); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 8: + v$5 = _ref.$val; + _r$5 = s.scanInt(verb, 8); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + v$5.$set((((x$2 = _r$5, x$2.$low + ((x$2.$high >> 31) * 4294967296)) << 24 >> 24))); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 9: + v$6 = _ref.$val; + _r$6 = s.scanInt(verb, 16); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + v$6.$set((((x$3 = _r$6, x$3.$low + ((x$3.$high >> 31) * 4294967296)) << 16 >> 16))); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 10: + v$7 = _ref.$val; + _r$7 = s.scanInt(verb, 32); /* */ $s = 30; case 30: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + v$7.$set((((x$4 = _r$7, x$4.$low + ((x$4.$high >> 31) * 4294967296)) >> 0))); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 11: + v$8 = _ref.$val; + _r$8 = s.scanInt(verb, 64); /* */ $s = 31; case 31: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + v$8.$set(_r$8); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 12: + v$9 = _ref.$val; + _r$9 = s.scanUint(verb, 32); /* */ $s = 32; case 32: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + v$9.$set(((_r$9.$low >>> 0))); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 13: + v$10 = _ref.$val; + _r$10 = s.scanUint(verb, 8); /* */ $s = 33; case 33: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + v$10.$set(((_r$10.$low << 24 >>> 24))); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 14: + v$11 = _ref.$val; + _r$11 = s.scanUint(verb, 16); /* */ $s = 34; case 34: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + v$11.$set(((_r$11.$low << 16 >>> 16))); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$17, true)[1]) { */ case 15: + v$12 = _ref.$val; + _r$12 = s.scanUint(verb, 32); /* */ $s = 35; case 35: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + v$12.$set(((_r$12.$low >>> 0))); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$18, true)[1]) { */ case 16: + v$13 = _ref.$val; + _r$13 = s.scanUint(verb, 64); /* */ $s = 36; case 36: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + v$13.$set(_r$13); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$19, true)[1]) { */ case 17: + v$14 = _ref.$val; + _r$14 = s.scanUint(verb, 32); /* */ $s = 37; case 37: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + v$14.$set(((_r$14.$low >>> 0))); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$20, true)[1]) { */ case 18: + v$15 = _ref.$val; + /* */ if (s.okVerb(verb, "beEfFgGv", "float32")) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (s.okVerb(verb, "beEfFgGv", "float32")) { */ case 38: + $r = s.SkipSpace(); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = s.notEOF(); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$15 = s.floatToken(); /* */ $s = 42; case 42: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _r$16 = s.convertFloat(_r$15, 32); /* */ $s = 43; case 43: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + v$15.$set(($fround(_r$16))); + /* } */ case 39: + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 19: + v$16 = _ref.$val; + /* */ if (s.okVerb(verb, "beEfFgGv", "float64")) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (s.okVerb(verb, "beEfFgGv", "float64")) { */ case 44: + $r = s.SkipSpace(); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = s.notEOF(); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$17 = s.floatToken(); /* */ $s = 48; case 48: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _r$18 = s.convertFloat(_r$17, 64); /* */ $s = 49; case 49: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + v$16.$set(_r$18); + /* } */ case 45: + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 20: + v$17 = _ref.$val; + _r$19 = s.convertString(verb); /* */ $s = 50; case 50: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + v$17.$set(_r$19); + $s = 23; continue; + /* } else if ($assertType(_ref, ptrType$22, true)[1]) { */ case 21: + v$18 = _ref.$val; + _r$20 = s.convertString(verb); /* */ $s = 51; case 51: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + v$18.$set((new sliceType$3($stringToBytes(_r$20)))); + $s = 23; continue; + /* } else { */ case 22: + v$19 = _ref; + _r$21 = reflect.ValueOf(v$19); /* */ $s = 52; case 52: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + val = _r$21; + ptr = val; + /* */ if (!(($clone(ptr, reflect.Value).Kind() === 22))) { $s = 53; continue; } + /* */ $s = 54; continue; + /* if (!(($clone(ptr, reflect.Value).Kind() === 22))) { */ case 53: + _r$22 = $clone(val, reflect.Value).Type().String(); /* */ $s = 55; case 55: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = s.errorString("type not a pointer: " + _r$22); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 54: + _r$23 = $clone(ptr, reflect.Value).Elem(); /* */ $s = 58; case 58: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + v$20 = _r$23; + _1 = $clone(v$20, reflect.Value).Kind(); + /* */ if (_1 === (1)) { $s = 59; continue; } + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 60; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 61; continue; } + /* */ if (_1 === (24)) { $s = 62; continue; } + /* */ if (_1 === (23)) { $s = 63; continue; } + /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 64; continue; } + /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 65; continue; } + /* */ $s = 66; continue; + /* if (_1 === (1)) { */ case 59: + _r$24 = s.scanBool(verb); /* */ $s = 68; case 68: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $r = $clone(v$20, reflect.Value).SetBool(_r$24); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 67; continue; + /* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 60: + _arg = verb; + _r$25 = $clone(v$20, reflect.Value).Type().Bits(); /* */ $s = 70; case 70: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _arg$1 = _r$25; + _r$26 = s.scanInt(_arg, _arg$1); /* */ $s = 71; case 71: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + $r = $clone(v$20, reflect.Value).SetInt(_r$26); /* */ $s = 72; case 72: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 67; continue; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 61: + _arg$2 = verb; + _r$27 = $clone(v$20, reflect.Value).Type().Bits(); /* */ $s = 73; case 73: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _arg$3 = _r$27; + _r$28 = s.scanUint(_arg$2, _arg$3); /* */ $s = 74; case 74: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + $r = $clone(v$20, reflect.Value).SetUint(_r$28); /* */ $s = 75; case 75: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 67; continue; + /* } else if (_1 === (24)) { */ case 62: + _r$29 = s.convertString(verb); /* */ $s = 76; case 76: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + $r = $clone(v$20, reflect.Value).SetString(_r$29); /* */ $s = 77; case 77: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 67; continue; + /* } else if (_1 === (23)) { */ case 63: + typ = $clone(v$20, reflect.Value).Type(); + _r$30 = typ.Elem(); /* */ $s = 80; case 80: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _r$31 = _r$30.Kind(); /* */ $s = 81; case 81: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + /* */ if (!((_r$31 === 8))) { $s = 78; continue; } + /* */ $s = 79; continue; + /* if (!((_r$31 === 8))) { */ case 78: + _r$32 = $clone(val, reflect.Value).Type().String(); /* */ $s = 82; case 82: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + $r = s.errorString("can't scan type: " + _r$32); /* */ $s = 83; case 83: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 79: + _r$33 = s.convertString(verb); /* */ $s = 84; case 84: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + str = _r$33; + _r$34 = reflect.MakeSlice(typ, str.length, str.length); /* */ $s = 85; case 85: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + $r = $clone(v$20, reflect.Value).Set($clone(_r$34, reflect.Value)); /* */ $s = 86; case 86: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = 0; + /* while (true) { */ case 87: + /* if (!(i < str.length)) { break; } */ if(!(i < str.length)) { $s = 88; continue; } + _r$35 = $clone(v$20, reflect.Value).Index(i); /* */ $s = 89; case 89: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } + $r = $clone(_r$35, reflect.Value).SetUint((new $Uint64(0, str.charCodeAt(i)))); /* */ $s = 90; case 90: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 87; continue; + case 88: + $s = 67; continue; + /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 64: + $r = s.SkipSpace(); /* */ $s = 91; case 91: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = s.notEOF(); /* */ $s = 92; case 92: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$36 = s.floatToken(); /* */ $s = 93; case 93: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } + _arg$4 = _r$36; + _r$37 = $clone(v$20, reflect.Value).Type().Bits(); /* */ $s = 94; case 94: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; } + _arg$5 = _r$37; + _r$38 = s.convertFloat(_arg$4, _arg$5); /* */ $s = 95; case 95: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; } + $r = $clone(v$20, reflect.Value).SetFloat(_r$38); /* */ $s = 96; case 96: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 67; continue; + /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 65: + _arg$6 = verb; + _r$39 = $clone(v$20, reflect.Value).Type().Bits(); /* */ $s = 97; case 97: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; } + _arg$7 = _r$39; + _r$40 = s.scanComplex(_arg$6, _arg$7); /* */ $s = 98; case 98: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; } + $r = $clone(v$20, reflect.Value).SetComplex(_r$40); /* */ $s = 99; case 99: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 67; continue; + /* } else { */ case 66: + _r$41 = $clone(val, reflect.Value).Type().String(); /* */ $s = 100; case 100: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; } + $r = s.errorString("can't scan type: " + _r$41); /* */ $s = 101; case 101: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 67: + case 57: + /* } */ case 23: + $s = -1; return; + /* */ } return; } var $f = {$blk: scanOne, $c: true, $r, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, arg, err, i, ok, ptr, s, str, typ, v, v$1, v$10, v$11, v$12, v$13, v$14, v$15, v$16, v$17, v$18, v$19, v$2, v$20, v$3, v$4, v$5, v$6, v$7, v$8, v$9, val, verb, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + errorHandler = function errorHandler$1(errp) { + var _tuple, _tuple$1, e, eof, errp, ok, ok$1, se; + e = $recover(); + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tuple = $assertType(e, scanError, true); + se = $clone(_tuple[0], scanError); + ok = _tuple[1]; + if (ok) { + errp.$set(se.err); + } else { + _tuple$1 = $assertType(e, $error, true); + eof = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1 && $interfaceIsEqual(eof, io.EOF)) { + errp.$set(eof); + } else { + $panic(e); + } + } + } + }; + $ptrType(ss).prototype.doScan = function doScan(a) { + var {_i, _r, _ref, a, arg, err, numProcessed, r, s, $s, $deferred, $r, $c} = $restore(this, {a}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + err = [err]; + numProcessed = 0; + err[0] = $ifaceNil; + s = this; + $deferred.push([errorHandler, [(err.$ptr || (err.$ptr = new ptrType$23(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, err)))]]); + _ref = a; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = s.scanOne(118, arg); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + numProcessed = numProcessed + (1) >> 0; + _i++; + $s = 1; continue; + case 2: + /* */ if (s.ssave.nlIsEnd) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (s.ssave.nlIsEnd) { */ case 4: + /* while (true) { */ case 6: + _r = s.getRune(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if ((r === 10) || (r === -1)) { + /* break; */ $s = 7; continue; + } + if (!isSpace(r)) { + s.errorString("expected newline"); + /* break; */ $s = 7; continue; + } + $s = 6; continue; + case 7: + /* } */ case 5: + $s = -1; return [numProcessed, err[0]]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [numProcessed, err[0]]; } if($curGoroutine.asleep) { var $f = {$blk: doScan, $c: true, $r, _i, _r, _ref, a, arg, err, numProcessed, r, s, $s, $deferred};return $f; } } + }; + $ptrType(buffer).prototype.write = function write(p) { + var b, p; + b = this; + b.$set($appendSlice(b.$get(), p)); + }; + $ptrType(buffer).prototype.writeString = function writeString(s) { + var b, s; + b = this; + b.$set($appendSlice(b.$get(), s)); + }; + $ptrType(buffer).prototype.writeByte = function writeByte(c) { + var b, c; + b = this; + b.$set($append(b.$get(), c)); + }; + $ptrType(buffer).prototype.writeRune = function writeRune(r) { + var bp, r; + bp = this; + bp.$set($convertSliceType(utf8.AppendRune($convertSliceType(bp.$get(), sliceType$3), r), buffer)); + }; + newPrinter = function newPrinter$1() { + var {_r, p, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = ppFree.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = $assertType(_r, ptrType$24); + p.panicking = false; + p.erroring = false; + p.wrapErrs = false; + p.fmt.init((p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p)))); + $s = -1; return p; + /* */ } return; } var $f = {$blk: newPrinter$1, $c: true, $r, _r, p, $s};return $f; + }; + $ptrType(pp).prototype.free = function free$1() { + var p; + p = this; + if (p.buf.$capacity > 65536) { + p.buf = buffer.nil; + } else { + p.buf = $subslice(p.buf, 0, 0); + } + if (p.wrappedErrs.$capacity > 8) { + p.wrappedErrs = sliceType$2.nil; + } + p.arg = $ifaceNil; + p.value = new reflect.Value.ptr(ptrType.nil, 0, 0); + p.wrappedErrs = $subslice(p.wrappedErrs, 0, 0); + ppFree.Put(p); + }; + $ptrType(pp).prototype.Width = function Width$1() { + var _tmp, _tmp$1, ok, p, wid; + wid = 0; + ok = false; + p = this; + _tmp = p.fmt.wid; + _tmp$1 = p.fmt.fmtFlags.widPresent; + wid = _tmp; + ok = _tmp$1; + return [wid, ok]; + }; + $ptrType(pp).prototype.Precision = function Precision() { + var _tmp, _tmp$1, ok, p, prec; + prec = 0; + ok = false; + p = this; + _tmp = p.fmt.prec; + _tmp$1 = p.fmt.fmtFlags.precPresent; + prec = _tmp; + ok = _tmp$1; + return [prec, ok]; + }; + $ptrType(pp).prototype.Flag = function Flag(b) { + var _1, b, p; + p = this; + _1 = b; + if (_1 === (45)) { + return p.fmt.fmtFlags.minus; + } else if (_1 === (43)) { + return p.fmt.fmtFlags.plus || p.fmt.fmtFlags.plusV; + } else if (_1 === (35)) { + return p.fmt.fmtFlags.sharp || p.fmt.fmtFlags.sharpV; + } else if (_1 === (32)) { + return p.fmt.fmtFlags.space; + } else if (_1 === (48)) { + return p.fmt.fmtFlags.zero; + } + return false; + }; + $ptrType(pp).prototype.Write = function Write(b) { + var _tmp, _tmp$1, b, err, p, ret; + ret = 0; + err = $ifaceNil; + p = this; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).write(b); + _tmp = b.$length; + _tmp$1 = $ifaceNil; + ret = _tmp; + err = _tmp$1; + return [ret, err]; + }; + $ptrType(pp).prototype.WriteString = function WriteString(s) { + var _tmp, _tmp$1, err, p, ret, s; + ret = 0; + err = $ifaceNil; + p = this; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(s); + _tmp = s.length; + _tmp$1 = $ifaceNil; + ret = _tmp; + err = _tmp$1; + return [ret, err]; + }; + Fprintf = function Fprintf$1(w, format, a) { + var {_r, _r$1, _tuple, a, err, format, n, p, w, $s, $r, $c} = $restore(this, {w, format, a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + $r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = w.Write($convertSliceType(p.buf, sliceType$3)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + n = _tuple[0]; + err = _tuple[1]; + p.free(); + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Fprintf$1, $c: true, $r, _r, _r$1, _tuple, a, err, format, n, p, w, $s};return $f; + }; + $pkg.Fprintf = Fprintf; + Printf = function Printf$1(format, a) { + var {$24r, _r, _tuple, a, err, format, n, $s, $r, $c} = $restore(this, {format, a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = Fprintf(os.Stdout, format, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Printf$1, $c: true, $r, $24r, _r, _tuple, a, err, format, n, $s};return $f; + }; + $pkg.Printf = Printf; + Sprintf = function Sprintf$1(format, a) { + var {_r, a, format, p, s, $s, $r, $c} = $restore(this, {format, a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + $r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s = ($bytesToString(p.buf)); + p.free(); + $s = -1; return s; + /* */ } return; } var $f = {$blk: Sprintf$1, $c: true, $r, _r, a, format, p, s, $s};return $f; + }; + $pkg.Sprintf = Sprintf; + Appendf = function Appendf$1(b, format, a) { + var {_r, a, b, format, p, $s, $r, $c} = $restore(this, {b, format, a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + $r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + b = $appendSlice(b, $convertSliceType(p.buf, sliceType$3)); + p.free(); + $s = -1; return b; + /* */ } return; } var $f = {$blk: Appendf$1, $c: true, $r, _r, a, b, format, p, $s};return $f; + }; + $pkg.Appendf = Appendf; + Fprint = function Fprint$1(w, a) { + var {_r, _r$1, _tuple, a, err, n, p, w, $s, $r, $c} = $restore(this, {w, a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + $r = p.doPrint(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = w.Write($convertSliceType(p.buf, sliceType$3)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + n = _tuple[0]; + err = _tuple[1]; + p.free(); + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Fprint$1, $c: true, $r, _r, _r$1, _tuple, a, err, n, p, w, $s};return $f; + }; + $pkg.Fprint = Fprint; + Print = function Print$1(a) { + var {$24r, _r, _tuple, a, err, n, $s, $r, $c} = $restore(this, {a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = Fprint(os.Stdout, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Print$1, $c: true, $r, $24r, _r, _tuple, a, err, n, $s};return $f; + }; + $pkg.Print = Print; + Sprint = function Sprint$1(a) { + var {_r, a, p, s, $s, $r, $c} = $restore(this, {a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + $r = p.doPrint(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s = ($bytesToString(p.buf)); + p.free(); + $s = -1; return s; + /* */ } return; } var $f = {$blk: Sprint$1, $c: true, $r, _r, a, p, s, $s};return $f; + }; + $pkg.Sprint = Sprint; + Fprintln = function Fprintln$1(w, a) { + var {_r, _r$1, _tuple, a, err, n, p, w, $s, $r, $c} = $restore(this, {w, a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + $r = p.doPrintln(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = w.Write($convertSliceType(p.buf, sliceType$3)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + n = _tuple[0]; + err = _tuple[1]; + p.free(); + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Fprintln$1, $c: true, $r, _r, _r$1, _tuple, a, err, n, p, w, $s};return $f; + }; + $pkg.Fprintln = Fprintln; + Println = function Println$1(a) { + var {$24r, _r, _tuple, a, err, n, $s, $r, $c} = $restore(this, {a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = Fprintln(os.Stdout, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Println$1, $c: true, $r, $24r, _r, _tuple, a, err, n, $s};return $f; + }; + $pkg.Println = Println; + Sprintln = function Sprintln$1(a) { + var {_r, a, p, s, $s, $r, $c} = $restore(this, {a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + $r = p.doPrintln(a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s = ($bytesToString(p.buf)); + p.free(); + $s = -1; return s; + /* */ } return; } var $f = {$blk: Sprintln$1, $c: true, $r, _r, a, p, s, $s};return $f; + }; + $pkg.Sprintln = Sprintln; + getField = function getField$1(v, i) { + var {_r, _r$1, i, v, val, $s, $r, $c} = $restore(this, {v, i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = $clone(v, reflect.Value).Field(i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + val = _r; + /* */ if (($clone(val, reflect.Value).Kind() === 20) && !$clone(val, reflect.Value).IsNil()) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (($clone(val, reflect.Value).Kind() === 20) && !$clone(val, reflect.Value).IsNil()) { */ case 2: + _r$1 = $clone(val, reflect.Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + val = _r$1; + /* } */ case 3: + $s = -1; return val; + /* */ } return; } var $f = {$blk: getField$1, $c: true, $r, _r, _r$1, i, v, val, $s};return $f; + }; + tooLarge = function tooLarge$1(x) { + var x; + return x > 1000000 || x < -1000000; + }; + parsenum = function parsenum$1(s, start, end) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, end, isnum, newi, num, s, start; + num = 0; + isnum = false; + newi = 0; + if (start >= end) { + _tmp = 0; + _tmp$1 = false; + _tmp$2 = end; + num = _tmp; + isnum = _tmp$1; + newi = _tmp$2; + return [num, isnum, newi]; + } + newi = start; + while (true) { + if (!(newi < end && 48 <= s.charCodeAt(newi) && s.charCodeAt(newi) <= 57)) { break; } + if (tooLarge(num)) { + _tmp$3 = 0; + _tmp$4 = false; + _tmp$5 = end; + num = _tmp$3; + isnum = _tmp$4; + newi = _tmp$5; + return [num, isnum, newi]; + } + num = ($imul(num, 10)) + (((s.charCodeAt(newi) - 48 << 24 >>> 24) >> 0)) >> 0; + isnum = true; + newi = newi + (1) >> 0; + } + return [num, isnum, newi]; + }; + $ptrType(pp).prototype.unknownType = function unknownType(v) { + var {_r, p, v, $s, $r, $c} = $restore(this, {v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + if (!$clone(v, reflect.Value).IsValid()) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(""); + $s = -1; return; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(63); + _r = $clone(v, reflect.Value).Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(_r); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(63); + $s = -1; return; + /* */ } return; } var $f = {$blk: unknownType, $c: true, $r, _r, p, v, $s};return $f; + }; + $ptrType(pp).prototype.badVerb = function badVerb(verb) { + var {_r, _r$1, p, verb, $s, $r, $c} = $restore(this, {verb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + p.erroring = true; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("%!"); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeRune(verb); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(40); + /* */ if (!($interfaceIsEqual(p.arg, $ifaceNil))) { $s = 2; continue; } + /* */ if ($clone(p.value, reflect.Value).IsValid()) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!($interfaceIsEqual(p.arg, $ifaceNil))) { */ case 2: + _r = reflect.TypeOf(p.arg).String(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(_r); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(61); + $r = p.printArg(p.arg, 118); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + /* } else if ($clone(p.value, reflect.Value).IsValid()) { */ case 3: + _r$1 = $clone(p.value, reflect.Value).Type().String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(_r$1); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(61); + $r = p.printValue($clone(p.value, reflect.Value), 118, 0); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + /* } else { */ case 4: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(""); + /* } */ case 5: + case 1: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(41); + p.erroring = false; + $s = -1; return; + /* */ } return; } var $f = {$blk: badVerb, $c: true, $r, _r, _r$1, p, verb, $s};return $f; + }; + $ptrType(pp).prototype.fmtBool = function fmtBool(v, verb) { + var {_1, p, v, verb, $s, $r, $c} = $restore(this, {v, verb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if ((_1 === (116)) || (_1 === (118))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ((_1 === (116)) || (_1 === (118))) { */ case 2: + p.fmt.fmtBoolean(v); + $s = 4; continue; + /* } else { */ case 3: + $r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + case 1: + $s = -1; return; + /* */ } return; } var $f = {$blk: fmtBool, $c: true, $r, _1, p, v, verb, $s};return $f; + }; + $ptrType(pp).prototype.fmt0x64 = function fmt0x64(v, leading0x) { + var leading0x, p, sharp, v; + p = this; + sharp = p.fmt.fmtFlags.sharp; + p.fmt.fmtFlags.sharp = leading0x; + p.fmt.fmtInteger(v, 16, false, 118, "0123456789abcdefx"); + p.fmt.fmtFlags.sharp = sharp; + }; + $ptrType(pp).prototype.fmtInteger = function fmtInteger(v, isSigned, verb) { + var {_1, isSigned, p, v, verb, $s, $r, $c} = $restore(this, {v, isSigned, verb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if (_1 === (118)) { $s = 2; continue; } + /* */ if (_1 === (100)) { $s = 3; continue; } + /* */ if (_1 === (98)) { $s = 4; continue; } + /* */ if ((_1 === (111)) || (_1 === (79))) { $s = 5; continue; } + /* */ if (_1 === (120)) { $s = 6; continue; } + /* */ if (_1 === (88)) { $s = 7; continue; } + /* */ if (_1 === (99)) { $s = 8; continue; } + /* */ if (_1 === (113)) { $s = 9; continue; } + /* */ if (_1 === (85)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_1 === (118)) { */ case 2: + if (p.fmt.fmtFlags.sharpV && !isSigned) { + p.fmt0x64(v, true); + } else { + p.fmt.fmtInteger(v, 10, isSigned, verb, "0123456789abcdefx"); + } + $s = 12; continue; + /* } else if (_1 === (100)) { */ case 3: + p.fmt.fmtInteger(v, 10, isSigned, verb, "0123456789abcdefx"); + $s = 12; continue; + /* } else if (_1 === (98)) { */ case 4: + p.fmt.fmtInteger(v, 2, isSigned, verb, "0123456789abcdefx"); + $s = 12; continue; + /* } else if ((_1 === (111)) || (_1 === (79))) { */ case 5: + p.fmt.fmtInteger(v, 8, isSigned, verb, "0123456789abcdefx"); + $s = 12; continue; + /* } else if (_1 === (120)) { */ case 6: + p.fmt.fmtInteger(v, 16, isSigned, verb, "0123456789abcdefx"); + $s = 12; continue; + /* } else if (_1 === (88)) { */ case 7: + p.fmt.fmtInteger(v, 16, isSigned, verb, "0123456789ABCDEFX"); + $s = 12; continue; + /* } else if (_1 === (99)) { */ case 8: + p.fmt.fmtC(v); + $s = 12; continue; + /* } else if (_1 === (113)) { */ case 9: + p.fmt.fmtQc(v); + $s = 12; continue; + /* } else if (_1 === (85)) { */ case 10: + p.fmt.fmtUnicode(v); + $s = 12; continue; + /* } else { */ case 11: + $r = p.badVerb(verb); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + case 1: + $s = -1; return; + /* */ } return; } var $f = {$blk: fmtInteger, $c: true, $r, _1, isSigned, p, v, verb, $s};return $f; + }; + $ptrType(pp).prototype.fmtFloat = function fmtFloat(v, size, verb) { + var {_1, p, size, v, verb, $s, $r, $c} = $restore(this, {v, size, verb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if (_1 === (118)) { $s = 2; continue; } + /* */ if ((_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (120)) || (_1 === (88))) { $s = 3; continue; } + /* */ if ((_1 === (102)) || (_1 === (101)) || (_1 === (69))) { $s = 4; continue; } + /* */ if (_1 === (70)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (118)) { */ case 2: + p.fmt.fmtFloat(v, size, 103, -1); + $s = 7; continue; + /* } else if ((_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (120)) || (_1 === (88))) { */ case 3: + p.fmt.fmtFloat(v, size, verb, -1); + $s = 7; continue; + /* } else if ((_1 === (102)) || (_1 === (101)) || (_1 === (69))) { */ case 4: + p.fmt.fmtFloat(v, size, verb, 6); + $s = 7; continue; + /* } else if (_1 === (70)) { */ case 5: + p.fmt.fmtFloat(v, size, 102, 6); + $s = 7; continue; + /* } else { */ case 6: + $r = p.badVerb(verb); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + case 1: + $s = -1; return; + /* */ } return; } var $f = {$blk: fmtFloat, $c: true, $r, _1, p, size, v, verb, $s};return $f; + }; + $ptrType(pp).prototype.fmtComplex = function fmtComplex(v, size, verb) { + var {_1, _q, _q$1, oldPlus, p, size, v, verb, $s, $r, $c} = $restore(this, {v, size, verb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if ((_1 === (118)) || (_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (120)) || (_1 === (88)) || (_1 === (102)) || (_1 === (70)) || (_1 === (101)) || (_1 === (69))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ((_1 === (118)) || (_1 === (98)) || (_1 === (103)) || (_1 === (71)) || (_1 === (120)) || (_1 === (88)) || (_1 === (102)) || (_1 === (70)) || (_1 === (101)) || (_1 === (69))) { */ case 2: + oldPlus = p.fmt.fmtFlags.plus; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(40); + $r = p.fmtFloat(v.$real, (_q = size / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + p.fmt.fmtFlags.plus = true; + $r = p.fmtFloat(v.$imag, (_q$1 = size / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), verb); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("i)"); + p.fmt.fmtFlags.plus = oldPlus; + $s = 4; continue; + /* } else { */ case 3: + $r = p.badVerb(verb); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + case 1: + $s = -1; return; + /* */ } return; } var $f = {$blk: fmtComplex, $c: true, $r, _1, _q, _q$1, oldPlus, p, size, v, verb, $s};return $f; + }; + $ptrType(pp).prototype.fmtString = function fmtString(v, verb) { + var {_1, p, v, verb, $s, $r, $c} = $restore(this, {v, verb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if (_1 === (118)) { $s = 2; continue; } + /* */ if (_1 === (115)) { $s = 3; continue; } + /* */ if (_1 === (120)) { $s = 4; continue; } + /* */ if (_1 === (88)) { $s = 5; continue; } + /* */ if (_1 === (113)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_1 === (118)) { */ case 2: + if (p.fmt.fmtFlags.sharpV) { + p.fmt.fmtQ(v); + } else { + p.fmt.fmtS(v); + } + $s = 8; continue; + /* } else if (_1 === (115)) { */ case 3: + p.fmt.fmtS(v); + $s = 8; continue; + /* } else if (_1 === (120)) { */ case 4: + p.fmt.fmtSx(v, "0123456789abcdefx"); + $s = 8; continue; + /* } else if (_1 === (88)) { */ case 5: + p.fmt.fmtSx(v, "0123456789ABCDEFX"); + $s = 8; continue; + /* } else if (_1 === (113)) { */ case 6: + p.fmt.fmtQ(v); + $s = 8; continue; + /* } else { */ case 7: + $r = p.badVerb(verb); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + case 1: + $s = -1; return; + /* */ } return; } var $f = {$blk: fmtString, $c: true, $r, _1, p, v, verb, $s};return $f; + }; + $ptrType(pp).prototype.fmtBytes = function fmtBytes(v, verb, typeString) { + var {_1, _i, _i$1, _r, _ref, _ref$1, c, c$1, i, i$1, p, typeString, v, verb, $s, $r, $c} = $restore(this, {v, verb, typeString}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _1 = verb; + /* */ if ((_1 === (118)) || (_1 === (100))) { $s = 2; continue; } + /* */ if (_1 === (115)) { $s = 3; continue; } + /* */ if (_1 === (120)) { $s = 4; continue; } + /* */ if (_1 === (88)) { $s = 5; continue; } + /* */ if (_1 === (113)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((_1 === (118)) || (_1 === (100))) { */ case 2: + if (p.fmt.fmtFlags.sharpV) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(typeString); + if (v === sliceType$3.nil) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("(nil)"); + $s = -1; return; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(123); + _ref = v; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(", "); + } + p.fmt0x64((new $Uint64(0, c)), true); + _i++; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(125); + } else { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(91); + _ref$1 = v; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (i$1 > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(32); + } + p.fmt.fmtInteger((new $Uint64(0, c$1)), 10, false, verb, "0123456789abcdefx"); + _i$1++; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(93); + } + $s = 8; continue; + /* } else if (_1 === (115)) { */ case 3: + p.fmt.fmtBs(v); + $s = 8; continue; + /* } else if (_1 === (120)) { */ case 4: + p.fmt.fmtBx(v, "0123456789abcdefx"); + $s = 8; continue; + /* } else if (_1 === (88)) { */ case 5: + p.fmt.fmtBx(v, "0123456789ABCDEFX"); + $s = 8; continue; + /* } else if (_1 === (113)) { */ case 6: + p.fmt.fmtQ(($bytesToString(v))); + $s = 8; continue; + /* } else { */ case 7: + _r = reflect.ValueOf(v); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = p.printValue($clone(_r, reflect.Value), verb, 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + case 1: + $s = -1; return; + /* */ } return; } var $f = {$blk: fmtBytes, $c: true, $r, _1, _i, _i$1, _r, _ref, _ref$1, c, c$1, i, i$1, p, typeString, v, verb, $s};return $f; + }; + $ptrType(pp).prototype.fmtPointer = function fmtPointer(value, verb) { + var {_1, _2, _r, p, u, value, verb, $s, $r, $c} = $restore(this, {value, verb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + u = 0; + _1 = $clone(value, reflect.Value).Kind(); + /* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ((_1 === (18)) || (_1 === (19)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23)) || (_1 === (26))) { */ case 2: + u = $clone(value, reflect.Value).Pointer(); + $s = 4; continue; + /* } else { */ case 3: + $r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 4: + case 1: + _2 = verb; + /* */ if (_2 === (118)) { $s = 7; continue; } + /* */ if (_2 === (112)) { $s = 8; continue; } + /* */ if ((_2 === (98)) || (_2 === (111)) || (_2 === (100)) || (_2 === (120)) || (_2 === (88))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_2 === (118)) { */ case 7: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 12: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(40); + _r = $clone(value, reflect.Value).Type().String(); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(_r); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(")("); + if (u === 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("nil"); + } else { + p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), true); + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(41); + $s = 14; continue; + /* } else { */ case 13: + if (u === 0) { + p.fmt.padString(""); + } else { + p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), !p.fmt.fmtFlags.sharp); + } + /* } */ case 14: + $s = 11; continue; + /* } else if (_2 === (112)) { */ case 8: + p.fmt0x64((new $Uint64(0, u.constructor === Number ? u : 1)), !p.fmt.fmtFlags.sharp); + $s = 11; continue; + /* } else if ((_2 === (98)) || (_2 === (111)) || (_2 === (100)) || (_2 === (120)) || (_2 === (88))) { */ case 9: + $r = p.fmtInteger((new $Uint64(0, u.constructor === Number ? u : 1)), false, verb); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 11; continue; + /* } else { */ case 10: + $r = p.badVerb(verb); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: fmtPointer, $c: true, $r, _1, _2, _r, p, u, value, verb, $s};return $f; + }; + $ptrType(pp).prototype.catchPanic = function catchPanic(arg, verb, method) { + var {_r, arg, err, method, oldFlags, p, v, verb, $s, $r, $c} = $restore(this, {arg, verb, method}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + err = $recover(); + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 1: + _r = reflect.ValueOf(arg); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + if (($clone(v, reflect.Value).Kind() === 22) && $clone(v, reflect.Value).IsNil()) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(""); + $s = -1; return; + } + if (p.panicking) { + $panic(err); + } + oldFlags = $clone(p.fmt.fmtFlags, fmtFlags); + p.fmt.clearflags(); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("%!"); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeRune(verb); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("(PANIC="); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(method); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(" method: "); + p.panicking = true; + $r = p.printArg(err, 118); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + p.panicking = false; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(41); + fmtFlags.copy(p.fmt.fmtFlags, oldFlags); + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: catchPanic, $c: true, $r, _r, arg, err, method, oldFlags, p, v, verb, $s};return $f; + }; + $ptrType(pp).prototype.handleMethods = function handleMethods(verb) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, _1, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, _tuple$2, formatter, handled, ok, ok$1, ok$2, p, stringer, v, v$1, verb, $s, $deferred, $r, $c} = $restore(this, {verb}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + handled = false; + p = this; + if (p.erroring) { + $s = -1; return handled; + } + /* */ if (verb === 119) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (verb === 119) { */ case 1: + _tuple = $assertType(p.arg, $error, true); + ok = _tuple[1]; + /* */ if (!ok || !p.wrapErrs) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!ok || !p.wrapErrs) { */ case 3: + $r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + handled = true; + $s = -1; return handled; + /* } */ case 4: + verb = 118; + /* } */ case 2: + _tuple$1 = $assertType(p.arg, Formatter, true); + formatter = _tuple$1[0]; + ok$1 = _tuple$1[1]; + /* */ if (ok$1) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (ok$1) { */ case 6: + handled = true; + $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "Format"]]); + $r = formatter.Format(p, verb); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r = handled; + $s = 9; case 9: return $24r; + /* } */ case 7: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 10: + _tuple$2 = $assertType(p.arg, GoStringer, true); + stringer = _tuple$2[0]; + ok$2 = _tuple$2[1]; + /* */ if (ok$2) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (ok$2) { */ case 13: + handled = true; + $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "GoString"]]); + _r = stringer.GoString(); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = p.fmt.fmtS(_r); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r$1 = handled; + $s = 17; case 17: return $24r$1; + /* } */ case 14: + $s = 12; continue; + /* } else { */ case 11: + _1 = verb; + /* */ if ((_1 === (118)) || (_1 === (115)) || (_1 === (120)) || (_1 === (88)) || (_1 === (113))) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if ((_1 === (118)) || (_1 === (115)) || (_1 === (120)) || (_1 === (88)) || (_1 === (113))) { */ case 19: + _ref = p.arg; + /* */ if ($assertType(_ref, $error, true)[1]) { $s = 21; continue; } + /* */ if ($assertType(_ref, Stringer, true)[1]) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if ($assertType(_ref, $error, true)[1]) { */ case 21: + v = _ref; + handled = true; + $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "Error"]]); + _r$1 = v.Error(); /* */ $s = 24; case 24: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = p.fmtString(_r$1, verb); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r$2 = handled; + $s = 26; case 26: return $24r$2; + /* } else if ($assertType(_ref, Stringer, true)[1]) { */ case 22: + v$1 = _ref; + handled = true; + $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb, "String"]]); + _r$2 = v$1.String(); /* */ $s = 27; case 27: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = p.fmtString(_r$2, verb); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r$3 = handled; + $s = 29; case 29: return $24r$3; + /* } */ case 23: + /* } */ case 20: + case 18: + /* } */ case 12: + handled = false; + $24r$4 = handled; + $s = 30; case 30: return $24r$4; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return handled; } if($curGoroutine.asleep) { var $f = {$blk: handleMethods, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, _1, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, _tuple$2, formatter, handled, ok, ok$1, ok$2, p, stringer, v, v$1, verb, $s, $deferred};return $f; } } + }; + $ptrType(pp).prototype.printArg = function printArg(arg, verb) { + var {_1, _2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, arg, f, f$1, f$10, f$11, f$12, f$13, f$14, f$15, f$16, f$17, f$18, f$19, f$2, f$3, f$4, f$5, f$6, f$7, f$8, f$9, p, verb, $s, $r, $c} = $restore(this, {arg, verb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + p.arg = arg; + p.value = new reflect.Value.ptr(ptrType.nil, 0, 0); + /* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 1: + _1 = verb; + /* */ if ((_1 === (84)) || (_1 === (118))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((_1 === (84)) || (_1 === (118))) { */ case 4: + p.fmt.padString(""); + $s = 6; continue; + /* } else { */ case 5: + $r = p.badVerb(verb); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + case 3: + $s = -1; return; + /* } */ case 2: + _2 = verb; + /* */ if (_2 === (84)) { $s = 9; continue; } + /* */ if (_2 === (112)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_2 === (84)) { */ case 9: + _r = reflect.TypeOf(arg).String(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = p.fmt.fmtS(_r); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } else if (_2 === (112)) { */ case 10: + _r$1 = reflect.ValueOf(arg); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = p.fmtPointer($clone(_r$1, reflect.Value), 112); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 11: + case 8: + _ref = arg; + /* */ if ($assertType(_ref, $Bool, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, $Float32, true)[1]) { $s = 17; continue; } + /* */ if ($assertType(_ref, $Float64, true)[1]) { $s = 18; continue; } + /* */ if ($assertType(_ref, $Complex64, true)[1]) { $s = 19; continue; } + /* */ if ($assertType(_ref, $Complex128, true)[1]) { $s = 20; continue; } + /* */ if ($assertType(_ref, $Int, true)[1]) { $s = 21; continue; } + /* */ if ($assertType(_ref, $Int8, true)[1]) { $s = 22; continue; } + /* */ if ($assertType(_ref, $Int16, true)[1]) { $s = 23; continue; } + /* */ if ($assertType(_ref, $Int32, true)[1]) { $s = 24; continue; } + /* */ if ($assertType(_ref, $Int64, true)[1]) { $s = 25; continue; } + /* */ if ($assertType(_ref, $Uint, true)[1]) { $s = 26; continue; } + /* */ if ($assertType(_ref, $Uint8, true)[1]) { $s = 27; continue; } + /* */ if ($assertType(_ref, $Uint16, true)[1]) { $s = 28; continue; } + /* */ if ($assertType(_ref, $Uint32, true)[1]) { $s = 29; continue; } + /* */ if ($assertType(_ref, $Uint64, true)[1]) { $s = 30; continue; } + /* */ if ($assertType(_ref, $Uintptr, true)[1]) { $s = 31; continue; } + /* */ if ($assertType(_ref, $String, true)[1]) { $s = 32; continue; } + /* */ if ($assertType(_ref, sliceType$3, true)[1]) { $s = 33; continue; } + /* */ if ($assertType(_ref, reflect.Value, true)[1]) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if ($assertType(_ref, $Bool, true)[1]) { */ case 16: + f = _ref.$val; + $r = p.fmtBool(f, verb); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Float32, true)[1]) { */ case 17: + f$1 = _ref.$val; + $r = p.fmtFloat((f$1), 32, verb); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Float64, true)[1]) { */ case 18: + f$2 = _ref.$val; + $r = p.fmtFloat(f$2, 64, verb); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Complex64, true)[1]) { */ case 19: + f$3 = _ref.$val; + $r = p.fmtComplex((new $Complex128(f$3.$real, f$3.$imag)), 64, verb); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Complex128, true)[1]) { */ case 20: + f$4 = _ref.$val; + $r = p.fmtComplex(f$4, 128, verb); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Int, true)[1]) { */ case 21: + f$5 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$5)), true, verb); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Int8, true)[1]) { */ case 22: + f$6 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$6)), true, verb); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Int16, true)[1]) { */ case 23: + f$7 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$7)), true, verb); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Int32, true)[1]) { */ case 24: + f$8 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$8)), true, verb); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Int64, true)[1]) { */ case 25: + f$9 = _ref.$val; + $r = p.fmtInteger((new $Uint64(f$9.$high, f$9.$low)), true, verb); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uint, true)[1]) { */ case 26: + f$10 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$10)), false, verb); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uint8, true)[1]) { */ case 27: + f$11 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$11)), false, verb); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uint16, true)[1]) { */ case 28: + f$12 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$12)), false, verb); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uint32, true)[1]) { */ case 29: + f$13 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$13)), false, verb); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uint64, true)[1]) { */ case 30: + f$14 = _ref.$val; + $r = p.fmtInteger(f$14, false, verb); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $Uintptr, true)[1]) { */ case 31: + f$15 = _ref.$val; + $r = p.fmtInteger((new $Uint64(0, f$15.constructor === Number ? f$15 : 1)), false, verb); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, $String, true)[1]) { */ case 32: + f$16 = _ref.$val; + $r = p.fmtString(f$16, verb); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, sliceType$3, true)[1]) { */ case 33: + f$17 = _ref.$val; + $r = p.fmtBytes(f$17, verb, "[]byte"); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else if ($assertType(_ref, reflect.Value, true)[1]) { */ case 34: + f$18 = _ref.$val; + /* */ if ($clone(f$18, reflect.Value).IsValid() && $clone(f$18, reflect.Value).CanInterface()) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if ($clone(f$18, reflect.Value).IsValid() && $clone(f$18, reflect.Value).CanInterface()) { */ case 55: + _r$2 = $clone(f$18, reflect.Value).Interface(); /* */ $s = 57; case 57: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + p.arg = _r$2; + _r$3 = p.handleMethods(verb); /* */ $s = 60; case 60: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 58; continue; } + /* */ $s = 59; continue; + /* if (_r$3) { */ case 58: + $s = -1; return; + /* } */ case 59: + /* } */ case 56: + $r = p.printValue($clone(f$18, reflect.Value), verb, 0); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else { */ case 35: + f$19 = _ref; + _r$4 = p.handleMethods(verb); /* */ $s = 64; case 64: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 62; continue; } + /* */ $s = 63; continue; + /* if (!_r$4) { */ case 62: + _r$5 = reflect.ValueOf(f$19); /* */ $s = 65; case 65: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $r = p.printValue($clone(_r$5, reflect.Value), verb, 0); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 63: + /* } */ case 36: + $s = -1; return; + /* */ } return; } var $f = {$blk: printArg, $c: true, $r, _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, arg, f, f$1, f$10, f$11, f$12, f$13, f$14, f$15, f$16, f$17, f$18, f$19, f$2, f$3, f$4, f$5, f$6, f$7, f$8, f$9, p, verb, $s};return $f; + }; + $ptrType(pp).prototype.printValue = function printValue(value, verb, depth) { + var {_1, _2, _3, _4, _arg, _arg$1, _arg$2, _arg$3, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, a, bytes, depth, f, i, i$1, i$2, i$3, i$4, key, name, p, sorted, t, value, value$1, verb, x, x$1, $s, $r, $c} = $restore(this, {value, verb, depth}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (depth > 0 && $clone(value, reflect.Value).IsValid() && $clone(value, reflect.Value).CanInterface()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (depth > 0 && $clone(value, reflect.Value).IsValid() && $clone(value, reflect.Value).CanInterface()) { */ case 1: + _r = $clone(value, reflect.Value).Interface(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p.arg = _r; + _r$1 = p.handleMethods(verb); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$1) { */ case 4: + $s = -1; return; + /* } */ case 5: + /* } */ case 2: + p.arg = $ifaceNil; + p.value = value; + f = value; + _1 = $clone(value, reflect.Value).Kind(); + /* */ if (_1 === (0)) { $s = 8; continue; } + /* */ if (_1 === (1)) { $s = 9; continue; } + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 10; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 11; continue; } + /* */ if (_1 === (13)) { $s = 12; continue; } + /* */ if (_1 === (14)) { $s = 13; continue; } + /* */ if (_1 === (15)) { $s = 14; continue; } + /* */ if (_1 === (16)) { $s = 15; continue; } + /* */ if (_1 === (24)) { $s = 16; continue; } + /* */ if (_1 === (21)) { $s = 17; continue; } + /* */ if (_1 === (25)) { $s = 18; continue; } + /* */ if (_1 === (20)) { $s = 19; continue; } + /* */ if ((_1 === (17)) || (_1 === (23))) { $s = 20; continue; } + /* */ if (_1 === (22)) { $s = 21; continue; } + /* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (26))) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (_1 === (0)) { */ case 8: + /* */ if (depth === 0) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (depth === 0) { */ case 25: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(""); + $s = 27; continue; + /* } else { */ case 26: + _2 = verb; + /* */ if (_2 === (118)) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (_2 === (118)) { */ case 29: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(""); + $s = 31; continue; + /* } else { */ case 30: + $r = p.badVerb(verb); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 31: + case 28: + /* } */ case 27: + $s = 24; continue; + /* } else if (_1 === (1)) { */ case 9: + $r = p.fmtBool($clone(f, reflect.Value).Bool(), verb); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 10: + $r = p.fmtInteger(((x = $clone(f, reflect.Value).Int(), new $Uint64(x.$high, x.$low))), true, verb); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 11: + $r = p.fmtInteger($clone(f, reflect.Value).Uint(), false, verb); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (13)) { */ case 12: + $r = p.fmtFloat($clone(f, reflect.Value).Float(), 32, verb); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (14)) { */ case 13: + $r = p.fmtFloat($clone(f, reflect.Value).Float(), 64, verb); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (15)) { */ case 14: + $r = p.fmtComplex($clone(f, reflect.Value).Complex(), 64, verb); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (16)) { */ case 15: + $r = p.fmtComplex($clone(f, reflect.Value).Complex(), 128, verb); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (24)) { */ case 16: + _r$2 = $clone(f, reflect.Value).String(); /* */ $s = 40; case 40: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = p.fmtString(_r$2, verb); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if (_1 === (21)) { */ case 17: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 42: + _r$3 = $clone(f, reflect.Value).Type().String(); /* */ $s = 45; case 45: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(_r$3); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if ($clone(f, reflect.Value).IsNil()) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("(nil)"); + $s = -1; return; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(123); + $s = 44; continue; + /* } else { */ case 43: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("map["); + /* } */ case 44: + _r$4 = fmtsort.Sort($clone(f, reflect.Value)); /* */ $s = 47; case 47: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + sorted = _r$4; + _ref = sorted.Key; + _i = 0; + /* while (true) { */ case 48: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 49; continue; } + i = _i; + key = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + if (p.fmt.fmtFlags.sharpV) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(", "); + } else { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(32); + } + } + $r = p.printValue($clone(key, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(58); + $r = p.printValue($clone((x$1 = sorted.Value, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])), reflect.Value), verb, depth + 1 >> 0); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 48; continue; + case 49: + if (p.fmt.fmtFlags.sharpV) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(125); + } else { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(93); + } + $s = 24; continue; + /* } else if (_1 === (25)) { */ case 18: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 52: + _r$5 = $clone(f, reflect.Value).Type().String(); /* */ $s = 54; case 54: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(_r$5); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 53: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(123); + i$1 = 0; + /* while (true) { */ case 56: + /* if (!(i$1 < $clone(f, reflect.Value).NumField())) { break; } */ if(!(i$1 < $clone(f, reflect.Value).NumField())) { $s = 57; continue; } + if (i$1 > 0) { + if (p.fmt.fmtFlags.sharpV) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(", "); + } else { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(32); + } + } + /* */ if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { $s = 58; continue; } + /* */ $s = 59; continue; + /* if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { */ case 58: + _r$6 = $clone(f, reflect.Value).Type().Field(i$1); /* */ $s = 60; case 60: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + name = _r$6.Name; + if (!(name === "")) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(name); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(58); + } + /* } */ case 59: + _r$7 = getField($clone(f, reflect.Value), i$1); /* */ $s = 61; case 61: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $r = p.printValue($clone(_r$7, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 + (1) >> 0; + $s = 56; continue; + case 57: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(125); + $s = 24; continue; + /* } else if (_1 === (20)) { */ case 19: + _r$8 = $clone(f, reflect.Value).Elem(); /* */ $s = 63; case 63: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + value$1 = _r$8; + /* */ if (!$clone(value$1, reflect.Value).IsValid()) { $s = 64; continue; } + /* */ $s = 65; continue; + /* if (!$clone(value$1, reflect.Value).IsValid()) { */ case 64: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 67; continue; } + /* */ $s = 68; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 67: + _r$9 = $clone(f, reflect.Value).Type().String(); /* */ $s = 70; case 70: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(_r$9); /* */ $s = 71; case 71: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("(nil)"); + $s = 69; continue; + /* } else { */ case 68: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(""); + /* } */ case 69: + $s = 66; continue; + /* } else { */ case 65: + $r = p.printValue($clone(value$1, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 72; case 72: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 66: + $s = 24; continue; + /* } else if ((_1 === (17)) || (_1 === (23))) { */ case 20: + _3 = verb; + /* */ if ((_3 === (115)) || (_3 === (113)) || (_3 === (120)) || (_3 === (88))) { $s = 74; continue; } + /* */ $s = 75; continue; + /* if ((_3 === (115)) || (_3 === (113)) || (_3 === (120)) || (_3 === (88))) { */ case 74: + t = $clone(f, reflect.Value).Type(); + _r$10 = t.Elem(); /* */ $s = 78; case 78: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = _r$10.Kind(); /* */ $s = 79; case 79: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* */ if (_r$11 === 8) { $s = 76; continue; } + /* */ $s = 77; continue; + /* if (_r$11 === 8) { */ case 76: + bytes = sliceType$3.nil; + /* */ if ($clone(f, reflect.Value).Kind() === 23) { $s = 80; continue; } + /* */ if ($clone(f, reflect.Value).CanAddr()) { $s = 81; continue; } + /* */ $s = 82; continue; + /* if ($clone(f, reflect.Value).Kind() === 23) { */ case 80: + _r$12 = $clone(f, reflect.Value).Bytes(); /* */ $s = 84; case 84: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + bytes = _r$12; + $s = 83; continue; + /* } else if ($clone(f, reflect.Value).CanAddr()) { */ case 81: + _r$13 = $clone(f, reflect.Value).Len(); /* */ $s = 85; case 85: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _arg = _r$13; + _r$14 = $clone(f, reflect.Value).Slice(0, _arg); /* */ $s = 86; case 86: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _r$15 = $clone(_r$14, reflect.Value).Bytes(); /* */ $s = 87; case 87: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + bytes = _r$15; + $s = 83; continue; + /* } else { */ case 82: + _r$16 = $clone(f, reflect.Value).Len(); /* */ $s = 88; case 88: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + bytes = $makeSlice(sliceType$3, _r$16); + _ref$1 = bytes; + _i$1 = 0; + /* while (true) { */ case 89: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 90; continue; } + i$2 = _i$1; + _r$17 = $clone(f, reflect.Value).Index(i$2); /* */ $s = 91; case 91: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _r$18 = $clone(_r$17, reflect.Value).Uint(); /* */ $s = 92; case 92: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + ((i$2 < 0 || i$2 >= bytes.$length) ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + i$2] = ((_r$18.$low << 24 >>> 24))); + _i$1++; + $s = 89; continue; + case 90: + /* } */ case 83: + _arg$1 = bytes; + _arg$2 = verb; + _r$19 = t.String(); /* */ $s = 93; case 93: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _arg$3 = _r$19; + $r = p.fmtBytes(_arg$1, _arg$2, _arg$3); /* */ $s = 94; case 94: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 77: + /* } */ case 75: + case 73: + /* */ if (p.fmt.fmtFlags.sharpV) { $s = 95; continue; } + /* */ $s = 96; continue; + /* if (p.fmt.fmtFlags.sharpV) { */ case 95: + _r$20 = $clone(f, reflect.Value).Type().String(); /* */ $s = 98; case 98: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(_r$20); /* */ $s = 99; case 99: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (($clone(f, reflect.Value).Kind() === 23) && $clone(f, reflect.Value).IsNil()) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("(nil)"); + $s = -1; return; + } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(123); + i$3 = 0; + /* while (true) { */ case 100: + _r$21 = $clone(f, reflect.Value).Len(); /* */ $s = 102; case 102: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + /* if (!(i$3 < _r$21)) { break; } */ if(!(i$3 < _r$21)) { $s = 101; continue; } + if (i$3 > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(", "); + } + _r$22 = $clone(f, reflect.Value).Index(i$3); /* */ $s = 103; case 103: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = p.printValue($clone(_r$22, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 104; case 104: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$3 = i$3 + (1) >> 0; + $s = 100; continue; + case 101: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(125); + $s = 97; continue; + /* } else { */ case 96: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(91); + i$4 = 0; + /* while (true) { */ case 105: + _r$23 = $clone(f, reflect.Value).Len(); /* */ $s = 107; case 107: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + /* if (!(i$4 < _r$23)) { break; } */ if(!(i$4 < _r$23)) { $s = 106; continue; } + if (i$4 > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(32); + } + _r$24 = $clone(f, reflect.Value).Index(i$4); /* */ $s = 108; case 108: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $r = p.printValue($clone(_r$24, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 109; case 109: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$4 = i$4 + (1) >> 0; + $s = 105; continue; + case 106: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(93); + /* } */ case 97: + $s = 24; continue; + /* } else if (_1 === (22)) { */ case 21: + /* */ if ((depth === 0) && !(($clone(f, reflect.Value).Pointer() === 0))) { $s = 110; continue; } + /* */ $s = 111; continue; + /* if ((depth === 0) && !(($clone(f, reflect.Value).Pointer() === 0))) { */ case 110: + _r$25 = $clone(f, reflect.Value).Elem(); /* */ $s = 113; case 113: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + a = _r$25; + _4 = $clone(a, reflect.Value).Kind(); + /* */ if ((_4 === (17)) || (_4 === (23)) || (_4 === (25)) || (_4 === (21))) { $s = 114; continue; } + /* */ $s = 115; continue; + /* if ((_4 === (17)) || (_4 === (23)) || (_4 === (25)) || (_4 === (21))) { */ case 114: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(38); + $r = p.printValue($clone(a, reflect.Value), verb, depth + 1 >> 0); /* */ $s = 116; case 116: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 115: + case 112: + /* } */ case 111: + $r = p.fmtPointer($clone(f, reflect.Value), verb); /* */ $s = 117; case 117: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else if ((_1 === (18)) || (_1 === (19)) || (_1 === (26))) { */ case 22: + $r = p.fmtPointer($clone(f, reflect.Value), verb); /* */ $s = 118; case 118: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 24; continue; + /* } else { */ case 23: + $r = p.unknownType($clone(f, reflect.Value)); /* */ $s = 119; case 119: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 24: + case 7: + $s = -1; return; + /* */ } return; } var $f = {$blk: printValue, $c: true, $r, _1, _2, _3, _4, _arg, _arg$1, _arg$2, _arg$3, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, a, bytes, depth, f, i, i$1, i$2, i$3, i$4, key, name, p, sorted, t, value, value$1, verb, x, x$1, $s};return $f; + }; + intFromArg = function intFromArg$1(a, argNum) { + var {_1, _r, _tuple, a, argNum, isInt, n, n$1, newArgNum, num, v, x, x$1, x$2, $s, $r, $c} = $restore(this, {a, argNum}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + num = 0; + isInt = false; + newArgNum = 0; + newArgNum = argNum; + /* */ if (argNum < a.$length) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (argNum < a.$length) { */ case 1: + _tuple = $assertType(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), $Int, true); + num = _tuple[0]; + isInt = _tuple[1]; + /* */ if (!isInt) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!isInt) { */ case 3: + _r = reflect.ValueOf(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + _1 = $clone(v, reflect.Value).Kind(); + if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { + n = $clone(v, reflect.Value).Int(); + if ((x = (new $Int64(0, (((n.$low + ((n.$high >> 31) * 4294967296)) >> 0)))), (x.$high === n.$high && x.$low === n.$low))) { + num = (((n.$low + ((n.$high >> 31) * 4294967296)) >> 0)); + isInt = true; + } + } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { + n$1 = $clone(v, reflect.Value).Uint(); + if ((x$1 = (new $Int64(n$1.$high, n$1.$low)), (x$1.$high > 0 || (x$1.$high === 0 && x$1.$low >= 0))) && (x$2 = (new $Uint64(0, ((n$1.$low >> 0)))), (x$2.$high === n$1.$high && x$2.$low === n$1.$low))) { + num = ((n$1.$low >> 0)); + isInt = true; + } + } + case 5: + /* } */ case 4: + newArgNum = argNum + 1 >> 0; + if (tooLarge(num)) { + num = 0; + isInt = false; + } + /* } */ case 2: + $s = -1; return [num, isInt, newArgNum]; + /* */ } return; } var $f = {$blk: intFromArg$1, $c: true, $r, _1, _r, _tuple, a, argNum, isInt, n, n$1, newArgNum, num, v, x, x$1, x$2, $s};return $f; + }; + parseArgNumber = function parseArgNumber$1(format) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, format, i, index, newi, ok, ok$1, wid, width; + index = 0; + wid = 0; + ok = false; + if (format.length < 3) { + _tmp = 0; + _tmp$1 = 1; + _tmp$2 = false; + index = _tmp; + wid = _tmp$1; + ok = _tmp$2; + return [index, wid, ok]; + } + i = 1; + while (true) { + if (!(i < format.length)) { break; } + if (format.charCodeAt(i) === 93) { + _tuple = parsenum(format, 1, i); + width = _tuple[0]; + ok$1 = _tuple[1]; + newi = _tuple[2]; + if (!ok$1 || !((newi === i))) { + _tmp$3 = 0; + _tmp$4 = i + 1 >> 0; + _tmp$5 = false; + index = _tmp$3; + wid = _tmp$4; + ok = _tmp$5; + return [index, wid, ok]; + } + _tmp$6 = width - 1 >> 0; + _tmp$7 = i + 1 >> 0; + _tmp$8 = true; + index = _tmp$6; + wid = _tmp$7; + ok = _tmp$8; + return [index, wid, ok]; + } + i = i + (1) >> 0; + } + _tmp$9 = 0; + _tmp$10 = 1; + _tmp$11 = false; + index = _tmp$9; + wid = _tmp$10; + ok = _tmp$11; + return [index, wid, ok]; + }; + $ptrType(pp).prototype.argNumber = function argNumber(argNum, format, i, numArgs) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, argNum, format, found, i, index, newArgNum, newi, numArgs, ok, p, wid; + newArgNum = 0; + newi = 0; + found = false; + p = this; + if (format.length <= i || !((format.charCodeAt(i) === 91))) { + _tmp = argNum; + _tmp$1 = i; + _tmp$2 = false; + newArgNum = _tmp; + newi = _tmp$1; + found = _tmp$2; + return [newArgNum, newi, found]; + } + p.reordered = true; + _tuple = parseArgNumber($substring(format, i)); + index = _tuple[0]; + wid = _tuple[1]; + ok = _tuple[2]; + if (ok && 0 <= index && index < numArgs) { + _tmp$3 = index; + _tmp$4 = i + wid >> 0; + _tmp$5 = true; + newArgNum = _tmp$3; + newi = _tmp$4; + found = _tmp$5; + return [newArgNum, newi, found]; + } + p.goodArgNum = false; + _tmp$6 = argNum; + _tmp$7 = i + wid >> 0; + _tmp$8 = ok; + newArgNum = _tmp$6; + newi = _tmp$7; + found = _tmp$8; + return [newArgNum, newi, found]; + }; + $ptrType(pp).prototype.badArgNum = function badArgNum(verb) { + var p, verb; + p = this; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("%!"); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeRune(verb); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("(BADINDEX)"); + }; + $ptrType(pp).prototype.missingArg = function missingArg(verb) { + var p, verb; + p = this; + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("%!"); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeRune(verb); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("(MISSING)"); + }; + $ptrType(pp).prototype.doPrintf = function doPrintf(format, a) { + var {_1, _2, _i, _r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, a, afterIndex, arg, argNum, c, end, format, i, i$1, lasti, p, size, verb, $s, $r, $c} = $restore(this, {format, a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + end = format.length; + argNum = 0; + afterIndex = false; + p.reordered = false; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < end)) { break; } */ if(!(i < end)) { $s = 2; continue; } + p.goodArgNum = true; + lasti = i; + while (true) { + if (!(i < end && !((format.charCodeAt(i) === 37)))) { break; } + i = i + (1) >> 0; + } + if (i > lasti) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString($substring(format, lasti, i)); + } + if (i >= end) { + /* break; */ $s = 2; continue; + } + i = i + (1) >> 0; + p.fmt.clearflags(); + /* while (true) { */ case 3: + /* if (!(i < end)) { break; } */ if(!(i < end)) { $s = 4; continue; } + c = format.charCodeAt(i); + _1 = c; + /* */ if (_1 === (35)) { $s = 6; continue; } + /* */ if (_1 === (48)) { $s = 7; continue; } + /* */ if (_1 === (43)) { $s = 8; continue; } + /* */ if (_1 === (45)) { $s = 9; continue; } + /* */ if (_1 === (32)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_1 === (35)) { */ case 6: + p.fmt.fmtFlags.sharp = true; + $s = 12; continue; + /* } else if (_1 === (48)) { */ case 7: + p.fmt.fmtFlags.zero = !p.fmt.fmtFlags.minus; + $s = 12; continue; + /* } else if (_1 === (43)) { */ case 8: + p.fmt.fmtFlags.plus = true; + $s = 12; continue; + /* } else if (_1 === (45)) { */ case 9: + p.fmt.fmtFlags.minus = true; + p.fmt.fmtFlags.zero = false; + $s = 12; continue; + /* } else if (_1 === (32)) { */ case 10: + p.fmt.fmtFlags.space = true; + $s = 12; continue; + /* } else { */ case 11: + /* */ if (97 <= c && c <= 122 && argNum < a.$length) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (97 <= c && c <= 122 && argNum < a.$length) { */ case 13: + _2 = c; + if (_2 === (119)) { + p.wrappedErrs = $append(p.wrappedErrs, argNum); + p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp; + p.fmt.fmtFlags.sharp = false; + p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus; + p.fmt.fmtFlags.plus = false; + } else if (_2 === (118)) { + p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp; + p.fmt.fmtFlags.sharp = false; + p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus; + p.fmt.fmtFlags.plus = false; + } + $r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), ((c >> 0))); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + argNum = argNum + (1) >> 0; + i = i + (1) >> 0; + /* continue formatLoop; */ $s = 1; continue s; + /* } */ case 14: + /* break simpleFormat; */ $s = 4; continue s; + /* } */ case 12: + case 5: + i = i + (1) >> 0; + $s = 3; continue; + case 4: + _tuple = p.argNumber(argNum, format, i, a.$length); + argNum = _tuple[0]; + i = _tuple[1]; + afterIndex = _tuple[2]; + /* */ if (i < end && (format.charCodeAt(i) === 42)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (i < end && (format.charCodeAt(i) === 42)) { */ case 16: + i = i + (1) >> 0; + _r = intFromArg(a, argNum); /* */ $s = 19; case 19: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + p.fmt.wid = _tuple$1[0]; + p.fmt.fmtFlags.widPresent = _tuple$1[1]; + argNum = _tuple$1[2]; + if (!p.fmt.fmtFlags.widPresent) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("%!(BADWIDTH)"); + } + if (p.fmt.wid < 0) { + p.fmt.wid = -p.fmt.wid; + p.fmt.fmtFlags.minus = true; + p.fmt.fmtFlags.zero = false; + } + afterIndex = false; + $s = 18; continue; + /* } else { */ case 17: + _tuple$2 = parsenum(format, i, end); + p.fmt.wid = _tuple$2[0]; + p.fmt.fmtFlags.widPresent = _tuple$2[1]; + i = _tuple$2[2]; + if (afterIndex && p.fmt.fmtFlags.widPresent) { + p.goodArgNum = false; + } + /* } */ case 18: + /* */ if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) { */ case 20: + i = i + (1) >> 0; + if (afterIndex) { + p.goodArgNum = false; + } + _tuple$3 = p.argNumber(argNum, format, i, a.$length); + argNum = _tuple$3[0]; + i = _tuple$3[1]; + afterIndex = _tuple$3[2]; + /* */ if (i < end && (format.charCodeAt(i) === 42)) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (i < end && (format.charCodeAt(i) === 42)) { */ case 22: + i = i + (1) >> 0; + _r$1 = intFromArg(a, argNum); /* */ $s = 25; case 25: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$4 = _r$1; + p.fmt.prec = _tuple$4[0]; + p.fmt.fmtFlags.precPresent = _tuple$4[1]; + argNum = _tuple$4[2]; + if (p.fmt.prec < 0) { + p.fmt.prec = 0; + p.fmt.fmtFlags.precPresent = false; + } + if (!p.fmt.fmtFlags.precPresent) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("%!(BADPREC)"); + } + afterIndex = false; + $s = 24; continue; + /* } else { */ case 23: + _tuple$5 = parsenum(format, i, end); + p.fmt.prec = _tuple$5[0]; + p.fmt.fmtFlags.precPresent = _tuple$5[1]; + i = _tuple$5[2]; + if (!p.fmt.fmtFlags.precPresent) { + p.fmt.prec = 0; + p.fmt.fmtFlags.precPresent = true; + } + /* } */ case 24: + /* } */ case 21: + if (!afterIndex) { + _tuple$6 = p.argNumber(argNum, format, i, a.$length); + argNum = _tuple$6[0]; + i = _tuple$6[1]; + afterIndex = _tuple$6[2]; + } + if (i >= end) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("%!(NOVERB)"); + /* break; */ $s = 2; continue; + } + _tmp = ((format.charCodeAt(i) >> 0)); + _tmp$1 = 1; + verb = _tmp; + size = _tmp$1; + if (verb >= 128) { + _tuple$7 = utf8.DecodeRuneInString($substring(format, i)); + verb = _tuple$7[0]; + size = _tuple$7[1]; + } + i = i + (size) >> 0; + /* */ if ((verb === 37)) { $s = 27; continue; } + /* */ if (!p.goodArgNum) { $s = 28; continue; } + /* */ if (argNum >= a.$length) { $s = 29; continue; } + /* */ if ((verb === 119)) { $s = 30; continue; } + /* */ if ((verb === 118)) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if ((verb === 37)) { */ case 27: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(37); + $s = 33; continue; + /* } else if (!p.goodArgNum) { */ case 28: + p.badArgNum(verb); + $s = 33; continue; + /* } else if (argNum >= a.$length) { */ case 29: + p.missingArg(verb); + $s = 33; continue; + /* } else if ((verb === 119)) { */ case 30: + p.wrappedErrs = $append(p.wrappedErrs, argNum); + p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp; + p.fmt.fmtFlags.sharp = false; + p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus; + p.fmt.fmtFlags.plus = false; + $r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), verb); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + argNum = argNum + (1) >> 0; + $s = 33; continue; + /* } else if ((verb === 118)) { */ case 31: + p.fmt.fmtFlags.sharpV = p.fmt.fmtFlags.sharp; + p.fmt.fmtFlags.sharp = false; + p.fmt.fmtFlags.plusV = p.fmt.fmtFlags.plus; + p.fmt.fmtFlags.plus = false; + $r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), verb); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + argNum = argNum + (1) >> 0; + $s = 33; continue; + /* } else { */ case 32: + $r = p.printArg(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), verb); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + argNum = argNum + (1) >> 0; + /* } */ case 33: + case 26: + $s = 1; continue; + case 2: + /* */ if (!p.reordered && argNum < a.$length) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if (!p.reordered && argNum < a.$length) { */ case 37: + p.fmt.clearflags(); + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString("%!(EXTRA "); + _ref = $subslice(a, argNum); + _i = 0; + /* while (true) { */ case 39: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 40; continue; } + i$1 = _i; + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i$1 > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(", "); + } + /* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 41: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(""); + $s = 43; continue; + /* } else { */ case 42: + _r$2 = reflect.TypeOf(arg).String(); /* */ $s = 44; case 44: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeString(_r$2); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(61); + $r = p.printArg(arg, 118); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 43: + _i++; + $s = 39; continue; + case 40: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(41); + /* } */ case 38: + $s = -1; return; + /* */ } return; } var $f = {$blk: doPrintf, $c: true, $r, _1, _2, _i, _r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, a, afterIndex, arg, argNum, c, end, format, i, i$1, lasti, p, size, verb, $s};return $f; + }; + $ptrType(pp).prototype.doPrint = function doPrint(a) { + var {_i, _r, _ref, _v, a, arg, argNum, isString, p, prevString, $s, $r, $c} = $restore(this, {a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + prevString = false; + _ref = a; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + argNum = _i; + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(!($interfaceIsEqual(arg, $ifaceNil)))) { _v = false; $s = 3; continue s; } + _r = reflect.TypeOf(arg).Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r === 24; case 3: + isString = _v; + if (argNum > 0 && !isString && !prevString) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(32); + } + $r = p.printArg(arg, 118); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + prevString = isString; + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: doPrint, $c: true, $r, _i, _r, _ref, _v, a, arg, argNum, isString, p, prevString, $s};return $f; + }; + $ptrType(pp).prototype.doPrintln = function doPrintln(a) { + var {_i, _ref, a, arg, argNum, p, $s, $r, $c} = $restore(this, {a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _ref = a; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + argNum = _i; + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (argNum > 0) { + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(32); + } + $r = p.printArg(arg, 118); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).writeByte(10); + $s = -1; return; + /* */ } return; } var $f = {$blk: doPrintln, $c: true, $r, _i, _ref, a, arg, argNum, p, $s};return $f; + }; + $ptrType(fmt).prototype.clearflags = function clearflags() { + var f; + f = this; + fmtFlags.copy(f.fmtFlags, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false)); + }; + $ptrType(fmt).prototype.init = function init(buf) { + var buf, f; + f = this; + f.buf = buf; + f.clearflags(); + }; + $ptrType(fmt).prototype.writePadding = function writePadding(n) { + var _i, _ref, buf, f, i, n, newLen, oldLen, padByte, padding; + f = this; + if (n <= 0) { + return; + } + buf = f.buf.$get(); + oldLen = buf.$length; + newLen = oldLen + n >> 0; + if (newLen > buf.$capacity) { + buf = $makeSlice(buffer, (($imul(buf.$capacity, 2)) + n >> 0)); + $copySlice(buf, f.buf.$get()); + } + padByte = 32; + if (f.fmtFlags.zero) { + padByte = 48; + } + padding = $subslice(buf, oldLen, newLen); + _ref = padding; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= padding.$length) ? ($throwRuntimeError("index out of range"), undefined) : padding.$array[padding.$offset + i] = padByte); + _i++; + } + f.buf.$set($subslice(buf, 0, newLen)); + }; + $ptrType(fmt).prototype.pad = function pad(b) { + var b, f, width; + f = this; + if (!f.fmtFlags.widPresent || (f.wid === 0)) { + f.buf.write(b); + return; + } + width = f.wid - utf8.RuneCount(b) >> 0; + if (!f.fmtFlags.minus) { + f.writePadding(width); + f.buf.write(b); + } else { + f.buf.write(b); + f.writePadding(width); + } + }; + $ptrType(fmt).prototype.padString = function padString(s) { + var f, s, width; + f = this; + if (!f.fmtFlags.widPresent || (f.wid === 0)) { + f.buf.writeString(s); + return; + } + width = f.wid - utf8.RuneCountInString(s) >> 0; + if (!f.fmtFlags.minus) { + f.writePadding(width); + f.buf.writeString(s); + } else { + f.buf.writeString(s); + f.writePadding(width); + } + }; + $ptrType(fmt).prototype.fmtBoolean = function fmtBoolean(v) { + var f, v; + f = this; + if (v) { + f.padString("true"); + } else { + f.padString("false"); + } + }; + $ptrType(fmt).prototype.fmtUnicode = function fmtUnicode(u) { + var buf, f, i, oldZero, prec, u, width; + f = this; + buf = $subslice(new sliceType$3(f.intbuf), 0); + prec = 4; + if (f.fmtFlags.precPresent && f.prec > 4) { + prec = f.prec; + width = (((2 + prec >> 0) + 2 >> 0) + 4 >> 0) + 1 >> 0; + if (width > buf.$length) { + buf = $makeSlice(sliceType$3, width); + } + } + i = buf.$length; + if (f.fmtFlags.sharp && (u.$high < 0 || (u.$high === 0 && u.$low <= 1114111)) && strconv.IsPrint(((u.$low >> 0)))) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 39); + i = i - (utf8.RuneLen(((u.$low >> 0)))) >> 0; + utf8.EncodeRune($subslice(buf, i), ((u.$low >> 0))); + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 39); + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 32); + } + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 16)))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = "0123456789ABCDEFX".charCodeAt($flatten64(new $Uint64(u.$high & 0, (u.$low & 15) >>> 0)))); + prec = prec - (1) >> 0; + u = $shiftRightUint64(u, (4)); + } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = "0123456789ABCDEFX".charCodeAt($flatten64(u))); + prec = prec - (1) >> 0; + while (true) { + if (!(prec > 0)) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); + prec = prec - (1) >> 0; + } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 43); + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 85); + oldZero = f.fmtFlags.zero; + f.fmtFlags.zero = false; + f.pad($subslice(buf, i)); + f.fmtFlags.zero = oldZero; + }; + $ptrType(fmt).prototype.fmtInteger = function fmtInteger$1(u, base, isSigned, verb, digits) { + var _1, _2, base, buf, digits, f, i, isSigned, negative, next, oldZero, oldZero$1, prec, u, verb, width, x, x$1, x$2, x$3, x$4; + f = this; + negative = isSigned && (x = (new $Int64(u.$high, u.$low)), (x.$high < 0 || (x.$high === 0 && x.$low < 0))); + if (negative) { + u = new $Uint64(-u.$high, -u.$low); + } + buf = $subslice(new sliceType$3(f.intbuf), 0); + if (f.fmtFlags.widPresent || f.fmtFlags.precPresent) { + width = (3 + f.wid >> 0) + f.prec >> 0; + if (width > buf.$length) { + buf = $makeSlice(sliceType$3, width); + } + } + prec = 0; + if (f.fmtFlags.precPresent) { + prec = f.prec; + if ((prec === 0) && (u.$high === 0 && u.$low === 0)) { + oldZero = f.fmtFlags.zero; + f.fmtFlags.zero = false; + f.writePadding(f.wid); + f.fmtFlags.zero = oldZero; + return; + } + } else if (f.fmtFlags.zero && f.fmtFlags.widPresent) { + prec = f.wid; + if (negative || f.fmtFlags.plus || f.fmtFlags.space) { + prec = prec - (1) >> 0; + } + } + i = buf.$length; + _1 = base; + if (_1 === (10)) { + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 10)))) { break; } + i = i - (1) >> 0; + next = $div64(u, new $Uint64(0, 10), false); + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$1 = new $Uint64(0 + u.$high, 48 + u.$low), x$2 = $mul64(next, new $Uint64(0, 10)), new $Uint64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)).$low << 24 >>> 24))); + u = next; + } + } else if (_1 === (16)) { + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 16)))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(new $Uint64(u.$high & 0, (u.$low & 15) >>> 0)))); + u = $shiftRightUint64(u, (4)); + } + } else if (_1 === (8)) { + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 8)))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$3 = new $Uint64(u.$high & 0, (u.$low & 7) >>> 0), new $Uint64(0 + x$3.$high, 48 + x$3.$low)).$low << 24 >>> 24))); + u = $shiftRightUint64(u, (3)); + } + } else if (_1 === (2)) { + while (true) { + if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 2)))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (((x$4 = new $Uint64(u.$high & 0, (u.$low & 1) >>> 0), new $Uint64(0 + x$4.$high, 48 + x$4.$low)).$low << 24 >>> 24))); + u = $shiftRightUint64(u, (1)); + } + } else { + $panic(new $String("fmt: unknown base; can't happen")); + } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(u))); + while (true) { + if (!(i > 0 && prec > (buf.$length - i >> 0))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); + } + if (f.fmtFlags.sharp) { + _2 = base; + if (_2 === (2)) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 98); + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); + } else if (_2 === (8)) { + if (!((((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i]) === 48))) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); + } + } else if (_2 === (16)) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = digits.charCodeAt(16)); + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); + } + } + if (verb === 79) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 111); + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 48); + } + if (negative) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 45); + } else if (f.fmtFlags.plus) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 43); + } else if (f.fmtFlags.space) { + i = i - (1) >> 0; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 32); + } + oldZero$1 = f.fmtFlags.zero; + f.fmtFlags.zero = false; + f.pad($subslice(buf, i)); + f.fmtFlags.zero = oldZero$1; + }; + $ptrType(fmt).prototype.truncateString = function truncateString(s) { + var _i, _ref, _rune, f, i, n, s; + f = this; + if (f.fmtFlags.precPresent) { + n = f.prec; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + n = n - (1) >> 0; + if (n < 0) { + return $substring(s, 0, i); + } + _i += _rune[1]; + } + } + return s; + }; + $ptrType(fmt).prototype.truncate = function truncate(b) { + var _tuple, b, f, i, n, wid; + f = this; + if (f.fmtFlags.precPresent) { + n = f.prec; + i = 0; + while (true) { + if (!(i < b.$length)) { break; } + n = n - (1) >> 0; + if (n < 0) { + return $subslice(b, 0, i); + } + wid = 1; + if (((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) >= 128) { + _tuple = utf8.DecodeRune($subslice(b, i)); + wid = _tuple[1]; + } + i = i + (wid) >> 0; + } + } + return b; + }; + $ptrType(fmt).prototype.fmtS = function fmtS(s) { + var f, s; + f = this; + s = f.truncateString(s); + f.padString(s); + }; + $ptrType(fmt).prototype.fmtBs = function fmtBs(b) { + var b, f; + f = this; + b = f.truncate(b); + f.pad(b); + }; + $ptrType(fmt).prototype.fmtSbx = function fmtSbx(s, b, digits) { + var b, buf, c, digits, f, i, length, s, width; + f = this; + length = b.$length; + if (b === sliceType$3.nil) { + length = s.length; + } + if (f.fmtFlags.precPresent && f.prec < length) { + length = f.prec; + } + width = $imul(2, length); + if (width > 0) { + if (f.fmtFlags.space) { + if (f.fmtFlags.sharp) { + width = $imul(width, (2)); + } + width = width + ((length - 1 >> 0)) >> 0; + } else if (f.fmtFlags.sharp) { + width = width + (2) >> 0; + } + } else { + if (f.fmtFlags.widPresent) { + f.writePadding(f.wid); + } + return; + } + if (f.fmtFlags.widPresent && f.wid > width && !f.fmtFlags.minus) { + f.writePadding(f.wid - width >> 0); + } + buf = f.buf.$get(); + if (f.fmtFlags.sharp) { + buf = $append(buf, 48, digits.charCodeAt(16)); + } + c = 0; + i = 0; + while (true) { + if (!(i < length)) { break; } + if (f.fmtFlags.space && i > 0) { + buf = $append(buf, 32); + if (f.fmtFlags.sharp) { + buf = $append(buf, 48, digits.charCodeAt(16)); + } + } + if (!(b === sliceType$3.nil)) { + c = ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]); + } else { + c = s.charCodeAt(i); + } + buf = $append(buf, digits.charCodeAt((c >>> 4 << 24 >>> 24)), digits.charCodeAt(((c & 15) >>> 0))); + i = i + (1) >> 0; + } + f.buf.$set(buf); + if (f.fmtFlags.widPresent && f.wid > width && f.fmtFlags.minus) { + f.writePadding(f.wid - width >> 0); + } + }; + $ptrType(fmt).prototype.fmtSx = function fmtSx(s, digits) { + var digits, f, s; + f = this; + f.fmtSbx(s, sliceType$3.nil, digits); + }; + $ptrType(fmt).prototype.fmtBx = function fmtBx(b, digits) { + var b, digits, f; + f = this; + f.fmtSbx("", b, digits); + }; + $ptrType(fmt).prototype.fmtQ = function fmtQ(s) { + var buf, f, s; + f = this; + s = f.truncateString(s); + if (f.fmtFlags.sharp && strconv.CanBackquote(s)) { + f.padString("`" + s + "`"); + return; + } + buf = $subslice(new sliceType$3(f.intbuf), 0, 0); + if (f.fmtFlags.plus) { + f.pad(strconv.AppendQuoteToASCII(buf, s)); + } else { + f.pad(strconv.AppendQuote(buf, s)); + } + }; + $ptrType(fmt).prototype.fmtC = function fmtC(c) { + var buf, c, f, r; + f = this; + r = ((c.$low >> 0)); + if ((c.$high > 0 || (c.$high === 0 && c.$low > 1114111))) { + r = 65533; + } + buf = $subslice(new sliceType$3(f.intbuf), 0, 0); + f.pad(utf8.AppendRune(buf, r)); + }; + $ptrType(fmt).prototype.fmtQc = function fmtQc(c) { + var buf, c, f, r; + f = this; + r = ((c.$low >> 0)); + if ((c.$high > 0 || (c.$high === 0 && c.$low > 1114111))) { + r = 65533; + } + buf = $subslice(new sliceType$3(f.intbuf), 0, 0); + if (f.fmtFlags.plus) { + f.pad(strconv.AppendQuoteRuneToASCII(buf, r)); + } else { + f.pad(strconv.AppendQuoteRune(buf, r)); + } + }; + $ptrType(fmt).prototype.fmtFloat = function fmtFloat$1(v, size, verb, prec) { + var _1, _2, digits, f, hasDecimalPoint, i, num, oldZero, prec, sawNonzeroDigit, size, tail, tailBuf, v, verb; + f = this; + if (f.fmtFlags.precPresent) { + prec = f.prec; + } + num = strconv.AppendFloat($subslice(new sliceType$3(f.intbuf), 0, 1), v, ((verb << 24 >>> 24)), prec, size); + if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 45) || ((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 43)) { + num = $subslice(num, 1); + } else { + (0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0] = 43); + } + if (f.fmtFlags.space && ((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]) === 43) && !f.fmtFlags.plus) { + (0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0] = 32); + } + if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 73) || ((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 78)) { + oldZero = f.fmtFlags.zero; + f.fmtFlags.zero = false; + if (((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 78) && !f.fmtFlags.space && !f.fmtFlags.plus) { + num = $subslice(num, 1); + } + f.pad(num); + f.fmtFlags.zero = oldZero; + return; + } + if (f.fmtFlags.sharp && !((verb === 98))) { + digits = 0; + _1 = verb; + if ((_1 === (118)) || (_1 === (103)) || (_1 === (71)) || (_1 === (120))) { + digits = prec; + if (digits === -1) { + digits = 6; + } + } + tailBuf = arrayType$4.zero(); + tail = $subslice(new sliceType$3(tailBuf), 0, 0); + hasDecimalPoint = false; + sawNonzeroDigit = false; + i = 1; + while (true) { + if (!(i < num.$length)) { break; } + switch (0) { default: + _2 = ((i < 0 || i >= num.$length) ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + i]); + if (_2 === (46)) { + hasDecimalPoint = true; + } else if ((_2 === (112)) || (_2 === (80))) { + tail = $appendSlice(tail, $subslice(num, i)); + num = $subslice(num, 0, i); + } else if ((_2 === (101)) || (_2 === (69))) { + if (!((verb === 120)) && !((verb === 88))) { + tail = $appendSlice(tail, $subslice(num, i)); + num = $subslice(num, 0, i); + break; + } + if (!((((i < 0 || i >= num.$length) ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + i]) === 48))) { + sawNonzeroDigit = true; + } + if (sawNonzeroDigit) { + digits = digits - (1) >> 0; + } + } else { + if (!((((i < 0 || i >= num.$length) ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + i]) === 48))) { + sawNonzeroDigit = true; + } + if (sawNonzeroDigit) { + digits = digits - (1) >> 0; + } + } + } + i = i + (1) >> 0; + } + if (!hasDecimalPoint) { + if ((num.$length === 2) && ((1 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 1]) === 48)) { + digits = digits - (1) >> 0; + } + num = $append(num, 46); + } + while (true) { + if (!(digits > 0)) { break; } + num = $append(num, 48); + digits = digits - (1) >> 0; + } + num = $appendSlice(num, tail); + } + if (f.fmtFlags.plus || !(((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0]) === 43))) { + if (f.fmtFlags.zero && f.fmtFlags.widPresent && f.wid > num.$length) { + f.buf.writeByte((0 >= num.$length ? ($throwRuntimeError("index out of range"), undefined) : num.$array[num.$offset + 0])); + f.writePadding(f.wid - num.$length >> 0); + f.buf.write($subslice(num, 1)); + return; + } + f.pad(num); + return; + } + f.pad($subslice(num, 1)); + }; + Errorf = function Errorf$1(format, a) { + var {_1, _i, _r, _ref, _tuple, _tuple$1, a, argNum, e, err, errs, format, i, ok, p, s, w, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {format, a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + p.wrapErrs = true; + $r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s = ($bytesToString(p.buf)); + err = $ifaceNil; + _1 = p.wrappedErrs.$length; + /* */ if (_1 === (0)) { $s = 4; continue; } + /* */ if (_1 === (1)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (0)) { */ case 4: + err = errors.New(s); + $s = 7; continue; + /* } else if (_1 === (1)) { */ case 5: + w = new wrapError.ptr(s, $ifaceNil); + _tuple = $assertType((x = (x$1 = p.wrappedErrs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x])), $error, true); + w.err = _tuple[0]; + err = w; + $s = 7; continue; + /* } else { */ case 6: + /* */ if (p.reordered) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (p.reordered) { */ case 8: + $r = sort.Ints(p.wrappedErrs); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + errs = sliceType$4.nil; + _ref = p.wrappedErrs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + argNum = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0 && ((x$2 = p.wrappedErrs, x$3 = i - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])) === argNum)) { + _i++; + continue; + } + _tuple$1 = $assertType(((argNum < 0 || argNum >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + argNum]), $error, true); + e = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok) { + errs = $append(errs, e); + } + _i++; + } + err = new wrapErrors.ptr(s, errs); + /* } */ case 7: + case 3: + p.free(); + $s = -1; return err; + /* */ } return; } var $f = {$blk: Errorf$1, $c: true, $r, _1, _i, _r, _ref, _tuple, _tuple$1, a, argNum, e, err, errs, format, i, ok, p, s, w, x, x$1, x$2, x$3, $s};return $f; + }; + $pkg.Errorf = Errorf; + $ptrType(wrapError).prototype.Error = function Error() { + var e; + e = this; + return e.msg; + }; + $ptrType(wrapError).prototype.Unwrap = function Unwrap() { + var e; + e = this; + return e.err; + }; + $ptrType(wrapErrors).prototype.Error = function Error$1() { + var e; + e = this; + return e.msg; + }; + $ptrType(wrapErrors).prototype.Unwrap = function Unwrap$1() { + var e; + e = this; + return e.errs; + }; + ptrType$2.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}]; + ptrType$4.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "getRune", name: "getRune", pkg: "fmt", typ: $funcType([], [$Int32], false)}, {prop: "mustReadRune", name: "mustReadRune", pkg: "fmt", typ: $funcType([], [$Int32], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "error", name: "error", pkg: "fmt", typ: $funcType([$error], [], false)}, {prop: "errorString", name: "errorString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "Token", name: "Token", pkg: "", typ: $funcType([$Bool, funcType], [sliceType$3, $error], false)}, {prop: "free", name: "free", pkg: "fmt", typ: $funcType([ssave], [], false)}, {prop: "SkipSpace", name: "SkipSpace", pkg: "", typ: $funcType([], [], false)}, {prop: "token", name: "token", pkg: "fmt", typ: $funcType([$Bool, funcType], [sliceType$3], false)}, {prop: "consume", name: "consume", pkg: "fmt", typ: $funcType([$String, $Bool], [$Bool], false)}, {prop: "peek", name: "peek", pkg: "fmt", typ: $funcType([$String], [$Bool], false)}, {prop: "notEOF", name: "notEOF", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "accept", name: "accept", pkg: "fmt", typ: $funcType([$String], [$Bool], false)}, {prop: "okVerb", name: "okVerb", pkg: "fmt", typ: $funcType([$Int32, $String, $String], [$Bool], false)}, {prop: "scanBool", name: "scanBool", pkg: "fmt", typ: $funcType([$Int32], [$Bool], false)}, {prop: "getBase", name: "getBase", pkg: "fmt", typ: $funcType([$Int32], [$Int, $String], false)}, {prop: "scanNumber", name: "scanNumber", pkg: "fmt", typ: $funcType([$String, $Bool], [$String], false)}, {prop: "scanRune", name: "scanRune", pkg: "fmt", typ: $funcType([$Int], [$Int64], false)}, {prop: "scanBasePrefix", name: "scanBasePrefix", pkg: "fmt", typ: $funcType([], [$Int, $String, $Bool], false)}, {prop: "scanInt", name: "scanInt", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Int64], false)}, {prop: "scanUint", name: "scanUint", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Uint64], false)}, {prop: "floatToken", name: "floatToken", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "complexTokens", name: "complexTokens", pkg: "fmt", typ: $funcType([], [$String, $String], false)}, {prop: "convertFloat", name: "convertFloat", pkg: "fmt", typ: $funcType([$String, $Int], [$Float64], false)}, {prop: "scanComplex", name: "scanComplex", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Complex128], false)}, {prop: "convertString", name: "convertString", pkg: "fmt", typ: $funcType([$Int32], [$String], false)}, {prop: "quotedString", name: "quotedString", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "hexByte", name: "hexByte", pkg: "fmt", typ: $funcType([], [$Uint8, $Bool], false)}, {prop: "hexString", name: "hexString", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "scanPercent", name: "scanPercent", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "scanOne", name: "scanOne", pkg: "fmt", typ: $funcType([$Int32, $emptyInterface], [], false)}, {prop: "doScan", name: "doScan", pkg: "fmt", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "advance", name: "advance", pkg: "fmt", typ: $funcType([$String], [$Int], false)}, {prop: "doScanf", name: "doScanf", pkg: "fmt", typ: $funcType([$String, sliceType$1], [$Int, $error], false)}]; + ptrType$25.methods = [{prop: "readByte", name: "readByte", pkg: "fmt", typ: $funcType([], [$Uint8, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}]; + ptrType$1.methods = [{prop: "write", name: "write", pkg: "fmt", typ: $funcType([sliceType$3], [], false)}, {prop: "writeString", name: "writeString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "writeByte", name: "writeByte", pkg: "fmt", typ: $funcType([$Uint8], [], false)}, {prop: "writeRune", name: "writeRune", pkg: "fmt", typ: $funcType([$Int32], [], false)}]; + ptrType$24.methods = [{prop: "free", name: "free", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Precision", name: "Precision", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Flag", name: "Flag", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "unknownType", name: "unknownType", pkg: "fmt", typ: $funcType([reflect.Value], [], false)}, {prop: "badVerb", name: "badVerb", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "fmtBool", name: "fmtBool", pkg: "fmt", typ: $funcType([$Bool, $Int32], [], false)}, {prop: "fmt0x64", name: "fmt0x64", pkg: "fmt", typ: $funcType([$Uint64, $Bool], [], false)}, {prop: "fmtInteger", name: "fmtInteger", pkg: "fmt", typ: $funcType([$Uint64, $Bool, $Int32], [], false)}, {prop: "fmtFloat", name: "fmtFloat", pkg: "fmt", typ: $funcType([$Float64, $Int, $Int32], [], false)}, {prop: "fmtComplex", name: "fmtComplex", pkg: "fmt", typ: $funcType([$Complex128, $Int, $Int32], [], false)}, {prop: "fmtString", name: "fmtString", pkg: "fmt", typ: $funcType([$String, $Int32], [], false)}, {prop: "fmtBytes", name: "fmtBytes", pkg: "fmt", typ: $funcType([sliceType$3, $Int32, $String], [], false)}, {prop: "fmtPointer", name: "fmtPointer", pkg: "fmt", typ: $funcType([reflect.Value, $Int32], [], false)}, {prop: "catchPanic", name: "catchPanic", pkg: "fmt", typ: $funcType([$emptyInterface, $Int32, $String], [], false)}, {prop: "handleMethods", name: "handleMethods", pkg: "fmt", typ: $funcType([$Int32], [$Bool], false)}, {prop: "printArg", name: "printArg", pkg: "fmt", typ: $funcType([$emptyInterface, $Int32], [], false)}, {prop: "printValue", name: "printValue", pkg: "fmt", typ: $funcType([reflect.Value, $Int32, $Int], [], false)}, {prop: "argNumber", name: "argNumber", pkg: "fmt", typ: $funcType([$Int, $String, $Int, $Int], [$Int, $Int, $Bool], false)}, {prop: "badArgNum", name: "badArgNum", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "missingArg", name: "missingArg", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "doPrintf", name: "doPrintf", pkg: "fmt", typ: $funcType([$String, sliceType$1], [], false)}, {prop: "doPrint", name: "doPrint", pkg: "fmt", typ: $funcType([sliceType$1], [], false)}, {prop: "doPrintln", name: "doPrintln", pkg: "fmt", typ: $funcType([sliceType$1], [], false)}]; + ptrType$26.methods = [{prop: "clearflags", name: "clearflags", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "init", name: "init", pkg: "fmt", typ: $funcType([ptrType$1], [], false)}, {prop: "writePadding", name: "writePadding", pkg: "fmt", typ: $funcType([$Int], [], false)}, {prop: "pad", name: "pad", pkg: "fmt", typ: $funcType([sliceType$3], [], false)}, {prop: "padString", name: "padString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmtBoolean", name: "fmtBoolean", pkg: "fmt", typ: $funcType([$Bool], [], false)}, {prop: "fmtUnicode", name: "fmtUnicode", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmtInteger", name: "fmtInteger", pkg: "fmt", typ: $funcType([$Uint64, $Int, $Bool, $Int32, $String], [], false)}, {prop: "truncateString", name: "truncateString", pkg: "fmt", typ: $funcType([$String], [$String], false)}, {prop: "truncate", name: "truncate", pkg: "fmt", typ: $funcType([sliceType$3], [sliceType$3], false)}, {prop: "fmtS", name: "fmtS", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmtBs", name: "fmtBs", pkg: "fmt", typ: $funcType([sliceType$3], [], false)}, {prop: "fmtSbx", name: "fmtSbx", pkg: "fmt", typ: $funcType([$String, sliceType$3, $String], [], false)}, {prop: "fmtSx", name: "fmtSx", pkg: "fmt", typ: $funcType([$String, $String], [], false)}, {prop: "fmtBx", name: "fmtBx", pkg: "fmt", typ: $funcType([sliceType$3, $String], [], false)}, {prop: "fmtQ", name: "fmtQ", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmtC", name: "fmtC", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmtQc", name: "fmtQc", pkg: "fmt", typ: $funcType([$Uint64], [], false)}, {prop: "fmtFloat", name: "fmtFloat", pkg: "fmt", typ: $funcType([$Float64, $Int, $Int32, $Int], [], false)}]; + ptrType$27.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [$error], false)}]; + ptrType$28.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [sliceType$4], false)}]; + ScanState.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "SkipSpace", name: "SkipSpace", pkg: "", typ: $funcType([], [], false)}, {prop: "Token", name: "Token", pkg: "", typ: $funcType([$Bool, funcType], [sliceType$3, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}]); + Scanner.init([{prop: "Scan", name: "Scan", pkg: "", typ: $funcType([ScanState, $Int32], [$error], false)}]); + scanError.init("fmt", [{prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + ss.init("fmt", [{prop: "rs", name: "rs", embedded: false, exported: false, typ: io.RuneScanner, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: buffer, tag: ""}, {prop: "count", name: "count", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "atEOF", name: "atEOF", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "ssave", name: "ssave", embedded: true, exported: false, typ: ssave, tag: ""}]); + ssave.init("fmt", [{prop: "validSave", name: "validSave", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "nlIsEnd", name: "nlIsEnd", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "nlIsSpace", name: "nlIsSpace", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "argLimit", name: "argLimit", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "limit", name: "limit", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "maxWid", name: "maxWid", embedded: false, exported: false, typ: $Int, tag: ""}]); + readRune.init("fmt", [{prop: "reader", name: "reader", embedded: false, exported: false, typ: io.Reader, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: arrayType$2, tag: ""}, {prop: "pending", name: "pending", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "pendBuf", name: "pendBuf", embedded: false, exported: false, typ: arrayType$2, tag: ""}, {prop: "peekRune", name: "peekRune", embedded: false, exported: false, typ: $Int32, tag: ""}]); + State.init([{prop: "Flag", name: "Flag", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "Precision", name: "Precision", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$3], [$Int, $error], false)}]); + Formatter.init([{prop: "Format", name: "Format", pkg: "", typ: $funcType([State, $Int32], [], false)}]); + Stringer.init([{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]); + GoStringer.init([{prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]); + buffer.init($Uint8); + pp.init("fmt", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: buffer, tag: ""}, {prop: "arg", name: "arg", embedded: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "value", name: "value", embedded: false, exported: false, typ: reflect.Value, tag: ""}, {prop: "fmt", name: "fmt", embedded: false, exported: false, typ: fmt, tag: ""}, {prop: "reordered", name: "reordered", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "goodArgNum", name: "goodArgNum", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "panicking", name: "panicking", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "erroring", name: "erroring", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "wrapErrs", name: "wrapErrs", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "wrappedErrs", name: "wrappedErrs", embedded: false, exported: false, typ: sliceType$2, tag: ""}]); + fmtFlags.init("fmt", [{prop: "widPresent", name: "widPresent", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "precPresent", name: "precPresent", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "minus", name: "minus", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "plus", name: "plus", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "sharp", name: "sharp", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "space", name: "space", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "zero", name: "zero", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "plusV", name: "plusV", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "sharpV", name: "sharpV", embedded: false, exported: false, typ: $Bool, tag: ""}]); + fmt.init("fmt", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "fmtFlags", name: "fmtFlags", embedded: true, exported: false, typ: fmtFlags, tag: ""}, {prop: "wid", name: "wid", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "prec", name: "prec", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "intbuf", name: "intbuf", embedded: false, exported: false, typ: arrayType$1, tag: ""}]); + wrapError.init("fmt", [{prop: "msg", name: "msg", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + wrapErrors.init("fmt", [{prop: "msg", name: "msg", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "errs", name: "errs", embedded: false, exported: false, typ: sliceType$4, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmtsort.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + space = new sliceType([$clone($toNativeArray($kindUint16, [9, 13]), arrayType), $clone($toNativeArray($kindUint16, [32, 32]), arrayType), $clone($toNativeArray($kindUint16, [133, 133]), arrayType), $clone($toNativeArray($kindUint16, [160, 160]), arrayType), $clone($toNativeArray($kindUint16, [5760, 5760]), arrayType), $clone($toNativeArray($kindUint16, [8192, 8202]), arrayType), $clone($toNativeArray($kindUint16, [8232, 8233]), arrayType), $clone($toNativeArray($kindUint16, [8239, 8239]), arrayType), $clone($toNativeArray($kindUint16, [8287, 8287]), arrayType), $clone($toNativeArray($kindUint16, [12288, 12288]), arrayType)]); + ssFree = new sync.Pool.ptr(sliceType$1.nil, (function func1() { + return new ss.ptr($ifaceNil, buffer.nil, 0, false, new ssave.ptr(false, false, false, 0, 0, 0)); + })); + complexError = errors.New("syntax error scanning complex number"); + boolError = errors.New("syntax error scanning boolean"); + ppFree = new sync.Pool.ptr(sliceType$1.nil, (function func2() { + return new pp.ptr(buffer.nil, $ifaceNil, new reflect.Value.ptr(ptrType.nil, 0, 0), new fmt.ptr(ptrType$1.nil, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false), 0, 0, arrayType$1.zero()), false, false, false, false, false, sliceType$2.nil); + })); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["bytes"] = (function() { + var $pkg = {}, $init, errors, bytealg, io, unicode, utf8, Reader, asciiSet, Buffer, readOp, sliceType, arrayType, ptrType, arrayType$1, ptrType$1, ptrType$2, asciiSpace, errNegativeRead, errUnreadByte, NewReader, IndexByte, Equal, Compare, Count, Contains, ContainsAny, LastIndexByte, IndexRune, IndexAny, HasPrefix, HasSuffix, Repeat, TrimLeftFunc, TrimRightFunc, TrimFunc, TrimPrefix, indexFunc, lastIndexFunc, makeASCIISet, containsRune, TrimLeft, trimLeftByte, trimLeftASCII, trimLeftUnicode, TrimRight, trimRightByte, trimRightASCII, trimRightUnicode, TrimSpace, EqualFold, Index, Cut, Clone, growSlice, NewBuffer, NewBufferString; + errors = $packages["errors"]; + bytealg = $packages["internal/bytealg"]; + io = $packages["io"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + Reader = $newType(0, $kindStruct, "bytes.Reader", true, "bytes", true, function(s_, i_, prevRune_) { + this.$val = this; + if (arguments.length === 0) { + this.s = sliceType.nil; + this.i = new $Int64(0, 0); + this.prevRune = 0; + return; + } + this.s = s_; + this.i = i_; + this.prevRune = prevRune_; + }); + asciiSet = $newType(32, $kindArray, "bytes.asciiSet", true, "bytes", false, null); + Buffer = $newType(0, $kindStruct, "bytes.Buffer", true, "bytes", true, function(buf_, off_, lastRead_) { + this.$val = this; + if (arguments.length === 0) { + this.buf = sliceType.nil; + this.off = 0; + this.lastRead = 0; + return; + } + this.buf = buf_; + this.off = off_; + this.lastRead = lastRead_; + }); + readOp = $newType(1, $kindInt8, "bytes.readOp", true, "bytes", false, null); + $pkg.Reader = Reader; + $pkg.asciiSet = asciiSet; + $pkg.Buffer = Buffer; + $pkg.readOp = readOp; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint8); + arrayType = $arrayType($Uint8, 4); + ptrType = $ptrType(asciiSet); + arrayType$1 = $arrayType($Uint32, 8); + ptrType$1 = $ptrType(Buffer); + ptrType$2 = $ptrType(Reader); + $ptrType(Reader).prototype.Len = function Len() { + var r, x, x$1, x$2, x$3, x$4; + r = this; + if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + return 0; + } + return (((x$2 = (x$3 = (new $Int64(0, r.s.$length)), x$4 = r.i, new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)); + }; + $ptrType(Reader).prototype.Size = function Size() { + var r; + r = this; + return (new $Int64(0, r.s.$length)); + }; + $ptrType(Reader).prototype.Read = function Read(b) { + var _tmp, _tmp$1, b, err, n, r, x, x$1, x$2, x$3; + n = 0; + err = $ifaceNil; + r = this; + if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + _tmp = 0; + _tmp$1 = io.EOF; + n = _tmp; + err = _tmp$1; + return [n, err]; + } + r.prevRune = -1; + n = $copySlice(b, $subslice(r.s, $flatten64(r.i))); + r.i = (x$2 = r.i, x$3 = (new $Int64(0, n)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); + return [n, err]; + }; + $ptrType(Reader).prototype.ReadAt = function ReadAt(b, off) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, off, r, x; + n = 0; + err = $ifaceNil; + r = this; + if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) { + _tmp = 0; + _tmp$1 = errors.New("bytes.Reader.ReadAt: negative offset"); + n = _tmp; + err = _tmp$1; + return [n, err]; + } + if ((x = (new $Int64(0, r.s.$length)), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) { + _tmp$2 = 0; + _tmp$3 = io.EOF; + n = _tmp$2; + err = _tmp$3; + return [n, err]; + } + n = $copySlice(b, $subslice(r.s, $flatten64(off))); + if (n < b.$length) { + err = io.EOF; + } + return [n, err]; + }; + $ptrType(Reader).prototype.ReadByte = function ReadByte() { + var b, r, x, x$1, x$2, x$3, x$4, x$5; + r = this; + r.prevRune = -1; + if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + return [0, io.EOF]; + } + b = (x$2 = r.s, x$3 = r.i, (($flatten64(x$3) < 0 || $flatten64(x$3) >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + $flatten64(x$3)])); + r.i = (x$4 = r.i, x$5 = new $Int64(0, 1), new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low)); + return [b, $ifaceNil]; + }; + $ptrType(Reader).prototype.UnreadByte = function UnreadByte() { + var r, x, x$1, x$2; + r = this; + if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) { + return errors.New("bytes.Reader.UnreadByte: at beginning of slice"); + } + r.prevRune = -1; + r.i = (x$1 = r.i, x$2 = new $Int64(0, 1), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)); + return $ifaceNil; + }; + $ptrType(Reader).prototype.ReadRune = function ReadRune() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, ch, err, r, size, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; + ch = 0; + size = 0; + err = $ifaceNil; + r = this; + if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + r.prevRune = -1; + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = io.EOF; + ch = _tmp; + size = _tmp$1; + err = _tmp$2; + return [ch, size, err]; + } + r.prevRune = (((x$2 = r.i, x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)); + c = (x$3 = r.s, x$4 = r.i, (($flatten64(x$4) < 0 || $flatten64(x$4) >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + $flatten64(x$4)])); + if (c < 128) { + r.i = (x$5 = r.i, x$6 = new $Int64(0, 1), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)); + _tmp$3 = ((c >> 0)); + _tmp$4 = 1; + _tmp$5 = $ifaceNil; + ch = _tmp$3; + size = _tmp$4; + err = _tmp$5; + return [ch, size, err]; + } + _tuple = utf8.DecodeRune($subslice(r.s, $flatten64(r.i))); + ch = _tuple[0]; + size = _tuple[1]; + r.i = (x$7 = r.i, x$8 = (new $Int64(0, size)), new $Int64(x$7.$high + x$8.$high, x$7.$low + x$8.$low)); + return [ch, size, err]; + }; + $ptrType(Reader).prototype.UnreadRune = function UnreadRune() { + var r, x; + r = this; + if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) { + return errors.New("bytes.Reader.UnreadRune: at beginning of slice"); + } + if (r.prevRune < 0) { + return errors.New("bytes.Reader.UnreadRune: previous operation was not ReadRune"); + } + r.i = (new $Int64(0, r.prevRune)); + r.prevRune = -1; + return $ifaceNil; + }; + $ptrType(Reader).prototype.Seek = function Seek(offset, whence) { + var _1, abs, offset, r, whence, x, x$1; + r = this; + r.prevRune = -1; + abs = new $Int64(0, 0); + _1 = whence; + if (_1 === (0)) { + abs = offset; + } else if (_1 === (1)) { + abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low)); + } else if (_1 === (2)) { + abs = (x$1 = (new $Int64(0, r.s.$length)), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low)); + } else { + return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: invalid whence")]; + } + if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) { + return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: negative position")]; + } + r.i = abs; + return [abs, $ifaceNil]; + }; + $ptrType(Reader).prototype.WriteTo = function WriteTo(w) { + var {_r, _tmp, _tmp$1, _tuple, b, err, m, n, r, w, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {w}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + r = this; + r.prevRune = -1; + if ((x = r.i, x$1 = (new $Int64(0, r.s.$length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + _tmp = new $Int64(0, 0); + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + b = $subslice(r.s, $flatten64(r.i)); + _r = w.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + m = _tuple[0]; + err = _tuple[1]; + if (m > b.$length) { + $panic(new $String("bytes.Reader.WriteTo: invalid Write count")); + } + r.i = (x$2 = r.i, x$3 = (new $Int64(0, m)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); + n = (new $Int64(0, m)); + if (!((m === b.$length)) && $interfaceIsEqual(err, $ifaceNil)) { + err = io.ErrShortWrite; + } + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: WriteTo, $c: true, $r, _r, _tmp, _tmp$1, _tuple, b, err, m, n, r, w, x, x$1, x$2, x$3, $s};return $f; + }; + $ptrType(Reader).prototype.Reset = function Reset(b) { + var b, r; + r = this; + Reader.copy(r, new Reader.ptr(b, new $Int64(0, 0), -1)); + }; + NewReader = function NewReader$1(b) { + var b; + return new Reader.ptr(b, new $Int64(0, 0), -1); + }; + $pkg.NewReader = NewReader; + IndexByte = function IndexByte$1(s, c) { + var _i, _ref, b, c, i, s; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (b === c) { + return i; + } + _i++; + } + return -1; + }; + $pkg.IndexByte = IndexByte; + Equal = function Equal$1(a, b) { + var _i, _ref, a, b, c, i; + if (!((a.$length === b.$length))) { + return false; + } + _ref = a; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((c === ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i])))) { + return false; + } + _i++; + } + return true; + }; + $pkg.Equal = Equal; + Compare = function Compare$1(a, b) { + var _i, _ref, a, b, ca, cb, i; + _ref = a; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ca = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i >= b.$length) { + return 1; + } + cb = ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]); + if (ca < cb) { + return -1; + } + if (ca > cb) { + return 1; + } + _i++; + } + if (a.$length < b.$length) { + return -1; + } + return 0; + }; + $pkg.Compare = Compare; + Count = function Count$1(s, sep) { + var i, n, s, sep; + if (sep.$length === 0) { + return utf8.RuneCount(s) + 1 >> 0; + } + if (sep.$length === 1) { + return bytealg.Count(s, (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0])); + } + n = 0; + while (true) { + i = Index(s, sep); + if (i === -1) { + return n; + } + n = n + (1) >> 0; + s = $subslice(s, (i + sep.$length >> 0)); + } + }; + $pkg.Count = Count; + Contains = function Contains$1(b, subslice) { + var b, subslice; + return !((Index(b, subslice) === -1)); + }; + $pkg.Contains = Contains; + ContainsAny = function ContainsAny$1(b, chars) { + var b, chars; + return IndexAny(b, chars) >= 0; + }; + $pkg.ContainsAny = ContainsAny; + LastIndexByte = function LastIndexByte$1(s, c) { + var c, i, s; + i = s.$length - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + if (((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === c) { + return i; + } + i = i - (1) >> 0; + } + return -1; + }; + $pkg.LastIndexByte = LastIndexByte; + IndexRune = function IndexRune$1(s, r) { + var _tuple, b, i, n, n$1, r, r1, s; + if (0 <= r && r < 128) { + return IndexByte(s, ((r << 24 >>> 24))); + } else if ((r === 65533)) { + i = 0; + while (true) { + if (!(i < s.$length)) { break; } + _tuple = utf8.DecodeRune($subslice(s, i)); + r1 = _tuple[0]; + n = _tuple[1]; + if (r1 === 65533) { + return i; + } + i = i + (n) >> 0; + } + return -1; + } else if (!utf8.ValidRune(r)) { + return -1; + } else { + b = arrayType.zero(); + n$1 = utf8.EncodeRune(new sliceType(b), r); + return Index(s, $subslice(new sliceType(b), 0, n$1)); + } + }; + $pkg.IndexRune = IndexRune; + IndexAny = function IndexAny$1(s, chars) { + var _i, _i$1, _i$2, _ref, _ref$1, _ref$2, _rune, _rune$1, _tuple, _tuple$1, as, c, ch, chars, i, i$1, isASCII, r, r$1, r$2, s, width; + if (chars === "") { + return -1; + } + if (s.$length === 1) { + r = (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) >> 0)); + if (r >= 128) { + _ref = chars; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + r = _rune[0]; + if (r === 65533) { + return 0; + } + _i += _rune[1]; + } + return -1; + } + if (bytealg.IndexByteString(chars, (0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0])) >= 0) { + return 0; + } + return -1; + } + if (chars.length === 1) { + r$1 = ((chars.charCodeAt(0) >> 0)); + if (r$1 >= 128) { + r$1 = 65533; + } + return IndexRune(s, r$1); + } + if (s.$length > 8) { + _tuple = makeASCIISet(chars); + as = $clone(_tuple[0], asciiSet); + isASCII = _tuple[1]; + if (isASCII) { + _ref$1 = s; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i = _i$1; + c = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (new ptrType(as).contains(c)) { + return i; + } + _i$1++; + } + return -1; + } + } + width = 0; + i$1 = 0; + while (true) { + if (!(i$1 < s.$length)) { break; } + r$2 = ((((i$1 < 0 || i$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i$1]) >> 0)); + if (r$2 < 128) { + if (bytealg.IndexByteString(chars, ((i$1 < 0 || i$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i$1])) >= 0) { + return i$1; + } + width = 1; + i$1 = i$1 + (width) >> 0; + continue; + } + _tuple$1 = utf8.DecodeRune($subslice(s, i$1)); + r$2 = _tuple$1[0]; + width = _tuple$1[1]; + if (!((r$2 === 65533))) { + if (chars.length === width) { + if (chars === ($encodeRune(r$2))) { + return i$1; + } + i$1 = i$1 + (width) >> 0; + continue; + } + if (bytealg.MaxLen >= width) { + if (bytealg.IndexString(chars, ($encodeRune(r$2))) >= 0) { + return i$1; + } + i$1 = i$1 + (width) >> 0; + continue; + } + } + _ref$2 = chars; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.length)) { break; } + _rune$1 = $decodeRune(_ref$2, _i$2); + ch = _rune$1[0]; + if (r$2 === ch) { + return i$1; + } + _i$2 += _rune$1[1]; + } + i$1 = i$1 + (width) >> 0; + } + return -1; + }; + $pkg.IndexAny = IndexAny; + HasPrefix = function HasPrefix$1(s, prefix) { + var prefix, s; + return s.$length >= prefix.$length && Equal($subslice(s, 0, prefix.$length), prefix); + }; + $pkg.HasPrefix = HasPrefix; + HasSuffix = function HasSuffix$1(s, suffix) { + var s, suffix; + return s.$length >= suffix.$length && Equal($subslice(s, (s.$length - suffix.$length >> 0)), suffix); + }; + $pkg.HasSuffix = HasSuffix; + Repeat = function Repeat$1(b, count) { + var _q, _q$1, b, bp, chunk, chunkMax, count, n, nb; + if (count === 0) { + return new sliceType([]); + } + if (count < 0) { + $panic(new $String("bytes: negative Repeat count")); + } else if (!(((_q = ($imul(b.$length, count)) / count, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === b.$length))) { + $panic(new $String("bytes: Repeat count causes overflow")); + } + if (b.$length === 0) { + return new sliceType([]); + } + n = $imul(b.$length, count); + chunkMax = n; + if (chunkMax > 8192) { + chunkMax = $imul((_q$1 = 8192 / b.$length, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), b.$length); + if (chunkMax === 0) { + chunkMax = b.$length; + } + } + nb = $makeSlice(sliceType, n); + bp = $copySlice(nb, b); + while (true) { + if (!(bp < nb.$length)) { break; } + chunk = bp; + if (chunk > chunkMax) { + chunk = chunkMax; + } + bp = bp + ($copySlice($subslice(nb, bp), $subslice(nb, 0, chunk))) >> 0; + } + return nb; + }; + $pkg.Repeat = Repeat; + TrimLeftFunc = function TrimLeftFunc$1(s, f) { + var {_r, f, i, s, $s, $r, $c} = $restore(this, {s, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = indexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + if (i === -1) { + $s = -1; return sliceType.nil; + } + $s = -1; return $subslice(s, i); + /* */ } return; } var $f = {$blk: TrimLeftFunc$1, $c: true, $r, _r, f, i, s, $s};return $f; + }; + $pkg.TrimLeftFunc = TrimLeftFunc; + TrimRightFunc = function TrimRightFunc$1(s, f) { + var {_r, _tuple, f, i, s, wid, $s, $r, $c} = $restore(this, {s, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = lastIndexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + if (i >= 0 && ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) >= 128) { + _tuple = utf8.DecodeRune($subslice(s, i)); + wid = _tuple[1]; + i = i + (wid) >> 0; + } else { + i = i + (1) >> 0; + } + $s = -1; return $subslice(s, 0, i); + /* */ } return; } var $f = {$blk: TrimRightFunc$1, $c: true, $r, _r, _tuple, f, i, s, wid, $s};return $f; + }; + $pkg.TrimRightFunc = TrimRightFunc; + TrimFunc = function TrimFunc$1(s, f) { + var {$24r, _r, _r$1, f, s, $s, $r, $c} = $restore(this, {s, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = TrimLeftFunc(s, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = TrimRightFunc(_r, f); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: TrimFunc$1, $c: true, $r, $24r, _r, _r$1, f, s, $s};return $f; + }; + $pkg.TrimFunc = TrimFunc; + TrimPrefix = function TrimPrefix$1(s, prefix) { + var prefix, s; + if (HasPrefix(s, prefix)) { + return $subslice(s, prefix.$length); + } + return s; + }; + $pkg.TrimPrefix = TrimPrefix; + indexFunc = function indexFunc$1(s, f, truth) { + var {_r, _tuple, f, r, s, start, truth, wid, $s, $r, $c} = $restore(this, {s, f, truth}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + start = 0; + /* while (true) { */ case 1: + /* if (!(start < s.$length)) { break; } */ if(!(start < s.$length)) { $s = 2; continue; } + wid = 1; + r = ((((start < 0 || start >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + start]) >> 0)); + if (r >= 128) { + _tuple = utf8.DecodeRune($subslice(s, start)); + r = _tuple[0]; + wid = _tuple[1]; + } + _r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === truth) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r === truth) { */ case 3: + $s = -1; return start; + /* } */ case 4: + start = start + (wid) >> 0; + $s = 1; continue; + case 2: + $s = -1; return -1; + /* */ } return; } var $f = {$blk: indexFunc$1, $c: true, $r, _r, _tuple, f, r, s, start, truth, wid, $s};return $f; + }; + lastIndexFunc = function lastIndexFunc$1(s, f, truth) { + var {_r, _tmp, _tmp$1, _tuple, f, i, r, s, size, truth, x, $s, $r, $c} = $restore(this, {s, f, truth}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = s.$length; + /* while (true) { */ case 1: + /* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; } + _tmp = (((x = i - 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) >> 0)); + _tmp$1 = 1; + r = _tmp; + size = _tmp$1; + if (r >= 128) { + _tuple = utf8.DecodeLastRune($subslice(s, 0, i)); + r = _tuple[0]; + size = _tuple[1]; + } + i = i - (size) >> 0; + _r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === truth) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r === truth) { */ case 3: + $s = -1; return i; + /* } */ case 4: + $s = 1; continue; + case 2: + $s = -1; return -1; + /* */ } return; } var $f = {$blk: lastIndexFunc$1, $c: true, $r, _r, _tmp, _tmp$1, _tuple, f, i, r, s, size, truth, x, $s};return $f; + }; + makeASCIISet = function makeASCIISet$1(chars) { + var _index, _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, as, c, chars, i, ok, y; + as = arrayType$1.zero(); + ok = false; + i = 0; + while (true) { + if (!(i < chars.length)) { break; } + c = chars.charCodeAt(i); + if (c >= 128) { + _tmp = $clone(as, asciiSet); + _tmp$1 = false; + asciiSet.copy(as, _tmp); + ok = _tmp$1; + return [as, ok]; + } + _index = (_q = c / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + ((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index] = ((((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index]) | (((y = ((_r = c % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0)); + i = i + (1) >> 0; + } + _tmp$2 = $clone(as, asciiSet); + _tmp$3 = true; + asciiSet.copy(as, _tmp$2); + ok = _tmp$3; + return [as, ok]; + }; + $ptrType(asciiSet).prototype.contains = function contains(c) { + var _q, _r, as, c, x, x$1, y; + as = this.$val; + return !((((((x = as, x$1 = (_q = c / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) & (((y = ((_r = c % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0)) === 0)); + }; + containsRune = function containsRune$1(s, r) { + var _i, _ref, _rune, c, r, s; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + c = _rune[0]; + if (c === r) { + return true; + } + _i += _rune[1]; + } + return false; + }; + TrimLeft = function TrimLeft$1(s, cutset) { + var _tuple, as, cutset, ok, s; + if (s.$length === 0) { + return sliceType.nil; + } + if (cutset === "") { + return s; + } + if ((cutset.length === 1) && cutset.charCodeAt(0) < 128) { + return trimLeftByte(s, cutset.charCodeAt(0)); + } + _tuple = makeASCIISet(cutset); + as = $clone(_tuple[0], asciiSet); + ok = _tuple[1]; + if (ok) { + return trimLeftASCII(s, as); + } + return trimLeftUnicode(s, cutset); + }; + $pkg.TrimLeft = TrimLeft; + trimLeftByte = function trimLeftByte$1(s, c) { + var c, s; + while (true) { + if (!(s.$length > 0 && ((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) === c))) { break; } + s = $subslice(s, 1); + } + if (s.$length === 0) { + return sliceType.nil; + } + return s; + }; + trimLeftASCII = function trimLeftASCII$1(s, as) { + var as, s; + while (true) { + if (!(s.$length > 0)) { break; } + if (!new ptrType(as).contains((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]))) { + break; + } + s = $subslice(s, 1); + } + if (s.$length === 0) { + return sliceType.nil; + } + return s; + }; + trimLeftUnicode = function trimLeftUnicode$1(s, cutset) { + var _tmp, _tmp$1, _tuple, cutset, n, r, s; + while (true) { + if (!(s.$length > 0)) { break; } + _tmp = (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) >> 0)); + _tmp$1 = 1; + r = _tmp; + n = _tmp$1; + if (r >= 128) { + _tuple = utf8.DecodeRune(s); + r = _tuple[0]; + n = _tuple[1]; + } + if (!containsRune(cutset, r)) { + break; + } + s = $subslice(s, n); + } + if (s.$length === 0) { + return sliceType.nil; + } + return s; + }; + TrimRight = function TrimRight$1(s, cutset) { + var _tuple, as, cutset, ok, s; + if ((s.$length === 0) || cutset === "") { + return s; + } + if ((cutset.length === 1) && cutset.charCodeAt(0) < 128) { + return trimRightByte(s, cutset.charCodeAt(0)); + } + _tuple = makeASCIISet(cutset); + as = $clone(_tuple[0], asciiSet); + ok = _tuple[1]; + if (ok) { + return trimRightASCII(s, as); + } + return trimRightUnicode(s, cutset); + }; + $pkg.TrimRight = TrimRight; + trimRightByte = function trimRightByte$1(s, c) { + var c, s, x; + while (true) { + if (!(s.$length > 0 && ((x = s.$length - 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) === c))) { break; } + s = $subslice(s, 0, (s.$length - 1 >> 0)); + } + return s; + }; + trimRightASCII = function trimRightASCII$1(s, as) { + var as, s, x; + while (true) { + if (!(s.$length > 0)) { break; } + if (!new ptrType(as).contains((x = s.$length - 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])))) { + break; + } + s = $subslice(s, 0, (s.$length - 1 >> 0)); + } + return s; + }; + trimRightUnicode = function trimRightUnicode$1(s, cutset) { + var _tmp, _tmp$1, _tuple, cutset, n, r, s, x; + while (true) { + if (!(s.$length > 0)) { break; } + _tmp = (((x = s.$length - 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) >> 0)); + _tmp$1 = 1; + r = _tmp; + n = _tmp$1; + if (r >= 128) { + _tuple = utf8.DecodeLastRune(s); + r = _tuple[0]; + n = _tuple[1]; + } + if (!containsRune(cutset, r)) { + break; + } + s = $subslice(s, 0, (s.$length - n >> 0)); + } + return s; + }; + TrimSpace = function TrimSpace$1(s) { + var {$24r, $24r$1, _r, _r$1, c, c$1, s, start, stop, x, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + start = 0; + /* while (true) { */ case 1: + /* if (!(start < s.$length)) { break; } */ if(!(start < s.$length)) { $s = 2; continue; } + c = ((start < 0 || start >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + start]); + /* */ if (c >= 128) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (c >= 128) { */ case 3: + _r = TrimFunc($subslice(s, start), unicode.IsSpace); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 6; case 6: return $24r; + /* } */ case 4: + if (((c < 0 || c >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[c]) === 0) { + /* break; */ $s = 2; continue; + } + start = start + (1) >> 0; + $s = 1; continue; + case 2: + stop = s.$length; + /* while (true) { */ case 7: + /* if (!(stop > start)) { break; } */ if(!(stop > start)) { $s = 8; continue; } + c$1 = (x = stop - 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])); + /* */ if (c$1 >= 128) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (c$1 >= 128) { */ case 9: + _r$1 = TrimFunc($subslice(s, start, stop), unicode.IsSpace); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 12; case 12: return $24r$1; + /* } */ case 10: + if (((c$1 < 0 || c$1 >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[c$1]) === 0) { + /* break; */ $s = 8; continue; + } + stop = stop - (1) >> 0; + $s = 7; continue; + case 8: + if (start === stop) { + $s = -1; return sliceType.nil; + } + $s = -1; return $subslice(s, start, stop); + /* */ } return; } var $f = {$blk: TrimSpace$1, $c: true, $r, $24r, $24r$1, _r, _r$1, c, c$1, s, start, stop, x, $s};return $f; + }; + $pkg.TrimSpace = TrimSpace; + EqualFold = function EqualFold$1(s, t) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, i, r, r$1, r$2, s, size, size$1, sr, sr$1, t, tr, tr$1, $s; + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = 0; + /* while (true) { */ case 1: + /* if (!(i < s.$length && i < t.$length)) { break; } */ if(!(i < s.$length && i < t.$length)) { $s = 2; continue; } + sr = ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]); + tr = ((i < 0 || i >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + i]); + /* */ if (((sr | tr) >>> 0) >= 128) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (((sr | tr) >>> 0) >= 128) { */ case 3: + /* goto hasUnicode */ $s = 5; continue; + /* } */ case 4: + if (tr === sr) { + i = i + (1) >> 0; + /* continue; */ $s = 1; continue; + } + if (tr < sr) { + _tmp = sr; + _tmp$1 = tr; + tr = _tmp; + sr = _tmp$1; + } + if (65 <= sr && sr <= 90 && (tr === ((sr + 97 << 24 >>> 24) - 65 << 24 >>> 24))) { + i = i + (1) >> 0; + /* continue; */ $s = 1; continue; + } + $s = -1; return false; + case 2: + $s = -1; return s.$length === t.$length; + /* hasUnicode: */ case 5: + s = $subslice(s, i); + t = $subslice(t, i); + while (true) { + if (!(!((s.$length === 0)) && !((t.$length === 0)))) { break; } + _tmp$2 = 0; + _tmp$3 = 0; + sr$1 = _tmp$2; + tr$1 = _tmp$3; + if ((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) < 128) { + _tmp$4 = (((0 >= s.$length ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + 0]) >> 0)); + _tmp$5 = $subslice(s, 1); + sr$1 = _tmp$4; + s = _tmp$5; + } else { + _tuple = utf8.DecodeRune(s); + r = _tuple[0]; + size = _tuple[1]; + _tmp$6 = r; + _tmp$7 = $subslice(s, size); + sr$1 = _tmp$6; + s = _tmp$7; + } + if ((0 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 0]) < 128) { + _tmp$8 = (((0 >= t.$length ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + 0]) >> 0)); + _tmp$9 = $subslice(t, 1); + tr$1 = _tmp$8; + t = _tmp$9; + } else { + _tuple$1 = utf8.DecodeRune(t); + r$1 = _tuple$1[0]; + size$1 = _tuple$1[1]; + _tmp$10 = r$1; + _tmp$11 = $subslice(t, size$1); + tr$1 = _tmp$10; + t = _tmp$11; + } + if (tr$1 === sr$1) { + continue; + } + if (tr$1 < sr$1) { + _tmp$12 = sr$1; + _tmp$13 = tr$1; + tr$1 = _tmp$12; + sr$1 = _tmp$13; + } + if (tr$1 < 128) { + if (65 <= sr$1 && sr$1 <= 90 && (tr$1 === ((sr$1 + 97 >> 0) - 65 >> 0))) { + continue; + } + $s = -1; return false; + } + r$2 = unicode.SimpleFold(sr$1); + while (true) { + if (!(!((r$2 === sr$1)) && r$2 < tr$1)) { break; } + r$2 = unicode.SimpleFold(r$2); + } + if (r$2 === tr$1) { + continue; + } + $s = -1; return false; + } + $s = -1; return s.$length === t.$length; + /* */ } return; } + }; + $pkg.EqualFold = EqualFold; + Index = function Index$1(s, sep) { + var c0, c0$1, c1, c1$1, fails, fails$1, i, i$1, j, n, o, o$1, r, s, sep, t, t$1, x, x$1; + n = sep.$length; + if ((n === 0)) { + return 0; + } else if ((n === 1)) { + return IndexByte(s, (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0])); + } else if ((n === s.$length)) { + if (Equal(sep, s)) { + return 0; + } + return -1; + } else if (n > s.$length) { + return -1; + } else if (n <= bytealg.MaxLen) { + if (s.$length <= 0) { + return bytealg.Index(s, sep); + } + c0 = (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0]); + c1 = (1 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 1]); + i = 0; + t = (s.$length - n >> 0) + 1 >> 0; + fails = 0; + while (true) { + if (!(i < t)) { break; } + if (!((((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === c0))) { + o = IndexByte($subslice(s, (i + 1 >> 0), t), c0); + if (o < 0) { + return -1; + } + i = i + ((o + 1 >> 0)) >> 0; + } + if (((x = i + 1 >> 0, ((x < 0 || x >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x])) === c1) && Equal($subslice(s, i, (i + n >> 0)), sep)) { + return i; + } + fails = fails + (1) >> 0; + i = i + (1) >> 0; + if (fails > bytealg.Cutover(i)) { + r = bytealg.Index($subslice(s, i), sep); + if (r >= 0) { + return r + i >> 0; + } + return -1; + } + } + return -1; + } + c0$1 = (0 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 0]); + c1$1 = (1 >= sep.$length ? ($throwRuntimeError("index out of range"), undefined) : sep.$array[sep.$offset + 1]); + i$1 = 0; + fails$1 = 0; + t$1 = (s.$length - n >> 0) + 1 >> 0; + while (true) { + if (!(i$1 < t$1)) { break; } + if (!((((i$1 < 0 || i$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i$1]) === c0$1))) { + o$1 = IndexByte($subslice(s, (i$1 + 1 >> 0), t$1), c0$1); + if (o$1 < 0) { + break; + } + i$1 = i$1 + ((o$1 + 1 >> 0)) >> 0; + } + if (((x$1 = i$1 + 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + x$1])) === c1$1) && Equal($subslice(s, i$1, (i$1 + n >> 0)), sep)) { + return i$1; + } + i$1 = i$1 + (1) >> 0; + fails$1 = fails$1 + (1) >> 0; + if (fails$1 >= (4 + (i$1 >> 4 >> 0) >> 0) && i$1 < t$1) { + j = bytealg.IndexRabinKarpBytes($subslice(s, i$1), sep); + if (j < 0) { + return -1; + } + return i$1 + j >> 0; + } + } + return -1; + }; + $pkg.Index = Index; + Cut = function Cut$1(s, sep) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, after, before, found, i, s, sep; + before = sliceType.nil; + after = sliceType.nil; + found = false; + i = Index(s, sep); + if (i >= 0) { + _tmp = $subslice(s, 0, i); + _tmp$1 = $subslice(s, (i + sep.$length >> 0)); + _tmp$2 = true; + before = _tmp; + after = _tmp$1; + found = _tmp$2; + return [before, after, found]; + } + _tmp$3 = s; + _tmp$4 = sliceType.nil; + _tmp$5 = false; + before = _tmp$3; + after = _tmp$4; + found = _tmp$5; + return [before, after, found]; + }; + $pkg.Cut = Cut; + Clone = function Clone$1(b) { + var b; + if (b === sliceType.nil) { + return sliceType.nil; + } + return $appendSlice(new sliceType([]), b); + }; + $pkg.Clone = Clone; + $ptrType(Buffer).prototype.Bytes = function Bytes() { + var b; + b = this; + return $subslice(b.buf, b.off); + }; + $ptrType(Buffer).prototype.String = function String() { + var b; + b = this; + if (b === ptrType$1.nil) { + return ""; + } + return ($bytesToString($subslice(b.buf, b.off))); + }; + $ptrType(Buffer).prototype.empty = function empty() { + var b; + b = this; + return b.buf.$length <= b.off; + }; + $ptrType(Buffer).prototype.Len = function Len$1() { + var b; + b = this; + return b.buf.$length - b.off >> 0; + }; + $ptrType(Buffer).prototype.Cap = function Cap() { + var b; + b = this; + return b.buf.$capacity; + }; + $ptrType(Buffer).prototype.Truncate = function Truncate(n) { + var b, n; + b = this; + if (n === 0) { + b.Reset(); + return; + } + b.lastRead = 0; + if (n < 0 || n > b.Len()) { + $panic(new $String("bytes.Buffer: truncation out of range")); + } + b.buf = $subslice(b.buf, 0, (b.off + n >> 0)); + }; + $ptrType(Buffer).prototype.Reset = function Reset$1() { + var b; + b = this; + b.buf = $subslice(b.buf, 0, 0); + b.off = 0; + b.lastRead = 0; + }; + $ptrType(Buffer).prototype.tryGrowByReslice = function tryGrowByReslice(n) { + var b, l, n; + b = this; + l = b.buf.$length; + if (n <= (b.buf.$capacity - l >> 0)) { + b.buf = $subslice(b.buf, 0, (l + n >> 0)); + return [l, true]; + } + return [0, false]; + }; + $ptrType(Buffer).prototype.grow = function grow(n) { + var _q, _tuple, b, c, i, m, n, ok; + b = this; + m = b.Len(); + if ((m === 0) && !((b.off === 0))) { + b.Reset(); + } + _tuple = b.tryGrowByReslice(n); + i = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return i; + } + if (b.buf === sliceType.nil && n <= 64) { + b.buf = $makeSlice(sliceType, n, 64); + return 0; + } + c = b.buf.$capacity; + if (n <= ((_q = c / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) - m >> 0)) { + $copySlice(b.buf, $subslice(b.buf, b.off)); + } else if (c > ((2147483647 - c >> 0) - n >> 0)) { + $panic($pkg.ErrTooLarge); + } else { + b.buf = growSlice($subslice(b.buf, b.off), b.off + n >> 0); + } + b.off = 0; + b.buf = $subslice(b.buf, 0, (m + n >> 0)); + return m; + }; + $ptrType(Buffer).prototype.Grow = function Grow(n) { + var b, m, n; + b = this; + if (n < 0) { + $panic(new $String("bytes.Buffer.Grow: negative count")); + } + m = b.grow(n); + b.buf = $subslice(b.buf, 0, m); + }; + $ptrType(Buffer).prototype.Write = function Write(p) { + var _tmp, _tmp$1, _tuple, b, err, m, n, ok, p; + n = 0; + err = $ifaceNil; + b = this; + b.lastRead = 0; + _tuple = b.tryGrowByReslice(p.$length); + m = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + m = b.grow(p.$length); + } + _tmp = $copySlice($subslice(b.buf, m), p); + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + return [n, err]; + }; + $ptrType(Buffer).prototype.WriteString = function WriteString(s) { + var _tmp, _tmp$1, _tuple, b, err, m, n, ok, s; + n = 0; + err = $ifaceNil; + b = this; + b.lastRead = 0; + _tuple = b.tryGrowByReslice(s.length); + m = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + m = b.grow(s.length); + } + _tmp = $copyString($subslice(b.buf, m), s); + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + return [n, err]; + }; + $ptrType(Buffer).prototype.ReadFrom = function ReadFrom(r) { + var {_r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, i, m, n, r, x, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + b = this; + b.lastRead = 0; + /* while (true) { */ case 1: + i = b.grow(512); + b.buf = $subslice(b.buf, 0, i); + _r = r.Read($subslice(b.buf, i, b.buf.$capacity)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + m = _tuple[0]; + e = _tuple[1]; + if (m < 0) { + $panic(errNegativeRead); + } + b.buf = $subslice(b.buf, 0, (i + m >> 0)); + n = (x = (new $Int64(0, m)), new $Int64(n.$high + x.$high, n.$low + x.$low)); + if ($interfaceIsEqual(e, io.EOF)) { + _tmp = n; + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tmp$2 = n; + _tmp$3 = e; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + $s = 1; continue; + case 2: + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: ReadFrom, $c: true, $r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, i, m, n, r, x, $s};return $f; + }; + growSlice = function growSlice$1(b, n) { + var b, b2, c, n, $deferred; + /* */ var $err = null; try { $deferred = []; $curGoroutine.deferStack.push($deferred); + $deferred.push([(function growSlice·func1() { + if (!($interfaceIsEqual($recover(), $ifaceNil))) { + $panic($pkg.ErrTooLarge); + } + }), []]); + c = b.$length + n >> 0; + if (c < ($imul(2, b.$capacity))) { + c = $imul(2, b.$capacity); + } + b2 = $appendSlice((sliceType.nil), $makeSlice(sliceType, c)); + $copySlice(b2, b); + return $subslice(b2, 0, b.$length); + /* */ } catch(err) { $err = err; return sliceType.nil; } finally { $callDeferred($deferred, $err); } + }; + $ptrType(Buffer).prototype.WriteTo = function WriteTo$1(w) { + var {_r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, e, err, m, n, nBytes, w, $s, $r, $c} = $restore(this, {w}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + b = this; + b.lastRead = 0; + nBytes = b.Len(); + /* */ if (nBytes > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (nBytes > 0) { */ case 1: + _r = w.Write($subslice(b.buf, b.off)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + m = _tuple[0]; + e = _tuple[1]; + if (m > nBytes) { + $panic(new $String("bytes.Buffer.WriteTo: invalid Write count")); + } + b.off = b.off + (m) >> 0; + n = (new $Int64(0, m)); + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tmp = n; + _tmp$1 = e; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + if (!((m === nBytes))) { + _tmp$2 = n; + _tmp$3 = io.ErrShortWrite; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + /* } */ case 2: + b.Reset(); + _tmp$4 = n; + _tmp$5 = $ifaceNil; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: WriteTo$1, $c: true, $r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, e, err, m, n, nBytes, w, $s};return $f; + }; + $ptrType(Buffer).prototype.WriteByte = function WriteByte(c) { + var _tuple, b, c, m, ok, x; + b = this; + b.lastRead = 0; + _tuple = b.tryGrowByReslice(1); + m = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + m = b.grow(1); + } + (x = b.buf, ((m < 0 || m >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + m] = c)); + return $ifaceNil; + }; + $ptrType(Buffer).prototype.WriteRune = function WriteRune(r) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, m, n, ok, r; + n = 0; + err = $ifaceNil; + b = this; + if (((r >>> 0)) < 128) { + b.WriteByte(((r << 24 >>> 24))); + _tmp = 1; + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + return [n, err]; + } + b.lastRead = 0; + _tuple = b.tryGrowByReslice(4); + m = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + m = b.grow(4); + } + b.buf = utf8.AppendRune($subslice(b.buf, 0, m), r); + _tmp$2 = b.buf.$length - m >> 0; + _tmp$3 = $ifaceNil; + n = _tmp$2; + err = _tmp$3; + return [n, err]; + }; + $ptrType(Buffer).prototype.Read = function Read$1(p) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, err, n, p; + n = 0; + err = $ifaceNil; + b = this; + b.lastRead = 0; + if (b.empty()) { + b.Reset(); + if (p.$length === 0) { + _tmp = 0; + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + return [n, err]; + } + _tmp$2 = 0; + _tmp$3 = io.EOF; + n = _tmp$2; + err = _tmp$3; + return [n, err]; + } + n = $copySlice(p, $subslice(b.buf, b.off)); + b.off = b.off + (n) >> 0; + if (n > 0) { + b.lastRead = -1; + } + _tmp$4 = n; + _tmp$5 = $ifaceNil; + n = _tmp$4; + err = _tmp$5; + return [n, err]; + }; + $ptrType(Buffer).prototype.Next = function Next(n) { + var b, data, m, n; + b = this; + b.lastRead = 0; + m = b.Len(); + if (n > m) { + n = m; + } + data = $subslice(b.buf, b.off, (b.off + n >> 0)); + b.off = b.off + (n) >> 0; + if (n > 0) { + b.lastRead = -1; + } + return data; + }; + $ptrType(Buffer).prototype.ReadByte = function ReadByte$1() { + var b, c, x, x$1; + b = this; + if (b.empty()) { + b.Reset(); + return [0, io.EOF]; + } + c = (x = b.buf, x$1 = b.off, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + b.off = b.off + (1) >> 0; + b.lastRead = -1; + return [c, $ifaceNil]; + }; + $ptrType(Buffer).prototype.ReadRune = function ReadRune$1() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, b, c, err, n, r, size, x, x$1; + r = 0; + size = 0; + err = $ifaceNil; + b = this; + if (b.empty()) { + b.Reset(); + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = io.EOF; + r = _tmp; + size = _tmp$1; + err = _tmp$2; + return [r, size, err]; + } + c = (x = b.buf, x$1 = b.off, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (c < 128) { + b.off = b.off + (1) >> 0; + b.lastRead = 1; + _tmp$3 = ((c >> 0)); + _tmp$4 = 1; + _tmp$5 = $ifaceNil; + r = _tmp$3; + size = _tmp$4; + err = _tmp$5; + return [r, size, err]; + } + _tuple = utf8.DecodeRune($subslice(b.buf, b.off)); + r = _tuple[0]; + n = _tuple[1]; + b.off = b.off + (n) >> 0; + b.lastRead = ((n << 24 >> 24)); + _tmp$6 = r; + _tmp$7 = n; + _tmp$8 = $ifaceNil; + r = _tmp$6; + size = _tmp$7; + err = _tmp$8; + return [r, size, err]; + }; + $ptrType(Buffer).prototype.UnreadRune = function UnreadRune$1() { + var b; + b = this; + if (b.lastRead <= 0) { + return errors.New("bytes.Buffer: UnreadRune: previous operation was not a successful ReadRune"); + } + if (b.off >= ((b.lastRead >> 0))) { + b.off = b.off - (((b.lastRead >> 0))) >> 0; + } + b.lastRead = 0; + return $ifaceNil; + }; + $ptrType(Buffer).prototype.UnreadByte = function UnreadByte$1() { + var b; + b = this; + if (b.lastRead === 0) { + return errUnreadByte; + } + b.lastRead = 0; + if (b.off > 0) { + b.off = b.off - (1) >> 0; + } + return $ifaceNil; + }; + $ptrType(Buffer).prototype.ReadBytes = function ReadBytes(delim) { + var _tmp, _tmp$1, _tuple, b, delim, err, line, slice; + line = sliceType.nil; + err = $ifaceNil; + b = this; + _tuple = b.readSlice(delim); + slice = _tuple[0]; + err = _tuple[1]; + line = $appendSlice(line, slice); + _tmp = line; + _tmp$1 = err; + line = _tmp; + err = _tmp$1; + return [line, err]; + }; + $ptrType(Buffer).prototype.readSlice = function readSlice(delim) { + var _tmp, _tmp$1, b, delim, end, err, i, line; + line = sliceType.nil; + err = $ifaceNil; + b = this; + i = IndexByte($subslice(b.buf, b.off), delim); + end = (b.off + i >> 0) + 1 >> 0; + if (i < 0) { + end = b.buf.$length; + err = io.EOF; + } + line = $subslice(b.buf, b.off, end); + b.off = end; + b.lastRead = -1; + _tmp = line; + _tmp$1 = err; + line = _tmp; + err = _tmp$1; + return [line, err]; + }; + $ptrType(Buffer).prototype.ReadString = function ReadString(delim) { + var _tmp, _tmp$1, _tuple, b, delim, err, line, slice; + line = ""; + err = $ifaceNil; + b = this; + _tuple = b.readSlice(delim); + slice = _tuple[0]; + err = _tuple[1]; + _tmp = ($bytesToString(slice)); + _tmp$1 = err; + line = _tmp; + err = _tmp$1; + return [line, err]; + }; + NewBuffer = function NewBuffer$1(buf) { + var buf; + return new Buffer.ptr(buf, 0, 0); + }; + $pkg.NewBuffer = NewBuffer; + NewBufferString = function NewBufferString$1(s) { + var s; + return new Buffer.ptr((new sliceType($stringToBytes(s))), 0, 0); + }; + $pkg.NewBufferString = NewBufferString; + ptrType$2.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([sliceType], [], false)}]; + ptrType.methods = [{prop: "contains", name: "contains", pkg: "bytes", typ: $funcType([$Uint8], [$Bool], false)}]; + ptrType$1.methods = [{prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "empty", name: "empty", pkg: "bytes", typ: $funcType([], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Cap", name: "Cap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "tryGrowByReslice", name: "tryGrowByReslice", pkg: "bytes", typ: $funcType([$Int], [$Int, $Bool], false)}, {prop: "grow", name: "grow", pkg: "bytes", typ: $funcType([$Int], [$Int], false)}, {prop: "Grow", name: "Grow", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Next", name: "Next", pkg: "", typ: $funcType([$Int], [sliceType], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadBytes", name: "ReadBytes", pkg: "", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "readSlice", name: "readSlice", pkg: "bytes", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "ReadString", name: "ReadString", pkg: "", typ: $funcType([$Uint8], [$String, $error], false)}]; + Reader.init("bytes", [{prop: "s", name: "s", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "i", name: "i", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", embedded: false, exported: false, typ: $Int, tag: ""}]); + asciiSet.init($Uint32, 8); + Buffer.init("bytes", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "off", name: "off", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastRead", name: "lastRead", embedded: false, exported: false, typ: readOp, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytealg.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + asciiSpace = $toNativeArray($kindUint8, [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); + $pkg.ErrTooLarge = errors.New("bytes.Buffer: too large"); + errNegativeRead = errors.New("bytes.Buffer: reader returned negative count from Read"); + errUnreadByte = errors.New("bytes.Buffer: UnreadByte: previous operation was not a successful read"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["strings"] = (function() { + var $pkg = {}, $init, errors, js, io, sync, unicode, utf8, asciiSet, stringFinder, Replacer, replacer, trieNode, genericReplacer, appendSliceWriter, stringWriter, singleStringReplacer, byteReplacer, byteStringReplacer, Reader, Builder, span, sliceType, ptrType, sliceType$1, ptrType$1, sliceType$2, arrayType, arrayType$1, sliceType$3, arrayType$2, ptrType$2, arrayType$3, ptrType$3, sliceType$4, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, asciiSpace, explode, Contains, ContainsAny, ContainsRune, IndexRune, IndexAny, LastIndexAny, LastIndexByte, genSplit, SplitN, Split, Fields, FieldsFunc, Join, HasPrefix, HasSuffix, Map, ToUpper, ToLower, TrimLeftFunc, TrimRightFunc, TrimFunc, IndexFunc, indexFunc, lastIndexFunc, makeASCIISet, Trim, TrimLeft, trimLeftByte, trimLeftASCII, trimLeftUnicode, TrimRight, trimRightByte, trimRightASCII, trimRightUnicode, TrimSpace, TrimPrefix, TrimSuffix, Replace, ReplaceAll, EqualFold, Cut, CutPrefix, makeStringFinder, longestCommonSuffix, max, NewReplacer, makeGenericReplacer, getStringWriter, makeSingleStringReplacer, NewReader, IndexByte, Index, LastIndex, Count, Repeat; + errors = $packages["errors"]; + js = $packages["github.com/gopherjs/gopherjs/js"]; + io = $packages["io"]; + sync = $packages["sync"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + asciiSet = $newType(32, $kindArray, "strings.asciiSet", true, "strings", false, null); + stringFinder = $newType(0, $kindStruct, "strings.stringFinder", true, "strings", false, function(pattern_, badCharSkip_, goodSuffixSkip_) { + this.$val = this; + if (arguments.length === 0) { + this.pattern = ""; + this.badCharSkip = arrayType$1.zero(); + this.goodSuffixSkip = sliceType$3.nil; + return; + } + this.pattern = pattern_; + this.badCharSkip = badCharSkip_; + this.goodSuffixSkip = goodSuffixSkip_; + }); + Replacer = $newType(0, $kindStruct, "strings.Replacer", true, "strings", true, function(once_, r_, oldnew_) { + this.$val = this; + if (arguments.length === 0) { + this.once = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)); + this.r = $ifaceNil; + this.oldnew = sliceType.nil; + return; + } + this.once = once_; + this.r = r_; + this.oldnew = oldnew_; + }); + replacer = $newType(8, $kindInterface, "strings.replacer", true, "strings", false, null); + trieNode = $newType(0, $kindStruct, "strings.trieNode", true, "strings", false, function(value_, priority_, prefix_, next_, table_) { + this.$val = this; + if (arguments.length === 0) { + this.value = ""; + this.priority = 0; + this.prefix = ""; + this.next = ptrType$3.nil; + this.table = sliceType$4.nil; + return; + } + this.value = value_; + this.priority = priority_; + this.prefix = prefix_; + this.next = next_; + this.table = table_; + }); + genericReplacer = $newType(0, $kindStruct, "strings.genericReplacer", true, "strings", false, function(root_, tableSize_, mapping_) { + this.$val = this; + if (arguments.length === 0) { + this.root = new trieNode.ptr("", 0, "", ptrType$3.nil, sliceType$4.nil); + this.tableSize = 0; + this.mapping = arrayType$2.zero(); + return; + } + this.root = root_; + this.tableSize = tableSize_; + this.mapping = mapping_; + }); + appendSliceWriter = $newType(12, $kindSlice, "strings.appendSliceWriter", true, "strings", false, null); + stringWriter = $newType(0, $kindStruct, "strings.stringWriter", true, "strings", false, function(w_) { + this.$val = this; + if (arguments.length === 0) { + this.w = $ifaceNil; + return; + } + this.w = w_; + }); + singleStringReplacer = $newType(0, $kindStruct, "strings.singleStringReplacer", true, "strings", false, function(finder_, value_) { + this.$val = this; + if (arguments.length === 0) { + this.finder = ptrType$5.nil; + this.value = ""; + return; + } + this.finder = finder_; + this.value = value_; + }); + byteReplacer = $newType(256, $kindArray, "strings.byteReplacer", true, "strings", false, null); + byteStringReplacer = $newType(0, $kindStruct, "strings.byteStringReplacer", true, "strings", false, function(replacements_, toReplace_) { + this.$val = this; + if (arguments.length === 0) { + this.replacements = arrayType$3.zero(); + this.toReplace = sliceType.nil; + return; + } + this.replacements = replacements_; + this.toReplace = toReplace_; + }); + Reader = $newType(0, $kindStruct, "strings.Reader", true, "strings", true, function(s_, i_, prevRune_) { + this.$val = this; + if (arguments.length === 0) { + this.s = ""; + this.i = new $Int64(0, 0); + this.prevRune = 0; + return; + } + this.s = s_; + this.i = i_; + this.prevRune = prevRune_; + }); + Builder = $newType(0, $kindStruct, "strings.Builder", true, "strings", true, function(addr_, buf_) { + this.$val = this; + if (arguments.length === 0) { + this.addr = ptrType$1.nil; + this.buf = sliceType$2.nil; + return; + } + this.addr = addr_; + this.buf = buf_; + }); + span = $newType(0, $kindStruct, "strings.span", true, "strings", false, function(start_, end_) { + this.$val = this; + if (arguments.length === 0) { + this.start = 0; + this.end = 0; + return; + } + this.start = start_; + this.end = end_; + }); + $pkg.asciiSet = asciiSet; + $pkg.stringFinder = stringFinder; + $pkg.Replacer = Replacer; + $pkg.replacer = replacer; + $pkg.trieNode = trieNode; + $pkg.genericReplacer = genericReplacer; + $pkg.appendSliceWriter = appendSliceWriter; + $pkg.stringWriter = stringWriter; + $pkg.singleStringReplacer = singleStringReplacer; + $pkg.byteReplacer = byteReplacer; + $pkg.byteStringReplacer = byteStringReplacer; + $pkg.Reader = Reader; + $pkg.Builder = Builder; + $pkg.span = span; + $pkg.$finishSetup = function() { + sliceType = $sliceType($String); + ptrType = $ptrType(asciiSet); + sliceType$1 = $sliceType(span); + ptrType$1 = $ptrType(Builder); + sliceType$2 = $sliceType($Uint8); + arrayType = $arrayType($Uint32, 8); + arrayType$1 = $arrayType($Int, 256); + sliceType$3 = $sliceType($Int); + arrayType$2 = $arrayType($Uint8, 256); + ptrType$2 = $ptrType(byteReplacer); + arrayType$3 = $arrayType(sliceType$2, 256); + ptrType$3 = $ptrType(trieNode); + sliceType$4 = $sliceType(ptrType$3); + ptrType$4 = $ptrType(appendSliceWriter); + ptrType$5 = $ptrType(stringFinder); + ptrType$6 = $ptrType(Replacer); + ptrType$7 = $ptrType(genericReplacer); + ptrType$8 = $ptrType(singleStringReplacer); + ptrType$9 = $ptrType(byteStringReplacer); + ptrType$10 = $ptrType(Reader); + explode = function explode$1(s, n) { + var _tuple, a, i, l, n, s, size, x; + l = utf8.RuneCountInString(s); + if (n < 0 || n > l) { + n = l; + } + a = $makeSlice(sliceType, n); + i = 0; + while (true) { + if (!(i < (n - 1 >> 0))) { break; } + _tuple = utf8.DecodeRuneInString(s); + size = _tuple[1]; + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = $substring(s, 0, size)); + s = $substring(s, size); + i = i + (1) >> 0; + } + if (n > 0) { + (x = n - 1 >> 0, ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x] = s)); + } + return a; + }; + Contains = function Contains$1(s, substr) { + var s, substr; + return Index(s, substr) >= 0; + }; + $pkg.Contains = Contains; + ContainsAny = function ContainsAny$1(s, chars) { + var chars, s; + return IndexAny(s, chars) >= 0; + }; + $pkg.ContainsAny = ContainsAny; + ContainsRune = function ContainsRune$1(s, r) { + var r, s; + return IndexRune(s, r) >= 0; + }; + $pkg.ContainsRune = ContainsRune; + IndexRune = function IndexRune$1(s, r) { + var _i, _ref, _rune, i, r, r$1, s; + if (0 <= r && r < 128) { + return IndexByte(s, ((r << 24 >>> 24))); + } else if ((r === 65533)) { + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + r$1 = _rune[0]; + if (r$1 === 65533) { + return i; + } + _i += _rune[1]; + } + return -1; + } else if (!utf8.ValidRune(r)) { + return -1; + } else { + return Index(s, ($encodeRune(r))); + } + }; + $pkg.IndexRune = IndexRune; + IndexAny = function IndexAny$1(s, chars) { + var _i, _ref, _rune, _tuple, as, c, chars, i, i$1, isASCII, r, s; + if (chars === "") { + return -1; + } + if (chars.length === 1) { + r = ((chars.charCodeAt(0) >> 0)); + if (r >= 128) { + r = 65533; + } + return IndexRune(s, r); + } + if (s.length > 8) { + _tuple = makeASCIISet(chars); + as = $clone(_tuple[0], asciiSet); + isASCII = _tuple[1]; + if (isASCII) { + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if (new ptrType(as).contains(s.charCodeAt(i))) { + return i; + } + i = i + (1) >> 0; + } + return -1; + } + } + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i$1 = _i; + c = _rune[0]; + if (IndexRune(chars, c) >= 0) { + return i$1; + } + _i += _rune[1]; + } + return -1; + }; + $pkg.IndexAny = IndexAny; + LastIndexAny = function LastIndexAny$1(s, chars) { + var _tuple, _tuple$1, _tuple$2, as, chars, i, i$1, i$2, isASCII, r, r$1, rc, rc$1, s, size, size$1; + if (chars === "") { + return -1; + } + if (s.length === 1) { + rc = ((s.charCodeAt(0) >> 0)); + if (rc >= 128) { + rc = 65533; + } + if (IndexRune(chars, rc) >= 0) { + return 0; + } + return -1; + } + if (s.length > 8) { + _tuple = makeASCIISet(chars); + as = $clone(_tuple[0], asciiSet); + isASCII = _tuple[1]; + if (isASCII) { + i = s.length - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + if (new ptrType(as).contains(s.charCodeAt(i))) { + return i; + } + i = i - (1) >> 0; + } + return -1; + } + } + if (chars.length === 1) { + rc$1 = ((chars.charCodeAt(0) >> 0)); + if (rc$1 >= 128) { + rc$1 = 65533; + } + i$1 = s.length; + while (true) { + if (!(i$1 > 0)) { break; } + _tuple$1 = utf8.DecodeLastRuneInString($substring(s, 0, i$1)); + r = _tuple$1[0]; + size = _tuple$1[1]; + i$1 = i$1 - (size) >> 0; + if (rc$1 === r) { + return i$1; + } + } + return -1; + } + i$2 = s.length; + while (true) { + if (!(i$2 > 0)) { break; } + _tuple$2 = utf8.DecodeLastRuneInString($substring(s, 0, i$2)); + r$1 = _tuple$2[0]; + size$1 = _tuple$2[1]; + i$2 = i$2 - (size$1) >> 0; + if (IndexRune(chars, r$1) >= 0) { + return i$2; + } + } + return -1; + }; + $pkg.LastIndexAny = LastIndexAny; + LastIndexByte = function LastIndexByte$1(s, c) { + var c, i, s; + i = s.length - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + if (s.charCodeAt(i) === c) { + return i; + } + i = i - (1) >> 0; + } + return -1; + }; + $pkg.LastIndexByte = LastIndexByte; + genSplit = function genSplit$1(s, sep, sepSave, n) { + var a, i, m, n, s, sep, sepSave; + if (n === 0) { + return sliceType.nil; + } + if (sep === "") { + return explode(s, n); + } + if (n < 0) { + n = Count(s, sep) + 1 >> 0; + } + if (n > (s.length + 1 >> 0)) { + n = s.length + 1 >> 0; + } + a = $makeSlice(sliceType, n); + n = n - (1) >> 0; + i = 0; + while (true) { + if (!(i < n)) { break; } + m = Index(s, sep); + if (m < 0) { + break; + } + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = $substring(s, 0, (m + sepSave >> 0))); + s = $substring(s, (m + sep.length >> 0)); + i = i + (1) >> 0; + } + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = s); + return $subslice(a, 0, (i + 1 >> 0)); + }; + SplitN = function SplitN$1(s, sep, n) { + var n, s, sep; + return genSplit(s, sep, 0, n); + }; + $pkg.SplitN = SplitN; + Split = function Split$1(s, sep) { + var s, sep; + return genSplit(s, sep, 0, -1); + }; + $pkg.Split = Split; + Fields = function Fields$1(s) { + var {$24r, _r, a, fieldStart, i, i$1, isSpace, n, na, r, s, setBits, wasSpace, x, x$1, x$2, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + wasSpace = 1; + setBits = 0; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + r = s.charCodeAt(i); + setBits = (setBits | (r)) >>> 0; + isSpace = ((((r < 0 || r >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[r]) >> 0)); + n = n + ((wasSpace & (~isSpace >> 0))) >> 0; + wasSpace = isSpace; + i = i + (1) >> 0; + } + /* */ if (setBits >= 128) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (setBits >= 128) { */ case 1: + _r = FieldsFunc(s, unicode.IsSpace); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + a = $makeSlice(sliceType, n); + na = 0; + fieldStart = 0; + i$1 = 0; + while (true) { + if (!(i$1 < s.length && !(((x = s.charCodeAt(i$1), ((x < 0 || x >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[x])) === 0)))) { break; } + i$1 = i$1 + (1) >> 0; + } + fieldStart = i$1; + while (true) { + if (!(i$1 < s.length)) { break; } + if ((x$1 = s.charCodeAt(i$1), ((x$1 < 0 || x$1 >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[x$1])) === 0) { + i$1 = i$1 + (1) >> 0; + continue; + } + ((na < 0 || na >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + na] = $substring(s, fieldStart, i$1)); + na = na + (1) >> 0; + i$1 = i$1 + (1) >> 0; + while (true) { + if (!(i$1 < s.length && !(((x$2 = s.charCodeAt(i$1), ((x$2 < 0 || x$2 >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[x$2])) === 0)))) { break; } + i$1 = i$1 + (1) >> 0; + } + fieldStart = i$1; + } + if (fieldStart < s.length) { + ((na < 0 || na >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + na] = $substring(s, fieldStart)); + } + $s = -1; return a; + /* */ } return; } var $f = {$blk: Fields$1, $c: true, $r, $24r, _r, a, fieldStart, i, i$1, isSpace, n, na, r, s, setBits, wasSpace, x, x$1, x$2, $s};return $f; + }; + $pkg.Fields = Fields; + FieldsFunc = function FieldsFunc$1(s, f) { + var {_i, _i$1, _r, _ref, _ref$1, _rune, a, end, f, i, rune, s, span$1, spans, start, $s, $r, $c} = $restore(this, {s, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + spans = $makeSlice(sliceType$1, 0, 32); + start = -1; + _ref = s; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 2; continue; } + _rune = $decodeRune(_ref, _i); + end = _i; + rune = _rune[0]; + _r = f(rune); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r) { */ case 3: + if (start >= 0) { + spans = $append(spans, new span.ptr(start, end)); + start = ~start >> 0; + } + $s = 5; continue; + /* } else { */ case 4: + if (start < 0) { + start = end; + } + /* } */ case 5: + _i += _rune[1]; + $s = 1; continue; + case 2: + if (start >= 0) { + spans = $append(spans, new span.ptr(start, s.length)); + } + a = $makeSlice(sliceType, spans.$length); + _ref$1 = spans; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i = _i$1; + span$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), span); + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = $substring(s, span$1.start, span$1.end)); + _i$1++; + } + $s = -1; return a; + /* */ } return; } var $f = {$blk: FieldsFunc$1, $c: true, $r, _i, _i$1, _r, _ref, _ref$1, _rune, a, end, f, i, rune, s, span$1, spans, start, $s};return $f; + }; + $pkg.FieldsFunc = FieldsFunc; + Join = function Join$1(elems, sep) { + var _1, _i, _ref, b, elems, i, n, s, sep; + _1 = elems.$length; + if (_1 === (0)) { + return ""; + } else if (_1 === (1)) { + return (0 >= elems.$length ? ($throwRuntimeError("index out of range"), undefined) : elems.$array[elems.$offset + 0]); + } + n = $imul(sep.length, ((elems.$length - 1 >> 0))); + i = 0; + while (true) { + if (!(i < elems.$length)) { break; } + n = n + (((i < 0 || i >= elems.$length) ? ($throwRuntimeError("index out of range"), undefined) : elems.$array[elems.$offset + i]).length) >> 0; + i = i + (1) >> 0; + } + b = new Builder.ptr(ptrType$1.nil, sliceType$2.nil); + b.Grow(n); + b.WriteString((0 >= elems.$length ? ($throwRuntimeError("index out of range"), undefined) : elems.$array[elems.$offset + 0])); + _ref = $subslice(elems, 1); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + b.WriteString(sep); + b.WriteString(s); + _i++; + } + return b.String(); + }; + $pkg.Join = Join; + HasPrefix = function HasPrefix$1(s, prefix) { + var prefix, s; + return s.length >= prefix.length && $substring(s, 0, prefix.length) === prefix; + }; + $pkg.HasPrefix = HasPrefix; + HasSuffix = function HasSuffix$1(s, suffix) { + var s, suffix; + return s.length >= suffix.length && $substring(s, (s.length - suffix.length >> 0)) === suffix; + }; + $pkg.HasSuffix = HasSuffix; + Map = function Map$1(mapping, s) { + var {_i, _i$1, _r, _r$1, _ref, _ref$1, _rune, _rune$1, _tuple, b, c, c$1, i, mapping, r, r$1, s, width, $s, $r, $c} = $restore(this, {mapping, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = new Builder.ptr(ptrType$1.nil, sliceType$2.nil); + _ref = s; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 2; continue; } + _rune = $decodeRune(_ref, _i); + i = _i; + c = _rune[0]; + _r = mapping(c); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if ((r === c) && !((c === 65533))) { + _i += _rune[1]; + /* continue; */ $s = 1; continue; + } + width = 0; + if (c === 65533) { + _tuple = utf8.DecodeRuneInString($substring(s, i)); + c = _tuple[0]; + width = _tuple[1]; + if (!((width === 1)) && (r === c)) { + _i += _rune[1]; + /* continue; */ $s = 1; continue; + } + } else { + width = utf8.RuneLen(c); + } + b.Grow(s.length + 4 >> 0); + b.WriteString($substring(s, 0, i)); + if (r >= 0) { + b.WriteRune(r); + } + s = $substring(s, (i + width >> 0)); + /* break; */ $s = 2; continue; + case 2: + if (b.Cap() === 0) { + $s = -1; return s; + } + _ref$1 = s; + _i$1 = 0; + /* while (true) { */ case 4: + /* if (!(_i$1 < _ref$1.length)) { break; } */ if(!(_i$1 < _ref$1.length)) { $s = 5; continue; } + _rune$1 = $decodeRune(_ref$1, _i$1); + c$1 = _rune$1[0]; + _r$1 = mapping(c$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + r$1 = _r$1; + if (r$1 >= 0) { + if (r$1 < 128) { + b.WriteByte(((r$1 << 24 >>> 24))); + } else { + b.WriteRune(r$1); + } + } + _i$1 += _rune$1[1]; + $s = 4; continue; + case 5: + $s = -1; return b.String(); + /* */ } return; } var $f = {$blk: Map$1, $c: true, $r, _i, _i$1, _r, _r$1, _ref, _ref$1, _rune, _rune$1, _tuple, b, c, c$1, i, mapping, r, r$1, s, width, $s};return $f; + }; + $pkg.Map = Map; + ToUpper = function ToUpper$1(s) { + var {$24r, _r, _tmp, _tmp$1, b, c, c$1, hasLower, i, i$1, isASCII, pos, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tmp = true; + _tmp$1 = false; + isASCII = _tmp; + hasLower = _tmp$1; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + c = s.charCodeAt(i); + if (c >= 128) { + isASCII = false; + break; + } + hasLower = hasLower || (97 <= c && c <= 122); + i = i + (1) >> 0; + } + if (isASCII) { + if (!hasLower) { + $s = -1; return s; + } + b = new Builder.ptr(ptrType$1.nil, sliceType$2.nil); + pos = 0; + b.Grow(s.length); + i$1 = 0; + while (true) { + if (!(i$1 < s.length)) { break; } + c$1 = s.charCodeAt(i$1); + if (97 <= c$1 && c$1 <= 122) { + c$1 = c$1 - (32) << 24 >>> 24; + if (pos < i$1) { + b.WriteString($substring(s, pos, i$1)); + } + b.WriteByte(c$1); + pos = i$1 + 1 >> 0; + } + i$1 = i$1 + (1) >> 0; + } + if (pos < s.length) { + b.WriteString($substring(s, pos)); + } + $s = -1; return b.String(); + } + _r = Map(unicode.ToUpper, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ToUpper$1, $c: true, $r, $24r, _r, _tmp, _tmp$1, b, c, c$1, hasLower, i, i$1, isASCII, pos, s, $s};return $f; + }; + $pkg.ToUpper = ToUpper; + ToLower = function ToLower$1(s) { + var {$24r, _r, _tmp, _tmp$1, b, c, c$1, hasUpper, i, i$1, isASCII, pos, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tmp = true; + _tmp$1 = false; + isASCII = _tmp; + hasUpper = _tmp$1; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + c = s.charCodeAt(i); + if (c >= 128) { + isASCII = false; + break; + } + hasUpper = hasUpper || (65 <= c && c <= 90); + i = i + (1) >> 0; + } + if (isASCII) { + if (!hasUpper) { + $s = -1; return s; + } + b = new Builder.ptr(ptrType$1.nil, sliceType$2.nil); + pos = 0; + b.Grow(s.length); + i$1 = 0; + while (true) { + if (!(i$1 < s.length)) { break; } + c$1 = s.charCodeAt(i$1); + if (65 <= c$1 && c$1 <= 90) { + c$1 = c$1 + (32) << 24 >>> 24; + if (pos < i$1) { + b.WriteString($substring(s, pos, i$1)); + } + b.WriteByte(c$1); + pos = i$1 + 1 >> 0; + } + i$1 = i$1 + (1) >> 0; + } + if (pos < s.length) { + b.WriteString($substring(s, pos)); + } + $s = -1; return b.String(); + } + _r = Map(unicode.ToLower, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ToLower$1, $c: true, $r, $24r, _r, _tmp, _tmp$1, b, c, c$1, hasUpper, i, i$1, isASCII, pos, s, $s};return $f; + }; + $pkg.ToLower = ToLower; + TrimLeftFunc = function TrimLeftFunc$1(s, f) { + var {_r, f, i, s, $s, $r, $c} = $restore(this, {s, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = indexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + if (i === -1) { + $s = -1; return ""; + } + $s = -1; return $substring(s, i); + /* */ } return; } var $f = {$blk: TrimLeftFunc$1, $c: true, $r, _r, f, i, s, $s};return $f; + }; + $pkg.TrimLeftFunc = TrimLeftFunc; + TrimRightFunc = function TrimRightFunc$1(s, f) { + var {_r, _tuple, f, i, s, wid, $s, $r, $c} = $restore(this, {s, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = lastIndexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + if (i >= 0 && s.charCodeAt(i) >= 128) { + _tuple = utf8.DecodeRuneInString($substring(s, i)); + wid = _tuple[1]; + i = i + (wid) >> 0; + } else { + i = i + (1) >> 0; + } + $s = -1; return $substring(s, 0, i); + /* */ } return; } var $f = {$blk: TrimRightFunc$1, $c: true, $r, _r, _tuple, f, i, s, wid, $s};return $f; + }; + $pkg.TrimRightFunc = TrimRightFunc; + TrimFunc = function TrimFunc$1(s, f) { + var {$24r, _r, _r$1, f, s, $s, $r, $c} = $restore(this, {s, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = TrimLeftFunc(s, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = TrimRightFunc(_r, f); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: TrimFunc$1, $c: true, $r, $24r, _r, _r$1, f, s, $s};return $f; + }; + $pkg.TrimFunc = TrimFunc; + IndexFunc = function IndexFunc$1(s, f) { + var {$24r, _r, f, s, $s, $r, $c} = $restore(this, {s, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = indexFunc(s, f, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: IndexFunc$1, $c: true, $r, $24r, _r, f, s, $s};return $f; + }; + $pkg.IndexFunc = IndexFunc; + indexFunc = function indexFunc$1(s, f, truth) { + var {_i, _r, _ref, _rune, f, i, r, s, truth, $s, $r, $c} = $restore(this, {s, f, truth}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = s; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 2; continue; } + _rune = $decodeRune(_ref, _i); + i = _i; + r = _rune[0]; + _r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === truth) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r === truth) { */ case 3: + $s = -1; return i; + /* } */ case 4: + _i += _rune[1]; + $s = 1; continue; + case 2: + $s = -1; return -1; + /* */ } return; } var $f = {$blk: indexFunc$1, $c: true, $r, _i, _r, _ref, _rune, f, i, r, s, truth, $s};return $f; + }; + lastIndexFunc = function lastIndexFunc$1(s, f, truth) { + var {_r, _tuple, f, i, r, s, size, truth, $s, $r, $c} = $restore(this, {s, f, truth}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = s.length; + /* while (true) { */ case 1: + /* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; } + _tuple = utf8.DecodeLastRuneInString($substring(s, 0, i)); + r = _tuple[0]; + size = _tuple[1]; + i = i - (size) >> 0; + _r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === truth) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r === truth) { */ case 3: + $s = -1; return i; + /* } */ case 4: + $s = 1; continue; + case 2: + $s = -1; return -1; + /* */ } return; } var $f = {$blk: lastIndexFunc$1, $c: true, $r, _r, _tuple, f, i, r, s, size, truth, $s};return $f; + }; + makeASCIISet = function makeASCIISet$1(chars) { + var _index, _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, as, c, chars, i, ok, y; + as = arrayType.zero(); + ok = false; + i = 0; + while (true) { + if (!(i < chars.length)) { break; } + c = chars.charCodeAt(i); + if (c >= 128) { + _tmp = $clone(as, asciiSet); + _tmp$1 = false; + asciiSet.copy(as, _tmp); + ok = _tmp$1; + return [as, ok]; + } + _index = (_q = c / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + ((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index] = ((((_index < 0 || _index >= as.length) ? ($throwRuntimeError("index out of range"), undefined) : as[_index]) | (((y = ((_r = c % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0)); + i = i + (1) >> 0; + } + _tmp$2 = $clone(as, asciiSet); + _tmp$3 = true; + asciiSet.copy(as, _tmp$2); + ok = _tmp$3; + return [as, ok]; + }; + $ptrType(asciiSet).prototype.contains = function contains(c) { + var _q, _r, as, c, x, x$1, y; + as = this.$val; + return !((((((x = as, x$1 = (_q = c / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) & (((y = ((_r = c % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0)) === 0)); + }; + Trim = function Trim$1(s, cutset) { + var _tuple, as, cutset, ok, s; + if (s === "" || cutset === "") { + return s; + } + if ((cutset.length === 1) && cutset.charCodeAt(0) < 128) { + return trimLeftByte(trimRightByte(s, cutset.charCodeAt(0)), cutset.charCodeAt(0)); + } + _tuple = makeASCIISet(cutset); + as = $clone(_tuple[0], asciiSet); + ok = _tuple[1]; + if (ok) { + return trimLeftASCII(trimRightASCII(s, as), as); + } + return trimLeftUnicode(trimRightUnicode(s, cutset), cutset); + }; + $pkg.Trim = Trim; + TrimLeft = function TrimLeft$1(s, cutset) { + var _tuple, as, cutset, ok, s; + if (s === "" || cutset === "") { + return s; + } + if ((cutset.length === 1) && cutset.charCodeAt(0) < 128) { + return trimLeftByte(s, cutset.charCodeAt(0)); + } + _tuple = makeASCIISet(cutset); + as = $clone(_tuple[0], asciiSet); + ok = _tuple[1]; + if (ok) { + return trimLeftASCII(s, as); + } + return trimLeftUnicode(s, cutset); + }; + $pkg.TrimLeft = TrimLeft; + trimLeftByte = function trimLeftByte$1(s, c) { + var c, s; + while (true) { + if (!(s.length > 0 && (s.charCodeAt(0) === c))) { break; } + s = $substring(s, 1); + } + return s; + }; + trimLeftASCII = function trimLeftASCII$1(s, as) { + var as, s; + while (true) { + if (!(s.length > 0)) { break; } + if (!new ptrType(as).contains(s.charCodeAt(0))) { + break; + } + s = $substring(s, 1); + } + return s; + }; + trimLeftUnicode = function trimLeftUnicode$1(s, cutset) { + var _tmp, _tmp$1, _tuple, cutset, n, r, s; + while (true) { + if (!(s.length > 0)) { break; } + _tmp = ((s.charCodeAt(0) >> 0)); + _tmp$1 = 1; + r = _tmp; + n = _tmp$1; + if (r >= 128) { + _tuple = utf8.DecodeRuneInString(s); + r = _tuple[0]; + n = _tuple[1]; + } + if (!ContainsRune(cutset, r)) { + break; + } + s = $substring(s, n); + } + return s; + }; + TrimRight = function TrimRight$1(s, cutset) { + var _tuple, as, cutset, ok, s; + if (s === "" || cutset === "") { + return s; + } + if ((cutset.length === 1) && cutset.charCodeAt(0) < 128) { + return trimRightByte(s, cutset.charCodeAt(0)); + } + _tuple = makeASCIISet(cutset); + as = $clone(_tuple[0], asciiSet); + ok = _tuple[1]; + if (ok) { + return trimRightASCII(s, as); + } + return trimRightUnicode(s, cutset); + }; + $pkg.TrimRight = TrimRight; + trimRightByte = function trimRightByte$1(s, c) { + var c, s; + while (true) { + if (!(s.length > 0 && (s.charCodeAt((s.length - 1 >> 0)) === c))) { break; } + s = $substring(s, 0, (s.length - 1 >> 0)); + } + return s; + }; + trimRightASCII = function trimRightASCII$1(s, as) { + var as, s; + while (true) { + if (!(s.length > 0)) { break; } + if (!new ptrType(as).contains(s.charCodeAt((s.length - 1 >> 0)))) { + break; + } + s = $substring(s, 0, (s.length - 1 >> 0)); + } + return s; + }; + trimRightUnicode = function trimRightUnicode$1(s, cutset) { + var _tmp, _tmp$1, _tuple, cutset, n, r, s; + while (true) { + if (!(s.length > 0)) { break; } + _tmp = ((s.charCodeAt((s.length - 1 >> 0)) >> 0)); + _tmp$1 = 1; + r = _tmp; + n = _tmp$1; + if (r >= 128) { + _tuple = utf8.DecodeLastRuneInString(s); + r = _tuple[0]; + n = _tuple[1]; + } + if (!ContainsRune(cutset, r)) { + break; + } + s = $substring(s, 0, (s.length - n >> 0)); + } + return s; + }; + TrimSpace = function TrimSpace$1(s) { + var {$24r, $24r$1, _r, _r$1, c, c$1, s, start, stop, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + start = 0; + /* while (true) { */ case 1: + /* if (!(start < s.length)) { break; } */ if(!(start < s.length)) { $s = 2; continue; } + c = s.charCodeAt(start); + /* */ if (c >= 128) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (c >= 128) { */ case 3: + _r = TrimFunc($substring(s, start), unicode.IsSpace); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 6; case 6: return $24r; + /* } */ case 4: + if (((c < 0 || c >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[c]) === 0) { + /* break; */ $s = 2; continue; + } + start = start + (1) >> 0; + $s = 1; continue; + case 2: + stop = s.length; + /* while (true) { */ case 7: + /* if (!(stop > start)) { break; } */ if(!(stop > start)) { $s = 8; continue; } + c$1 = s.charCodeAt((stop - 1 >> 0)); + /* */ if (c$1 >= 128) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (c$1 >= 128) { */ case 9: + _r$1 = TrimRightFunc($substring(s, start, stop), unicode.IsSpace); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 12; case 12: return $24r$1; + /* } */ case 10: + if (((c$1 < 0 || c$1 >= asciiSpace.length) ? ($throwRuntimeError("index out of range"), undefined) : asciiSpace[c$1]) === 0) { + /* break; */ $s = 8; continue; + } + stop = stop - (1) >> 0; + $s = 7; continue; + case 8: + $s = -1; return $substring(s, start, stop); + /* */ } return; } var $f = {$blk: TrimSpace$1, $c: true, $r, $24r, $24r$1, _r, _r$1, c, c$1, s, start, stop, $s};return $f; + }; + $pkg.TrimSpace = TrimSpace; + TrimPrefix = function TrimPrefix$1(s, prefix) { + var prefix, s; + if (HasPrefix(s, prefix)) { + return $substring(s, prefix.length); + } + return s; + }; + $pkg.TrimPrefix = TrimPrefix; + TrimSuffix = function TrimSuffix$1(s, suffix) { + var s, suffix; + if (HasSuffix(s, suffix)) { + return $substring(s, 0, (s.length - suffix.length >> 0)); + } + return s; + }; + $pkg.TrimSuffix = TrimSuffix; + Replace = function Replace$1(s, old, new$1, n) { + var _tuple, b, i, j, m, n, new$1, old, s, start, wid; + if (old === new$1 || (n === 0)) { + return s; + } + m = Count(s, old); + if (m === 0) { + return s; + } else if (n < 0 || m < n) { + n = m; + } + b = new Builder.ptr(ptrType$1.nil, sliceType$2.nil); + b.Grow(s.length + ($imul(n, ((new$1.length - old.length >> 0)))) >> 0); + start = 0; + i = 0; + while (true) { + if (!(i < n)) { break; } + j = start; + if (old.length === 0) { + if (i > 0) { + _tuple = utf8.DecodeRuneInString($substring(s, start)); + wid = _tuple[1]; + j = j + (wid) >> 0; + } + } else { + j = j + (Index($substring(s, start), old)) >> 0; + } + b.WriteString($substring(s, start, j)); + b.WriteString(new$1); + start = j + old.length >> 0; + i = i + (1) >> 0; + } + b.WriteString($substring(s, start)); + return b.String(); + }; + $pkg.Replace = Replace; + ReplaceAll = function ReplaceAll$1(s, old, new$1) { + var new$1, old, s; + return Replace(s, old, new$1, -1); + }; + $pkg.ReplaceAll = ReplaceAll; + EqualFold = function EqualFold$1(s, t) { + var _i, _ref, _rune, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, i, r, r$1, s, size, sr, sr$1, t, tr, tr$1, $s; + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = 0; + /* while (true) { */ case 1: + /* if (!(i < s.length && i < t.length)) { break; } */ if(!(i < s.length && i < t.length)) { $s = 2; continue; } + sr = s.charCodeAt(i); + tr = t.charCodeAt(i); + /* */ if (((sr | tr) >>> 0) >= 128) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (((sr | tr) >>> 0) >= 128) { */ case 3: + /* goto hasUnicode */ $s = 5; continue; + /* } */ case 4: + if (tr === sr) { + i = i + (1) >> 0; + /* continue; */ $s = 1; continue; + } + if (tr < sr) { + _tmp = sr; + _tmp$1 = tr; + tr = _tmp; + sr = _tmp$1; + } + if (65 <= sr && sr <= 90 && (tr === ((sr + 97 << 24 >>> 24) - 65 << 24 >>> 24))) { + i = i + (1) >> 0; + /* continue; */ $s = 1; continue; + } + $s = -1; return false; + case 2: + $s = -1; return s.length === t.length; + /* hasUnicode: */ case 5: + s = $substring(s, i); + t = $substring(t, i); + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + sr$1 = _rune[0]; + if (t.length === 0) { + $s = -1; return false; + } + tr$1 = 0; + if (t.charCodeAt(0) < 128) { + _tmp$2 = ((t.charCodeAt(0) >> 0)); + _tmp$3 = $substring(t, 1); + tr$1 = _tmp$2; + t = _tmp$3; + } else { + _tuple = utf8.DecodeRuneInString(t); + r = _tuple[0]; + size = _tuple[1]; + _tmp$4 = r; + _tmp$5 = $substring(t, size); + tr$1 = _tmp$4; + t = _tmp$5; + } + if (tr$1 === sr$1) { + _i += _rune[1]; + continue; + } + if (tr$1 < sr$1) { + _tmp$6 = sr$1; + _tmp$7 = tr$1; + tr$1 = _tmp$6; + sr$1 = _tmp$7; + } + if (tr$1 < 128) { + if (65 <= sr$1 && sr$1 <= 90 && (tr$1 === ((sr$1 + 97 >> 0) - 65 >> 0))) { + _i += _rune[1]; + continue; + } + $s = -1; return false; + } + r$1 = unicode.SimpleFold(sr$1); + while (true) { + if (!(!((r$1 === sr$1)) && r$1 < tr$1)) { break; } + r$1 = unicode.SimpleFold(r$1); + } + if (r$1 === tr$1) { + _i += _rune[1]; + continue; + } + $s = -1; return false; + } + $s = -1; return t.length === 0; + /* */ } return; } + }; + $pkg.EqualFold = EqualFold; + Cut = function Cut$1(s, sep) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, after, before, found, i, s, sep; + before = ""; + after = ""; + found = false; + i = Index(s, sep); + if (i >= 0) { + _tmp = $substring(s, 0, i); + _tmp$1 = $substring(s, (i + sep.length >> 0)); + _tmp$2 = true; + before = _tmp; + after = _tmp$1; + found = _tmp$2; + return [before, after, found]; + } + _tmp$3 = s; + _tmp$4 = ""; + _tmp$5 = false; + before = _tmp$3; + after = _tmp$4; + found = _tmp$5; + return [before, after, found]; + }; + $pkg.Cut = Cut; + CutPrefix = function CutPrefix$1(s, prefix) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, after, found, prefix, s; + after = ""; + found = false; + if (!HasPrefix(s, prefix)) { + _tmp = s; + _tmp$1 = false; + after = _tmp; + found = _tmp$1; + return [after, found]; + } + _tmp$2 = $substring(s, prefix.length); + _tmp$3 = true; + after = _tmp$2; + found = _tmp$3; + return [after, found]; + }; + $pkg.CutPrefix = CutPrefix; + makeStringFinder = function makeStringFinder$1(pattern) { + var _i, _ref, f, i, i$1, i$2, i$3, last, lastPrefix, lenSuffix, pattern, x, x$1, x$2, x$3, x$4, x$5; + f = new stringFinder.ptr(pattern, arrayType$1.zero(), $makeSlice(sliceType$3, pattern.length)); + last = pattern.length - 1 >> 0; + _ref = f.badCharSkip; + _i = 0; + while (true) { + if (!(_i < 256)) { break; } + i = _i; + (x = f.badCharSkip, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = pattern.length)); + _i++; + } + i$1 = 0; + while (true) { + if (!(i$1 < last)) { break; } + (x$1 = f.badCharSkip, x$2 = pattern.charCodeAt(i$1), ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2] = (last - i$1 >> 0))); + i$1 = i$1 + (1) >> 0; + } + lastPrefix = last; + i$2 = last; + while (true) { + if (!(i$2 >= 0)) { break; } + if (HasPrefix(pattern, $substring(pattern, (i$2 + 1 >> 0)))) { + lastPrefix = i$2 + 1 >> 0; + } + (x$3 = f.goodSuffixSkip, ((i$2 < 0 || i$2 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i$2] = ((lastPrefix + last >> 0) - i$2 >> 0))); + i$2 = i$2 - (1) >> 0; + } + i$3 = 0; + while (true) { + if (!(i$3 < last)) { break; } + lenSuffix = longestCommonSuffix(pattern, $substring(pattern, 1, (i$3 + 1 >> 0))); + if (!((pattern.charCodeAt((i$3 - lenSuffix >> 0)) === pattern.charCodeAt((last - lenSuffix >> 0))))) { + (x$4 = f.goodSuffixSkip, x$5 = last - lenSuffix >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5] = ((lenSuffix + last >> 0) - i$3 >> 0))); + } + i$3 = i$3 + (1) >> 0; + } + return f; + }; + longestCommonSuffix = function longestCommonSuffix$1(a, b) { + var a, b, i; + i = 0; + while (true) { + if (!(i < a.length && i < b.length)) { break; } + if (!((a.charCodeAt(((a.length - 1 >> 0) - i >> 0)) === b.charCodeAt(((b.length - 1 >> 0) - i >> 0))))) { + break; + } + i = i + (1) >> 0; + } + return i; + }; + $ptrType(stringFinder).prototype.next = function next(text) { + var f, i, j, text, x, x$1, x$2; + f = this; + i = f.pattern.length - 1 >> 0; + while (true) { + if (!(i < text.length)) { break; } + j = f.pattern.length - 1 >> 0; + while (true) { + if (!(j >= 0 && (text.charCodeAt(i) === f.pattern.charCodeAt(j)))) { break; } + i = i - (1) >> 0; + j = j - (1) >> 0; + } + if (j < 0) { + return i + 1 >> 0; + } + i = i + (max((x = f.badCharSkip, x$1 = text.charCodeAt(i), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])), (x$2 = f.goodSuffixSkip, ((j < 0 || j >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j])))) >> 0; + } + return -1; + }; + max = function max$1(a, b) { + var a, b; + if (a > b) { + return a; + } + return b; + }; + NewReplacer = function NewReplacer$1(oldnew) { + var _r, oldnew; + if ((_r = oldnew.$length % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1) { + $panic(new $String("strings.NewReplacer: odd argument count")); + } + return new Replacer.ptr(new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), $ifaceNil, $appendSlice((sliceType.nil), oldnew)); + }; + $pkg.NewReplacer = NewReplacer; + $ptrType(Replacer).prototype.buildOnce = function buildOnce() { + var r; + r = this; + r.r = r.build(); + r.oldnew = sliceType.nil; + }; + $ptrType(Replacer).prototype.build = function build() { + var _i, _q, _ref, allNewBytes, b, i, i$1, i$2, i$3, n, n$1, o, o$1, oldnew, r, r$1, x, x$1, x$2, x$3, x$4; + b = this; + oldnew = b.oldnew; + if ((oldnew.$length === 2) && (0 >= oldnew.$length ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + 0]).length > 1) { + return makeSingleStringReplacer((0 >= oldnew.$length ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + 0]), (1 >= oldnew.$length ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + 1])); + } + allNewBytes = true; + i = 0; + while (true) { + if (!(i < oldnew.$length)) { break; } + if (!((((i < 0 || i >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i]).length === 1))) { + return makeGenericReplacer(oldnew); + } + if (!(((x = i + 1 >> 0, ((x < 0 || x >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + x])).length === 1))) { + allNewBytes = false; + } + i = i + (2) >> 0; + } + if (allNewBytes) { + r = arrayType$2.zero(); + _ref = r; + _i = 0; + while (true) { + if (!(_i < 256)) { break; } + i$1 = _i; + ((i$1 < 0 || i$1 >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[i$1] = ((i$1 << 24 >>> 24))); + _i++; + } + i$2 = oldnew.$length - 2 >> 0; + while (true) { + if (!(i$2 >= 0)) { break; } + o = ((i$2 < 0 || i$2 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i$2]).charCodeAt(0); + n = (x$1 = i$2 + 1 >> 0, ((x$1 < 0 || x$1 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + x$1])).charCodeAt(0); + ((o < 0 || o >= r.length) ? ($throwRuntimeError("index out of range"), undefined) : r[o] = n); + i$2 = i$2 - (2) >> 0; + } + return new ptrType$2(r); + } + r$1 = new byteStringReplacer.ptr(arrayType$3.zero(), $makeSlice(sliceType, 0, (_q = oldnew.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")))); + i$3 = oldnew.$length - 2 >> 0; + while (true) { + if (!(i$3 >= 0)) { break; } + o$1 = ((i$3 < 0 || i$3 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i$3]).charCodeAt(0); + n$1 = (x$2 = i$3 + 1 >> 0, ((x$2 < 0 || x$2 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + x$2])); + if ((x$3 = r$1.replacements, ((o$1 < 0 || o$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[o$1])) === sliceType$2.nil) { + r$1.toReplace = $append(r$1.toReplace, ($bytesToString(new sliceType$2([o$1])))); + } + (x$4 = r$1.replacements, ((o$1 < 0 || o$1 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[o$1] = (new sliceType$2($stringToBytes(n$1))))); + i$3 = i$3 - (2) >> 0; + } + return r$1; + }; + $ptrType(Replacer).prototype.Replace = function Replace$2(s) { + var {$24r, _r, r, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + $r = r.once.Do($methodVal(r, "buildOnce")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = r.r.Replace(s); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Replace$2, $c: true, $r, $24r, _r, r, s, $s};return $f; + }; + $ptrType(Replacer).prototype.WriteString = function WriteString(w, s) { + var {$24r, _r, _tuple, err, n, r, s, w, $s, $r, $c} = $restore(this, {w, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + r = this; + $r = r.once.Do($methodVal(r, "buildOnce")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = r.r.WriteString(w, s); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: WriteString, $c: true, $r, $24r, _r, _tuple, err, n, r, s, w, $s};return $f; + }; + $ptrType(trieNode).prototype.add = function add(key, val, priority, r) { + var key, keyNode, m, n, next$1, prefixNode, priority, r, t, val, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + t = this; + if (key === "") { + if (t.priority === 0) { + t.value = val; + t.priority = priority; + } + return; + } + if (!(t.prefix === "")) { + n = 0; + while (true) { + if (!(n < t.prefix.length && n < key.length)) { break; } + if (!((t.prefix.charCodeAt(n) === key.charCodeAt(n)))) { + break; + } + n = n + (1) >> 0; + } + if (n === t.prefix.length) { + t.next.add($substring(key, n), val, priority, r); + } else if (n === 0) { + prefixNode = ptrType$3.nil; + if (t.prefix.length === 1) { + prefixNode = t.next; + } else { + prefixNode = new trieNode.ptr("", 0, $substring(t.prefix, 1), t.next, sliceType$4.nil); + } + keyNode = new trieNode.ptr("", 0, "", ptrType$3.nil, sliceType$4.nil); + t.table = $makeSlice(sliceType$4, r.tableSize); + (x = t.table, x$1 = (x$2 = r.mapping, x$3 = t.prefix.charCodeAt(0), ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3])), ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = prefixNode)); + (x$4 = t.table, x$5 = (x$6 = r.mapping, x$7 = key.charCodeAt(0), ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7])), ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5] = keyNode)); + t.prefix = ""; + t.next = ptrType$3.nil; + keyNode.add($substring(key, 1), val, priority, r); + } else { + next$1 = new trieNode.ptr("", 0, $substring(t.prefix, n), t.next, sliceType$4.nil); + t.prefix = $substring(t.prefix, 0, n); + t.next = next$1; + next$1.add($substring(key, n), val, priority, r); + } + } else if (!(t.table === sliceType$4.nil)) { + m = (x$8 = r.mapping, x$9 = key.charCodeAt(0), ((x$9 < 0 || x$9 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[x$9])); + if ((x$10 = t.table, ((m < 0 || m >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + m])) === ptrType$3.nil) { + (x$11 = t.table, ((m < 0 || m >= x$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + m] = new trieNode.ptr("", 0, "", ptrType$3.nil, sliceType$4.nil))); + } + (x$12 = t.table, ((m < 0 || m >= x$12.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + m])).add($substring(key, 1), val, priority, r); + } else { + t.prefix = key; + t.next = new trieNode.ptr("", 0, "", ptrType$3.nil, sliceType$4.nil); + t.next.add("", val, priority, r); + } + }; + $ptrType(genericReplacer).prototype.lookup = function lookup(s, ignoreRoot) { + var bestPriority, found, ignoreRoot, index, keylen, n, node, r, s, val, x, x$1, x$2; + val = ""; + keylen = 0; + found = false; + r = this; + bestPriority = 0; + node = r.root; + n = 0; + while (true) { + if (!(!(node === ptrType$3.nil))) { break; } + if (node.priority > bestPriority && !(ignoreRoot && node === r.root)) { + bestPriority = node.priority; + val = node.value; + keylen = n; + found = true; + } + if (s === "") { + break; + } + if (!(node.table === sliceType$4.nil)) { + index = (x = r.mapping, x$1 = s.charCodeAt(0), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])); + if (((index >> 0)) === r.tableSize) { + break; + } + node = (x$2 = node.table, ((index < 0 || index >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + index])); + s = $substring(s, 1); + n = n + (1) >> 0; + } else if (!(node.prefix === "") && HasPrefix(s, node.prefix)) { + n = n + (node.prefix.length) >> 0; + s = $substring(s, node.prefix.length); + node = node.next; + } else { + break; + } + } + return [val, keylen, found]; + }; + makeGenericReplacer = function makeGenericReplacer$1(oldnew) { + var _i, _i$1, _ref, _ref$1, b, b$1, i, i$1, i$2, index, j, key, oldnew, r, x, x$1, x$2, x$3, x$4; + r = new genericReplacer.ptr(new trieNode.ptr("", 0, "", ptrType$3.nil, sliceType$4.nil), 0, arrayType$2.zero()); + i = 0; + while (true) { + if (!(i < oldnew.$length)) { break; } + key = ((i < 0 || i >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i]); + j = 0; + while (true) { + if (!(j < key.length)) { break; } + (x = r.mapping, x$1 = key.charCodeAt(j), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1] = 1)); + j = j + (1) >> 0; + } + i = i + (2) >> 0; + } + _ref = r.mapping; + _i = 0; + while (true) { + if (!(_i < 256)) { break; } + b = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]); + r.tableSize = r.tableSize + (((b >> 0))) >> 0; + _i++; + } + index = 0; + _ref$1 = r.mapping; + _i$1 = 0; + while (true) { + if (!(_i$1 < 256)) { break; } + i$1 = _i$1; + b$1 = ((_i$1 < 0 || _i$1 >= _ref$1.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1[_i$1]); + if (b$1 === 0) { + (x$2 = r.mapping, ((i$1 < 0 || i$1 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i$1] = ((r.tableSize << 24 >>> 24)))); + } else { + (x$3 = r.mapping, ((i$1 < 0 || i$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i$1] = index)); + index = index + (1) << 24 >>> 24; + } + _i$1++; + } + r.root.table = $makeSlice(sliceType$4, r.tableSize); + i$2 = 0; + while (true) { + if (!(i$2 < oldnew.$length)) { break; } + r.root.add(((i$2 < 0 || i$2 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + i$2]), (x$4 = i$2 + 1 >> 0, ((x$4 < 0 || x$4 >= oldnew.$length) ? ($throwRuntimeError("index out of range"), undefined) : oldnew.$array[oldnew.$offset + x$4])), oldnew.$length - i$2 >> 0, r); + i$2 = i$2 + (2) >> 0; + } + return r; + }; + $ptrType(appendSliceWriter).prototype.Write = function Write(p) { + var p, w; + w = this; + w.$set($appendSlice(w.$get(), p)); + return [p.$length, $ifaceNil]; + }; + $ptrType(appendSliceWriter).prototype.WriteString = function WriteString$1(s) { + var s, w; + w = this; + w.$set($appendSlice(w.$get(), s)); + return [s.length, $ifaceNil]; + }; + $ptrType(stringWriter).prototype.WriteString = function WriteString$2(s) { + var {$24r, _r, s, w, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + _r = w.w.Write((new sliceType$2($stringToBytes(s)))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: WriteString$2, $c: true, $r, $24r, _r, s, w, $s};return $f; + }; + stringWriter.prototype.WriteString = function(...$args) { return this.$val.WriteString(...$args); }; + getStringWriter = function getStringWriter$1(w) { + var _tuple, ok, sw, w, x; + _tuple = $assertType(w, io.StringWriter, true); + sw = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + sw = (x = new stringWriter.ptr(w), new x.constructor.elem(x)); + } + return sw; + }; + $ptrType(genericReplacer).prototype.Replace = function Replace$3(s) { + var {_r, buf, r, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + r = this; + buf[0] = $makeSlice(appendSliceWriter, 0, s.length); + _r = r.WriteString((buf.$ptr || (buf.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, buf))), s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + $s = -1; return ($bytesToString(buf[0])); + /* */ } return; } var $f = {$blk: Replace$3, $c: true, $r, _r, buf, r, s, $s};return $f; + }; + $ptrType(genericReplacer).prototype.WriteString = function WriteString$3(w, s) { + var {_r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, err, i, index, keylen, last, match, n, prevMatchEmpty, r, s, sw, val, w, wn, x, x$1, x$2, $s, $r, $c} = $restore(this, {w, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + r = this; + sw = getStringWriter(w); + _tmp = 0; + _tmp$1 = 0; + last = _tmp; + wn = _tmp$1; + prevMatchEmpty = false; + i = 0; + /* while (true) { */ case 1: + /* if (!(i <= s.length)) { break; } */ if(!(i <= s.length)) { $s = 2; continue; } + if (!((i === s.length)) && (r.root.priority === 0)) { + index = (((x = r.mapping, x$1 = s.charCodeAt(i), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) >> 0)); + if ((index === r.tableSize) || (x$2 = r.root.table, ((index < 0 || index >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + index])) === ptrType$3.nil) { + i = i + (1) >> 0; + /* continue; */ $s = 1; continue; + } + } + _tuple = r.lookup($substring(s, i), prevMatchEmpty); + val = _tuple[0]; + keylen = _tuple[1]; + match = _tuple[2]; + prevMatchEmpty = match && (keylen === 0); + /* */ if (match) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (match) { */ case 3: + _r = sw.WriteString($substring(s, last, i)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + wn = _tuple$1[0]; + err = _tuple$1[1]; + n = n + (wn) >> 0; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [n, err]; + } + _r$1 = sw.WriteString(val); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$2 = _r$1; + wn = _tuple$2[0]; + err = _tuple$2[1]; + n = n + (wn) >> 0; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [n, err]; + } + i = i + (keylen) >> 0; + last = i; + /* continue; */ $s = 1; continue; + /* } */ case 4: + i = i + (1) >> 0; + $s = 1; continue; + case 2: + /* */ if (!((last === s.length))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((last === s.length))) { */ case 7: + _r$2 = sw.WriteString($substring(s, last)); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$3 = _r$2; + wn = _tuple$3[0]; + err = _tuple$3[1]; + n = n + (wn) >> 0; + /* } */ case 8: + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: WriteString$3, $c: true, $r, _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, err, i, index, keylen, last, match, n, prevMatchEmpty, r, s, sw, val, w, wn, x, x$1, x$2, $s};return $f; + }; + makeSingleStringReplacer = function makeSingleStringReplacer$1(pattern, value) { + var pattern, value; + return new singleStringReplacer.ptr(makeStringFinder(pattern), value); + }; + $ptrType(singleStringReplacer).prototype.Replace = function Replace$4(s) { + var _tmp, _tmp$1, buf, i, match, matched, r, s; + r = this; + buf = new Builder.ptr(ptrType$1.nil, sliceType$2.nil); + _tmp = 0; + _tmp$1 = false; + i = _tmp; + matched = _tmp$1; + while (true) { + match = r.finder.next($substring(s, i)); + if (match === -1) { + break; + } + matched = true; + buf.Grow(match + r.value.length >> 0); + buf.WriteString($substring(s, i, (i + match >> 0))); + buf.WriteString(r.value); + i = i + ((match + r.finder.pattern.length >> 0)) >> 0; + } + if (!matched) { + return s; + } + buf.WriteString($substring(s, i)); + return buf.String(); + }; + $ptrType(singleStringReplacer).prototype.WriteString = function WriteString$4(w, s) { + var {_r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, err, i, match, n, r, s, sw, w, wn, $s, $r, $c} = $restore(this, {w, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + r = this; + sw = getStringWriter(w); + _tmp = 0; + _tmp$1 = 0; + i = _tmp; + wn = _tmp$1; + /* while (true) { */ case 1: + match = r.finder.next($substring(s, i)); + if (match === -1) { + /* break; */ $s = 2; continue; + } + _r = sw.WriteString($substring(s, i, (i + match >> 0))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + wn = _tuple[0]; + err = _tuple[1]; + n = n + (wn) >> 0; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [n, err]; + } + _r$1 = sw.WriteString(r.value); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + wn = _tuple$1[0]; + err = _tuple$1[1]; + n = n + (wn) >> 0; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [n, err]; + } + i = i + ((match + r.finder.pattern.length >> 0)) >> 0; + $s = 1; continue; + case 2: + _r$2 = sw.WriteString($substring(s, i)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + wn = _tuple$2[0]; + err = _tuple$2[1]; + n = n + (wn) >> 0; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: WriteString$4, $c: true, $r, _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, err, i, match, n, r, s, sw, w, wn, $s};return $f; + }; + $ptrType(byteReplacer).prototype.Replace = function Replace$5(s) { + var b, buf, i, r, s, x, x$1; + r = this.$val; + buf = sliceType$2.nil; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + b = s.charCodeAt(i); + if (!(((x = r, ((b < 0 || b >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[b])) === b))) { + if (buf === sliceType$2.nil) { + buf = (new sliceType$2($stringToBytes(s))); + } + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = (x$1 = r, ((b < 0 || b >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[b]))); + } + i = i + (1) >> 0; + } + if (buf === sliceType$2.nil) { + return s; + } + return ($bytesToString(buf)); + }; + $ptrType(byteReplacer).prototype.WriteString = function WriteString$5(w, s) { + var {_r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, b, err, err$1, err$2, err$3, i, last, n, nw, nw$1, r, s, sw, w, wn, x, $s, $r, $c} = $restore(this, {w, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + r = this.$val; + sw = getStringWriter(w); + last = 0; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 2; continue; } + b = s.charCodeAt(i); + if ((x = r, ((b < 0 || b >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[b])) === b) { + i = i + (1) >> 0; + /* continue; */ $s = 1; continue; + } + /* */ if (!((last === i))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!((last === i))) { */ case 3: + _r = sw.WriteString($substring(s, last, i)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + wn = _tuple[0]; + err$1 = _tuple[1]; + n = n + (wn) >> 0; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = n; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + /* } */ case 4: + last = i + 1 >> 0; + _r$1 = w.Write($subslice(new sliceType$2(r), b, (((b >> 0)) + 1 >> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + nw = _tuple$1[0]; + err$2 = _tuple$1[1]; + n = n + (nw) >> 0; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + _tmp$2 = n; + _tmp$3 = err$2; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + i = i + (1) >> 0; + $s = 1; continue; + case 2: + /* */ if (!((last === s.length))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((last === s.length))) { */ case 7: + _r$2 = sw.WriteString($substring(s, last)); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + nw$1 = _tuple$2[0]; + err$3 = _tuple$2[1]; + n = n + (nw$1) >> 0; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + _tmp$4 = n; + _tmp$5 = err$3; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + } + /* } */ case 8: + _tmp$6 = n; + _tmp$7 = $ifaceNil; + n = _tmp$6; + err = _tmp$7; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: WriteString$5, $c: true, $r, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, b, err, err$1, err$2, err$3, i, last, n, nw, nw$1, r, s, sw, w, wn, x, $s};return $f; + }; + $ptrType(byteStringReplacer).prototype.Replace = function Replace$6(s) { + var _i, _ref, anyChanges, b, b$1, buf, c, i, i$1, j, newSize, r, s, x, x$1, x$2, x$3, x$4, x$5, x$6; + r = this; + newSize = s.length; + anyChanges = false; + if (($imul(r.toReplace.$length, 8)) <= s.length) { + _ref = r.toReplace; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + c = Count(s, x); + if (!((c === 0))) { + newSize = newSize + (($imul(c, (((x$1 = r.replacements, x$2 = x.charCodeAt(0), ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])).$length - 1 >> 0))))) >> 0; + anyChanges = true; + } + _i++; + } + } else { + i = 0; + while (true) { + if (!(i < s.length)) { break; } + b = s.charCodeAt(i); + if (!((x$3 = r.replacements, ((b < 0 || b >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[b])) === sliceType$2.nil)) { + newSize = newSize + (((x$4 = r.replacements, ((b < 0 || b >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[b])).$length - 1 >> 0)) >> 0; + anyChanges = true; + } + i = i + (1) >> 0; + } + } + if (!anyChanges) { + return s; + } + buf = $makeSlice(sliceType$2, newSize); + j = 0; + i$1 = 0; + while (true) { + if (!(i$1 < s.length)) { break; } + b$1 = s.charCodeAt(i$1); + if (!((x$5 = r.replacements, ((b$1 < 0 || b$1 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[b$1])) === sliceType$2.nil)) { + j = j + ($copySlice($subslice(buf, j), (x$6 = r.replacements, ((b$1 < 0 || b$1 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[b$1])))) >> 0; + } else { + ((j < 0 || j >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + j] = b$1); + j = j + (1) >> 0; + } + i$1 = i$1 + (1) >> 0; + } + return ($bytesToString(buf)); + }; + $ptrType(byteStringReplacer).prototype.WriteString = function WriteString$6(w, s) { + var {_r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, b, err, err$1, err$2, i, last, n, nw, nw$1, nw$2, r, s, sw, w, x, x$1, $s, $r, $c} = $restore(this, {w, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + r = this; + sw = getStringWriter(w); + last = 0; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 2; continue; } + b = s.charCodeAt(i); + if ((x = r.replacements, ((b < 0 || b >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[b])) === sliceType$2.nil) { + i = i + (1) >> 0; + /* continue; */ $s = 1; continue; + } + /* */ if (!((last === i))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!((last === i))) { */ case 3: + _r = sw.WriteString($substring(s, last, i)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + nw = _tuple[0]; + err$1 = _tuple[1]; + n = n + (nw) >> 0; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = n; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + /* } */ case 4: + last = i + 1 >> 0; + _r$1 = w.Write((x$1 = r.replacements, ((b < 0 || b >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[b]))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + nw$1 = _tuple$1[0]; + err$2 = _tuple$1[1]; + n = n + (nw$1) >> 0; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + _tmp$2 = n; + _tmp$3 = err$2; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + i = i + (1) >> 0; + $s = 1; continue; + case 2: + /* */ if (!((last === s.length))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((last === s.length))) { */ case 7: + nw$2 = 0; + _r$2 = sw.WriteString($substring(s, last)); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + nw$2 = _tuple$2[0]; + err = _tuple$2[1]; + n = n + (nw$2) >> 0; + /* } */ case 8: + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: WriteString$6, $c: true, $r, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, b, err, err$1, err$2, i, last, n, nw, nw$1, nw$2, r, s, sw, w, x, x$1, $s};return $f; + }; + $ptrType(Reader).prototype.Len = function Len() { + var r, x, x$1, x$2, x$3, x$4; + r = this; + if ((x = r.i, x$1 = (new $Int64(0, r.s.length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + return 0; + } + return (((x$2 = (x$3 = (new $Int64(0, r.s.length)), x$4 = r.i, new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)); + }; + $ptrType(Reader).prototype.Size = function Size() { + var r; + r = this; + return (new $Int64(0, r.s.length)); + }; + $ptrType(Reader).prototype.Read = function Read(b) { + var _tmp, _tmp$1, b, err, n, r, x, x$1, x$2, x$3; + n = 0; + err = $ifaceNil; + r = this; + if ((x = r.i, x$1 = (new $Int64(0, r.s.length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + _tmp = 0; + _tmp$1 = io.EOF; + n = _tmp; + err = _tmp$1; + return [n, err]; + } + r.prevRune = -1; + n = $copyString(b, $substring(r.s, $flatten64(r.i))); + r.i = (x$2 = r.i, x$3 = (new $Int64(0, n)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); + return [n, err]; + }; + $ptrType(Reader).prototype.ReadAt = function ReadAt(b, off) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, off, r, x; + n = 0; + err = $ifaceNil; + r = this; + if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) { + _tmp = 0; + _tmp$1 = errors.New("strings.Reader.ReadAt: negative offset"); + n = _tmp; + err = _tmp$1; + return [n, err]; + } + if ((x = (new $Int64(0, r.s.length)), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) { + _tmp$2 = 0; + _tmp$3 = io.EOF; + n = _tmp$2; + err = _tmp$3; + return [n, err]; + } + n = $copyString(b, $substring(r.s, $flatten64(off))); + if (n < b.$length) { + err = io.EOF; + } + return [n, err]; + }; + $ptrType(Reader).prototype.ReadByte = function ReadByte() { + var b, r, x, x$1, x$2, x$3; + r = this; + r.prevRune = -1; + if ((x = r.i, x$1 = (new $Int64(0, r.s.length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + return [0, io.EOF]; + } + b = r.s.charCodeAt($flatten64(r.i)); + r.i = (x$2 = r.i, x$3 = new $Int64(0, 1), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); + return [b, $ifaceNil]; + }; + $ptrType(Reader).prototype.UnreadByte = function UnreadByte() { + var r, x, x$1, x$2; + r = this; + if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) { + return errors.New("strings.Reader.UnreadByte: at beginning of string"); + } + r.prevRune = -1; + r.i = (x$1 = r.i, x$2 = new $Int64(0, 1), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)); + return $ifaceNil; + }; + $ptrType(Reader).prototype.ReadRune = function ReadRune() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, ch, err, r, size, x, x$1, x$2, x$3, x$4, x$5, x$6; + ch = 0; + size = 0; + err = $ifaceNil; + r = this; + if ((x = r.i, x$1 = (new $Int64(0, r.s.length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + r.prevRune = -1; + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = io.EOF; + ch = _tmp; + size = _tmp$1; + err = _tmp$2; + return [ch, size, err]; + } + r.prevRune = (((x$2 = r.i, x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)); + c = r.s.charCodeAt($flatten64(r.i)); + if (c < 128) { + r.i = (x$3 = r.i, x$4 = new $Int64(0, 1), new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)); + _tmp$3 = ((c >> 0)); + _tmp$4 = 1; + _tmp$5 = $ifaceNil; + ch = _tmp$3; + size = _tmp$4; + err = _tmp$5; + return [ch, size, err]; + } + _tuple = utf8.DecodeRuneInString($substring(r.s, $flatten64(r.i))); + ch = _tuple[0]; + size = _tuple[1]; + r.i = (x$5 = r.i, x$6 = (new $Int64(0, size)), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)); + return [ch, size, err]; + }; + $ptrType(Reader).prototype.UnreadRune = function UnreadRune() { + var r, x; + r = this; + if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) { + return errors.New("strings.Reader.UnreadRune: at beginning of string"); + } + if (r.prevRune < 0) { + return errors.New("strings.Reader.UnreadRune: previous operation was not ReadRune"); + } + r.i = (new $Int64(0, r.prevRune)); + r.prevRune = -1; + return $ifaceNil; + }; + $ptrType(Reader).prototype.Seek = function Seek(offset, whence) { + var _1, abs, offset, r, whence, x, x$1; + r = this; + r.prevRune = -1; + abs = new $Int64(0, 0); + _1 = whence; + if (_1 === (0)) { + abs = offset; + } else if (_1 === (1)) { + abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low)); + } else if (_1 === (2)) { + abs = (x$1 = (new $Int64(0, r.s.length)), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low)); + } else { + return [new $Int64(0, 0), errors.New("strings.Reader.Seek: invalid whence")]; + } + if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) { + return [new $Int64(0, 0), errors.New("strings.Reader.Seek: negative position")]; + } + r.i = abs; + return [abs, $ifaceNil]; + }; + $ptrType(Reader).prototype.WriteTo = function WriteTo(w) { + var {_r, _tmp, _tmp$1, _tuple, err, m, n, r, s, w, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {w}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + r = this; + r.prevRune = -1; + if ((x = r.i, x$1 = (new $Int64(0, r.s.length)), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) { + _tmp = new $Int64(0, 0); + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + s = $substring(r.s, $flatten64(r.i)); + _r = io.WriteString(w, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + m = _tuple[0]; + err = _tuple[1]; + if (m > s.length) { + $panic(new $String("strings.Reader.WriteTo: invalid WriteString count")); + } + r.i = (x$2 = r.i, x$3 = (new $Int64(0, m)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); + n = (new $Int64(0, m)); + if (!((m === s.length)) && $interfaceIsEqual(err, $ifaceNil)) { + err = io.ErrShortWrite; + } + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: WriteTo, $c: true, $r, _r, _tmp, _tmp$1, _tuple, err, m, n, r, s, w, x, x$1, x$2, x$3, $s};return $f; + }; + $ptrType(Reader).prototype.Reset = function Reset(s) { + var r, s; + r = this; + Reader.copy(r, new Reader.ptr(s, new $Int64(0, 0), -1)); + }; + NewReader = function NewReader$1(s) { + var s; + return new Reader.ptr(s, new $Int64(0, 0), -1); + }; + $pkg.NewReader = NewReader; + IndexByte = function IndexByte$1(s, c) { + var c, s; + return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0; + }; + $pkg.IndexByte = IndexByte; + Index = function Index$1(s, sep) { + var s, sep; + return $parseInt(s.indexOf(sep)) >> 0; + }; + $pkg.Index = Index; + LastIndex = function LastIndex$1(s, sep) { + var s, sep; + return $parseInt(s.lastIndexOf(sep)) >> 0; + }; + $pkg.LastIndex = LastIndex; + Count = function Count$1(s, sep) { + var n, pos, s, sep; + n = 0; + if ((sep.length === 0)) { + return utf8.RuneCountInString(s) + 1 >> 0; + } else if (sep.length > s.length) { + return 0; + } else if ((sep.length === s.length)) { + if (sep === s) { + return 1; + } + return 0; + } + while (true) { + pos = Index(s, sep); + if (pos === -1) { + break; + } + n = n + (1) >> 0; + s = $substring(s, (pos + sep.length >> 0)); + } + return n; + }; + $pkg.Count = Count; + $ptrType(Builder).prototype.String = function String() { + var b; + b = this; + return ($bytesToString(b.buf)); + }; + $ptrType(Builder).prototype.copyCheck = function copyCheck() { + var b; + b = this; + if (b.addr === ptrType$1.nil) { + b.addr = b; + } else if (!(b.addr === b)) { + $panic(new $String("strings: illegal use of non-zero Builder copied by value")); + } + }; + Repeat = function Repeat$1(s, count) { + var _q, _q$1, b, count, n, s; + if (count === 0) { + return ""; + } + if (count < 0) { + $panic(new $String("strings: negative Repeat count")); + } else if (!(((_q = ($imul(s.length, count)) / count, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === s.length))) { + $panic(new $String("strings: Repeat count causes overflow")); + } + n = $imul(s.length, count); + b = new Builder.ptr(ptrType$1.nil, sliceType$2.nil); + b.Grow(n); + b.WriteString(s); + while (true) { + if (!(b.Len() < n)) { break; } + if (b.Len() <= (_q$1 = n / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"))) { + b.WriteString(b.String()); + } else { + b.WriteString($substring(b.String(), 0, (n - b.Len() >> 0))); + break; + } + } + return b.String(); + }; + $pkg.Repeat = Repeat; + $ptrType(Builder).prototype.Len = function Len$1() { + var b; + b = this; + return b.buf.$length; + }; + $ptrType(Builder).prototype.Cap = function Cap() { + var b; + b = this; + return b.buf.$capacity; + }; + $ptrType(Builder).prototype.Reset = function Reset$1() { + var b; + b = this; + b.addr = ptrType$1.nil; + b.buf = sliceType$2.nil; + }; + $ptrType(Builder).prototype.grow = function grow(n) { + var b, buf, n; + b = this; + buf = $makeSlice(sliceType$2, b.buf.$length, (($imul(2, b.buf.$capacity)) + n >> 0)); + $copySlice(buf, b.buf); + b.buf = buf; + }; + $ptrType(Builder).prototype.Grow = function Grow(n) { + var b, n; + b = this; + b.copyCheck(); + if (n < 0) { + $panic(new $String("strings.Builder.Grow: negative count")); + } + if ((b.buf.$capacity - b.buf.$length >> 0) < n) { + b.grow(n); + } + }; + $ptrType(Builder).prototype.Write = function Write$1(p) { + var b, p; + b = this; + b.copyCheck(); + b.buf = $appendSlice(b.buf, p); + return [p.$length, $ifaceNil]; + }; + $ptrType(Builder).prototype.WriteByte = function WriteByte(c) { + var b, c; + b = this; + b.copyCheck(); + b.buf = $append(b.buf, c); + return $ifaceNil; + }; + $ptrType(Builder).prototype.WriteRune = function WriteRune(r) { + var b, n, r; + b = this; + b.copyCheck(); + n = b.buf.$length; + b.buf = utf8.AppendRune(b.buf, r); + return [b.buf.$length - n >> 0, $ifaceNil]; + }; + $ptrType(Builder).prototype.WriteString = function WriteString$7(s) { + var b, s; + b = this; + b.copyCheck(); + b.buf = $appendSlice(b.buf, s); + return [s.length, $ifaceNil]; + }; + ptrType.methods = [{prop: "contains", name: "contains", pkg: "strings", typ: $funcType([$Uint8], [$Bool], false)}]; + ptrType$5.methods = [{prop: "next", name: "next", pkg: "strings", typ: $funcType([$String], [$Int], false)}]; + ptrType$6.methods = [{prop: "buildOnce", name: "buildOnce", pkg: "strings", typ: $funcType([], [], false)}, {prop: "build", name: "build", pkg: "strings", typ: $funcType([], [replacer], false)}, {prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}]; + ptrType$3.methods = [{prop: "add", name: "add", pkg: "strings", typ: $funcType([$String, $String, $Int, ptrType$7], [], false)}]; + ptrType$7.methods = [{prop: "lookup", name: "lookup", pkg: "strings", typ: $funcType([$String, $Bool], [$String, $Int, $Bool], false)}, {prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}]; + ptrType$4.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]; + stringWriter.methods = [{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]; + ptrType$8.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}]; + ptrType$2.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}]; + ptrType$9.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}]; + ptrType$10.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([$String], [], false)}]; + ptrType$1.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "copyCheck", name: "copyCheck", pkg: "strings", typ: $funcType([], [], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Cap", name: "Cap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "grow", name: "grow", pkg: "strings", typ: $funcType([$Int], [], false)}, {prop: "Grow", name: "Grow", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]; + asciiSet.init($Uint32, 8); + stringFinder.init("strings", [{prop: "pattern", name: "pattern", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "badCharSkip", name: "badCharSkip", embedded: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "goodSuffixSkip", name: "goodSuffixSkip", embedded: false, exported: false, typ: sliceType$3, tag: ""}]); + Replacer.init("strings", [{prop: "once", name: "once", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "r", name: "r", embedded: false, exported: false, typ: replacer, tag: ""}, {prop: "oldnew", name: "oldnew", embedded: false, exported: false, typ: sliceType, tag: ""}]); + replacer.init([{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}]); + trieNode.init("strings", [{prop: "value", name: "value", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "priority", name: "priority", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "prefix", name: "prefix", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "next", name: "next", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "table", name: "table", embedded: false, exported: false, typ: sliceType$4, tag: ""}]); + genericReplacer.init("strings", [{prop: "root", name: "root", embedded: false, exported: false, typ: trieNode, tag: ""}, {prop: "tableSize", name: "tableSize", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "mapping", name: "mapping", embedded: false, exported: false, typ: arrayType$2, tag: ""}]); + appendSliceWriter.init($Uint8); + stringWriter.init("strings", [{prop: "w", name: "w", embedded: false, exported: false, typ: io.Writer, tag: ""}]); + singleStringReplacer.init("strings", [{prop: "finder", name: "finder", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "value", name: "value", embedded: false, exported: false, typ: $String, tag: ""}]); + byteReplacer.init($Uint8, 256); + byteStringReplacer.init("strings", [{prop: "replacements", name: "replacements", embedded: false, exported: false, typ: arrayType$3, tag: ""}, {prop: "toReplace", name: "toReplace", embedded: false, exported: false, typ: sliceType, tag: ""}]); + Reader.init("strings", [{prop: "s", name: "s", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "i", name: "i", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", embedded: false, exported: false, typ: $Int, tag: ""}]); + Builder.init("strings", [{prop: "addr", name: "addr", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType$2, tag: ""}]); + span.init("strings", [{prop: "start", name: "start", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "end", name: "end", embedded: false, exported: false, typ: $Int, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + asciiSpace = $toNativeArray($kindUint8, [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["bufio"] = (function() { + var $pkg = {}, $init, bytes, errors, io, strings, utf8, Scanner, SplitFunc, Reader, Writer, ReadWriter, sliceType, ptrType, sliceType$1, ptrType$1, ptrType$2, ptrType$3, errNegativeRead, errNegativeWrite, NewScanner, dropCR, ScanLines, NewReaderSize, NewReader, NewWriterSize, NewWriter, NewReadWriter; + bytes = $packages["bytes"]; + errors = $packages["errors"]; + io = $packages["io"]; + strings = $packages["strings"]; + utf8 = $packages["unicode/utf8"]; + Scanner = $newType(0, $kindStruct, "bufio.Scanner", true, "bufio", true, function(r_, split_, maxTokenSize_, token_, buf_, start_, end_, err_, empties_, scanCalled_, done_) { + this.$val = this; + if (arguments.length === 0) { + this.r = $ifaceNil; + this.split = $throwNilPointerError; + this.maxTokenSize = 0; + this.token = sliceType.nil; + this.buf = sliceType.nil; + this.start = 0; + this.end = 0; + this.err = $ifaceNil; + this.empties = 0; + this.scanCalled = false; + this.done = false; + return; + } + this.r = r_; + this.split = split_; + this.maxTokenSize = maxTokenSize_; + this.token = token_; + this.buf = buf_; + this.start = start_; + this.end = end_; + this.err = err_; + this.empties = empties_; + this.scanCalled = scanCalled_; + this.done = done_; + }); + SplitFunc = $newType(4, $kindFunc, "bufio.SplitFunc", true, "bufio", true, null); + Reader = $newType(0, $kindStruct, "bufio.Reader", true, "bufio", true, function(buf_, rd_, r_, w_, err_, lastByte_, lastRuneSize_) { + this.$val = this; + if (arguments.length === 0) { + this.buf = sliceType.nil; + this.rd = $ifaceNil; + this.r = 0; + this.w = 0; + this.err = $ifaceNil; + this.lastByte = 0; + this.lastRuneSize = 0; + return; + } + this.buf = buf_; + this.rd = rd_; + this.r = r_; + this.w = w_; + this.err = err_; + this.lastByte = lastByte_; + this.lastRuneSize = lastRuneSize_; + }); + Writer = $newType(0, $kindStruct, "bufio.Writer", true, "bufio", true, function(err_, buf_, n_, wr_) { + this.$val = this; + if (arguments.length === 0) { + this.err = $ifaceNil; + this.buf = sliceType.nil; + this.n = 0; + this.wr = $ifaceNil; + return; + } + this.err = err_; + this.buf = buf_; + this.n = n_; + this.wr = wr_; + }); + ReadWriter = $newType(0, $kindStruct, "bufio.ReadWriter", true, "bufio", true, function(Reader_, Writer_) { + this.$val = this; + if (arguments.length === 0) { + this.Reader = ptrType.nil; + this.Writer = ptrType$2.nil; + return; + } + this.Reader = Reader_; + this.Writer = Writer_; + }); + $pkg.Scanner = Scanner; + $pkg.SplitFunc = SplitFunc; + $pkg.Reader = Reader; + $pkg.Writer = Writer; + $pkg.ReadWriter = ReadWriter; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint8); + ptrType = $ptrType(Reader); + sliceType$1 = $sliceType(sliceType); + ptrType$1 = $ptrType(strings.Builder); + ptrType$2 = $ptrType(Writer); + ptrType$3 = $ptrType(Scanner); + NewScanner = function NewScanner$1(r) { + var r; + return new Scanner.ptr(r, ScanLines, 65536, sliceType.nil, sliceType.nil, 0, 0, $ifaceNil, 0, false, false); + }; + $pkg.NewScanner = NewScanner; + $ptrType(Scanner).prototype.Err = function Err() { + var s; + s = this; + if ($interfaceIsEqual(s.err, io.EOF)) { + return $ifaceNil; + } + return s.err; + }; + $ptrType(Scanner).prototype.Bytes = function Bytes() { + var s; + s = this; + return s.token; + }; + $ptrType(Scanner).prototype.Text = function Text() { + var s; + s = this; + return ($bytesToString(s.token)); + }; + $ptrType(Scanner).prototype.Scan = function Scan() { + var {_q, _r, _r$1, _tuple, _tuple$1, advance, err, err$1, loop, n, newBuf, newSize, s, token, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + if (s.done) { + $s = -1; return false; + } + s.scanCalled = true; + /* while (true) { */ case 1: + /* */ if (s.end > s.start || !($interfaceIsEqual(s.err, $ifaceNil))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (s.end > s.start || !($interfaceIsEqual(s.err, $ifaceNil))) { */ case 3: + _r = s.split($subslice(s.buf, s.start, s.end), !($interfaceIsEqual(s.err, $ifaceNil))); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + advance = _tuple[0]; + token = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + if ($interfaceIsEqual(err, $pkg.ErrFinalToken)) { + s.token = token; + s.done = true; + $s = -1; return true; + } + s.setErr(err); + $s = -1; return false; + } + if (!s.advance(advance)) { + $s = -1; return false; + } + s.token = token; + if (!(token === sliceType.nil)) { + if ($interfaceIsEqual(s.err, $ifaceNil) || advance > 0) { + s.empties = 0; + } else { + s.empties = s.empties + (1) >> 0; + if (s.empties > 100) { + $panic(new $String("bufio.Scan: too many empty tokens without progressing")); + } + } + $s = -1; return true; + } + /* } */ case 4: + if (!($interfaceIsEqual(s.err, $ifaceNil))) { + s.start = 0; + s.end = 0; + $s = -1; return false; + } + if (s.start > 0 && ((s.end === s.buf.$length) || s.start > (_q = s.buf.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")))) { + $copySlice(s.buf, $subslice(s.buf, s.start, s.end)); + s.end = s.end - (s.start) >> 0; + s.start = 0; + } + if (s.end === s.buf.$length) { + if (s.buf.$length >= s.maxTokenSize || s.buf.$length > 1073741823) { + s.setErr($pkg.ErrTooLong); + $s = -1; return false; + } + newSize = $imul(s.buf.$length, 2); + if (newSize === 0) { + newSize = 4096; + } + if (newSize > s.maxTokenSize) { + newSize = s.maxTokenSize; + } + newBuf = $makeSlice(sliceType, newSize); + $copySlice(newBuf, $subslice(s.buf, s.start, s.end)); + s.buf = newBuf; + s.end = s.end - (s.start) >> 0; + s.start = 0; + } + loop = 0; + /* while (true) { */ case 6: + _r$1 = s.r.Read($subslice(s.buf, s.end, s.buf.$length)); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + n = _tuple$1[0]; + err$1 = _tuple$1[1]; + if (n < 0 || (s.buf.$length - s.end >> 0) < n) { + s.setErr($pkg.ErrBadReadCount); + /* break; */ $s = 7; continue; + } + s.end = s.end + (n) >> 0; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + s.setErr(err$1); + /* break; */ $s = 7; continue; + } + if (n > 0) { + s.empties = 0; + /* break; */ $s = 7; continue; + } + loop = loop + (1) >> 0; + if (loop > 100) { + s.setErr(io.ErrNoProgress); + /* break; */ $s = 7; continue; + } + $s = 6; continue; + case 7: + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: Scan, $c: true, $r, _q, _r, _r$1, _tuple, _tuple$1, advance, err, err$1, loop, n, newBuf, newSize, s, token, $s};return $f; + }; + $ptrType(Scanner).prototype.advance = function advance(n) { + var n, s; + s = this; + if (n < 0) { + s.setErr($pkg.ErrNegativeAdvance); + return false; + } + if (n > (s.end - s.start >> 0)) { + s.setErr($pkg.ErrAdvanceTooFar); + return false; + } + s.start = s.start + (n) >> 0; + return true; + }; + $ptrType(Scanner).prototype.setErr = function setErr(err) { + var err, s; + s = this; + if ($interfaceIsEqual(s.err, $ifaceNil) || $interfaceIsEqual(s.err, io.EOF)) { + s.err = err; + } + }; + $ptrType(Scanner).prototype.Buffer = function Buffer(buf, max) { + var buf, max, s; + s = this; + if (s.scanCalled) { + $panic(new $String("Buffer called after Scan")); + } + s.buf = $subslice(buf, 0, buf.$capacity); + s.maxTokenSize = max; + }; + $ptrType(Scanner).prototype.Split = function Split(split) { + var s, split; + s = this; + if (s.scanCalled) { + $panic(new $String("Split called after Scan")); + } + s.split = split; + }; + dropCR = function dropCR$1(data) { + var data, x; + if (data.$length > 0 && ((x = data.$length - 1 >> 0, ((x < 0 || x >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x])) === 13)) { + return $subslice(data, 0, (data.$length - 1 >> 0)); + } + return data; + }; + ScanLines = function ScanLines$1(data, atEOF) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, advance$1, atEOF, data, err, i, token; + advance$1 = 0; + token = sliceType.nil; + err = $ifaceNil; + if (atEOF && (data.$length === 0)) { + _tmp = 0; + _tmp$1 = sliceType.nil; + _tmp$2 = $ifaceNil; + advance$1 = _tmp; + token = _tmp$1; + err = _tmp$2; + return [advance$1, token, err]; + } + i = bytes.IndexByte(data, 10); + if (i >= 0) { + _tmp$3 = i + 1 >> 0; + _tmp$4 = dropCR($subslice(data, 0, i)); + _tmp$5 = $ifaceNil; + advance$1 = _tmp$3; + token = _tmp$4; + err = _tmp$5; + return [advance$1, token, err]; + } + if (atEOF) { + _tmp$6 = data.$length; + _tmp$7 = dropCR(data); + _tmp$8 = $ifaceNil; + advance$1 = _tmp$6; + token = _tmp$7; + err = _tmp$8; + return [advance$1, token, err]; + } + _tmp$9 = 0; + _tmp$10 = sliceType.nil; + _tmp$11 = $ifaceNil; + advance$1 = _tmp$9; + token = _tmp$10; + err = _tmp$11; + return [advance$1, token, err]; + }; + $pkg.ScanLines = ScanLines; + NewReaderSize = function NewReaderSize$1(rd, size) { + var _tuple, b, ok, r, rd, size; + _tuple = $assertType(rd, ptrType, true); + b = _tuple[0]; + ok = _tuple[1]; + if (ok && b.buf.$length >= size) { + return b; + } + if (size < 16) { + size = 16; + } + r = new Reader.ptr(sliceType.nil, $ifaceNil, 0, 0, $ifaceNil, 0, 0); + r.reset($makeSlice(sliceType, size), rd); + return r; + }; + $pkg.NewReaderSize = NewReaderSize; + NewReader = function NewReader$1(rd) { + var rd; + return NewReaderSize(rd, 4096); + }; + $pkg.NewReader = NewReader; + $ptrType(Reader).prototype.Size = function Size() { + var b; + b = this; + return b.buf.$length; + }; + $ptrType(Reader).prototype.Reset = function Reset(r) { + var b, r; + b = this; + if (b.buf === sliceType.nil) { + b.buf = $makeSlice(sliceType, 4096); + } + b.reset(b.buf, r); + }; + $ptrType(Reader).prototype.reset = function reset(buf, r) { + var b, buf, r; + b = this; + Reader.copy(b, new Reader.ptr(buf, r, 0, 0, $ifaceNil, -1, -1)); + }; + $ptrType(Reader).prototype.fill = function fill() { + var {_r, _tuple, b, err, i, n, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = this; + if (b.r > 0) { + $copySlice(b.buf, $subslice(b.buf, b.r, b.w)); + b.w = b.w - (b.r) >> 0; + b.r = 0; + } + if (b.w >= b.buf.$length) { + $panic(new $String("bufio: tried to fill full buffer")); + } + i = 100; + /* while (true) { */ case 1: + /* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; } + _r = b.rd.Read($subslice(b.buf, b.w)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + if (n < 0) { + $panic(errNegativeRead); + } + b.w = b.w + (n) >> 0; + if (!($interfaceIsEqual(err, $ifaceNil))) { + b.err = err; + $s = -1; return; + } + if (n > 0) { + $s = -1; return; + } + i = i - (1) >> 0; + $s = 1; continue; + case 2: + b.err = io.ErrNoProgress; + $s = -1; return; + /* */ } return; } var $f = {$blk: fill, $c: true, $r, _r, _tuple, b, err, i, n, $s};return $f; + }; + $ptrType(Reader).prototype.readErr = function readErr() { + var b, err; + b = this; + err = b.err; + b.err = $ifaceNil; + return err; + }; + $ptrType(Reader).prototype.Peek = function Peek(n) { + var {avail, b, err, n, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = this; + if (n < 0) { + $s = -1; return [sliceType.nil, $pkg.ErrNegativeCount]; + } + b.lastByte = -1; + b.lastRuneSize = -1; + /* while (true) { */ case 1: + /* if (!((b.w - b.r >> 0) < n && (b.w - b.r >> 0) < b.buf.$length && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!((b.w - b.r >> 0) < n && (b.w - b.r >> 0) < b.buf.$length && $interfaceIsEqual(b.err, $ifaceNil))) { $s = 2; continue; } + $r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 1; continue; + case 2: + if (n > b.buf.$length) { + $s = -1; return [$subslice(b.buf, b.r, b.w), $pkg.ErrBufferFull]; + } + err = $ifaceNil; + avail = b.w - b.r >> 0; + if (avail < n) { + n = avail; + err = b.readErr(); + if ($interfaceIsEqual(err, $ifaceNil)) { + err = $pkg.ErrBufferFull; + } + } + $s = -1; return [$subslice(b.buf, b.r, (b.r + n >> 0)), err]; + /* */ } return; } var $f = {$blk: Peek, $c: true, $r, avail, b, err, n, $s};return $f; + }; + $ptrType(Reader).prototype.Discard = function Discard(n) { + var {_tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, discarded, err, n, remain, skip, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + discarded = 0; + err = $ifaceNil; + b = this; + if (n < 0) { + _tmp = 0; + _tmp$1 = $pkg.ErrNegativeCount; + discarded = _tmp; + err = _tmp$1; + $s = -1; return [discarded, err]; + } + if (n === 0) { + $s = -1; return [discarded, err]; + } + b.lastByte = -1; + b.lastRuneSize = -1; + remain = n; + /* while (true) { */ case 1: + skip = b.Buffered(); + /* */ if (skip === 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (skip === 0) { */ case 3: + $r = b.fill(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + skip = b.Buffered(); + /* } */ case 4: + if (skip > remain) { + skip = remain; + } + b.r = b.r + (skip) >> 0; + remain = remain - (skip) >> 0; + if (remain === 0) { + _tmp$2 = n; + _tmp$3 = $ifaceNil; + discarded = _tmp$2; + err = _tmp$3; + $s = -1; return [discarded, err]; + } + if (!($interfaceIsEqual(b.err, $ifaceNil))) { + _tmp$4 = n - remain >> 0; + _tmp$5 = b.readErr(); + discarded = _tmp$4; + err = _tmp$5; + $s = -1; return [discarded, err]; + } + $s = 1; continue; + case 2: + $s = -1; return [discarded, err]; + /* */ } return; } var $f = {$blk: Discard, $c: true, $r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, discarded, err, n, remain, skip, $s};return $f; + }; + $ptrType(Reader).prototype.Read = function Read(p) { + var {_r, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, b, err, n, p, x, x$1, x$2, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + b = this; + n = p.$length; + if (n === 0) { + if (b.Buffered() > 0) { + _tmp = 0; + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + _tmp$2 = 0; + _tmp$3 = b.readErr(); + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + /* */ if (b.r === b.w) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (b.r === b.w) { */ case 1: + if (!($interfaceIsEqual(b.err, $ifaceNil))) { + _tmp$4 = 0; + _tmp$5 = b.readErr(); + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + } + /* */ if (p.$length >= b.buf.$length) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (p.$length >= b.buf.$length) { */ case 3: + _r = b.rd.Read(p); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + b.err = _tuple[1]; + if (n < 0) { + $panic(errNegativeRead); + } + if (n > 0) { + b.lastByte = (((x = n - 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) >> 0)); + b.lastRuneSize = -1; + } + _tmp$6 = n; + _tmp$7 = b.readErr(); + n = _tmp$6; + err = _tmp$7; + $s = -1; return [n, err]; + /* } */ case 4: + b.r = 0; + b.w = 0; + _r$1 = b.rd.Read(b.buf); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + n = _tuple$1[0]; + b.err = _tuple$1[1]; + if (n < 0) { + $panic(errNegativeRead); + } + if (n === 0) { + _tmp$8 = 0; + _tmp$9 = b.readErr(); + n = _tmp$8; + err = _tmp$9; + $s = -1; return [n, err]; + } + b.w = b.w + (n) >> 0; + /* } */ case 2: + n = $copySlice(p, $subslice(b.buf, b.r, b.w)); + b.r = b.r + (n) >> 0; + b.lastByte = (((x$1 = b.buf, x$2 = b.r - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) >> 0)); + b.lastRuneSize = -1; + _tmp$10 = n; + _tmp$11 = $ifaceNil; + n = _tmp$10; + err = _tmp$11; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Read, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, b, err, n, p, x, x$1, x$2, $s};return $f; + }; + $ptrType(Reader).prototype.ReadByte = function ReadByte() { + var {b, c, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = this; + b.lastRuneSize = -1; + /* while (true) { */ case 1: + /* if (!(b.r === b.w)) { break; } */ if(!(b.r === b.w)) { $s = 2; continue; } + if (!($interfaceIsEqual(b.err, $ifaceNil))) { + $s = -1; return [0, b.readErr()]; + } + $r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 1; continue; + case 2: + c = (x = b.buf, x$1 = b.r, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + b.r = b.r + (1) >> 0; + b.lastByte = ((c >> 0)); + $s = -1; return [c, $ifaceNil]; + /* */ } return; } var $f = {$blk: ReadByte, $c: true, $r, b, c, x, x$1, $s};return $f; + }; + $ptrType(Reader).prototype.UnreadByte = function UnreadByte() { + var b, x, x$1; + b = this; + if (b.lastByte < 0 || (b.r === 0) && b.w > 0) { + return $pkg.ErrInvalidUnreadByte; + } + if (b.r > 0) { + b.r = b.r - (1) >> 0; + } else { + b.w = 1; + } + (x = b.buf, x$1 = b.r, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = ((b.lastByte << 24 >>> 24)))); + b.lastByte = -1; + b.lastRuneSize = -1; + return $ifaceNil; + }; + $ptrType(Reader).prototype.ReadRune = function ReadRune() { + var {_tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, b, err, r, size, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = 0; + size = 0; + err = $ifaceNil; + b = this; + /* while (true) { */ case 1: + /* if (!((b.r + 4 >> 0) > b.w && !utf8.FullRune($subslice(b.buf, b.r, b.w)) && $interfaceIsEqual(b.err, $ifaceNil) && (b.w - b.r >> 0) < b.buf.$length)) { break; } */ if(!((b.r + 4 >> 0) > b.w && !utf8.FullRune($subslice(b.buf, b.r, b.w)) && $interfaceIsEqual(b.err, $ifaceNil) && (b.w - b.r >> 0) < b.buf.$length)) { $s = 2; continue; } + $r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 1; continue; + case 2: + b.lastRuneSize = -1; + if (b.r === b.w) { + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = b.readErr(); + r = _tmp; + size = _tmp$1; + err = _tmp$2; + $s = -1; return [r, size, err]; + } + _tmp$3 = (((x = b.buf, x$1 = b.r, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) >> 0)); + _tmp$4 = 1; + r = _tmp$3; + size = _tmp$4; + if (r >= 128) { + _tuple = utf8.DecodeRune($subslice(b.buf, b.r, b.w)); + r = _tuple[0]; + size = _tuple[1]; + } + b.r = b.r + (size) >> 0; + b.lastByte = (((x$2 = b.buf, x$3 = b.r - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])) >> 0)); + b.lastRuneSize = size; + _tmp$5 = r; + _tmp$6 = size; + _tmp$7 = $ifaceNil; + r = _tmp$5; + size = _tmp$6; + err = _tmp$7; + $s = -1; return [r, size, err]; + /* */ } return; } var $f = {$blk: ReadRune, $c: true, $r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, b, err, r, size, x, x$1, x$2, x$3, $s};return $f; + }; + $ptrType(Reader).prototype.UnreadRune = function UnreadRune() { + var b; + b = this; + if (b.lastRuneSize < 0 || b.r < b.lastRuneSize) { + return $pkg.ErrInvalidUnreadRune; + } + b.r = b.r - (b.lastRuneSize) >> 0; + b.lastByte = -1; + b.lastRuneSize = -1; + return $ifaceNil; + }; + $ptrType(Reader).prototype.Buffered = function Buffered() { + var b; + b = this; + return b.w - b.r >> 0; + }; + $ptrType(Reader).prototype.ReadSlice = function ReadSlice(delim) { + var {b, delim, err, i, i$1, line, s, $s, $r, $c} = $restore(this, {delim}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + line = sliceType.nil; + err = $ifaceNil; + b = this; + s = 0; + /* while (true) { */ case 1: + i = bytes.IndexByte($subslice(b.buf, (b.r + s >> 0), b.w), delim); + if (i >= 0) { + i = i + (s) >> 0; + line = $subslice(b.buf, b.r, ((b.r + i >> 0) + 1 >> 0)); + b.r = b.r + ((i + 1 >> 0)) >> 0; + /* break; */ $s = 2; continue; + } + if (!($interfaceIsEqual(b.err, $ifaceNil))) { + line = $subslice(b.buf, b.r, b.w); + b.r = b.w; + err = b.readErr(); + /* break; */ $s = 2; continue; + } + if (b.Buffered() >= b.buf.$length) { + b.r = b.w; + line = b.buf; + err = $pkg.ErrBufferFull; + /* break; */ $s = 2; continue; + } + s = b.w - b.r >> 0; + $r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 1; continue; + case 2: + i$1 = line.$length - 1 >> 0; + if (i$1 >= 0) { + b.lastByte = ((((i$1 < 0 || i$1 >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + i$1]) >> 0)); + b.lastRuneSize = -1; + } + $s = -1; return [line, err]; + /* */ } return; } var $f = {$blk: ReadSlice, $c: true, $r, b, delim, err, i, i$1, line, s, $s};return $f; + }; + $ptrType(Reader).prototype.ReadLine = function ReadLine() { + var {_r, _tmp, _tmp$1, _tmp$2, _tuple, b, drop, err, isPrefix, line, x, x$1, x$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + line = sliceType.nil; + isPrefix = false; + err = $ifaceNil; + b = this; + _r = b.ReadSlice(10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + line = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $pkg.ErrBufferFull)) { + if (line.$length > 0 && ((x = line.$length - 1 >> 0, ((x < 0 || x >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + x])) === 13)) { + if (b.r === 0) { + $panic(new $String("bufio: tried to rewind past start of buffer")); + } + b.r = b.r - (1) >> 0; + line = $subslice(line, 0, (line.$length - 1 >> 0)); + } + _tmp = line; + _tmp$1 = true; + _tmp$2 = $ifaceNil; + line = _tmp; + isPrefix = _tmp$1; + err = _tmp$2; + $s = -1; return [line, isPrefix, err]; + } + if (line.$length === 0) { + if (!($interfaceIsEqual(err, $ifaceNil))) { + line = sliceType.nil; + } + $s = -1; return [line, isPrefix, err]; + } + err = $ifaceNil; + if ((x$1 = line.$length - 1 >> 0, ((x$1 < 0 || x$1 >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + x$1])) === 10) { + drop = 1; + if (line.$length > 1 && ((x$2 = line.$length - 2 >> 0, ((x$2 < 0 || x$2 >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + x$2])) === 13)) { + drop = 2; + } + line = $subslice(line, 0, (line.$length - drop >> 0)); + } + $s = -1; return [line, isPrefix, err]; + /* */ } return; } var $f = {$blk: ReadLine, $c: true, $r, _r, _tmp, _tmp$1, _tmp$2, _tuple, b, drop, err, isPrefix, line, x, x$1, x$2, $s};return $f; + }; + $ptrType(Reader).prototype.collectFragments = function collectFragments(delim) { + var {_r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, buf, delim, e, err, finalFragment, frag, fullBuffers, totalLen, $s, $r, $c} = $restore(this, {delim}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fullBuffers = sliceType$1.nil; + finalFragment = sliceType.nil; + totalLen = 0; + err = $ifaceNil; + b = this; + frag = sliceType.nil; + /* while (true) { */ case 1: + e = $ifaceNil; + _r = b.ReadSlice(delim); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + frag = _tuple[0]; + e = _tuple[1]; + if ($interfaceIsEqual(e, $ifaceNil)) { + /* break; */ $s = 2; continue; + } + if (!($interfaceIsEqual(e, $pkg.ErrBufferFull))) { + err = e; + /* break; */ $s = 2; continue; + } + buf = bytes.Clone(frag); + fullBuffers = $append(fullBuffers, buf); + totalLen = totalLen + (buf.$length) >> 0; + $s = 1; continue; + case 2: + totalLen = totalLen + (frag.$length) >> 0; + _tmp = fullBuffers; + _tmp$1 = frag; + _tmp$2 = totalLen; + _tmp$3 = err; + fullBuffers = _tmp; + finalFragment = _tmp$1; + totalLen = _tmp$2; + err = _tmp$3; + $s = -1; return [fullBuffers, finalFragment, totalLen, err]; + /* */ } return; } var $f = {$blk: collectFragments, $c: true, $r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, buf, delim, e, err, finalFragment, frag, fullBuffers, totalLen, $s};return $f; + }; + $ptrType(Reader).prototype.ReadBytes = function ReadBytes(delim) { + var {_i, _r, _ref, _tuple, b, buf, delim, err, frag, full, i, n, $s, $r, $c} = $restore(this, {delim}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = this; + _r = b.collectFragments(delim); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + full = _tuple[0]; + frag = _tuple[1]; + n = _tuple[2]; + err = _tuple[3]; + buf = $makeSlice(sliceType, n); + n = 0; + _ref = full; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + n = n + ($copySlice($subslice(buf, n), ((i < 0 || i >= full.$length) ? ($throwRuntimeError("index out of range"), undefined) : full.$array[full.$offset + i]))) >> 0; + _i++; + } + $copySlice($subslice(buf, n), frag); + $s = -1; return [buf, err]; + /* */ } return; } var $f = {$blk: ReadBytes, $c: true, $r, _i, _r, _ref, _tuple, b, buf, delim, err, frag, full, i, n, $s};return $f; + }; + $ptrType(Reader).prototype.ReadString = function ReadString(delim) { + var {_i, _r, _ref, _tuple, b, buf, delim, err, fb, frag, full, n, $s, $r, $c} = $restore(this, {delim}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = this; + _r = b.collectFragments(delim); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + full = _tuple[0]; + frag = _tuple[1]; + n = _tuple[2]; + err = _tuple[3]; + buf = new strings.Builder.ptr(ptrType$1.nil, sliceType.nil); + buf.Grow(n); + _ref = full; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + fb = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + buf.Write(fb); + _i++; + } + buf.Write(frag); + $s = -1; return [buf.String(), err]; + /* */ } return; } var $f = {$blk: ReadString, $c: true, $r, _i, _r, _ref, _tuple, b, buf, delim, err, fb, frag, full, n, $s};return $f; + }; + $ptrType(Reader).prototype.WriteTo = function WriteTo(w) { + var {_r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, b, err, err$1, err$2, err$3, m, m$1, m$2, n, ok, ok$1, r, w, w$1, x, x$1, x$2, $s, $r, $c} = $restore(this, {w}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + b = this; + b.lastByte = -1; + b.lastRuneSize = -1; + _r = b.writeBuf(w); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [n, err]; + } + _tuple$1 = $assertType(b.rd, io.WriterTo, true); + r = _tuple$1[0]; + ok = _tuple$1[1]; + /* */ if (ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok) { */ case 2: + _r$1 = r.WriteTo(w); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$2 = _r$1; + m = _tuple$2[0]; + err$1 = _tuple$2[1]; + n = (x = m, new $Int64(n.$high + x.$high, n.$low + x.$low)); + _tmp = n; + _tmp$1 = err$1; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + /* } */ case 3: + _tuple$3 = $assertType(w, io.ReaderFrom, true); + w$1 = _tuple$3[0]; + ok$1 = _tuple$3[1]; + /* */ if (ok$1) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (ok$1) { */ case 5: + _r$2 = w$1.ReadFrom(b.rd); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$4 = _r$2; + m$1 = _tuple$4[0]; + err$2 = _tuple$4[1]; + n = (x$1 = m$1, new $Int64(n.$high + x$1.$high, n.$low + x$1.$low)); + _tmp$2 = n; + _tmp$3 = err$2; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + /* } */ case 6: + /* */ if ((b.w - b.r >> 0) < b.buf.$length) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ((b.w - b.r >> 0) < b.buf.$length) { */ case 8: + $r = b.fill(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + /* while (true) { */ case 11: + /* if (!(b.r < b.w)) { break; } */ if(!(b.r < b.w)) { $s = 12; continue; } + _r$3 = b.writeBuf(w); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$5 = _r$3; + m$2 = _tuple$5[0]; + err$3 = _tuple$5[1]; + n = (x$2 = m$2, new $Int64(n.$high + x$2.$high, n.$low + x$2.$low)); + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + _tmp$4 = n; + _tmp$5 = err$3; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + } + $r = b.fill(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 11; continue; + case 12: + if ($interfaceIsEqual(b.err, io.EOF)) { + b.err = $ifaceNil; + } + _tmp$6 = n; + _tmp$7 = b.readErr(); + n = _tmp$6; + err = _tmp$7; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: WriteTo, $c: true, $r, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, b, err, err$1, err$2, err$3, m, m$1, m$2, n, ok, ok$1, r, w, w$1, x, x$1, x$2, $s};return $f; + }; + $ptrType(Reader).prototype.writeBuf = function writeBuf(w) { + var {_r, _tuple, b, err, n, w, $s, $r, $c} = $restore(this, {w}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = this; + _r = w.Write($subslice(b.buf, b.r, b.w)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + if (n < 0) { + $panic(errNegativeWrite); + } + b.r = b.r + (n) >> 0; + $s = -1; return [(new $Int64(0, n)), err]; + /* */ } return; } var $f = {$blk: writeBuf, $c: true, $r, _r, _tuple, b, err, n, w, $s};return $f; + }; + NewWriterSize = function NewWriterSize$1(w, size) { + var _tuple, b, ok, size, w; + _tuple = $assertType(w, ptrType$2, true); + b = _tuple[0]; + ok = _tuple[1]; + if (ok && b.buf.$length >= size) { + return b; + } + if (size <= 0) { + size = 4096; + } + return new Writer.ptr($ifaceNil, $makeSlice(sliceType, size), 0, w); + }; + $pkg.NewWriterSize = NewWriterSize; + NewWriter = function NewWriter$1(w) { + var w; + return NewWriterSize(w, 4096); + }; + $pkg.NewWriter = NewWriter; + $ptrType(Writer).prototype.Size = function Size$1() { + var b; + b = this; + return b.buf.$length; + }; + $ptrType(Writer).prototype.Reset = function Reset$1(w) { + var b, w; + b = this; + if (b.buf === sliceType.nil) { + b.buf = $makeSlice(sliceType, 4096); + } + b.err = $ifaceNil; + b.n = 0; + b.wr = w; + }; + $ptrType(Writer).prototype.Flush = function Flush() { + var {_r, _tuple, b, err, n, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = this; + if (!($interfaceIsEqual(b.err, $ifaceNil))) { + $s = -1; return b.err; + } + if (b.n === 0) { + $s = -1; return $ifaceNil; + } + _r = b.wr.Write($subslice(b.buf, 0, b.n)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + if (n < b.n && $interfaceIsEqual(err, $ifaceNil)) { + err = io.ErrShortWrite; + } + if (!($interfaceIsEqual(err, $ifaceNil))) { + if (n > 0 && n < b.n) { + $copySlice($subslice(b.buf, 0, (b.n - n >> 0)), $subslice(b.buf, n, b.n)); + } + b.n = b.n - (n) >> 0; + b.err = err; + $s = -1; return err; + } + b.n = 0; + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Flush, $c: true, $r, _r, _tuple, b, err, n, $s};return $f; + }; + $ptrType(Writer).prototype.Available = function Available() { + var b; + b = this; + return b.buf.$length - b.n >> 0; + }; + $ptrType(Writer).prototype.AvailableBuffer = function AvailableBuffer() { + var b; + b = this; + return $subslice($subslice(b.buf, b.n), 0, 0); + }; + $ptrType(Writer).prototype.Buffered = function Buffered$1() { + var b; + b = this; + return b.n; + }; + $ptrType(Writer).prototype.Write = function Write(p) { + var {_r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, n, n$1, nn, p, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + nn = 0; + err = $ifaceNil; + b = this; + /* while (true) { */ case 1: + /* if (!(p.$length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!(p.$length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { $s = 2; continue; } + n = 0; + /* */ if (b.Buffered() === 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (b.Buffered() === 0) { */ case 3: + _r = b.wr.Write(p); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + b.err = _tuple[1]; + $s = 5; continue; + /* } else { */ case 4: + n = $copySlice($subslice(b.buf, b.n), p); + b.n = b.n + (n) >> 0; + _r$1 = b.Flush(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 5: + nn = nn + (n) >> 0; + p = $subslice(p, n); + $s = 1; continue; + case 2: + if (!($interfaceIsEqual(b.err, $ifaceNil))) { + _tmp = nn; + _tmp$1 = b.err; + nn = _tmp; + err = _tmp$1; + $s = -1; return [nn, err]; + } + n$1 = $copySlice($subslice(b.buf, b.n), p); + b.n = b.n + (n$1) >> 0; + nn = nn + (n$1) >> 0; + _tmp$2 = nn; + _tmp$3 = $ifaceNil; + nn = _tmp$2; + err = _tmp$3; + $s = -1; return [nn, err]; + /* */ } return; } var $f = {$blk: Write, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, n, n$1, nn, p, $s};return $f; + }; + $ptrType(Writer).prototype.WriteByte = function WriteByte(c) { + var {_r, _v, b, c, x, x$1, $s, $r, $c} = $restore(this, {c}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = this; + if (!($interfaceIsEqual(b.err, $ifaceNil))) { + $s = -1; return b.err; + } + if (!(b.Available() <= 0)) { _v = false; $s = 3; continue s; } + _r = b.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = !($interfaceIsEqual(_r, $ifaceNil)); case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return b.err; + /* } */ case 2: + (x = b.buf, x$1 = b.n, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = c)); + b.n = b.n + (1) >> 0; + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: WriteByte, $c: true, $r, _r, _v, b, c, x, x$1, $s};return $f; + }; + $ptrType(Writer).prototype.WriteRune = function WriteRune(r) { + var {$24r, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, b, err, n, r, size, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + size = 0; + err = $ifaceNil; + b = this; + /* */ if (((r >>> 0)) < 128) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (((r >>> 0)) < 128) { */ case 1: + _r = b.WriteByte(((r << 24 >>> 24))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = 0; + _tmp$1 = err; + size = _tmp; + err = _tmp$1; + $s = -1; return [size, err]; + } + _tmp$2 = 1; + _tmp$3 = $ifaceNil; + size = _tmp$2; + err = _tmp$3; + $s = -1; return [size, err]; + /* } */ case 2: + if (!($interfaceIsEqual(b.err, $ifaceNil))) { + _tmp$4 = 0; + _tmp$5 = b.err; + size = _tmp$4; + err = _tmp$5; + $s = -1; return [size, err]; + } + n = b.Available(); + /* */ if (n < 4) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (n < 4) { */ case 4: + _r$1 = b.Flush(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + if (!($interfaceIsEqual(b.err, $ifaceNil))) { + _tmp$6 = 0; + _tmp$7 = b.err; + size = _tmp$6; + err = _tmp$7; + $s = -1; return [size, err]; + } + n = b.Available(); + /* */ if (n < 4) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (n < 4) { */ case 7: + _r$2 = b.WriteString(($encodeRune(r))); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + size = _tuple[0]; + err = _tuple[1]; + $24r = [size, err]; + $s = 10; case 10: return $24r; + /* } */ case 8: + /* } */ case 5: + size = utf8.EncodeRune($subslice(b.buf, b.n), r); + b.n = b.n + (size) >> 0; + _tmp$8 = size; + _tmp$9 = $ifaceNil; + size = _tmp$8; + err = _tmp$9; + $s = -1; return [size, err]; + /* */ } return; } var $f = {$blk: WriteRune, $c: true, $r, $24r, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, b, err, n, r, size, $s};return $f; + }; + $ptrType(Writer).prototype.WriteString = function WriteString(s) { + var {_r, _r$1, _tuple, _tuple$1, b, n, n$1, nn, s, sw, tryStringWriter, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = this; + sw = $ifaceNil; + tryStringWriter = true; + nn = 0; + /* while (true) { */ case 1: + /* if (!(s.length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!(s.length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { $s = 2; continue; } + n = 0; + if ((b.Buffered() === 0) && $interfaceIsEqual(sw, $ifaceNil) && tryStringWriter) { + _tuple = $assertType(b.wr, io.StringWriter, true); + sw = _tuple[0]; + tryStringWriter = _tuple[1]; + } + /* */ if ((b.Buffered() === 0) && tryStringWriter) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((b.Buffered() === 0) && tryStringWriter) { */ case 3: + _r = sw.WriteString(s); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + n = _tuple$1[0]; + b.err = _tuple$1[1]; + $s = 5; continue; + /* } else { */ case 4: + n = $copyString($subslice(b.buf, b.n), s); + b.n = b.n + (n) >> 0; + _r$1 = b.Flush(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 5: + nn = nn + (n) >> 0; + s = $substring(s, n); + $s = 1; continue; + case 2: + if (!($interfaceIsEqual(b.err, $ifaceNil))) { + $s = -1; return [nn, b.err]; + } + n$1 = $copyString($subslice(b.buf, b.n), s); + b.n = b.n + (n$1) >> 0; + nn = nn + (n$1) >> 0; + $s = -1; return [nn, $ifaceNil]; + /* */ } return; } var $f = {$blk: WriteString, $c: true, $r, _r, _r$1, _tuple, _tuple$1, b, n, n$1, nn, s, sw, tryStringWriter, $s};return $f; + }; + $ptrType(Writer).prototype.ReadFrom = function ReadFrom(r) { + var {_r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, b, err, err$1, err1, m, n, nn, nr, r, readerFrom, readerFromOK, x, x$1, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + err = $ifaceNil; + b = this; + if (!($interfaceIsEqual(b.err, $ifaceNil))) { + _tmp = new $Int64(0, 0); + _tmp$1 = b.err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + _tuple = $assertType(b.wr, io.ReaderFrom, true); + readerFrom = _tuple[0]; + readerFromOK = _tuple[1]; + m = 0; + /* while (true) { */ case 1: + /* */ if (b.Available() === 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (b.Available() === 0) { */ case 3: + _r = b.Flush(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err1 = _r; + if (!($interfaceIsEqual(err1, $ifaceNil))) { + _tmp$2 = n; + _tmp$3 = err1; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + /* } */ case 4: + /* */ if (readerFromOK && (b.Buffered() === 0)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (readerFromOK && (b.Buffered() === 0)) { */ case 6: + _r$1 = readerFrom.ReadFrom(r); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + nn = _tuple$1[0]; + err$1 = _tuple$1[1]; + b.err = err$1; + n = (x = nn, new $Int64(n.$high + x.$high, n.$low + x.$low)); + _tmp$4 = n; + _tmp$5 = err$1; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + /* } */ case 7: + nr = 0; + /* while (true) { */ case 9: + /* if (!(nr < 100)) { break; } */ if(!(nr < 100)) { $s = 10; continue; } + _r$2 = r.Read($subslice(b.buf, b.n)); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + m = _tuple$2[0]; + err = _tuple$2[1]; + if (!((m === 0)) || !($interfaceIsEqual(err, $ifaceNil))) { + /* break; */ $s = 10; continue; + } + nr = nr + (1) >> 0; + $s = 9; continue; + case 10: + if (nr === 100) { + _tmp$6 = n; + _tmp$7 = io.ErrNoProgress; + n = _tmp$6; + err = _tmp$7; + $s = -1; return [n, err]; + } + b.n = b.n + (m) >> 0; + n = (x$1 = (new $Int64(0, m)), new $Int64(n.$high + x$1.$high, n.$low + x$1.$low)); + if (!($interfaceIsEqual(err, $ifaceNil))) { + /* break; */ $s = 2; continue; + } + $s = 1; continue; + case 2: + /* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ($interfaceIsEqual(err, io.EOF)) { */ case 12: + /* */ if (b.Available() === 0) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (b.Available() === 0) { */ case 14: + _r$3 = b.Flush(); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err = _r$3; + $s = 16; continue; + /* } else { */ case 15: + err = $ifaceNil; + /* } */ case 16: + /* } */ case 13: + _tmp$8 = n; + _tmp$9 = err; + n = _tmp$8; + err = _tmp$9; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: ReadFrom, $c: true, $r, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, b, err, err$1, err1, m, n, nn, nr, r, readerFrom, readerFromOK, x, x$1, $s};return $f; + }; + NewReadWriter = function NewReadWriter$1(r, w) { + var r, w; + return new ReadWriter.ptr(r, w); + }; + $pkg.NewReadWriter = NewReadWriter; + ptrType$3.methods = [{prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "Text", name: "Text", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Scan", name: "Scan", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "advance", name: "advance", pkg: "bufio", typ: $funcType([$Int], [$Bool], false)}, {prop: "setErr", name: "setErr", pkg: "bufio", typ: $funcType([$error], [], false)}, {prop: "Buffer", name: "Buffer", pkg: "", typ: $funcType([sliceType, $Int], [], false)}, {prop: "Split", name: "Split", pkg: "", typ: $funcType([SplitFunc], [], false)}]; + ptrType.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Reader], [], false)}, {prop: "reset", name: "reset", pkg: "bufio", typ: $funcType([sliceType, io.Reader], [], false)}, {prop: "fill", name: "fill", pkg: "bufio", typ: $funcType([], [], false)}, {prop: "readErr", name: "readErr", pkg: "bufio", typ: $funcType([], [$error], false)}, {prop: "Peek", name: "Peek", pkg: "", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "Discard", name: "Discard", pkg: "", typ: $funcType([$Int], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Buffered", name: "Buffered", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "ReadSlice", name: "ReadSlice", pkg: "", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "ReadLine", name: "ReadLine", pkg: "", typ: $funcType([], [sliceType, $Bool, $error], false)}, {prop: "collectFragments", name: "collectFragments", pkg: "bufio", typ: $funcType([$Uint8], [sliceType$1, sliceType, $Int, $error], false)}, {prop: "ReadBytes", name: "ReadBytes", pkg: "", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "ReadString", name: "ReadString", pkg: "", typ: $funcType([$Uint8], [$String, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "writeBuf", name: "writeBuf", pkg: "bufio", typ: $funcType([io.Writer], [$Int64, $error], false)}]; + ptrType$2.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Writer], [], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Available", name: "Available", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "AvailableBuffer", name: "AvailableBuffer", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "Buffered", name: "Buffered", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}]; + Scanner.init("bufio", [{prop: "r", name: "r", embedded: false, exported: false, typ: io.Reader, tag: ""}, {prop: "split", name: "split", embedded: false, exported: false, typ: SplitFunc, tag: ""}, {prop: "maxTokenSize", name: "maxTokenSize", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "token", name: "token", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "start", name: "start", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "end", name: "end", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "empties", name: "empties", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "scanCalled", name: "scanCalled", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: $Bool, tag: ""}]); + SplitFunc.init([sliceType, $Bool], [$Int, sliceType, $error], false); + Reader.init("bufio", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "rd", name: "rd", embedded: false, exported: false, typ: io.Reader, tag: ""}, {prop: "r", name: "r", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "w", name: "w", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "lastByte", name: "lastByte", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lastRuneSize", name: "lastRuneSize", embedded: false, exported: false, typ: $Int, tag: ""}]); + Writer.init("bufio", [{prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "n", name: "n", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "wr", name: "wr", embedded: false, exported: false, typ: io.Writer, tag: ""}]); + ReadWriter.init("", [{prop: "Reader", name: "Reader", embedded: true, exported: true, typ: ptrType, tag: ""}, {prop: "Writer", name: "Writer", embedded: true, exported: true, typ: ptrType$2, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ErrTooLong = errors.New("bufio.Scanner: token too long"); + $pkg.ErrNegativeAdvance = errors.New("bufio.Scanner: SplitFunc returns negative advance count"); + $pkg.ErrAdvanceTooFar = errors.New("bufio.Scanner: SplitFunc returns advance count beyond input"); + $pkg.ErrBadReadCount = errors.New("bufio.Scanner: Read returned impossible count"); + $pkg.ErrFinalToken = errors.New("final token"); + $pkg.ErrInvalidUnreadByte = errors.New("bufio: invalid use of UnreadByte"); + $pkg.ErrInvalidUnreadRune = errors.New("bufio: invalid use of UnreadRune"); + $pkg.ErrBufferFull = errors.New("bufio: buffer full"); + $pkg.ErrNegativeCount = errors.New("bufio: negative count"); + errNegativeRead = errors.New("bufio: reader returned negative count from Read"); + errNegativeWrite = errors.New("bufio: writer returned negative count from Write"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["compress/flate"] = (function() { + var $pkg = {}, $init, bufio, errors, fmt, io, math, bits, sort, strconv, sync, token, CorruptInputError, InternalError, Resetter, huffmanDecoder, Reader, decompressor, hcode, huffmanEncoder, literalNode, levelInfo, byLiteral, byFreq, huffmanBitWriter, dictDecoder, tableEntry, deflateFast, compressionLevel, compressor, dictWriter, Writer, arrayType, sliceType, sliceType$1, ptrType, sliceType$2, sliceType$3, arrayType$1, ptrType$1, sliceType$4, ptrType$2, sliceType$5, arrayType$2, arrayType$3, ptrType$3, arrayType$4, ptrType$4, arrayType$5, sliceType$6, sliceType$7, arrayType$6, arrayType$7, arrayType$8, arrayType$9, sliceType$8, ptrType$5, ptrType$6, arrayType$10, arrayType$11, arrayType$12, sliceType$9, ptrType$7, sliceType$10, ptrType$8, sliceType$11, ptrType$9, ptrType$10, arrayType$13, arrayType$14, arrayType$15, ptrType$11, ptrType$12, funcType, ptrType$15, ptrType$16, funcType$1, funcType$2, funcType$3, fixedOnce, fixedHuffmanDecoder, fixedHuffmanDecoder$24ptr, huffOffset, lengthCodes, offsetCodes, codeOrder, fixedLiteralEncoding, fixedOffsetEncoding, lengthExtraBits, lengthBase, offsetExtraBits, offsetBase, codegenOrder, levels, errWriterClosed, literalToken, matchToken, lengthCode, offsetCode, noEOF, makeReader, fixedHuffmanDecoderInit, NewReader, maxNode, newHuffmanEncoder, generateFixedLiteralEncoding, generateFixedOffsetEncoding, reverseBits, newHuffmanBitWriter, init, histogram, load32, load64, hash, newDeflateFast, emitLiteral, hash4, bulkHash4, matchLen, NewWriter; + bufio = $packages["bufio"]; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + io = $packages["io"]; + math = $packages["math"]; + bits = $packages["math/bits"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + sync = $packages["sync"]; + token = $newType(4, $kindUint32, "flate.token", true, "compress/flate", false, null); + CorruptInputError = $newType(8, $kindInt64, "flate.CorruptInputError", true, "compress/flate", true, null); + InternalError = $newType(8, $kindString, "flate.InternalError", true, "compress/flate", true, null); + Resetter = $newType(8, $kindInterface, "flate.Resetter", true, "compress/flate", true, null); + huffmanDecoder = $newType(0, $kindStruct, "flate.huffmanDecoder", true, "compress/flate", false, function(min_, chunks_, links_, linkMask_) { + this.$val = this; + if (arguments.length === 0) { + this.min = 0; + this.chunks = arrayType.zero(); + this.links = sliceType$1.nil; + this.linkMask = 0; + return; + } + this.min = min_; + this.chunks = chunks_; + this.links = links_; + this.linkMask = linkMask_; + }); + Reader = $newType(8, $kindInterface, "flate.Reader", true, "compress/flate", true, null); + decompressor = $newType(0, $kindStruct, "flate.decompressor", true, "compress/flate", false, function(r_, roffset_, b_, nb_, h1_, h2_, bits_, codebits_, dict_, buf_, step_, stepState_, final$12_, err_, toRead_, hl_, hd_, copyLen_, copyDist_) { + this.$val = this; + if (arguments.length === 0) { + this.r = $ifaceNil; + this.roffset = new $Int64(0, 0); + this.b = 0; + this.nb = 0; + this.h1 = new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0); + this.h2 = new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0); + this.bits = ptrType$3.nil; + this.codebits = ptrType$4.nil; + this.dict = new dictDecoder.ptr(sliceType$5.nil, 0, 0, false); + this.buf = arrayType$5.zero(); + this.step = $throwNilPointerError; + this.stepState = 0; + this.final$12 = false; + this.err = $ifaceNil; + this.toRead = sliceType$5.nil; + this.hl = ptrType$1.nil; + this.hd = ptrType$1.nil; + this.copyLen = 0; + this.copyDist = 0; + return; + } + this.r = r_; + this.roffset = roffset_; + this.b = b_; + this.nb = nb_; + this.h1 = h1_; + this.h2 = h2_; + this.bits = bits_; + this.codebits = codebits_; + this.dict = dict_; + this.buf = buf_; + this.step = step_; + this.stepState = stepState_; + this.final$12 = final$12_; + this.err = err_; + this.toRead = toRead_; + this.hl = hl_; + this.hd = hd_; + this.copyLen = copyLen_; + this.copyDist = copyDist_; + }); + hcode = $newType(0, $kindStruct, "flate.hcode", true, "compress/flate", false, function(code_, len_) { + this.$val = this; + if (arguments.length === 0) { + this.code = 0; + this.len = 0; + return; + } + this.code = code_; + this.len = len_; + }); + huffmanEncoder = $newType(0, $kindStruct, "flate.huffmanEncoder", true, "compress/flate", false, function(codes_, freqcache_, bitCount_, lns_, lfs_) { + this.$val = this; + if (arguments.length === 0) { + this.codes = sliceType$6.nil; + this.freqcache = sliceType$7.nil; + this.bitCount = arrayType$6.zero(); + this.lns = byLiteral.nil; + this.lfs = byFreq.nil; + return; + } + this.codes = codes_; + this.freqcache = freqcache_; + this.bitCount = bitCount_; + this.lns = lns_; + this.lfs = lfs_; + }); + literalNode = $newType(0, $kindStruct, "flate.literalNode", true, "compress/flate", false, function(literal_, freq_) { + this.$val = this; + if (arguments.length === 0) { + this.literal = 0; + this.freq = 0; + return; + } + this.literal = literal_; + this.freq = freq_; + }); + levelInfo = $newType(0, $kindStruct, "flate.levelInfo", true, "compress/flate", false, function(level_, lastFreq_, nextCharFreq_, nextPairFreq_, needed_) { + this.$val = this; + if (arguments.length === 0) { + this.level = 0; + this.lastFreq = 0; + this.nextCharFreq = 0; + this.nextPairFreq = 0; + this.needed = 0; + return; + } + this.level = level_; + this.lastFreq = lastFreq_; + this.nextCharFreq = nextCharFreq_; + this.nextPairFreq = nextPairFreq_; + this.needed = needed_; + }); + byLiteral = $newType(12, $kindSlice, "flate.byLiteral", true, "compress/flate", false, null); + byFreq = $newType(12, $kindSlice, "flate.byFreq", true, "compress/flate", false, null); + huffmanBitWriter = $newType(0, $kindStruct, "flate.huffmanBitWriter", true, "compress/flate", false, function(writer_, bits_, nbits_, bytes_, codegenFreq_, nbytes_, literalFreq_, offsetFreq_, codegen_, literalEncoding_, offsetEncoding_, codegenEncoding_, err_) { + this.$val = this; + if (arguments.length === 0) { + this.writer = $ifaceNil; + this.bits = new $Uint64(0, 0); + this.nbits = 0; + this.bytes = arrayType$10.zero(); + this.codegenFreq = arrayType$11.zero(); + this.nbytes = 0; + this.literalFreq = sliceType$8.nil; + this.offsetFreq = sliceType$8.nil; + this.codegen = sliceType$5.nil; + this.literalEncoding = ptrType.nil; + this.offsetEncoding = ptrType.nil; + this.codegenEncoding = ptrType.nil; + this.err = $ifaceNil; + return; + } + this.writer = writer_; + this.bits = bits_; + this.nbits = nbits_; + this.bytes = bytes_; + this.codegenFreq = codegenFreq_; + this.nbytes = nbytes_; + this.literalFreq = literalFreq_; + this.offsetFreq = offsetFreq_; + this.codegen = codegen_; + this.literalEncoding = literalEncoding_; + this.offsetEncoding = offsetEncoding_; + this.codegenEncoding = codegenEncoding_; + this.err = err_; + }); + dictDecoder = $newType(0, $kindStruct, "flate.dictDecoder", true, "compress/flate", false, function(hist_, wrPos_, rdPos_, full_) { + this.$val = this; + if (arguments.length === 0) { + this.hist = sliceType$5.nil; + this.wrPos = 0; + this.rdPos = 0; + this.full = false; + return; + } + this.hist = hist_; + this.wrPos = wrPos_; + this.rdPos = rdPos_; + this.full = full_; + }); + tableEntry = $newType(0, $kindStruct, "flate.tableEntry", true, "compress/flate", false, function(val_, offset_) { + this.$val = this; + if (arguments.length === 0) { + this.val = 0; + this.offset = 0; + return; + } + this.val = val_; + this.offset = offset_; + }); + deflateFast = $newType(0, $kindStruct, "flate.deflateFast", true, "compress/flate", false, function(table_, prev_, cur_) { + this.$val = this; + if (arguments.length === 0) { + this.table = arrayType$12.zero(); + this.prev = sliceType$5.nil; + this.cur = 0; + return; + } + this.table = table_; + this.prev = prev_; + this.cur = cur_; + }); + compressionLevel = $newType(0, $kindStruct, "flate.compressionLevel", true, "compress/flate", false, function(level_, good_, lazy_, nice_, chain_, fastSkipHashing_) { + this.$val = this; + if (arguments.length === 0) { + this.level = 0; + this.good = 0; + this.lazy = 0; + this.nice = 0; + this.chain = 0; + this.fastSkipHashing = 0; + return; + } + this.level = level_; + this.good = good_; + this.lazy = lazy_; + this.nice = nice_; + this.chain = chain_; + this.fastSkipHashing = fastSkipHashing_; + }); + compressor = $newType(0, $kindStruct, "flate.compressor", true, "compress/flate", false, function(compressionLevel_, w_, bulkHasher_, fill_, step_, sync_, bestSpeed_, chainHead_, hashHead_, hashPrev_, hashOffset_, index_, window_, windowEnd_, blockStart_, byteAvailable_, tokens_, length_, offset_, maxInsertIndex_, err_, hashMatch_) { + this.$val = this; + if (arguments.length === 0) { + this.compressionLevel = new compressionLevel.ptr(0, 0, 0, 0, 0, 0); + this.w = ptrType$9.nil; + this.bulkHasher = $throwNilPointerError; + this.fill = $throwNilPointerError; + this.step = $throwNilPointerError; + this.sync = false; + this.bestSpeed = ptrType$10.nil; + this.chainHead = 0; + this.hashHead = arrayType$13.zero(); + this.hashPrev = arrayType$14.zero(); + this.hashOffset = 0; + this.index = 0; + this.window = sliceType$5.nil; + this.windowEnd = 0; + this.blockStart = 0; + this.byteAvailable = false; + this.tokens = sliceType$10.nil; + this.length = 0; + this.offset = 0; + this.maxInsertIndex = 0; + this.err = $ifaceNil; + this.hashMatch = arrayType$15.zero(); + return; + } + this.compressionLevel = compressionLevel_; + this.w = w_; + this.bulkHasher = bulkHasher_; + this.fill = fill_; + this.step = step_; + this.sync = sync_; + this.bestSpeed = bestSpeed_; + this.chainHead = chainHead_; + this.hashHead = hashHead_; + this.hashPrev = hashPrev_; + this.hashOffset = hashOffset_; + this.index = index_; + this.window = window_; + this.windowEnd = windowEnd_; + this.blockStart = blockStart_; + this.byteAvailable = byteAvailable_; + this.tokens = tokens_; + this.length = length_; + this.offset = offset_; + this.maxInsertIndex = maxInsertIndex_; + this.err = err_; + this.hashMatch = hashMatch_; + }); + dictWriter = $newType(0, $kindStruct, "flate.dictWriter", true, "compress/flate", false, function(w_) { + this.$val = this; + if (arguments.length === 0) { + this.w = $ifaceNil; + return; + } + this.w = w_; + }); + Writer = $newType(0, $kindStruct, "flate.Writer", true, "compress/flate", true, function(d_, dict_) { + this.$val = this; + if (arguments.length === 0) { + this.d = new compressor.ptr(new compressionLevel.ptr(0, 0, 0, 0, 0, 0), ptrType$9.nil, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, false, ptrType$10.nil, 0, arrayType$13.zero(), arrayType$14.zero(), 0, 0, sliceType$5.nil, 0, 0, false, sliceType$10.nil, 0, 0, 0, $ifaceNil, arrayType$15.zero()); + this.dict = sliceType$5.nil; + return; + } + this.d = d_; + this.dict = dict_; + }); + $pkg.token = token; + $pkg.CorruptInputError = CorruptInputError; + $pkg.InternalError = InternalError; + $pkg.Resetter = Resetter; + $pkg.huffmanDecoder = huffmanDecoder; + $pkg.Reader = Reader; + $pkg.decompressor = decompressor; + $pkg.hcode = hcode; + $pkg.huffmanEncoder = huffmanEncoder; + $pkg.literalNode = literalNode; + $pkg.levelInfo = levelInfo; + $pkg.byLiteral = byLiteral; + $pkg.byFreq = byFreq; + $pkg.huffmanBitWriter = huffmanBitWriter; + $pkg.dictDecoder = dictDecoder; + $pkg.tableEntry = tableEntry; + $pkg.deflateFast = deflateFast; + $pkg.compressionLevel = compressionLevel; + $pkg.compressor = compressor; + $pkg.dictWriter = dictWriter; + $pkg.Writer = Writer; + $pkg.$finishSetup = function() { + arrayType = $arrayType($Uint32, 512); + sliceType = $sliceType($Uint32); + sliceType$1 = $sliceType(sliceType); + ptrType = $ptrType(huffmanEncoder); + sliceType$2 = $sliceType($Int8); + sliceType$3 = $sliceType(compressionLevel); + arrayType$1 = $arrayType($Int, 16); + ptrType$1 = $ptrType(huffmanDecoder); + sliceType$4 = $sliceType($Int); + ptrType$2 = $ptrType(decompressor); + sliceType$5 = $sliceType($Uint8); + arrayType$2 = $arrayType($Int, 288); + arrayType$3 = $arrayType($Int, 316); + ptrType$3 = $ptrType(arrayType$3); + arrayType$4 = $arrayType($Int, 19); + ptrType$4 = $ptrType(arrayType$4); + arrayType$5 = $arrayType($Uint8, 4); + sliceType$6 = $sliceType(hcode); + sliceType$7 = $sliceType(literalNode); + arrayType$6 = $arrayType($Int32, 17); + arrayType$7 = $arrayType(levelInfo, 16); + arrayType$8 = $arrayType($Int32, 16); + arrayType$9 = $arrayType(arrayType$8, 16); + sliceType$8 = $sliceType($Int32); + ptrType$5 = $ptrType(byLiteral); + ptrType$6 = $ptrType(byFreq); + arrayType$10 = $arrayType($Uint8, 248); + arrayType$11 = $arrayType($Int32, 19); + arrayType$12 = $arrayType(tableEntry, 16384); + sliceType$9 = $sliceType(tableEntry); + ptrType$7 = $ptrType($Uint32); + sliceType$10 = $sliceType(token); + ptrType$8 = $ptrType(compressor); + sliceType$11 = $sliceType($emptyInterface); + ptrType$9 = $ptrType(huffmanBitWriter); + ptrType$10 = $ptrType(deflateFast); + arrayType$13 = $arrayType($Uint32, 131072); + arrayType$14 = $arrayType($Uint32, 32768); + arrayType$15 = $arrayType($Uint32, 257); + ptrType$11 = $ptrType(Writer); + ptrType$12 = $ptrType(dictWriter); + funcType = $funcType([ptrType$2], [], false); + ptrType$15 = $ptrType(hcode); + ptrType$16 = $ptrType(dictDecoder); + funcType$1 = $funcType([sliceType$5, sliceType], [], false); + funcType$2 = $funcType([ptrType$8, sliceType$5], [$Int], false); + funcType$3 = $funcType([ptrType$8], [], false); + literalToken = function literalToken$1(literal) { + var literal; + return (((0 + literal >>> 0) >>> 0)); + }; + matchToken = function matchToken$1(xlength, xoffset) { + var xlength, xoffset; + return ((((1073741824 + (xlength << 22 >>> 0) >>> 0) + xoffset >>> 0) >>> 0)); + }; + token.prototype.literal = function literal() { + var t; + t = this.$val; + return (((t - 0 >>> 0) >>> 0)); + }; + $ptrType(token).prototype.literal = function(...$args) { return new token(this.$get()).literal(...$args); }; + token.prototype.offset = function offset() { + var t; + t = this.$val; + return (((t >>> 0)) & 4194303) >>> 0; + }; + $ptrType(token).prototype.offset = function(...$args) { return new token(this.$get()).offset(...$args); }; + token.prototype.length = function length() { + var t; + t = this.$val; + return (((((t - 1073741824 >>> 0)) >>> 22 >>> 0) >>> 0)); + }; + $ptrType(token).prototype.length = function(...$args) { return new token(this.$get()).length(...$args); }; + lengthCode = function lengthCode$1(len) { + var len; + return ((len < 0 || len >= lengthCodes.length) ? ($throwRuntimeError("index out of range"), undefined) : lengthCodes[len]); + }; + offsetCode = function offsetCode$1(off) { + var off, x, x$1; + if (off < 256) { + return ((off < 0 || off >= offsetCodes.length) ? ($throwRuntimeError("index out of range"), undefined) : offsetCodes[off]); + } + if ((off >>> 7 >>> 0) < 256) { + return (x = off >>> 7 >>> 0, ((x < 0 || x >= offsetCodes.length) ? ($throwRuntimeError("index out of range"), undefined) : offsetCodes[x])) + 14 >>> 0; + } + return (x$1 = off >>> 14 >>> 0, ((x$1 < 0 || x$1 >= offsetCodes.length) ? ($throwRuntimeError("index out of range"), undefined) : offsetCodes[x$1])) + 28 >>> 0; + }; + CorruptInputError.prototype.Error = function Error() { + var e; + e = this; + return "flate: corrupt input before offset " + strconv.FormatInt((new $Int64(e.$high, e.$low)), 10); + }; + $ptrType(CorruptInputError).prototype.Error = function(...$args) { return this.$get().Error(...$args); }; + InternalError.prototype.Error = function Error$1() { + var e; + e = this.$val; + return "flate: internal error: " + (e); + }; + $ptrType(InternalError).prototype.Error = function(...$args) { return new InternalError(this.$get()).Error(...$args); }; + $ptrType(huffmanDecoder).prototype.init = function init$1(lengths) { + var _i, _i$1, _i$2, _i$3, _i$4, _r, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, chunk, chunk$1, chunk$2, code, code$1, count, h, i, i$1, i$2, j, j$1, lengths, link, linktab, linktab$1, max, min, n, n$1, nextcode, numLinks, off, off$1, off$2, reverse, reverse$1, value, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, y, y$1, y$2, y$3, y$4; + h = this; + if (!((h.min === 0))) { + huffmanDecoder.copy(h, new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0)); + } + count = arrayType$1.zero(); + _tmp = 0; + _tmp$1 = 0; + min = _tmp; + max = _tmp$1; + _ref = lengths; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + n = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (n === 0) { + _i++; + continue; + } + if ((min === 0) || n < min) { + min = n; + } + if (n > max) { + max = n; + } + ((n < 0 || n >= count.length) ? ($throwRuntimeError("index out of range"), undefined) : count[n] = (((n < 0 || n >= count.length) ? ($throwRuntimeError("index out of range"), undefined) : count[n]) + (1) >> 0)); + _i++; + } + if (max === 0) { + return true; + } + code = 0; + nextcode = arrayType$1.zero(); + i = min; + while (true) { + if (!(i <= max)) { break; } + code = (y = (1), y < 32 ? (code << y) : 0) >> 0; + ((i < 0 || i >= nextcode.length) ? ($throwRuntimeError("index out of range"), undefined) : nextcode[i] = code); + code = code + (((i < 0 || i >= count.length) ? ($throwRuntimeError("index out of range"), undefined) : count[i])) >> 0; + i = i + (1) >> 0; + } + if (!((code === ((y$1 = ((max >>> 0)), y$1 < 32 ? (1 << y$1) : 0) >> 0))) && !((code === 1) && (max === 1))) { + return false; + } + h.min = min; + if (max > 9) { + numLinks = (y$2 = ((((max >>> 0)) - 9 >>> 0)), y$2 < 32 ? (1 << y$2) : 0) >> 0; + h.linkMask = (((numLinks - 1 >> 0) >>> 0)); + link = nextcode[10] >> 1 >> 0; + h.links = $makeSlice(sliceType$1, (512 - link >> 0)); + j = ((link >>> 0)); + while (true) { + if (!(j < 512)) { break; } + reverse = ((bits.Reverse16(((j << 16 >>> 16))) >> 0)); + reverse = (reverse >> $min((7), 31)) >> 0; + off = j - ((link >>> 0)) >>> 0; + if (false && !(((x = h.chunks, ((reverse < 0 || reverse >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[reverse])) === 0))) { + $panic(new $String("impossible: overwriting existing chunk")); + } + (x$1 = h.chunks, ((reverse < 0 || reverse >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[reverse] = (((((off << 4 >>> 0) | 10) >>> 0) >>> 0)))); + (x$2 = h.links, ((off < 0 || off >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + off] = $makeSlice(sliceType, numLinks))); + j = j + (1) >>> 0; + } + } + _ref$1 = lengths; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + n$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (n$1 === 0) { + _i$1++; + continue; + } + code$1 = ((n$1 < 0 || n$1 >= nextcode.length) ? ($throwRuntimeError("index out of range"), undefined) : nextcode[n$1]); + ((n$1 < 0 || n$1 >= nextcode.length) ? ($throwRuntimeError("index out of range"), undefined) : nextcode[n$1] = (((n$1 < 0 || n$1 >= nextcode.length) ? ($throwRuntimeError("index out of range"), undefined) : nextcode[n$1]) + (1) >> 0)); + chunk = ((((i$1 << 4 >> 0) | n$1) >>> 0)); + reverse$1 = ((bits.Reverse16(((code$1 << 16 >>> 16))) >> 0)); + reverse$1 = (reverse$1 >> $min(((((16 - n$1 >> 0) >>> 0))), 31)) >> 0; + if (n$1 <= 9) { + off$1 = reverse$1; + while (true) { + if (!(off$1 < 512)) { break; } + if (false && !(((x$3 = h.chunks, ((off$1 < 0 || off$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[off$1])) === 0))) { + $panic(new $String("impossible: overwriting existing chunk")); + } + (x$4 = h.chunks, ((off$1 < 0 || off$1 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[off$1] = chunk)); + off$1 = off$1 + (((y$3 = ((n$1 >>> 0)), y$3 < 32 ? (1 << y$3) : 0) >> 0)) >> 0; + } + } else { + j$1 = reverse$1 & 511; + if (false && !(((((x$5 = h.chunks, ((j$1 < 0 || j$1 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[j$1])) & 15) >>> 0) === 10))) { + $panic(new $String("impossible: not an indirect chunk")); + } + value = (x$6 = h.chunks, ((j$1 < 0 || j$1 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[j$1])) >>> 4 >>> 0; + linktab = (x$7 = h.links, ((value < 0 || value >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + value])); + reverse$1 = (reverse$1 >> $min((9), 31)) >> 0; + off$2 = reverse$1; + while (true) { + if (!(off$2 < linktab.$length)) { break; } + if (false && !((((off$2 < 0 || off$2 >= linktab.$length) ? ($throwRuntimeError("index out of range"), undefined) : linktab.$array[linktab.$offset + off$2]) === 0))) { + $panic(new $String("impossible: overwriting existing chunk")); + } + ((off$2 < 0 || off$2 >= linktab.$length) ? ($throwRuntimeError("index out of range"), undefined) : linktab.$array[linktab.$offset + off$2] = chunk); + off$2 = off$2 + (((y$4 = (((n$1 - 9 >> 0) >>> 0)), y$4 < 32 ? (1 << y$4) : 0) >> 0)) >> 0; + } + } + _i$1++; + } + if (false) { + _ref$2 = h.chunks; + _i$2 = 0; + while (true) { + if (!(_i$2 < 512)) { break; } + i$2 = _i$2; + chunk$1 = ((_i$2 < 0 || _i$2 >= _ref$2.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2[_i$2]); + if (chunk$1 === 0) { + if ((code === 1) && ((_r = i$2 % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1)) { + _i$2++; + continue; + } + $panic(new $String("impossible: missing chunk")); + } + _i$2++; + } + _ref$3 = h.links; + _i$3 = 0; + while (true) { + if (!(_i$3 < _ref$3.$length)) { break; } + linktab$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]); + _ref$4 = linktab$1; + _i$4 = 0; + while (true) { + if (!(_i$4 < _ref$4.$length)) { break; } + chunk$2 = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]); + if (chunk$2 === 0) { + $panic(new $String("impossible: missing chunk")); + } + _i$4++; + } + _i$3++; + } + } + return true; + }; + $ptrType(decompressor).prototype.nextBlock = function nextBlock() { + var {_1, _r, _r$1, f, typ, x, y, y$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + /* while (true) { */ case 1: + /* if (!(f.nb < 3)) { break; } */ if(!(f.nb < 3)) { $s = 2; continue; } + _r = f.moreBits(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + f.err = _r; + if (!($interfaceIsEqual(f.err, $ifaceNil))) { + $s = -1; return; + } + $s = 1; continue; + case 2: + f.final$12 = ((f.b & 1) >>> 0) === 1; + f.b = (y = (1), y < 32 ? (f.b >>> y) : 0) >>> 0; + typ = (f.b & 3) >>> 0; + f.b = (y$1 = (2), y$1 < 32 ? (f.b >>> y$1) : 0) >>> 0; + f.nb = f.nb - (3) >>> 0; + _1 = typ; + /* */ if (_1 === (0)) { $s = 5; continue; } + /* */ if (_1 === (1)) { $s = 6; continue; } + /* */ if (_1 === (2)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_1 === (0)) { */ case 5: + $r = f.dataBlock(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 9; continue; + /* } else if (_1 === (1)) { */ case 6: + f.hl = fixedHuffmanDecoder; + f.hd = ptrType$1.nil; + $r = f.huffmanBlock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 9; continue; + /* } else if (_1 === (2)) { */ case 7: + _r$1 = f.readHuffman(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + f.err = _r$1; + if (!($interfaceIsEqual(f.err, $ifaceNil))) { + /* break; */ $s = 4; continue; + } + f.hl = f.h1; + f.hd = f.h2; + $r = f.huffmanBlock(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 9; continue; + /* } else { */ case 8: + f.err = ((x = f.roffset, new CorruptInputError(x.$high, x.$low))); + /* } */ case 9: + case 4: + $s = -1; return; + /* */ } return; } var $f = {$blk: nextBlock, $c: true, $r, _1, _r, _r$1, f, typ, x, y, y$1, $s};return $f; + }; + $ptrType(decompressor).prototype.Read = function Read(b) { + var {b, f, n, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + /* while (true) { */ case 1: + if (f.toRead.$length > 0) { + n = $copySlice(b, f.toRead); + f.toRead = $subslice(f.toRead, n); + if (f.toRead.$length === 0) { + $s = -1; return [n, f.err]; + } + $s = -1; return [n, $ifaceNil]; + } + if (!($interfaceIsEqual(f.err, $ifaceNil))) { + $s = -1; return [0, f.err]; + } + $r = f.step(f); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(f.err, $ifaceNil)) && (f.toRead.$length === 0)) { + f.toRead = f.dict.readFlush(); + } + $s = 1; continue; + case 2: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } var $f = {$blk: Read, $c: true, $r, b, f, n, $s};return $f; + }; + $ptrType(decompressor).prototype.Close = function Close() { + var f; + f = this; + if ($interfaceIsEqual(f.err, io.EOF)) { + return $ifaceNil; + } + return f.err; + }; + $ptrType(decompressor).prototype.readHuffman = function readHuffman() { + var {_1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, b, err, err$1, err$2, err$3, f, i, i$1, i$2, j, n, nb, nclen, ndist, nlit, rep, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, y$1, y$2, y$3, y$4, y$5, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + /* while (true) { */ case 1: + /* if (!(f.nb < 14)) { break; } */ if(!(f.nb < 14)) { $s = 2; continue; } + _r = f.moreBits(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + $s = 1; continue; + case 2: + nlit = ((((f.b & 31) >>> 0) >> 0)) + 257 >> 0; + if (nlit > 286) { + $s = -1; return ((x = f.roffset, new CorruptInputError(x.$high, x.$low))); + } + f.b = (y = (5), y < 32 ? (f.b >>> y) : 0) >>> 0; + ndist = ((((f.b & 31) >>> 0) >> 0)) + 1 >> 0; + if (ndist > 30) { + $s = -1; return ((x$1 = f.roffset, new CorruptInputError(x$1.$high, x$1.$low))); + } + f.b = (y$1 = (5), y$1 < 32 ? (f.b >>> y$1) : 0) >>> 0; + nclen = ((((f.b & 15) >>> 0) >> 0)) + 4 >> 0; + f.b = (y$2 = (4), y$2 < 32 ? (f.b >>> y$2) : 0) >>> 0; + f.nb = f.nb - (14) >>> 0; + i = 0; + /* while (true) { */ case 4: + /* if (!(i < nclen)) { break; } */ if(!(i < nclen)) { $s = 5; continue; } + /* while (true) { */ case 6: + /* if (!(f.nb < 3)) { break; } */ if(!(f.nb < 3)) { $s = 7; continue; } + _r$1 = f.moreBits(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err$1 = _r$1; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + $s = 6; continue; + case 7: + (x$2 = f.codebits, x$3 = ((i < 0 || i >= codeOrder.length) ? ($throwRuntimeError("index out of range"), undefined) : codeOrder[i]), x$2.nilCheck, ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3] = ((((f.b & 7) >>> 0) >> 0)))); + f.b = (y$3 = (3), y$3 < 32 ? (f.b >>> y$3) : 0) >>> 0; + f.nb = f.nb - (3) >>> 0; + i = i + (1) >> 0; + $s = 4; continue; + case 5: + i$1 = nclen; + while (true) { + if (!(i$1 < 19)) { break; } + (x$4 = f.codebits, x$5 = ((i$1 < 0 || i$1 >= codeOrder.length) ? ($throwRuntimeError("index out of range"), undefined) : codeOrder[i$1]), x$4.nilCheck, ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5] = 0)); + i$1 = i$1 + (1) >> 0; + } + if (!f.h1.init($subslice(new sliceType$4(f.codebits), 0))) { + $s = -1; return ((x$6 = f.roffset, new CorruptInputError(x$6.$high, x$6.$low))); + } + _tmp = 0; + _tmp$1 = nlit + ndist >> 0; + i$2 = _tmp; + n = _tmp$1; + /* while (true) { */ case 9: + /* if (!(i$2 < n)) { break; } */ if(!(i$2 < n)) { $s = 10; continue; } + _r$2 = f.huffSym(f.h1); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + x$7 = _tuple[0]; + err$2 = _tuple[1]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + $s = -1; return err$2; + } + if (x$7 < 16) { + (x$8 = f.bits, x$8.nilCheck, ((i$2 < 0 || i$2 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[i$2] = x$7)); + i$2 = i$2 + (1) >> 0; + /* continue; */ $s = 9; continue; + } + rep = 0; + nb = 0; + b = 0; + _1 = x$7; + if (_1 === (16)) { + rep = 3; + nb = 2; + if (i$2 === 0) { + $s = -1; return ((x$9 = f.roffset, new CorruptInputError(x$9.$high, x$9.$low))); + } + b = (x$10 = f.bits, x$11 = i$2 - 1 >> 0, ((x$11 < 0 || x$11 >= x$10.length) ? ($throwRuntimeError("index out of range"), undefined) : x$10[x$11])); + } else if (_1 === (17)) { + rep = 3; + nb = 3; + b = 0; + } else if (_1 === (18)) { + rep = 11; + nb = 7; + b = 0; + } else { + $s = -1; return new InternalError("unexpected length code"); + } + /* while (true) { */ case 12: + /* if (!(f.nb < nb)) { break; } */ if(!(f.nb < nb)) { $s = 13; continue; } + _r$3 = f.moreBits(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err$3 = _r$3; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + $s = -1; return err$3; + } + $s = 12; continue; + case 13: + rep = rep + (((((f.b & ((((y$4 = nb, y$4 < 32 ? (1 << y$4) : 0) >>> 0) - 1 >>> 0))) >>> 0) >> 0))) >> 0; + f.b = (y$5 = (nb), y$5 < 32 ? (f.b >>> y$5) : 0) >>> 0; + f.nb = f.nb - (nb) >>> 0; + if ((i$2 + rep >> 0) > n) { + $s = -1; return ((x$12 = f.roffset, new CorruptInputError(x$12.$high, x$12.$low))); + } + j = 0; + while (true) { + if (!(j < rep)) { break; } + (x$13 = f.bits, x$13.nilCheck, ((i$2 < 0 || i$2 >= x$13.length) ? ($throwRuntimeError("index out of range"), undefined) : x$13[i$2] = b)); + i$2 = i$2 + (1) >> 0; + j = j + (1) >> 0; + } + $s = 9; continue; + case 10: + if (!f.h1.init($subslice(new sliceType$4(f.bits), 0, nlit)) || !f.h2.init($subslice(new sliceType$4(f.bits), nlit, (nlit + ndist >> 0)))) { + $s = -1; return ((x$14 = f.roffset, new CorruptInputError(x$14.$high, x$14.$low))); + } + if (f.h1.min < f.bits[256]) { + f.h1.min = f.bits[256]; + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: readHuffman, $c: true, $r, _1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, b, err, err$1, err$2, err$3, f, i, i$1, i$2, j, n, nb, nclen, ndist, nlit, rep, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, y$1, y$2, y$3, y$4, y$5, $s};return $f; + }; + $ptrType(decompressor).prototype.huffmanBlock = function huffmanBlock() { + var {_1, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, cnt, dist, err, extra, f, length$1, n, nb, v, x, x$1, x$2, y, y$1, y$2, y$3, y$4, y$5, y$6, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + _1 = f.stepState; + /* */ if (_1 === (0)) { $s = 2; continue; } + /* */ if (_1 === (1)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_1 === (0)) { */ case 2: + /* goto readLiteral */ $s = 5; continue; + $s = 4; continue; + /* } else if (_1 === (1)) { */ case 3: + /* goto copyHistory */ $s = 6; continue; + /* } */ case 4: + case 1: + /* readLiteral: */ case 5: + _r = f.huffSym(f.hl); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + v = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + f.err = err; + $s = -1; return; + } + n = 0; + length$1 = 0; + /* */ if (v < 256) { $s = 9; continue; } + /* */ if ((v === 256)) { $s = 10; continue; } + /* */ if (v < 265) { $s = 11; continue; } + /* */ if (v < 269) { $s = 12; continue; } + /* */ if (v < 273) { $s = 13; continue; } + /* */ if (v < 277) { $s = 14; continue; } + /* */ if (v < 281) { $s = 15; continue; } + /* */ if (v < 285) { $s = 16; continue; } + /* */ if (v < 286) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (v < 256) { */ case 9: + f.dict.writeByte(((v << 24 >>> 24))); + if (f.dict.availWrite() === 0) { + f.toRead = f.dict.readFlush(); + f.step = $methodExpr(ptrType$2, "huffmanBlock"); + f.stepState = 0; + $s = -1; return; + } + /* goto readLiteral */ $s = 5; continue; + $s = 19; continue; + /* } else if ((v === 256)) { */ case 10: + f.finishBlock(); + $s = -1; return; + /* } else if (v < 265) { */ case 11: + length$1 = v - 254 >> 0; + n = 0; + $s = 19; continue; + /* } else if (v < 269) { */ case 12: + length$1 = ($imul(v, 2)) - 519 >> 0; + n = 1; + $s = 19; continue; + /* } else if (v < 273) { */ case 13: + length$1 = ($imul(v, 4)) - 1057 >> 0; + n = 2; + $s = 19; continue; + /* } else if (v < 277) { */ case 14: + length$1 = ($imul(v, 8)) - 2149 >> 0; + n = 3; + $s = 19; continue; + /* } else if (v < 281) { */ case 15: + length$1 = ($imul(v, 16)) - 4365 >> 0; + n = 4; + $s = 19; continue; + /* } else if (v < 285) { */ case 16: + length$1 = ($imul(v, 32)) - 8861 >> 0; + n = 5; + $s = 19; continue; + /* } else if (v < 286) { */ case 17: + length$1 = 258; + n = 0; + $s = 19; continue; + /* } else { */ case 18: + f.err = ((x = f.roffset, new CorruptInputError(x.$high, x.$low))); + $s = -1; return; + /* } */ case 19: + case 8: + /* */ if (n > 0) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (n > 0) { */ case 20: + /* while (true) { */ case 22: + /* if (!(f.nb < n)) { break; } */ if(!(f.nb < n)) { $s = 23; continue; } + _r$1 = f.moreBits(); /* */ $s = 24; case 24: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err = _r$1; + if (!($interfaceIsEqual(err, $ifaceNil))) { + f.err = err; + $s = -1; return; + } + $s = 22; continue; + case 23: + length$1 = length$1 + (((((f.b & ((((y = n, y < 32 ? (1 << y) : 0) >>> 0) - 1 >>> 0))) >>> 0) >> 0))) >> 0; + f.b = (y$1 = (n), y$1 < 32 ? (f.b >>> y$1) : 0) >>> 0; + f.nb = f.nb - (n) >>> 0; + /* } */ case 21: + dist = 0; + /* */ if (f.hd === ptrType$1.nil) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (f.hd === ptrType$1.nil) { */ case 25: + /* while (true) { */ case 28: + /* if (!(f.nb < 5)) { break; } */ if(!(f.nb < 5)) { $s = 29; continue; } + _r$2 = f.moreBits(); /* */ $s = 30; case 30: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + err = _r$2; + if (!($interfaceIsEqual(err, $ifaceNil))) { + f.err = err; + $s = -1; return; + } + $s = 28; continue; + case 29: + dist = ((bits.Reverse8((((((f.b & 31) >>> 0) << 3 >>> 0) << 24 >>> 24))) >> 0)); + f.b = (y$2 = (5), y$2 < 32 ? (f.b >>> y$2) : 0) >>> 0; + f.nb = f.nb - (5) >>> 0; + $s = 27; continue; + /* } else { */ case 26: + _r$3 = f.huffSym(f.hd); /* */ $s = 31; case 31: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = _r$3; + dist = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + f.err = err; + $s = -1; return; + } + /* } */ case 27: + /* */ if (dist < 4) { $s = 33; continue; } + /* */ if (dist < 30) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (dist < 4) { */ case 33: + dist = dist + (1) >> 0; + $s = 36; continue; + /* } else if (dist < 30) { */ case 34: + nb = (((dist - 2 >> 0) >>> 0)) >>> 1 >>> 0; + extra = (y$3 = nb, y$3 < 32 ? (((dist & 1)) << y$3) : 0) >> 0; + /* while (true) { */ case 37: + /* if (!(f.nb < nb)) { break; } */ if(!(f.nb < nb)) { $s = 38; continue; } + _r$4 = f.moreBits(); /* */ $s = 39; case 39: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + err = _r$4; + if (!($interfaceIsEqual(err, $ifaceNil))) { + f.err = err; + $s = -1; return; + } + $s = 37; continue; + case 38: + extra = extra | (((((f.b & ((((y$4 = nb, y$4 < 32 ? (1 << y$4) : 0) >>> 0) - 1 >>> 0))) >>> 0) >> 0))); + f.b = (y$5 = (nb), y$5 < 32 ? (f.b >>> y$5) : 0) >>> 0; + f.nb = f.nb - (nb) >>> 0; + dist = (((y$6 = ((nb + 1 >>> 0)), y$6 < 32 ? (1 << y$6) : 0) >> 0) + 1 >> 0) + extra >> 0; + $s = 36; continue; + /* } else { */ case 35: + f.err = ((x$1 = f.roffset, new CorruptInputError(x$1.$high, x$1.$low))); + $s = -1; return; + /* } */ case 36: + case 32: + if (dist > f.dict.histSize()) { + f.err = ((x$2 = f.roffset, new CorruptInputError(x$2.$high, x$2.$low))); + $s = -1; return; + } + _tmp = length$1; + _tmp$1 = dist; + f.copyLen = _tmp; + f.copyDist = _tmp$1; + /* goto copyHistory */ $s = 6; continue; + /* copyHistory: */ case 6: + cnt = f.dict.tryWriteCopy(f.copyDist, f.copyLen); + if (cnt === 0) { + cnt = f.dict.writeCopy(f.copyDist, f.copyLen); + } + f.copyLen = f.copyLen - (cnt) >> 0; + if ((f.dict.availWrite() === 0) || f.copyLen > 0) { + f.toRead = f.dict.readFlush(); + f.step = $methodExpr(ptrType$2, "huffmanBlock"); + f.stepState = 1; + $s = -1; return; + } + /* goto readLiteral */ $s = 5; continue; + $s = -1; return; + /* */ } return; } var $f = {$blk: huffmanBlock, $c: true, $r, _1, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, cnt, dist, err, extra, f, length$1, n, nb, v, x, x$1, x$2, y, y$1, y$2, y$3, y$4, y$5, y$6, $s};return $f; + }; + $ptrType(decompressor).prototype.dataBlock = function dataBlock() { + var {_r, _tuple, err, f, n, nn, nr, x, x$1, x$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + f.nb = 0; + f.b = 0; + _r = io.ReadFull(f.r, $subslice(new sliceType$5(f.buf), 0, 4)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + nr = _tuple[0]; + err = _tuple[1]; + f.roffset = (x = f.roffset, x$1 = (new $Int64(0, nr)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); + if (!($interfaceIsEqual(err, $ifaceNil))) { + f.err = noEOF(err); + $s = -1; return; + } + n = ((f.buf[0] >> 0)) | (((f.buf[1] >> 0)) << 8 >> 0); + nn = ((f.buf[2] >> 0)) | (((f.buf[3] >> 0)) << 8 >> 0); + if (!((((nn << 16 >>> 16)) === (((~n >> 0) << 16 >>> 16))))) { + f.err = ((x$2 = f.roffset, new CorruptInputError(x$2.$high, x$2.$low))); + $s = -1; return; + } + if (n === 0) { + f.toRead = f.dict.readFlush(); + f.finishBlock(); + $s = -1; return; + } + f.copyLen = n; + $r = f.copyData(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: dataBlock, $c: true, $r, _r, _tuple, err, f, n, nn, nr, x, x$1, x$2, $s};return $f; + }; + $ptrType(decompressor).prototype.copyData = function copyData() { + var {_r, _tuple, buf, cnt, err, f, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + buf = f.dict.writeSlice(); + if (buf.$length > f.copyLen) { + buf = $subslice(buf, 0, f.copyLen); + } + _r = io.ReadFull(f.r, buf); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + cnt = _tuple[0]; + err = _tuple[1]; + f.roffset = (x = f.roffset, x$1 = (new $Int64(0, cnt)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); + f.copyLen = f.copyLen - (cnt) >> 0; + f.dict.writeMark(cnt); + if (!($interfaceIsEqual(err, $ifaceNil))) { + f.err = noEOF(err); + $s = -1; return; + } + if ((f.dict.availWrite() === 0) || f.copyLen > 0) { + f.toRead = f.dict.readFlush(); + f.step = $methodExpr(ptrType$2, "copyData"); + $s = -1; return; + } + f.finishBlock(); + $s = -1; return; + /* */ } return; } var $f = {$blk: copyData, $c: true, $r, _r, _tuple, buf, cnt, err, f, x, x$1, $s};return $f; + }; + $ptrType(decompressor).prototype.finishBlock = function finishBlock() { + var f; + f = this; + if (f.final$12) { + if (f.dict.availRead() > 0) { + f.toRead = f.dict.readFlush(); + } + f.err = io.EOF; + } + f.step = $methodExpr(ptrType$2, "nextBlock"); + }; + noEOF = function noEOF$1(e) { + var e; + if ($interfaceIsEqual(e, io.EOF)) { + return io.ErrUnexpectedEOF; + } + return e; + }; + $ptrType(decompressor).prototype.moreBits = function moreBits() { + var {_r, _tuple, c, err, f, x, x$1, y, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + _r = f.r.ReadByte(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + c = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return noEOF(err); + } + f.roffset = (x = f.roffset, x$1 = new $Int64(0, 1), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); + f.b = (f.b | (((y = f.nb, y < 32 ? (((c >>> 0)) << y) : 0) >>> 0))) >>> 0; + f.nb = f.nb + (8) >>> 0; + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: moreBits, $c: true, $r, _r, _tuple, c, err, f, x, x$1, y, $s};return $f; + }; + $ptrType(decompressor).prototype.huffSym = function huffSym(h) { + var {_r, _tmp, _tmp$1, _tuple, b, c, chunk, err, f, h, n, nb, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y, y$1, $s, $r, $c} = $restore(this, {h}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + n = ((h.min >>> 0)); + _tmp = f.nb; + _tmp$1 = f.b; + nb = _tmp; + b = _tmp$1; + /* while (true) { */ case 1: + /* while (true) { */ case 3: + /* if (!(nb < n)) { break; } */ if(!(nb < n)) { $s = 4; continue; } + _r = f.r.ReadByte(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + c = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + f.b = b; + f.nb = nb; + $s = -1; return [0, noEOF(err)]; + } + f.roffset = (x = f.roffset, x$1 = new $Int64(0, 1), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); + b = (b | (((y = (((nb & 31) >>> 0)), y < 32 ? (((c >>> 0)) << y) : 0) >>> 0))) >>> 0; + nb = nb + (8) >>> 0; + $s = 3; continue; + case 4: + chunk = (x$2 = h.chunks, x$3 = (b & 511) >>> 0, ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3])); + n = ((((chunk & 15) >>> 0) >>> 0)); + if (n > 9) { + chunk = (x$4 = (x$5 = h.links, x$6 = chunk >>> 4 >>> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + x$6])), x$7 = (((b >>> 9 >>> 0)) & h.linkMask) >>> 0, ((x$7 < 0 || x$7 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$7])); + n = ((((chunk & 15) >>> 0) >>> 0)); + } + if (n <= nb) { + if (n === 0) { + f.b = b; + f.nb = nb; + f.err = ((x$8 = f.roffset, new CorruptInputError(x$8.$high, x$8.$low))); + $s = -1; return [0, f.err]; + } + f.b = (y$1 = (((n & 31) >>> 0)), y$1 < 32 ? (b >>> y$1) : 0) >>> 0; + f.nb = nb - n >>> 0; + $s = -1; return [(((chunk >>> 4 >>> 0) >> 0)), $ifaceNil]; + } + $s = 1; continue; + case 2: + $s = -1; return [0, $ifaceNil]; + /* */ } return; } var $f = {$blk: huffSym, $c: true, $r, _r, _tmp, _tmp$1, _tuple, b, c, chunk, err, f, h, n, nb, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y, y$1, $s};return $f; + }; + makeReader = function makeReader$1(r) { + var _tuple, ok, r, rr; + _tuple = $assertType(r, Reader, true); + rr = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return rr; + } + return bufio.NewReader(r); + }; + fixedHuffmanDecoderInit = function fixedHuffmanDecoderInit$1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = fixedOnce.Do((function fixedHuffmanDecoderInit·func1() { + var bits$1, i, i$1, i$2, i$3; + bits$1 = arrayType$2.zero(); + i = 0; + while (true) { + if (!(i < 144)) { break; } + ((i < 0 || i >= bits$1.length) ? ($throwRuntimeError("index out of range"), undefined) : bits$1[i] = 8); + i = i + (1) >> 0; + } + i$1 = 144; + while (true) { + if (!(i$1 < 256)) { break; } + ((i$1 < 0 || i$1 >= bits$1.length) ? ($throwRuntimeError("index out of range"), undefined) : bits$1[i$1] = 9); + i$1 = i$1 + (1) >> 0; + } + i$2 = 256; + while (true) { + if (!(i$2 < 280)) { break; } + ((i$2 < 0 || i$2 >= bits$1.length) ? ($throwRuntimeError("index out of range"), undefined) : bits$1[i$2] = 7); + i$2 = i$2 + (1) >> 0; + } + i$3 = 280; + while (true) { + if (!(i$3 < 288)) { break; } + ((i$3 < 0 || i$3 >= bits$1.length) ? ($throwRuntimeError("index out of range"), undefined) : bits$1[i$3] = 8); + i$3 = i$3 + (1) >> 0; + } + fixedHuffmanDecoder.init(new sliceType$4(bits$1)); + })); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: fixedHuffmanDecoderInit$1, $c: true, $r, $s};return $f; + }; + $ptrType(decompressor).prototype.Reset = function Reset(r, dict) { + var dict, f, r; + f = this; + decompressor.copy(f, new decompressor.ptr(makeReader(r), new $Int64(0, 0), 0, 0, new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0), new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0), f.bits, f.codebits, $clone(f.dict, dictDecoder), arrayType$5.zero(), $methodExpr(ptrType$2, "nextBlock"), 0, false, $ifaceNil, sliceType$5.nil, ptrType$1.nil, ptrType$1.nil, 0, 0)); + f.dict.init(32768, dict); + return $ifaceNil; + }; + NewReader = function NewReader$1(r) { + var {f, r, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = [f]; + $r = fixedHuffmanDecoderInit(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + f[0] = new decompressor.ptr($ifaceNil, new $Int64(0, 0), 0, 0, new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0), new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0), ptrType$3.nil, ptrType$4.nil, new dictDecoder.ptr(sliceType$5.nil, 0, 0, false), arrayType$5.zero(), $throwNilPointerError, 0, false, $ifaceNil, sliceType$5.nil, ptrType$1.nil, ptrType$1.nil, 0, 0); + f[0].r = makeReader(r); + f[0].bits = arrayType$3.zero(); + f[0].codebits = arrayType$4.zero(); + f[0].step = $methodExpr(ptrType$2, "nextBlock"); + f[0].dict.init(32768, sliceType$5.nil); + $s = -1; return f[0]; + /* */ } return; } var $f = {$blk: NewReader$1, $c: true, $r, f, r, $s};return $f; + }; + $pkg.NewReader = NewReader; + $ptrType(hcode).prototype.set = function set(code, length$1) { + var code, h, length$1; + h = this; + h.len = length$1; + h.code = code; + }; + maxNode = function maxNode$1() { + return new literalNode.ptr(65535, 2147483647); + }; + newHuffmanEncoder = function newHuffmanEncoder$1(size) { + var size; + return new huffmanEncoder.ptr($makeSlice(sliceType$6, size), sliceType$7.nil, arrayType$6.zero(), byLiteral.nil, byFreq.nil); + }; + generateFixedLiteralEncoding = function generateFixedLiteralEncoding$1() { + var bits$1, ch, codes, h, size; + h = newHuffmanEncoder(286); + codes = h.codes; + ch = 0; + ch = 0; + while (true) { + if (!(ch < 286)) { break; } + bits$1 = 0; + size = 0; + if (ch < 144) { + bits$1 = ch + 48 << 16 >>> 16; + size = 8; + } else if (ch < 256) { + bits$1 = (ch + 400 << 16 >>> 16) - 144 << 16 >>> 16; + size = 9; + } else if (ch < 280) { + bits$1 = ch - 256 << 16 >>> 16; + size = 7; + } else { + bits$1 = (ch + 192 << 16 >>> 16) - 280 << 16 >>> 16; + size = 8; + } + hcode.copy(((ch < 0 || ch >= codes.$length) ? ($throwRuntimeError("index out of range"), undefined) : codes.$array[codes.$offset + ch]), new hcode.ptr(reverseBits(bits$1, ((size << 24 >>> 24))), size)); + ch = ch + (1) << 16 >>> 16; + } + return h; + }; + generateFixedOffsetEncoding = function generateFixedOffsetEncoding$1() { + var _i, _ref, ch, codes, h; + h = newHuffmanEncoder(30); + codes = h.codes; + _ref = codes; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + ch = _i; + hcode.copy(((ch < 0 || ch >= codes.$length) ? ($throwRuntimeError("index out of range"), undefined) : codes.$array[codes.$offset + ch]), new hcode.ptr(reverseBits(((ch << 16 >>> 16)), 5), 5)); + _i++; + } + return h; + }; + $ptrType(huffmanEncoder).prototype.bitLength = function bitLength(freq) { + var _i, _ref, f, freq, h, i, total, x; + h = this; + total = 0; + _ref = freq; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((f === 0))) { + total = total + (($imul(((f >> 0)), (((x = h.codes, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).len >> 0))))) >> 0; + } + _i++; + } + return total; + }; + $ptrType(huffmanEncoder).prototype.bitCounts = function bitCounts(list, maxBits) { + var bitCount, bits$1, counts, h, l, leafCounts, level, level$1, level$2, levels$1, list, maxBits, n, n$1, prevFreq, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + h = this; + if (maxBits >= 16) { + $panic(new $String("flate: maxBits too large")); + } + n = ((list.$length >> 0)); + list = $subslice(list, 0, (n + 1 >> 0)); + literalNode.copy(((n < 0 || n >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + n]), maxNode()); + if (maxBits > (n - 1 >> 0)) { + maxBits = n - 1 >> 0; + } + levels$1 = arrayType$7.zero(); + leafCounts = arrayType$9.zero(); + level = 1; + while (true) { + if (!(level <= maxBits)) { break; } + levelInfo.copy(((level < 0 || level >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[level]), new levelInfo.ptr(level, (1 >= list.$length ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + 1]).freq, (2 >= list.$length ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + 2]).freq, (0 >= list.$length ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + 0]).freq + (1 >= list.$length ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + 1]).freq >> 0, 0)); + (x = ((level < 0 || level >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[level]), ((level < 0 || level >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[level] = 2)); + if (level === 1) { + ((level < 0 || level >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[level]).nextPairFreq = 2147483647; + } + level = level + (1) >> 0; + } + ((maxBits < 0 || maxBits >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[maxBits]).needed = ($imul(2, n)) - 4 >> 0; + level$1 = maxBits; + while (true) { + l = ((level$1 < 0 || level$1 >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[level$1]); + if ((l.nextPairFreq === 2147483647) && (l.nextCharFreq === 2147483647)) { + l.needed = 0; + (x$1 = level$1 + 1 >> 0, ((x$1 < 0 || x$1 >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[x$1])).nextPairFreq = 2147483647; + level$1 = level$1 + (1) >> 0; + continue; + } + prevFreq = l.lastFreq; + if (l.nextCharFreq < l.nextPairFreq) { + n$1 = (x$2 = ((level$1 < 0 || level$1 >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[level$1]), ((level$1 < 0 || level$1 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[level$1])) + 1 >> 0; + l.lastFreq = l.nextCharFreq; + (x$3 = ((level$1 < 0 || level$1 >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[level$1]), ((level$1 < 0 || level$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[level$1] = n$1)); + l.nextCharFreq = ((n$1 < 0 || n$1 >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + n$1]).freq; + } else { + l.lastFreq = l.nextPairFreq; + $copySlice($subslice(new sliceType$8(((level$1 < 0 || level$1 >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[level$1])), 0, level$1), $subslice(new sliceType$8((x$4 = level$1 - 1 >> 0, ((x$4 < 0 || x$4 >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[x$4]))), 0, level$1)); + (x$5 = l.level - 1 >> 0, ((x$5 < 0 || x$5 >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[x$5])).needed = 2; + } + l.needed = l.needed - (1) >> 0; + if (l.needed === 0) { + if (l.level === maxBits) { + break; + } + (x$6 = l.level + 1 >> 0, ((x$6 < 0 || x$6 >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[x$6])).nextPairFreq = prevFreq + l.lastFreq >> 0; + level$1 = level$1 + (1) >> 0; + } else { + while (true) { + if (!((x$7 = level$1 - 1 >> 0, ((x$7 < 0 || x$7 >= levels$1.length) ? ($throwRuntimeError("index out of range"), undefined) : levels$1[x$7])).needed > 0)) { break; } + level$1 = level$1 - (1) >> 0; + } + } + } + if (!(((x$8 = ((maxBits < 0 || maxBits >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[maxBits]), ((maxBits < 0 || maxBits >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[maxBits])) === n))) { + $panic(new $String("leafCounts[maxBits][maxBits] != n")); + } + bitCount = $subslice(new sliceType$8(h.bitCount), 0, (maxBits + 1 >> 0)); + bits$1 = 1; + counts = ((maxBits < 0 || maxBits >= leafCounts.length) ? ($throwRuntimeError("index out of range"), undefined) : leafCounts[maxBits]); + level$2 = maxBits; + while (true) { + if (!(level$2 > 0)) { break; } + ((bits$1 < 0 || bits$1 >= bitCount.$length) ? ($throwRuntimeError("index out of range"), undefined) : bitCount.$array[bitCount.$offset + bits$1] = ((x$9 = counts, ((level$2 < 0 || level$2 >= x$9.length) ? ($throwRuntimeError("index out of range"), undefined) : x$9[level$2])) - (x$10 = counts, x$11 = level$2 - 1 >> 0, ((x$11 < 0 || x$11 >= x$10.length) ? ($throwRuntimeError("index out of range"), undefined) : x$10[x$11])) >> 0)); + bits$1 = bits$1 + (1) >> 0; + level$2 = level$2 - (1) >> 0; + } + return bitCount; + }; + $ptrType(huffmanEncoder).prototype.assignEncodingAndSize = function assignEncodingAndSize(bitCount, list) { + var {_i, _i$1, _ref, _ref$1, bitCount, bits$1, chunk, code, h, list, n, node, x, x$1, y, $s, $r, $c} = $restore(this, {bitCount, list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + h = this; + code = 0; + _ref = bitCount; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + n = _i; + bits$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + code = (y = (1), y < 32 ? (code << y) : 0) << 16 >>> 16; + if ((n === 0) || (bits$1 === 0)) { + _i++; + /* continue; */ $s = 1; continue; + } + chunk = $subslice(list, (list.$length - ((bits$1 >> 0)) >> 0)); + $r = (h.$ptr_lns || (h.$ptr_lns = new ptrType$5(function() { return this.$target.lns; }, function($v) { this.$target.lns = $v; }, h))).sort(chunk); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$1 = chunk; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + node = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), literalNode); + hcode.copy((x = h.codes, x$1 = node.literal, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])), new hcode.ptr(reverseBits(code, ((n << 24 >>> 24))), ((n << 16 >>> 16)))); + code = code + (1) << 16 >>> 16; + _i$1++; + } + list = $subslice(list, 0, (list.$length - ((bits$1 >> 0)) >> 0)); + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: assignEncodingAndSize, $c: true, $r, _i, _i$1, _ref, _ref$1, bitCount, bits$1, chunk, code, h, list, n, node, x, x$1, y, $s};return $f; + }; + $ptrType(huffmanEncoder).prototype.generate = function generate(freq, maxBits) { + var {_i, _i$1, _ref, _ref$1, bitCount, count, f, freq, h, i, i$1, list, maxBits, node, x, x$1, x$2, $s, $r, $c} = $restore(this, {freq, maxBits}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + h = this; + if (h.freqcache === sliceType$7.nil) { + h.freqcache = $makeSlice(sliceType$7, 287); + } + list = $subslice(h.freqcache, 0, (freq.$length + 1 >> 0)); + count = 0; + _ref = freq; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((f === 0))) { + literalNode.copy(((count < 0 || count >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + count]), new literalNode.ptr(((i << 16 >>> 16)), f)); + count = count + (1) >> 0; + } else { + (x = h.codes, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).len = 0; + } + _i++; + } + list = $subslice(list, 0, count); + if (count <= 2) { + _ref$1 = list; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + node = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), literalNode); + (x$1 = h.codes, x$2 = node.literal, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])).set(((i$1 << 16 >>> 16)), 1); + _i$1++; + } + $s = -1; return; + } + $r = (h.$ptr_lfs || (h.$ptr_lfs = new ptrType$6(function() { return this.$target.lfs; }, function($v) { this.$target.lfs = $v; }, h))).sort(list); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + bitCount = h.bitCounts(list, maxBits); + $r = h.assignEncodingAndSize(bitCount, list); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: generate, $c: true, $r, _i, _i$1, _ref, _ref$1, bitCount, count, f, freq, h, i, i$1, list, maxBits, node, x, x$1, x$2, $s};return $f; + }; + $ptrType(byLiteral).prototype.sort = function sort$1(a) { + var {a, s, $s, $r, $c} = $restore(this, {a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + s.$set(($convertSliceType(a, byLiteral))); + $r = sort.Sort(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: sort$1, $c: true, $r, a, s, $s};return $f; + }; + byLiteral.prototype.Len = function Len() { + var s; + s = this; + return s.$length; + }; + $ptrType(byLiteral).prototype.Len = function(...$args) { return this.$get().Len(...$args); }; + byLiteral.prototype.Less = function Less(i, j) { + var i, j, s; + s = this; + return ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).literal < ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).literal; + }; + $ptrType(byLiteral).prototype.Less = function(...$args) { return this.$get().Less(...$args); }; + byLiteral.prototype.Swap = function Swap(i, j) { + var _tmp, _tmp$1, i, j, s; + s = this; + _tmp = $clone(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), literalNode); + _tmp$1 = $clone(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), literalNode); + literalNode.copy(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), _tmp); + literalNode.copy(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), _tmp$1); + }; + $ptrType(byLiteral).prototype.Swap = function(...$args) { return this.$get().Swap(...$args); }; + $ptrType(byFreq).prototype.sort = function sort$2(a) { + var {a, s, $s, $r, $c} = $restore(this, {a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + s.$set(($convertSliceType(a, byFreq))); + $r = sort.Sort(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: sort$2, $c: true, $r, a, s, $s};return $f; + }; + byFreq.prototype.Len = function Len$1() { + var s; + s = this; + return s.$length; + }; + $ptrType(byFreq).prototype.Len = function(...$args) { return this.$get().Len(...$args); }; + byFreq.prototype.Less = function Less$1(i, j) { + var i, j, s; + s = this; + if (((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).freq === ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).freq) { + return ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).literal < ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).literal; + } + return ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]).freq < ((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]).freq; + }; + $ptrType(byFreq).prototype.Less = function(...$args) { return this.$get().Less(...$args); }; + byFreq.prototype.Swap = function Swap$1(i, j) { + var _tmp, _tmp$1, i, j, s; + s = this; + _tmp = $clone(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), literalNode); + _tmp$1 = $clone(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), literalNode); + literalNode.copy(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]), _tmp); + literalNode.copy(((j < 0 || j >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + j]), _tmp$1); + }; + $ptrType(byFreq).prototype.Swap = function(...$args) { return this.$get().Swap(...$args); }; + reverseBits = function reverseBits$1(number, bitLength$1) { + var bitLength$1, number, y; + return bits.Reverse16((y = ((16 - bitLength$1 << 24 >>> 24)), y < 32 ? (number << y) : 0) << 16 >>> 16); + }; + newHuffmanBitWriter = function newHuffmanBitWriter$1(w) { + var w; + return new huffmanBitWriter.ptr(w, new $Uint64(0, 0), 0, arrayType$10.zero(), arrayType$11.zero(), 0, $makeSlice(sliceType$8, 286), $makeSlice(sliceType$8, 30), $makeSlice(sliceType$5, 317), newHuffmanEncoder(286), newHuffmanEncoder(30), newHuffmanEncoder(19), $ifaceNil); + }; + $ptrType(huffmanBitWriter).prototype.reset = function reset(writer) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, w, writer; + w = this; + w.writer = writer; + _tmp = new $Uint64(0, 0); + _tmp$1 = 0; + _tmp$2 = 0; + _tmp$3 = $ifaceNil; + w.bits = _tmp; + w.nbits = _tmp$1; + w.nbytes = _tmp$2; + w.err = _tmp$3; + }; + $ptrType(huffmanBitWriter).prototype.flush = function flush() { + var {n, w, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + w.nbits = 0; + $s = -1; return; + } + n = w.nbytes; + while (true) { + if (!(!((w.nbits === 0)))) { break; } + (x = w.bytes, ((n < 0 || n >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[n] = ((w.bits.$low << 24 >>> 24)))); + w.bits = $shiftRightUint64(w.bits, (8)); + if (w.nbits > 8) { + w.nbits = w.nbits - (8) >>> 0; + } else { + w.nbits = 0; + } + n = n + (1) >> 0; + } + w.bits = new $Uint64(0, 0); + $r = w.write($subslice(new sliceType$5(w.bytes), 0, n)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + w.nbytes = 0; + $s = -1; return; + /* */ } return; } var $f = {$blk: flush, $c: true, $r, n, w, x, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.write = function write(b) { + var {_r, _tuple, b, w, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + _r = w.writer.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + w.err = _tuple[1]; + $s = -1; return; + /* */ } return; } var $f = {$blk: write, $c: true, $r, _r, _tuple, b, w, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.writeBits = function writeBits(b, nb) { + var {b, bits$1, bytes, n, nb, w, x, x$1, $s, $r, $c} = $restore(this, {b, nb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + w.bits = (x = w.bits, x$1 = $shiftLeft64((new $Uint64(0, b)), w.nbits), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)); + w.nbits = w.nbits + (nb) >>> 0; + /* */ if (w.nbits >= 48) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (w.nbits >= 48) { */ case 1: + bits$1 = w.bits; + w.bits = $shiftRightUint64(w.bits, (48)); + w.nbits = w.nbits - (48) >>> 0; + n = w.nbytes; + bytes = $subslice(new sliceType$5(w.bytes), n, (n + 6 >> 0)); + (0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0] = ((bits$1.$low << 24 >>> 24))); + (1 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 1] = (($shiftRightUint64(bits$1, 8).$low << 24 >>> 24))); + (2 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 2] = (($shiftRightUint64(bits$1, 16).$low << 24 >>> 24))); + (3 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 3] = (($shiftRightUint64(bits$1, 24).$low << 24 >>> 24))); + (4 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 4] = (($shiftRightUint64(bits$1, 32).$low << 24 >>> 24))); + (5 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 5] = (($shiftRightUint64(bits$1, 40).$low << 24 >>> 24))); + n = n + (6) >> 0; + /* */ if (n >= 240) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (n >= 240) { */ case 3: + $r = w.write($subslice(new sliceType$5(w.bytes), 0, n)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + n = 0; + /* } */ case 4: + w.nbytes = n; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: writeBits, $c: true, $r, b, bits$1, bytes, n, nb, w, x, x$1, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.writeBytes = function writeBytes(bytes) { + var {bytes, n, w, x, $s, $r, $c} = $restore(this, {bytes}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + n = w.nbytes; + if (!((((w.nbits & 7) >>> 0) === 0))) { + w.err = new InternalError("writeBytes with unfinished bits"); + $s = -1; return; + } + while (true) { + if (!(!((w.nbits === 0)))) { break; } + (x = w.bytes, ((n < 0 || n >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[n] = ((w.bits.$low << 24 >>> 24)))); + w.bits = $shiftRightUint64(w.bits, (8)); + w.nbits = w.nbits - (8) >>> 0; + n = n + (1) >> 0; + } + /* */ if (!((n === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((n === 0))) { */ case 1: + $r = w.write($subslice(new sliceType$5(w.bytes), 0, n)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + w.nbytes = 0; + $r = w.write(bytes); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: writeBytes, $c: true, $r, bytes, n, w, x, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.generateCodegen = function generateCodegen(numLiterals, numOffsets, litEnc, offEnc) { + var _i, _i$1, _i$2, _ref, _ref$1, _ref$2, cgnl, codegen, count, i, i$1, i$2, inIndex, litEnc, n, n$1, nextSize, numLiterals, numOffsets, offEnc, outIndex, size, w, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7; + w = this; + _ref = w.codegenFreq; + _i = 0; + while (true) { + if (!(_i < 19)) { break; } + i = _i; + (x = w.codegenFreq, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = 0)); + _i++; + } + codegen = w.codegen; + cgnl = $subslice(codegen, 0, numLiterals); + _ref$1 = cgnl; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + ((i$1 < 0 || i$1 >= cgnl.$length) ? ($throwRuntimeError("index out of range"), undefined) : cgnl.$array[cgnl.$offset + i$1] = (((x$1 = litEnc.codes, ((i$1 < 0 || i$1 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$1])).len << 24 >>> 24))); + _i$1++; + } + cgnl = $subslice(codegen, numLiterals, (numLiterals + numOffsets >> 0)); + _ref$2 = cgnl; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$2 = _i$2; + ((i$2 < 0 || i$2 >= cgnl.$length) ? ($throwRuntimeError("index out of range"), undefined) : cgnl.$array[cgnl.$offset + i$2] = (((x$2 = offEnc.codes, ((i$2 < 0 || i$2 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$2])).len << 24 >>> 24))); + _i$2++; + } + (x$3 = numLiterals + numOffsets >> 0, ((x$3 < 0 || x$3 >= codegen.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + x$3] = 255)); + size = (0 >= codegen.$length ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + 0]); + count = 1; + outIndex = 0; + inIndex = 1; + while (true) { + if (!(!((size === 255)))) { break; } + nextSize = ((inIndex < 0 || inIndex >= codegen.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + inIndex]); + if (nextSize === size) { + count = count + (1) >> 0; + inIndex = inIndex + (1) >> 0; + continue; + } + if (!((size === 0))) { + ((outIndex < 0 || outIndex >= codegen.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + outIndex] = size); + outIndex = outIndex + (1) >> 0; + (x$5 = w.codegenFreq, ((size < 0 || size >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[size] = ((x$4 = w.codegenFreq, ((size < 0 || size >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[size])) + (1) >> 0))); + count = count - (1) >> 0; + while (true) { + if (!(count >= 3)) { break; } + n = 6; + if (n > count) { + n = count; + } + ((outIndex < 0 || outIndex >= codegen.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + outIndex] = 16); + outIndex = outIndex + (1) >> 0; + ((outIndex < 0 || outIndex >= codegen.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + outIndex] = (((n - 3 >> 0) << 24 >>> 24))); + outIndex = outIndex + (1) >> 0; + w.codegenFreq[16] = (w.codegenFreq[16] + (1) >> 0); + count = count - (n) >> 0; + } + } else { + while (true) { + if (!(count >= 11)) { break; } + n$1 = 138; + if (n$1 > count) { + n$1 = count; + } + ((outIndex < 0 || outIndex >= codegen.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + outIndex] = 18); + outIndex = outIndex + (1) >> 0; + ((outIndex < 0 || outIndex >= codegen.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + outIndex] = (((n$1 - 11 >> 0) << 24 >>> 24))); + outIndex = outIndex + (1) >> 0; + w.codegenFreq[18] = (w.codegenFreq[18] + (1) >> 0); + count = count - (n$1) >> 0; + } + if (count >= 3) { + ((outIndex < 0 || outIndex >= codegen.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + outIndex] = 17); + outIndex = outIndex + (1) >> 0; + ((outIndex < 0 || outIndex >= codegen.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + outIndex] = (((count - 3 >> 0) << 24 >>> 24))); + outIndex = outIndex + (1) >> 0; + w.codegenFreq[17] = (w.codegenFreq[17] + (1) >> 0); + count = 0; + } + } + count = count - (1) >> 0; + while (true) { + if (!(count >= 0)) { break; } + ((outIndex < 0 || outIndex >= codegen.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + outIndex] = size); + outIndex = outIndex + (1) >> 0; + (x$7 = w.codegenFreq, ((size < 0 || size >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[size] = ((x$6 = w.codegenFreq, ((size < 0 || size >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[size])) + (1) >> 0))); + count = count - (1) >> 0; + } + size = nextSize; + count = 1; + inIndex = inIndex + (1) >> 0; + } + ((outIndex < 0 || outIndex >= codegen.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegen.$array[codegen.$offset + outIndex] = 255); + }; + $ptrType(huffmanBitWriter).prototype.dynamicSize = function dynamicSize(litEnc, offEnc, extraBits) { + var _tmp, _tmp$1, extraBits, header, litEnc, numCodegens, offEnc, size, w, x, x$1, x$2; + size = 0; + numCodegens = 0; + w = this; + numCodegens = 19; + while (true) { + if (!(numCodegens > 4 && ((x = w.codegenFreq, x$1 = (x$2 = numCodegens - 1 >> 0, ((x$2 < 0 || x$2 >= codegenOrder.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegenOrder.$array[codegenOrder.$offset + x$2])), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) === 0))) { break; } + numCodegens = numCodegens - (1) >> 0; + } + header = ((((17 + (($imul(3, numCodegens))) >> 0) + w.codegenEncoding.bitLength(new sliceType$8(w.codegenFreq)) >> 0) + ($imul(((w.codegenFreq[16] >> 0)), 2)) >> 0) + ($imul(((w.codegenFreq[17] >> 0)), 3)) >> 0) + ($imul(((w.codegenFreq[18] >> 0)), 7)) >> 0; + size = ((header + litEnc.bitLength(w.literalFreq) >> 0) + offEnc.bitLength(w.offsetFreq) >> 0) + extraBits >> 0; + _tmp = size; + _tmp$1 = numCodegens; + size = _tmp; + numCodegens = _tmp$1; + return [size, numCodegens]; + }; + $ptrType(huffmanBitWriter).prototype.fixedSize = function fixedSize(extraBits) { + var extraBits, w; + w = this; + return ((3 + fixedLiteralEncoding.bitLength(w.literalFreq) >> 0) + fixedOffsetEncoding.bitLength(w.offsetFreq) >> 0) + extraBits >> 0; + }; + $ptrType(huffmanBitWriter).prototype.storedSize = function storedSize(in$1) { + var in$1, w; + w = this; + if (in$1 === sliceType$5.nil) { + return [0, false]; + } + if (in$1.$length <= 65535) { + return [$imul(((in$1.$length + 5 >> 0)), 8), true]; + } + return [0, false]; + }; + $ptrType(huffmanBitWriter).prototype.writeCode = function writeCode(c) { + var {bits$1, bytes, c, n, w, x, x$1, $s, $r, $c} = $restore(this, {c}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + w.bits = (x = w.bits, x$1 = $shiftLeft64((new $Uint64(0, c.code)), w.nbits), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0)); + w.nbits = w.nbits + (((c.len >>> 0))) >>> 0; + /* */ if (w.nbits >= 48) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (w.nbits >= 48) { */ case 1: + bits$1 = w.bits; + w.bits = $shiftRightUint64(w.bits, (48)); + w.nbits = w.nbits - (48) >>> 0; + n = w.nbytes; + bytes = $subslice(new sliceType$5(w.bytes), n, (n + 6 >> 0)); + (0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0] = ((bits$1.$low << 24 >>> 24))); + (1 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 1] = (($shiftRightUint64(bits$1, 8).$low << 24 >>> 24))); + (2 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 2] = (($shiftRightUint64(bits$1, 16).$low << 24 >>> 24))); + (3 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 3] = (($shiftRightUint64(bits$1, 24).$low << 24 >>> 24))); + (4 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 4] = (($shiftRightUint64(bits$1, 32).$low << 24 >>> 24))); + (5 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 5] = (($shiftRightUint64(bits$1, 40).$low << 24 >>> 24))); + n = n + (6) >> 0; + /* */ if (n >= 240) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (n >= 240) { */ case 3: + $r = w.write($subslice(new sliceType$5(w.bytes), 0, n)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + n = 0; + /* } */ case 4: + w.nbytes = n; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: writeCode, $c: true, $r, bits$1, bytes, c, n, w, x, x$1, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.writeDynamicHeader = function writeDynamicHeader(numLiterals, numOffsets, numCodegens, isEof) { + var {_1, codeWord, firstBits, i, i$1, isEof, numCodegens, numLiterals, numOffsets, value, w, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {numLiterals, numOffsets, numCodegens, isEof}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + firstBits = 4; + if (isEof) { + firstBits = 5; + } + $r = w.writeBits(firstBits, 3); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.writeBits((((numLiterals - 257 >> 0) >> 0)), 5); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.writeBits((((numOffsets - 1 >> 0) >> 0)), 5); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.writeBits((((numCodegens - 4 >> 0) >> 0)), 4); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = 0; + /* while (true) { */ case 5: + /* if (!(i < numCodegens)) { break; } */ if(!(i < numCodegens)) { $s = 6; continue; } + value = (((x = w.codegenEncoding.codes, x$1 = ((i < 0 || i >= codegenOrder.$length) ? ($throwRuntimeError("index out of range"), undefined) : codegenOrder.$array[codegenOrder.$offset + i]), ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).len >>> 0)); + $r = w.writeBits(((value >> 0)), 3); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 5; continue; + case 6: + i$1 = 0; + /* while (true) { */ case 8: + codeWord = (((x$2 = w.codegen, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1])) >> 0)); + i$1 = i$1 + (1) >> 0; + if (codeWord === 255) { + /* break; */ $s = 9; continue; + } + $r = w.writeCode($clone((x$3 = w.codegenEncoding.codes, x$4 = ((codeWord >>> 0)), ((x$4 < 0 || x$4 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + x$4])), hcode)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _1 = codeWord; + /* */ if (_1 === (16)) { $s = 12; continue; } + /* */ if (_1 === (17)) { $s = 13; continue; } + /* */ if (_1 === (18)) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_1 === (16)) { */ case 12: + $r = w.writeBits((((x$5 = w.codegen, ((i$1 < 0 || i$1 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + i$1])) >> 0)), 2); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 + (1) >> 0; + $s = 15; continue; + /* } else if (_1 === (17)) { */ case 13: + $r = w.writeBits((((x$6 = w.codegen, ((i$1 < 0 || i$1 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i$1])) >> 0)), 3); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 + (1) >> 0; + $s = 15; continue; + /* } else if (_1 === (18)) { */ case 14: + $r = w.writeBits((((x$7 = w.codegen, ((i$1 < 0 || i$1 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + i$1])) >> 0)), 7); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 + (1) >> 0; + /* } */ case 15: + case 11: + $s = 8; continue; + case 9: + $s = -1; return; + /* */ } return; } var $f = {$blk: writeDynamicHeader, $c: true, $r, _1, codeWord, firstBits, i, i$1, isEof, numCodegens, numLiterals, numOffsets, value, w, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.writeStoredHeader = function writeStoredHeader(length$1, isEof) { + var {flag, isEof, length$1, w, $s, $r, $c} = $restore(this, {length$1, isEof}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + flag = 0; + if (isEof) { + flag = 1; + } + $r = w.writeBits(flag, 3); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.flush(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.writeBits(((length$1 >> 0)), 16); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.writeBits((((~((length$1 << 16 >>> 16)) << 16 >>> 16) >> 0)), 16); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: writeStoredHeader, $c: true, $r, flag, isEof, length$1, w, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.writeFixedHeader = function writeFixedHeader(isEof) { + var {isEof, value, w, $s, $r, $c} = $restore(this, {isEof}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + value = 2; + if (isEof) { + value = 3; + } + $r = w.writeBits(value, 3); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: writeFixedHeader, $c: true, $r, isEof, value, w, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.writeBlock = function writeBlock(tokens, eof, input) { + var {_r, _tuple, _tuple$1, _tuple$2, dynamicSize$1, eof, extraBits, input, lengthCode$2, literalEncoding, numCodegens, numLiterals, numOffsets, offsetCode$2, offsetEncoding, size, storable, storedSize$1, tokens, w, x, x$1, x$2, $s, $r, $c} = $restore(this, {tokens, eof, input}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + tokens = $append(tokens, 256); + _r = w.indexTokens(tokens); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + numLiterals = _tuple[0]; + numOffsets = _tuple[1]; + extraBits = 0; + _tuple$1 = w.storedSize(input); + storedSize$1 = _tuple$1[0]; + storable = _tuple$1[1]; + if (storable) { + lengthCode$2 = 265; + while (true) { + if (!(lengthCode$2 < numLiterals)) { break; } + extraBits = extraBits + (($imul((((x = w.literalFreq, ((lengthCode$2 < 0 || lengthCode$2 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + lengthCode$2])) >> 0)), (((x$1 = lengthCode$2 - 257 >> 0, ((x$1 < 0 || x$1 >= lengthExtraBits.$length) ? ($throwRuntimeError("index out of range"), undefined) : lengthExtraBits.$array[lengthExtraBits.$offset + x$1])) >> 0))))) >> 0; + lengthCode$2 = lengthCode$2 + (1) >> 0; + } + offsetCode$2 = 4; + while (true) { + if (!(offsetCode$2 < numOffsets)) { break; } + extraBits = extraBits + (($imul((((x$2 = w.offsetFreq, ((offsetCode$2 < 0 || offsetCode$2 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + offsetCode$2])) >> 0)), ((((offsetCode$2 < 0 || offsetCode$2 >= offsetExtraBits.$length) ? ($throwRuntimeError("index out of range"), undefined) : offsetExtraBits.$array[offsetExtraBits.$offset + offsetCode$2]) >> 0))))) >> 0; + offsetCode$2 = offsetCode$2 + (1) >> 0; + } + } + literalEncoding = fixedLiteralEncoding; + offsetEncoding = fixedOffsetEncoding; + size = w.fixedSize(extraBits); + numCodegens = 0; + w.generateCodegen(numLiterals, numOffsets, w.literalEncoding, w.offsetEncoding); + $r = w.codegenEncoding.generate(new sliceType$8(w.codegenFreq), 7); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple$2 = w.dynamicSize(w.literalEncoding, w.offsetEncoding, extraBits); + dynamicSize$1 = _tuple$2[0]; + numCodegens = _tuple$2[1]; + if (dynamicSize$1 < size) { + size = dynamicSize$1; + literalEncoding = w.literalEncoding; + offsetEncoding = w.offsetEncoding; + } + /* */ if (storable && storedSize$1 < size) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (storable && storedSize$1 < size) { */ case 3: + $r = w.writeStoredHeader(input.$length, eof); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.writeBytes(input); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 4: + /* */ if (literalEncoding === fixedLiteralEncoding) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (literalEncoding === fixedLiteralEncoding) { */ case 7: + $r = w.writeFixedHeader(eof); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 9; continue; + /* } else { */ case 8: + $r = w.writeDynamicHeader(numLiterals, numOffsets, numCodegens, eof); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + $r = w.writeTokens(tokens, literalEncoding.codes, offsetEncoding.codes); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: writeBlock, $c: true, $r, _r, _tuple, _tuple$1, _tuple$2, dynamicSize$1, eof, extraBits, input, lengthCode$2, literalEncoding, numCodegens, numLiterals, numOffsets, offsetCode$2, offsetEncoding, size, storable, storedSize$1, tokens, w, x, x$1, x$2, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.writeBlockDynamic = function writeBlockDynamic(tokens, eof, input) { + var {_r, _tuple, _tuple$1, _tuple$2, eof, input, numCodegens, numLiterals, numOffsets, size, ssize, storable, tokens, w, $s, $r, $c} = $restore(this, {tokens, eof, input}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + tokens = $append(tokens, 256); + _r = w.indexTokens(tokens); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + numLiterals = _tuple[0]; + numOffsets = _tuple[1]; + w.generateCodegen(numLiterals, numOffsets, w.literalEncoding, w.offsetEncoding); + $r = w.codegenEncoding.generate(new sliceType$8(w.codegenFreq), 7); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple$1 = w.dynamicSize(w.literalEncoding, w.offsetEncoding, 0); + size = _tuple$1[0]; + numCodegens = _tuple$1[1]; + _tuple$2 = w.storedSize(input); + ssize = _tuple$2[0]; + storable = _tuple$2[1]; + /* */ if (storable && ssize < ((size + (size >> 4 >> 0) >> 0))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (storable && ssize < ((size + (size >> 4 >> 0) >> 0))) { */ case 3: + $r = w.writeStoredHeader(input.$length, eof); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.writeBytes(input); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 4: + $r = w.writeDynamicHeader(numLiterals, numOffsets, numCodegens, eof); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.writeTokens(tokens, w.literalEncoding.codes, w.offsetEncoding.codes); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: writeBlockDynamic, $c: true, $r, _r, _tuple, _tuple$1, _tuple$2, eof, input, numCodegens, numLiterals, numOffsets, size, ssize, storable, tokens, w, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.indexTokens = function indexTokens(tokens) { + var {_i, _i$1, _i$2, _index, _index$1, _index$2, _ref, _ref$1, _ref$2, i, i$1, length$1, numLiterals, numOffsets, offset$1, t, tokens, w, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r, $c} = $restore(this, {tokens}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + numLiterals = 0; + numOffsets = 0; + w = this; + _ref = w.literalFreq; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + (x = w.literalFreq, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = 0)); + _i++; + } + _ref$1 = w.offsetFreq; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + (x$1 = w.offsetFreq, ((i$1 < 0 || i$1 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$1] = 0)); + _i$1++; + } + _ref$2 = tokens; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + t = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + if (t < 1073741824) { + _index = new token(t).literal(); + (x$3 = w.literalFreq, ((_index < 0 || _index >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + _index] = ((x$2 = w.literalFreq, ((_index < 0 || _index >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + _index])) + (1) >> 0))); + _i$2++; + continue; + } + length$1 = new token(t).length(); + offset$1 = new token(t).offset(); + _index$1 = 257 + lengthCode(length$1) >>> 0; + (x$5 = w.literalFreq, ((_index$1 < 0 || _index$1 >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + _index$1] = ((x$4 = w.literalFreq, ((_index$1 < 0 || _index$1 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + _index$1])) + (1) >> 0))); + _index$2 = offsetCode(offset$1); + (x$7 = w.offsetFreq, ((_index$2 < 0 || _index$2 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + _index$2] = ((x$6 = w.offsetFreq, ((_index$2 < 0 || _index$2 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + _index$2])) + (1) >> 0))); + _i$2++; + } + numLiterals = w.literalFreq.$length; + while (true) { + if (!((x$8 = w.literalFreq, x$9 = numLiterals - 1 >> 0, ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9])) === 0)) { break; } + numLiterals = numLiterals - (1) >> 0; + } + numOffsets = w.offsetFreq.$length; + while (true) { + if (!(numOffsets > 0 && ((x$10 = w.offsetFreq, x$11 = numOffsets - 1 >> 0, ((x$11 < 0 || x$11 >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + x$11])) === 0))) { break; } + numOffsets = numOffsets - (1) >> 0; + } + if (numOffsets === 0) { + (x$12 = w.offsetFreq, (0 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 0] = 1)); + numOffsets = 1; + } + $r = w.literalEncoding.generate(w.literalFreq, 15); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.offsetEncoding.generate(w.offsetFreq, 15); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [numLiterals, numOffsets]; + /* */ } return; } var $f = {$blk: indexTokens, $c: true, $r, _i, _i$1, _i$2, _index, _index$1, _index$2, _ref, _ref$1, _ref$2, i, i$1, length$1, numLiterals, numOffsets, offset$1, t, tokens, w, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.writeTokens = function writeTokens(tokens, leCodes, oeCodes) { + var {_i, _ref, extraLength, extraLengthBits, extraOffset, extraOffsetBits, leCodes, length$1, lengthCode$2, oeCodes, offset$1, offsetCode$2, t, tokens, w, x, x$1, $s, $r, $c} = $restore(this, {tokens, leCodes, oeCodes}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + _ref = tokens; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (t < 1073741824) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (t < 1073741824) { */ case 3: + $r = w.writeCode($clone((x = new token(t).literal(), ((x < 0 || x >= leCodes.$length) ? ($throwRuntimeError("index out of range"), undefined) : leCodes.$array[leCodes.$offset + x])), hcode)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue; */ $s = 1; continue; + /* } */ case 4: + length$1 = new token(t).length(); + lengthCode$2 = lengthCode(length$1); + $r = w.writeCode($clone((x$1 = lengthCode$2 + 257 >>> 0, ((x$1 < 0 || x$1 >= leCodes.$length) ? ($throwRuntimeError("index out of range"), undefined) : leCodes.$array[leCodes.$offset + x$1])), hcode)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + extraLengthBits = ((((lengthCode$2 < 0 || lengthCode$2 >= lengthExtraBits.$length) ? ($throwRuntimeError("index out of range"), undefined) : lengthExtraBits.$array[lengthExtraBits.$offset + lengthCode$2]) >>> 0)); + /* */ if (extraLengthBits > 0) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (extraLengthBits > 0) { */ case 7: + extraLength = (((length$1 - ((lengthCode$2 < 0 || lengthCode$2 >= lengthBase.$length) ? ($throwRuntimeError("index out of range"), undefined) : lengthBase.$array[lengthBase.$offset + lengthCode$2]) >>> 0) >> 0)); + $r = w.writeBits(extraLength, extraLengthBits); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + offset$1 = new token(t).offset(); + offsetCode$2 = offsetCode(offset$1); + $r = w.writeCode($clone(((offsetCode$2 < 0 || offsetCode$2 >= oeCodes.$length) ? ($throwRuntimeError("index out of range"), undefined) : oeCodes.$array[oeCodes.$offset + offsetCode$2]), hcode)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + extraOffsetBits = ((((offsetCode$2 < 0 || offsetCode$2 >= offsetExtraBits.$length) ? ($throwRuntimeError("index out of range"), undefined) : offsetExtraBits.$array[offsetExtraBits.$offset + offsetCode$2]) >>> 0)); + /* */ if (extraOffsetBits > 0) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (extraOffsetBits > 0) { */ case 11: + extraOffset = (((offset$1 - ((offsetCode$2 < 0 || offsetCode$2 >= offsetBase.$length) ? ($throwRuntimeError("index out of range"), undefined) : offsetBase.$array[offsetBase.$offset + offsetCode$2]) >>> 0) >> 0)); + $r = w.writeBits(extraOffset, extraOffsetBits); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: writeTokens, $c: true, $r, _i, _ref, extraLength, extraLengthBits, extraOffset, extraOffsetBits, leCodes, length$1, lengthCode$2, oeCodes, offset$1, offsetCode$2, t, tokens, w, x, x$1, $s};return $f; + }; + init = function init$2() { + var {offsetFreq, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + offsetFreq = $makeSlice(sliceType$8, 30); + (0 >= offsetFreq.$length ? ($throwRuntimeError("index out of range"), undefined) : offsetFreq.$array[offsetFreq.$offset + 0] = 1); + huffOffset = newHuffmanEncoder(30); + $r = huffOffset.generate(offsetFreq, 15); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: init$2, $c: true, $r, offsetFreq, $s};return $f; + }; + $ptrType(huffmanBitWriter).prototype.writeBlockHuff = function writeBlockHuff(eof, input) { + var {_i, _i$1, _ref, _ref$1, _tuple, _tuple$1, bits$1, bytes, c, encoding, eof, i, input, n, numCodegens, size, ssize, storable, t, w, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {eof, input}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + _ref = w.literalFreq; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + (x = w.literalFreq, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = 0)); + _i++; + } + histogram(input, w.literalFreq); + (x$1 = w.literalFreq, (256 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 256] = 1)); + (x$2 = w.offsetFreq, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = 1)); + $r = w.literalEncoding.generate(w.literalFreq, 15); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + numCodegens = 0; + w.generateCodegen(257, 1, w.literalEncoding, huffOffset); + $r = w.codegenEncoding.generate(new sliceType$8(w.codegenFreq), 7); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple = w.dynamicSize(w.literalEncoding, huffOffset, 0); + size = _tuple[0]; + numCodegens = _tuple[1]; + _tuple$1 = w.storedSize(input); + ssize = _tuple$1[0]; + storable = _tuple$1[1]; + /* */ if (storable && ssize < ((size + (size >> 4 >> 0) >> 0))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (storable && ssize < ((size + (size >> 4 >> 0) >> 0))) { */ case 3: + $r = w.writeStoredHeader(input.$length, eof); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.writeBytes(input); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 4: + $r = w.writeDynamicHeader(257, 1, numCodegens, eof); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + encoding = $subslice(w.literalEncoding.codes, 0, 257); + n = w.nbytes; + _ref$1 = input; + _i$1 = 0; + /* while (true) { */ case 8: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 9; continue; } + t = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + c = $clone(((t < 0 || t >= encoding.$length) ? ($throwRuntimeError("index out of range"), undefined) : encoding.$array[encoding.$offset + t]), hcode); + w.bits = (x$3 = w.bits, x$4 = $shiftLeft64((new $Uint64(0, c.code)), w.nbits), new $Uint64(x$3.$high | x$4.$high, (x$3.$low | x$4.$low) >>> 0)); + w.nbits = w.nbits + (((c.len >>> 0))) >>> 0; + if (w.nbits < 48) { + _i$1++; + /* continue; */ $s = 8; continue; + } + bits$1 = w.bits; + w.bits = $shiftRightUint64(w.bits, (48)); + w.nbits = w.nbits - (48) >>> 0; + bytes = $subslice(new sliceType$5(w.bytes), n, (n + 6 >> 0)); + (0 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 0] = ((bits$1.$low << 24 >>> 24))); + (1 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 1] = (($shiftRightUint64(bits$1, 8).$low << 24 >>> 24))); + (2 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 2] = (($shiftRightUint64(bits$1, 16).$low << 24 >>> 24))); + (3 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 3] = (($shiftRightUint64(bits$1, 24).$low << 24 >>> 24))); + (4 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 4] = (($shiftRightUint64(bits$1, 32).$low << 24 >>> 24))); + (5 >= bytes.$length ? ($throwRuntimeError("index out of range"), undefined) : bytes.$array[bytes.$offset + 5] = (($shiftRightUint64(bits$1, 40).$low << 24 >>> 24))); + n = n + (6) >> 0; + if (n < 240) { + _i$1++; + /* continue; */ $s = 8; continue; + } + $r = w.write($subslice(new sliceType$5(w.bytes), 0, n)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(w.err, $ifaceNil))) { + $s = -1; return; + } + n = 0; + _i$1++; + $s = 8; continue; + case 9: + w.nbytes = n; + $r = w.writeCode($clone((256 >= encoding.$length ? ($throwRuntimeError("index out of range"), undefined) : encoding.$array[encoding.$offset + 256]), hcode)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: writeBlockHuff, $c: true, $r, _i, _i$1, _ref, _ref$1, _tuple, _tuple$1, bits$1, bytes, c, encoding, eof, i, input, n, numCodegens, size, ssize, storable, t, w, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + histogram = function histogram$1(b, h) { + var _i, _ref, b, h, t; + h = $subslice(h, 0, 256); + _ref = b; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ((t < 0 || t >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + t] = (((t < 0 || t >= h.$length) ? ($throwRuntimeError("index out of range"), undefined) : h.$array[h.$offset + t]) + (1) >> 0)); + _i++; + } + }; + $ptrType(dictDecoder).prototype.init = function init$3(size, dict) { + var dd, dict, size; + dd = this; + dictDecoder.copy(dd, new dictDecoder.ptr(dd.hist, 0, 0, false)); + if (dd.hist.$capacity < size) { + dd.hist = $makeSlice(sliceType$5, size); + } + dd.hist = $subslice(dd.hist, 0, size); + if (dict.$length > dd.hist.$length) { + dict = $subslice(dict, (dict.$length - dd.hist.$length >> 0)); + } + dd.wrPos = $copySlice(dd.hist, dict); + if (dd.wrPos === dd.hist.$length) { + dd.wrPos = 0; + dd.full = true; + } + dd.rdPos = dd.wrPos; + }; + $ptrType(dictDecoder).prototype.histSize = function histSize() { + var dd; + dd = this; + if (dd.full) { + return dd.hist.$length; + } + return dd.wrPos; + }; + $ptrType(dictDecoder).prototype.availRead = function availRead() { + var dd; + dd = this; + return dd.wrPos - dd.rdPos >> 0; + }; + $ptrType(dictDecoder).prototype.availWrite = function availWrite() { + var dd; + dd = this; + return dd.hist.$length - dd.wrPos >> 0; + }; + $ptrType(dictDecoder).prototype.writeSlice = function writeSlice() { + var dd; + dd = this; + return $subslice(dd.hist, dd.wrPos); + }; + $ptrType(dictDecoder).prototype.writeMark = function writeMark(cnt) { + var cnt, dd; + dd = this; + dd.wrPos = dd.wrPos + (cnt) >> 0; + }; + $ptrType(dictDecoder).prototype.writeByte = function writeByte(c) { + var c, dd, x, x$1; + dd = this; + (x = dd.hist, x$1 = dd.wrPos, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = c)); + dd.wrPos = dd.wrPos + (1) >> 0; + }; + $ptrType(dictDecoder).prototype.writeCopy = function writeCopy(dist, length$1) { + var dd, dist, dstBase, dstPos, endPos, length$1, srcPos; + dd = this; + dstBase = dd.wrPos; + dstPos = dstBase; + srcPos = dstPos - dist >> 0; + endPos = dstPos + length$1 >> 0; + if (endPos > dd.hist.$length) { + endPos = dd.hist.$length; + } + if (srcPos < 0) { + srcPos = srcPos + (dd.hist.$length) >> 0; + dstPos = dstPos + ($copySlice($subslice(dd.hist, dstPos, endPos), $subslice(dd.hist, srcPos))) >> 0; + srcPos = 0; + } + while (true) { + if (!(dstPos < endPos)) { break; } + dstPos = dstPos + ($copySlice($subslice(dd.hist, dstPos, endPos), $subslice(dd.hist, srcPos, dstPos))) >> 0; + } + dd.wrPos = dstPos; + return dstPos - dstBase >> 0; + }; + $ptrType(dictDecoder).prototype.tryWriteCopy = function tryWriteCopy(dist, length$1) { + var dd, dist, dstBase, dstPos, endPos, length$1, srcPos; + dd = this; + dstPos = dd.wrPos; + endPos = dstPos + length$1 >> 0; + if (dstPos < dist || endPos > dd.hist.$length) { + return 0; + } + dstBase = dstPos; + srcPos = dstPos - dist >> 0; + while (true) { + if (!(dstPos < endPos)) { break; } + dstPos = dstPos + ($copySlice($subslice(dd.hist, dstPos, endPos), $subslice(dd.hist, srcPos, dstPos))) >> 0; + } + dd.wrPos = dstPos; + return dstPos - dstBase >> 0; + }; + $ptrType(dictDecoder).prototype.readFlush = function readFlush() { + var _tmp, _tmp$1, dd, toRead; + dd = this; + toRead = $subslice(dd.hist, dd.rdPos, dd.wrPos); + dd.rdPos = dd.wrPos; + if (dd.wrPos === dd.hist.$length) { + _tmp = 0; + _tmp$1 = 0; + dd.wrPos = _tmp; + dd.rdPos = _tmp$1; + dd.full = true; + } + return toRead; + }; + load32 = function load32$1(b, i) { + var b, i; + b = $subslice(b, i, (i + 4 >> 0), b.$length); + return ((((((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) << 24 >>> 0)) >>> 0; + }; + load64 = function load64$1(b, i) { + var b, i, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + b = $subslice(b, i, (i + 8 >> 0), b.$length); + return (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$7 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0)); + }; + hash = function hash$1(u) { + var u; + return (($imul(u, 506832829) >>> 0)) >>> 18 >>> 0; + }; + newDeflateFast = function newDeflateFast$1() { + return new deflateFast.ptr(arrayType$12.zero(), $makeSlice(sliceType$5, 0, 65535), 65535); + }; + $ptrType(deflateFast).prototype.encode = function encode(dst, src) { + var bytesBetweenHashLookups, candidate, currHash, cv, dst, e, l, nextEmit, nextHash, nextS, now, offset$1, offset$2, prevHash, s, sLimit, skip, src, t, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s; + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + if (e.cur >= 2147352577) { + e.shiftOffsets(); + } + if (src.$length < 17) { + e.cur = e.cur + (65535) >> 0; + e.prev = $subslice(e.prev, 0, 0); + $s = -1; return emitLiteral(dst, src); + } + sLimit = (((src.$length - 15 >> 0) >> 0)); + nextEmit = 0; + s = 0; + cv = load32(src, s); + nextHash = hash(cv); + /* while (true) { */ case 1: + skip = 32; + nextS = s; + candidate = new tableEntry.ptr(0, 0); + /* while (true) { */ case 3: + s = nextS; + bytesBetweenHashLookups = skip >> 5 >> 0; + nextS = s + bytesBetweenHashLookups >> 0; + skip = skip + (bytesBetweenHashLookups) >> 0; + /* */ if (nextS > sLimit) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (nextS > sLimit) { */ case 5: + /* goto emitRemainder */ $s = 7; continue; + /* } */ case 6: + tableEntry.copy(candidate, (x = e.table, x$1 = (nextHash & 16383) >>> 0, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1]))); + now = load32(src, nextS); + tableEntry.copy((x$2 = e.table, x$3 = (nextHash & 16383) >>> 0, ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3])), new tableEntry.ptr(cv, s + e.cur >> 0)); + nextHash = hash(now); + offset$1 = s - ((candidate.offset - e.cur >> 0)) >> 0; + if (offset$1 > 32768 || !((cv === candidate.val))) { + cv = now; + /* continue; */ $s = 3; continue; + } + /* break; */ $s = 4; continue; + case 4: + dst = emitLiteral(dst, $subslice(src, nextEmit, s)); + /* while (true) { */ case 8: + s = s + (4) >> 0; + t = (candidate.offset - e.cur >> 0) + 4 >> 0; + l = e.matchLen(s, t, src); + dst = $append(dst, matchToken(((((l + 4 >> 0) - 3 >> 0) >>> 0)), ((((s - t >> 0) - 1 >> 0) >>> 0)))); + s = s + (l) >> 0; + nextEmit = s; + /* */ if (s >= sLimit) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (s >= sLimit) { */ case 10: + /* goto emitRemainder */ $s = 7; continue; + /* } */ case 11: + x$4 = load64(src, s - 1 >> 0); + prevHash = hash(((x$4.$low >>> 0))); + tableEntry.copy((x$5 = e.table, x$6 = (prevHash & 16383) >>> 0, ((x$6 < 0 || x$6 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[x$6])), new tableEntry.ptr(((x$4.$low >>> 0)), (e.cur + s >> 0) - 1 >> 0)); + x$4 = $shiftRightUint64(x$4, (8)); + currHash = hash(((x$4.$low >>> 0))); + tableEntry.copy(candidate, (x$7 = e.table, x$8 = (currHash & 16383) >>> 0, ((x$8 < 0 || x$8 >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[x$8]))); + tableEntry.copy((x$9 = e.table, x$10 = (currHash & 16383) >>> 0, ((x$10 < 0 || x$10 >= x$9.length) ? ($throwRuntimeError("index out of range"), undefined) : x$9[x$10])), new tableEntry.ptr(((x$4.$low >>> 0)), e.cur + s >> 0)); + offset$2 = s - ((candidate.offset - e.cur >> 0)) >> 0; + if (offset$2 > 32768 || !((((x$4.$low >>> 0)) === candidate.val))) { + cv = (($shiftRightUint64(x$4, 8).$low >>> 0)); + nextHash = hash(cv); + s = s + (1) >> 0; + /* break; */ $s = 9; continue; + } + $s = 8; continue; + case 9: + $s = 1; continue; + case 2: + /* emitRemainder: */ case 7: + if (((nextEmit >> 0)) < src.$length) { + dst = emitLiteral(dst, $subslice(src, nextEmit)); + } + e.cur = e.cur + (((src.$length >> 0))) >> 0; + e.prev = $subslice(e.prev, 0, src.$length); + $copySlice(e.prev, src); + $s = -1; return dst; + /* */ } return; } + }; + emitLiteral = function emitLiteral$1(dst, lit) { + var _i, _ref, dst, lit, v; + _ref = lit; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + dst = $append(dst, literalToken(((v >>> 0)))); + _i++; + } + return dst; + }; + $ptrType(deflateFast).prototype.matchLen = function matchLen$1(s, t, src) { + var _i, _i$1, _i$2, _ref, _ref$1, _ref$2, a, a$1, b, b$1, e, i, i$1, i$2, n, s, s1, src, t, tp; + e = this; + s1 = (((s >> 0)) + 258 >> 0) - 4 >> 0; + if (s1 > src.$length) { + s1 = src.$length; + } + if (t >= 0) { + b = $subslice(src, t); + a = $subslice(src, s, s1); + b = $subslice(b, 0, a.$length); + _ref = a; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + if (!((((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]) === ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i])))) { + return ((i >> 0)); + } + _i++; + } + return ((a.$length >> 0)); + } + tp = ((e.prev.$length >> 0)) + t >> 0; + if (tp < 0) { + return 0; + } + a$1 = $subslice(src, s, s1); + b$1 = $subslice(e.prev, tp); + if (b$1.$length > a$1.$length) { + b$1 = $subslice(b$1, 0, a$1.$length); + } + a$1 = $subslice(a$1, 0, b$1.$length); + _ref$1 = b$1; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + if (!((((i$1 < 0 || i$1 >= a$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : a$1.$array[a$1.$offset + i$1]) === ((i$1 < 0 || i$1 >= b$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : b$1.$array[b$1.$offset + i$1])))) { + return ((i$1 >> 0)); + } + _i$1++; + } + n = ((b$1.$length >> 0)); + if ((((s + n >> 0) >> 0)) === s1) { + return n; + } + a$1 = $subslice(src, (s + n >> 0), s1); + b$1 = $subslice(src, 0, a$1.$length); + _ref$2 = a$1; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$2 = _i$2; + if (!((((i$2 < 0 || i$2 >= a$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : a$1.$array[a$1.$offset + i$2]) === ((i$2 < 0 || i$2 >= b$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : b$1.$array[b$1.$offset + i$2])))) { + return ((i$2 >> 0)) + n >> 0; + } + _i$2++; + } + return ((a$1.$length >> 0)) + n >> 0; + }; + $ptrType(deflateFast).prototype.reset = function reset$1() { + var e; + e = this; + e.prev = $subslice(e.prev, 0, 0); + e.cur = e.cur + (32768) >> 0; + if (e.cur >= 2147352577) { + e.shiftOffsets(); + } + }; + $ptrType(deflateFast).prototype.shiftOffsets = function shiftOffsets() { + var _i, _i$1, _ref, _ref$1, e, i, i$1, v, x, x$1, x$2; + e = this; + if (e.prev.$length === 0) { + _ref = new sliceType$9(e.table); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + tableEntry.copy((x = e.table, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])), new tableEntry.ptr(0, 0)); + _i++; + } + e.cur = 32769; + return; + } + _ref$1 = new sliceType$9(e.table); + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + v = (((x$1 = e.table, ((i$1 < 0 || i$1 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i$1])).offset - e.cur >> 0) + 32768 >> 0) + 1 >> 0; + if (v < 0) { + v = 0; + } + (x$2 = e.table, ((i$1 < 0 || i$1 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i$1])).offset = v; + _i$1++; + } + e.cur = 32769; + }; + $ptrType(compressor).prototype.fillDeflate = function fillDeflate(b) { + var _i, _i$1, _ref, _ref$1, b, d, delta, i, i$1, n, v, v$1, x, x$1, x$2, x$3; + d = this; + if (d.index >= 65274) { + $copySlice(d.window, $subslice(d.window, 32768, 65536)); + d.index = d.index - (32768) >> 0; + d.windowEnd = d.windowEnd - (32768) >> 0; + if (d.blockStart >= 32768) { + d.blockStart = d.blockStart - (32768) >> 0; + } else { + d.blockStart = 2147483647; + } + d.hashOffset = d.hashOffset + (32768) >> 0; + if (d.hashOffset > 16777216) { + delta = d.hashOffset - 1 >> 0; + d.hashOffset = d.hashOffset - (delta) >> 0; + d.chainHead = d.chainHead - (delta) >> 0; + _ref = new sliceType(d.hashPrev); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (((v >> 0)) > delta) { + (x = d.hashPrev, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = (((((v >> 0)) - delta >> 0) >>> 0)))); + } else { + (x$1 = d.hashPrev, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i] = 0)); + } + _i++; + } + _ref$1 = new sliceType(d.hashHead); + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + v$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (((v$1 >> 0)) > delta) { + (x$2 = d.hashHead, ((i$1 < 0 || i$1 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i$1] = (((((v$1 >> 0)) - delta >> 0) >>> 0)))); + } else { + (x$3 = d.hashHead, ((i$1 < 0 || i$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i$1] = 0)); + } + _i$1++; + } + } + } + n = $copySlice($subslice(d.window, d.windowEnd), b); + d.windowEnd = d.windowEnd + (n) >> 0; + return n; + }; + $ptrType(compressor).prototype.writeBlock = function writeBlock$1(tokens, index) { + var {d, index, tokens, window, $s, $r, $c} = $restore(this, {tokens, index}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + /* */ if (index > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (index > 0) { */ case 1: + window = sliceType$5.nil; + if (d.blockStart <= index) { + window = $subslice(d.window, d.blockStart, index); + } + d.blockStart = index; + $r = d.w.writeBlock(tokens, false, window); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return d.w.err; + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: writeBlock$1, $c: true, $r, d, index, tokens, window, $s};return $f; + }; + $ptrType(compressor).prototype.fillWindow = function fillWindow(b) { + var {_i, _q, _ref, b, d, di, dst, dstSize, end, hh, i, index, j, loops, n, toCheck, val, x, x$1, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + if (d.compressionLevel.level < 2) { + $s = -1; return; + } + if (!((d.index === 0)) || !((d.windowEnd === 0))) { + $panic(new $String("internal error: fillWindow called with stale data")); + } + if (b.$length > 32768) { + b = $subslice(b, (b.$length - 32768 >> 0)); + } + n = $copySlice(d.window, b); + loops = (_q = (((n + 256 >> 0) - 4 >> 0)) / 256, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + j = 0; + /* while (true) { */ case 1: + /* if (!(j < loops)) { break; } */ if(!(j < loops)) { $s = 2; continue; } + index = $imul(j, 256); + end = ((index + 256 >> 0) + 4 >> 0) - 1 >> 0; + if (end > n) { + end = n; + } + toCheck = $subslice(d.window, index, end); + dstSize = (toCheck.$length - 4 >> 0) + 1 >> 0; + if (dstSize <= 0) { + j = j + (1) >> 0; + /* continue; */ $s = 1; continue; + } + dst = $subslice(new sliceType(d.hashMatch), 0, dstSize); + $r = d.bulkHasher(toCheck, dst); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = dst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + val = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + di = i + index >> 0; + hh = $indexPtr(d.hashHead, ((val & 131071) >>> 0), ptrType$7); + (x = d.hashPrev, x$1 = di & 32767, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1] = hh.$get())); + hh.$set((((di + d.hashOffset >> 0) >>> 0))); + _i++; + } + j = j + (1) >> 0; + $s = 1; continue; + case 2: + d.windowEnd = n; + d.index = n; + $s = -1; return; + /* */ } return; } var $f = {$blk: fillWindow, $c: true, $r, _i, _q, _ref, b, d, di, dst, dstSize, end, hh, i, index, j, loops, n, toCheck, val, x, x$1, $s};return $f; + }; + $ptrType(compressor).prototype.findMatch = function findMatch(pos, prevHead, prevLength, lookahead) { + var d, i, length$1, lookahead, minIndex, minMatchLook, n, nice, offset$1, ok, pos, prevHead, prevLength, tries, wEnd, wPos, win, x, x$1, x$2, x$3, x$4; + length$1 = 0; + offset$1 = 0; + ok = false; + d = this; + minMatchLook = 258; + if (lookahead < minMatchLook) { + minMatchLook = lookahead; + } + win = $subslice(d.window, 0, (pos + minMatchLook >> 0)); + nice = win.$length - pos >> 0; + if (d.compressionLevel.nice < nice) { + nice = d.compressionLevel.nice; + } + tries = d.compressionLevel.chain; + length$1 = prevLength; + if (length$1 >= d.compressionLevel.good) { + tries = (tries >> $min((2), 31)) >> 0; + } + wEnd = (x = pos + length$1 >> 0, ((x < 0 || x >= win.$length) ? ($throwRuntimeError("index out of range"), undefined) : win.$array[win.$offset + x])); + wPos = $subslice(win, pos); + minIndex = pos - 32768 >> 0; + i = prevHead; + while (true) { + if (!(tries > 0)) { break; } + if (wEnd === (x$1 = i + length$1 >> 0, ((x$1 < 0 || x$1 >= win.$length) ? ($throwRuntimeError("index out of range"), undefined) : win.$array[win.$offset + x$1]))) { + n = matchLen($subslice(win, i), wPos, minMatchLook); + if (n > length$1 && (n > 4 || (pos - i >> 0) <= 4096)) { + length$1 = n; + offset$1 = pos - i >> 0; + ok = true; + if (n >= nice) { + break; + } + wEnd = (x$2 = pos + n >> 0, ((x$2 < 0 || x$2 >= win.$length) ? ($throwRuntimeError("index out of range"), undefined) : win.$array[win.$offset + x$2])); + } + } + if (i === minIndex) { + break; + } + i = (((x$3 = d.hashPrev, x$4 = i & 32767, ((x$4 < 0 || x$4 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[x$4])) >> 0)) - d.hashOffset >> 0; + if (i < minIndex || i < 0) { + break; + } + tries = tries - (1) >> 0; + } + return [length$1, offset$1, ok]; + }; + $ptrType(compressor).prototype.writeStoredBlock = function writeStoredBlock(buf) { + var {buf, d, $s, $r, $c} = $restore(this, {buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + $r = d.w.writeStoredHeader(buf.$length, false); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(d.w.err, $ifaceNil))) { + $s = -1; return d.w.err; + } + $r = d.w.writeBytes(buf); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return d.w.err; + /* */ } return; } var $f = {$blk: writeStoredBlock, $c: true, $r, buf, d, $s};return $f; + }; + hash4 = function hash4$1(b) { + var b; + return (($imul(((((((((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) << 24 >>> 0)) >>> 0)), 506832829) >>> 0)) >>> 15 >>> 0; + }; + bulkHash4 = function bulkHash4$1(b, dst) { + var b, dst, end, hb, i, x; + if (b.$length < 4) { + return; + } + hb = ((((((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) << 24 >>> 0)) >>> 0; + (0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = ((($imul(hb, 506832829) >>> 0)) >>> 15 >>> 0)); + end = (b.$length - 4 >> 0) + 1 >> 0; + i = 1; + while (true) { + if (!(i < end)) { break; } + hb = (((hb << 8 >>> 0)) | (((x = i + 3 >> 0, ((x < 0 || x >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x])) >>> 0))) >>> 0; + ((i < 0 || i >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + i] = ((($imul(hb, 506832829) >>> 0)) >>> 15 >>> 0)); + i = i + (1) >> 0; + } + }; + matchLen = function matchLen$2(a, b, max) { + var _i, _ref, a, av, b, i, max; + a = $subslice(a, 0, max); + b = $subslice(b, 0, a.$length); + _ref = a; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + av = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) === av))) { + return i; + } + _i++; + } + return max; + }; + $ptrType(compressor).prototype.encSpeed = function encSpeed() { + var {_r, d, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + /* */ if (d.windowEnd < 65535) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (d.windowEnd < 65535) { */ case 1: + if (!d.sync) { + $s = -1; return; + } + /* */ if (d.windowEnd < 128) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (d.windowEnd < 128) { */ case 3: + /* */ if ((d.windowEnd === 0)) { $s = 6; continue; } + /* */ if (d.windowEnd <= 16) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ((d.windowEnd === 0)) { */ case 6: + $s = -1; return; + /* } else if (d.windowEnd <= 16) { */ case 7: + _r = d.writeStoredBlock($subslice(d.window, 0, d.windowEnd)); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + d.err = _r; + $s = 9; continue; + /* } else { */ case 8: + $r = d.w.writeBlockHuff(false, $subslice(d.window, 0, d.windowEnd)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + d.err = d.w.err; + /* } */ case 9: + case 5: + d.windowEnd = 0; + d.bestSpeed.reset(); + $s = -1; return; + /* } */ case 4: + /* } */ case 2: + d.tokens = d.bestSpeed.encode($subslice(d.tokens, 0, 0), $subslice(d.window, 0, d.windowEnd)); + /* */ if (d.tokens.$length > (d.windowEnd - ((d.windowEnd >> 4 >> 0)) >> 0)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (d.tokens.$length > (d.windowEnd - ((d.windowEnd >> 4 >> 0)) >> 0)) { */ case 12: + $r = d.w.writeBlockHuff(false, $subslice(d.window, 0, d.windowEnd)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else { */ case 13: + $r = d.w.writeBlockDynamic(d.tokens, false, $subslice(d.window, 0, d.windowEnd)); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 14: + d.err = d.w.err; + d.windowEnd = 0; + $s = -1; return; + /* */ } return; } var $f = {$blk: encSpeed, $c: true, $r, _r, d, $s};return $f; + }; + $ptrType(compressor).prototype.initDeflate = function initDeflate() { + var d; + d = this; + d.window = $makeSlice(sliceType$5, 65536); + d.hashOffset = 1; + d.tokens = $makeSlice(sliceType$10, 0, 16385); + d.length = 3; + d.offset = 0; + d.byteAvailable = false; + d.index = 0; + d.chainHead = -1; + d.bulkHasher = bulkHash4; + }; + $ptrType(compressor).prototype.deflate = function deflate() { + var {_r, _r$1, _r$2, _tuple, d, hash$2, hash$3, hh, hh$1, i, index, lookahead, minIndex, newIndex, newLength, newOffset, ok, prevLength, prevOffset, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + if ((d.windowEnd - d.index >> 0) < 262 && !d.sync) { + $s = -1; return; + } + d.maxInsertIndex = d.windowEnd - 3 >> 0; + /* while (true) { */ case 1: + if (d.index > d.windowEnd) { + $panic(new $String("index > windowEnd")); + } + lookahead = d.windowEnd - d.index >> 0; + /* */ if (lookahead < 262) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (lookahead < 262) { */ case 3: + if (!d.sync) { + /* break Loop; */ $s = 2; continue s; + } + if (d.index > d.windowEnd) { + $panic(new $String("index > windowEnd")); + } + /* */ if (lookahead === 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (lookahead === 0) { */ case 5: + if (d.byteAvailable) { + d.tokens = $append(d.tokens, literalToken((((x = d.window, x$1 = d.index - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) >>> 0)))); + d.byteAvailable = false; + } + /* */ if (d.tokens.$length > 0) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (d.tokens.$length > 0) { */ case 7: + _r = d.writeBlock(d.tokens, d.index); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + d.err = _r; + if (!($interfaceIsEqual(d.err, $ifaceNil))) { + $s = -1; return; + } + d.tokens = $subslice(d.tokens, 0, 0); + /* } */ case 8: + /* break Loop; */ $s = 2; continue s; + /* } */ case 6: + /* } */ case 4: + if (d.index < d.maxInsertIndex) { + hash$2 = hash4($subslice(d.window, d.index, (d.index + 4 >> 0))); + hh = $indexPtr(d.hashHead, ((hash$2 & 131071) >>> 0), ptrType$7); + d.chainHead = ((hh.$get() >> 0)); + (x$2 = d.hashPrev, x$3 = d.index & 32767, ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3] = ((d.chainHead >>> 0)))); + hh.$set((((d.index + d.hashOffset >> 0) >>> 0))); + } + prevLength = d.length; + prevOffset = d.offset; + d.length = 3; + d.offset = 0; + minIndex = d.index - 32768 >> 0; + if (minIndex < 0) { + minIndex = 0; + } + if ((d.chainHead - d.hashOffset >> 0) >= minIndex && (!((d.compressionLevel.fastSkipHashing === 2147483647)) && lookahead > 3 || (d.compressionLevel.fastSkipHashing === 2147483647) && lookahead > prevLength && prevLength < d.compressionLevel.lazy)) { + _tuple = d.findMatch(d.index, d.chainHead - d.hashOffset >> 0, 3, lookahead); + newLength = _tuple[0]; + newOffset = _tuple[1]; + ok = _tuple[2]; + if (ok) { + d.length = newLength; + d.offset = newOffset; + } + } + /* */ if (!((d.compressionLevel.fastSkipHashing === 2147483647)) && d.length >= 4 || (d.compressionLevel.fastSkipHashing === 2147483647) && prevLength >= 4 && d.length <= prevLength) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!((d.compressionLevel.fastSkipHashing === 2147483647)) && d.length >= 4 || (d.compressionLevel.fastSkipHashing === 2147483647) && prevLength >= 4 && d.length <= prevLength) { */ case 10: + if (!((d.compressionLevel.fastSkipHashing === 2147483647))) { + d.tokens = $append(d.tokens, matchToken((((d.length - 3 >> 0) >>> 0)), (((d.offset - 1 >> 0) >>> 0)))); + } else { + d.tokens = $append(d.tokens, matchToken((((prevLength - 3 >> 0) >>> 0)), (((prevOffset - 1 >> 0) >>> 0)))); + } + if (d.length <= d.compressionLevel.fastSkipHashing) { + newIndex = 0; + if (!((d.compressionLevel.fastSkipHashing === 2147483647))) { + newIndex = d.index + d.length >> 0; + } else { + newIndex = (d.index + prevLength >> 0) - 1 >> 0; + } + index = d.index; + index = index + (1) >> 0; + while (true) { + if (!(index < newIndex)) { break; } + if (index < d.maxInsertIndex) { + hash$3 = hash4($subslice(d.window, index, (index + 4 >> 0))); + hh$1 = $indexPtr(d.hashHead, ((hash$3 & 131071) >>> 0), ptrType$7); + (x$4 = d.hashPrev, x$5 = index & 32767, ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5] = hh$1.$get())); + hh$1.$set((((index + d.hashOffset >> 0) >>> 0))); + } + index = index + (1) >> 0; + } + d.index = index; + if (d.compressionLevel.fastSkipHashing === 2147483647) { + d.byteAvailable = false; + d.length = 3; + } + } else { + d.index = d.index + (d.length) >> 0; + } + /* */ if (d.tokens.$length === 16384) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (d.tokens.$length === 16384) { */ case 13: + _r$1 = d.writeBlock(d.tokens, d.index); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + d.err = _r$1; + if (!($interfaceIsEqual(d.err, $ifaceNil))) { + $s = -1; return; + } + d.tokens = $subslice(d.tokens, 0, 0); + /* } */ case 14: + $s = 12; continue; + /* } else { */ case 11: + /* */ if (!((d.compressionLevel.fastSkipHashing === 2147483647)) || d.byteAvailable) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!((d.compressionLevel.fastSkipHashing === 2147483647)) || d.byteAvailable) { */ case 16: + i = d.index - 1 >> 0; + if (!((d.compressionLevel.fastSkipHashing === 2147483647))) { + i = d.index; + } + d.tokens = $append(d.tokens, literalToken((((x$6 = d.window, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i])) >>> 0)))); + /* */ if (d.tokens.$length === 16384) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (d.tokens.$length === 16384) { */ case 18: + _r$2 = d.writeBlock(d.tokens, i + 1 >> 0); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + d.err = _r$2; + if (!($interfaceIsEqual(d.err, $ifaceNil))) { + $s = -1; return; + } + d.tokens = $subslice(d.tokens, 0, 0); + /* } */ case 19: + /* } */ case 17: + d.index = d.index + (1) >> 0; + if (d.compressionLevel.fastSkipHashing === 2147483647) { + d.byteAvailable = true; + } + /* } */ case 12: + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: deflate, $c: true, $r, _r, _r$1, _r$2, _tuple, d, hash$2, hash$3, hh, hh$1, i, index, lookahead, minIndex, newIndex, newLength, newOffset, ok, prevLength, prevOffset, x, x$1, x$2, x$3, x$4, x$5, x$6, $s};return $f; + }; + $ptrType(compressor).prototype.fillStore = function fillStore(b) { + var b, d, n; + d = this; + n = $copySlice($subslice(d.window, d.windowEnd), b); + d.windowEnd = d.windowEnd + (n) >> 0; + return n; + }; + $ptrType(compressor).prototype.store = function store() { + var {_r, d, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + /* */ if (d.windowEnd > 0 && ((d.windowEnd === 65535) || d.sync)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (d.windowEnd > 0 && ((d.windowEnd === 65535) || d.sync)) { */ case 1: + _r = d.writeStoredBlock($subslice(d.window, 0, d.windowEnd)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + d.err = _r; + d.windowEnd = 0; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: store, $c: true, $r, _r, d, $s};return $f; + }; + $ptrType(compressor).prototype.storeHuff = function storeHuff() { + var {d, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + if (d.windowEnd < d.window.$length && !d.sync || (d.windowEnd === 0)) { + $s = -1; return; + } + $r = d.w.writeBlockHuff(false, $subslice(d.window, 0, d.windowEnd)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + d.err = d.w.err; + d.windowEnd = 0; + $s = -1; return; + /* */ } return; } var $f = {$blk: storeHuff, $c: true, $r, d, $s};return $f; + }; + $ptrType(compressor).prototype.write = function write$1(b) { + var {_r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, d, err, n, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + d = this; + if (!($interfaceIsEqual(d.err, $ifaceNil))) { + _tmp = 0; + _tmp$1 = d.err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + n = b.$length; + /* while (true) { */ case 1: + /* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; } + $r = d.step(d); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = d.fill(d, b); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + b = $subslice(b, _r); + if (!($interfaceIsEqual(d.err, $ifaceNil))) { + _tmp$2 = 0; + _tmp$3 = d.err; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + $s = 1; continue; + case 2: + _tmp$4 = n; + _tmp$5 = $ifaceNil; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: write$1, $c: true, $r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, d, err, n, $s};return $f; + }; + $ptrType(compressor).prototype.syncFlush = function syncFlush() { + var {d, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + if (!($interfaceIsEqual(d.err, $ifaceNil))) { + $s = -1; return d.err; + } + d.sync = true; + $r = d.step(d); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if ($interfaceIsEqual(d.err, $ifaceNil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($interfaceIsEqual(d.err, $ifaceNil)) { */ case 2: + $r = d.w.writeStoredHeader(0, false); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = d.w.flush(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + d.err = d.w.err; + /* } */ case 3: + d.sync = false; + $s = -1; return d.err; + /* */ } return; } var $f = {$blk: syncFlush, $c: true, $r, d, $s};return $f; + }; + $ptrType(compressor).prototype.init = function init$4(w, level) { + var {$24r, _r, d, err, level, w, $s, $r, $c} = $restore(this, {w, level}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = $ifaceNil; + d = this; + d.w = newHuffmanBitWriter(w); + /* */ if ((level === 0)) { $s = 2; continue; } + /* */ if ((level === -2)) { $s = 3; continue; } + /* */ if ((level === 1)) { $s = 4; continue; } + /* */ if ((level === -1)) { $s = 5; continue; } + /* */ if (2 <= level && level <= 9) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((level === 0)) { */ case 2: + d.window = $makeSlice(sliceType$5, 65535); + d.fill = $methodExpr(ptrType$8, "fillStore"); + d.step = $methodExpr(ptrType$8, "store"); + $s = 8; continue; + /* } else if ((level === -2)) { */ case 3: + d.window = $makeSlice(sliceType$5, 65535); + d.fill = $methodExpr(ptrType$8, "fillStore"); + d.step = $methodExpr(ptrType$8, "storeHuff"); + $s = 8; continue; + /* } else if ((level === 1)) { */ case 4: + compressionLevel.copy(d.compressionLevel, ((level < 0 || level >= levels.$length) ? ($throwRuntimeError("index out of range"), undefined) : levels.$array[levels.$offset + level])); + d.window = $makeSlice(sliceType$5, 65535); + d.fill = $methodExpr(ptrType$8, "fillStore"); + d.step = $methodExpr(ptrType$8, "encSpeed"); + d.bestSpeed = newDeflateFast(); + d.tokens = $makeSlice(sliceType$10, 65535); + $s = 8; continue; + /* } else if ((level === -1)) { */ case 5: + level = 6; + compressionLevel.copy(d.compressionLevel, ((level < 0 || level >= levels.$length) ? ($throwRuntimeError("index out of range"), undefined) : levels.$array[levels.$offset + level])); + d.initDeflate(); + d.fill = $methodExpr(ptrType$8, "fillDeflate"); + d.step = $methodExpr(ptrType$8, "deflate"); + $s = 8; continue; + /* } else if (2 <= level && level <= 9) { */ case 6: + compressionLevel.copy(d.compressionLevel, ((level < 0 || level >= levels.$length) ? ($throwRuntimeError("index out of range"), undefined) : levels.$array[levels.$offset + level])); + d.initDeflate(); + d.fill = $methodExpr(ptrType$8, "fillDeflate"); + d.step = $methodExpr(ptrType$8, "deflate"); + $s = 8; continue; + /* } else { */ case 7: + _r = fmt.Errorf("flate: invalid compression level %d: want value in range [-2, 9]", new sliceType$11([new $Int(level)])); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + $24r = err; + $s = 10; case 10: return $24r; + /* } */ case 8: + case 1: + err = $ifaceNil; + $s = -1; return err; + /* */ } return; } var $f = {$blk: init$4, $c: true, $r, $24r, _r, d, err, level, w, $s};return $f; + }; + $ptrType(compressor).prototype.reset = function reset$2(w) { + var _1, _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, d, i, i$1, w, x, x$1; + d = this; + d.w.reset(w); + d.sync = false; + d.err = $ifaceNil; + _1 = d.compressionLevel.level; + if (_1 === (0)) { + d.windowEnd = 0; + } else if (_1 === (1)) { + d.windowEnd = 0; + d.tokens = $subslice(d.tokens, 0, 0); + d.bestSpeed.reset(); + } else { + d.chainHead = -1; + _ref = d.hashHead; + _i = 0; + while (true) { + if (!(_i < 131072)) { break; } + i = _i; + (x = d.hashHead, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = 0)); + _i++; + } + _ref$1 = d.hashPrev; + _i$1 = 0; + while (true) { + if (!(_i$1 < 32768)) { break; } + i$1 = _i$1; + (x$1 = d.hashPrev, ((i$1 < 0 || i$1 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i$1] = 0)); + _i$1++; + } + d.hashOffset = 1; + _tmp = 0; + _tmp$1 = 0; + d.index = _tmp; + d.windowEnd = _tmp$1; + _tmp$2 = 0; + _tmp$3 = false; + d.blockStart = _tmp$2; + d.byteAvailable = _tmp$3; + d.tokens = $subslice(d.tokens, 0, 0); + d.length = 3; + d.offset = 0; + d.maxInsertIndex = 0; + } + }; + $ptrType(compressor).prototype.close = function close() { + var {d, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + if ($interfaceIsEqual(d.err, errWriterClosed)) { + $s = -1; return $ifaceNil; + } + if (!($interfaceIsEqual(d.err, $ifaceNil))) { + $s = -1; return d.err; + } + d.sync = true; + $r = d.step(d); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(d.err, $ifaceNil))) { + $s = -1; return d.err; + } + $r = d.w.writeStoredHeader(0, true); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(d.w.err, $ifaceNil))) { + $s = -1; return d.w.err; + } + $r = d.w.flush(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(d.w.err, $ifaceNil))) { + $s = -1; return d.w.err; + } + d.err = errWriterClosed; + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: close, $c: true, $r, d, $s};return $f; + }; + NewWriter = function NewWriter$1(w, level) { + var {_r, dw, err, level, w, $s, $r, $c} = $restore(this, {w, level}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dw = [dw]; + dw[0] = new Writer.ptr(new compressor.ptr(new compressionLevel.ptr(0, 0, 0, 0, 0, 0), ptrType$9.nil, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, false, ptrType$10.nil, 0, arrayType$13.zero(), arrayType$14.zero(), 0, 0, sliceType$5.nil, 0, 0, false, sliceType$10.nil, 0, 0, 0, $ifaceNil, arrayType$15.zero()), sliceType$5.nil); + _r = dw[0].d.init(w, level); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$11.nil, err]; + } + $s = -1; return [dw[0], $ifaceNil]; + /* */ } return; } var $f = {$blk: NewWriter$1, $c: true, $r, _r, dw, err, level, w, $s};return $f; + }; + $pkg.NewWriter = NewWriter; + $ptrType(dictWriter).prototype.Write = function Write(b) { + var {$24r, _r, _tuple, b, err, n, w, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + w = this; + _r = w.w.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Write, $c: true, $r, $24r, _r, _tuple, b, err, n, w, $s};return $f; + }; + $ptrType(Writer).prototype.Write = function Write$1(data) { + var {$24r, _r, _tuple, data, err, n, w, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + w = this; + _r = w.d.write(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Write$1, $c: true, $r, $24r, _r, _tuple, data, err, n, w, $s};return $f; + }; + $ptrType(Writer).prototype.Flush = function Flush() { + var {$24r, _r, w, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + _r = w.d.syncFlush(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Flush, $c: true, $r, $24r, _r, w, $s};return $f; + }; + $ptrType(Writer).prototype.Close = function Close$1() { + var {$24r, _r, w, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + _r = w.d.close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Close$1, $c: true, $r, $24r, _r, w, $s};return $f; + }; + $ptrType(Writer).prototype.Reset = function Reset$1(dst) { + var {_tuple, dst, dw, ok, w, $s, $r, $c} = $restore(this, {dst}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + _tuple = $assertType(w.d.w.writer, ptrType$12, true); + dw = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + dw.w = dst; + w.d.reset(dw); + $r = w.d.fillWindow(w.dict); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 3; continue; + /* } else { */ case 2: + w.d.reset(dst); + /* } */ case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: Reset$1, $c: true, $r, _tuple, dst, dw, ok, w, $s};return $f; + }; + token.methods = [{prop: "literal", name: "literal", pkg: "compress/flate", typ: $funcType([], [$Uint32], false)}, {prop: "offset", name: "offset", pkg: "compress/flate", typ: $funcType([], [$Uint32], false)}, {prop: "length", name: "length", pkg: "compress/flate", typ: $funcType([], [$Uint32], false)}]; + CorruptInputError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + InternalError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$1.methods = [{prop: "init", name: "init", pkg: "compress/flate", typ: $funcType([sliceType$4], [$Bool], false)}]; + ptrType$2.methods = [{prop: "nextBlock", name: "nextBlock", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$5], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "readHuffman", name: "readHuffman", pkg: "compress/flate", typ: $funcType([], [$error], false)}, {prop: "huffmanBlock", name: "huffmanBlock", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "dataBlock", name: "dataBlock", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "copyData", name: "copyData", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "finishBlock", name: "finishBlock", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "moreBits", name: "moreBits", pkg: "compress/flate", typ: $funcType([], [$error], false)}, {prop: "huffSym", name: "huffSym", pkg: "compress/flate", typ: $funcType([ptrType$1], [$Int, $error], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Reader, sliceType$5], [$error], false)}]; + ptrType$15.methods = [{prop: "set", name: "set", pkg: "compress/flate", typ: $funcType([$Uint16, $Uint16], [], false)}]; + ptrType.methods = [{prop: "bitLength", name: "bitLength", pkg: "compress/flate", typ: $funcType([sliceType$8], [$Int], false)}, {prop: "bitCounts", name: "bitCounts", pkg: "compress/flate", typ: $funcType([sliceType$7, $Int32], [sliceType$8], false)}, {prop: "assignEncodingAndSize", name: "assignEncodingAndSize", pkg: "compress/flate", typ: $funcType([sliceType$8, sliceType$7], [], false)}, {prop: "generate", name: "generate", pkg: "compress/flate", typ: $funcType([sliceType$8, $Int32], [], false)}]; + byLiteral.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; + ptrType$5.methods = [{prop: "sort", name: "sort", pkg: "compress/flate", typ: $funcType([sliceType$7], [], false)}]; + byFreq.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; + ptrType$6.methods = [{prop: "sort", name: "sort", pkg: "compress/flate", typ: $funcType([sliceType$7], [], false)}]; + ptrType$9.methods = [{prop: "reset", name: "reset", pkg: "compress/flate", typ: $funcType([io.Writer], [], false)}, {prop: "flush", name: "flush", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "write", name: "write", pkg: "compress/flate", typ: $funcType([sliceType$5], [], false)}, {prop: "writeBits", name: "writeBits", pkg: "compress/flate", typ: $funcType([$Int32, $Uint], [], false)}, {prop: "writeBytes", name: "writeBytes", pkg: "compress/flate", typ: $funcType([sliceType$5], [], false)}, {prop: "generateCodegen", name: "generateCodegen", pkg: "compress/flate", typ: $funcType([$Int, $Int, ptrType, ptrType], [], false)}, {prop: "dynamicSize", name: "dynamicSize", pkg: "compress/flate", typ: $funcType([ptrType, ptrType, $Int], [$Int, $Int], false)}, {prop: "fixedSize", name: "fixedSize", pkg: "compress/flate", typ: $funcType([$Int], [$Int], false)}, {prop: "storedSize", name: "storedSize", pkg: "compress/flate", typ: $funcType([sliceType$5], [$Int, $Bool], false)}, {prop: "writeCode", name: "writeCode", pkg: "compress/flate", typ: $funcType([hcode], [], false)}, {prop: "writeDynamicHeader", name: "writeDynamicHeader", pkg: "compress/flate", typ: $funcType([$Int, $Int, $Int, $Bool], [], false)}, {prop: "writeStoredHeader", name: "writeStoredHeader", pkg: "compress/flate", typ: $funcType([$Int, $Bool], [], false)}, {prop: "writeFixedHeader", name: "writeFixedHeader", pkg: "compress/flate", typ: $funcType([$Bool], [], false)}, {prop: "writeBlock", name: "writeBlock", pkg: "compress/flate", typ: $funcType([sliceType$10, $Bool, sliceType$5], [], false)}, {prop: "writeBlockDynamic", name: "writeBlockDynamic", pkg: "compress/flate", typ: $funcType([sliceType$10, $Bool, sliceType$5], [], false)}, {prop: "indexTokens", name: "indexTokens", pkg: "compress/flate", typ: $funcType([sliceType$10], [$Int, $Int], false)}, {prop: "writeTokens", name: "writeTokens", pkg: "compress/flate", typ: $funcType([sliceType$10, sliceType$6, sliceType$6], [], false)}, {prop: "writeBlockHuff", name: "writeBlockHuff", pkg: "compress/flate", typ: $funcType([$Bool, sliceType$5], [], false)}]; + ptrType$16.methods = [{prop: "init", name: "init", pkg: "compress/flate", typ: $funcType([$Int, sliceType$5], [], false)}, {prop: "histSize", name: "histSize", pkg: "compress/flate", typ: $funcType([], [$Int], false)}, {prop: "availRead", name: "availRead", pkg: "compress/flate", typ: $funcType([], [$Int], false)}, {prop: "availWrite", name: "availWrite", pkg: "compress/flate", typ: $funcType([], [$Int], false)}, {prop: "writeSlice", name: "writeSlice", pkg: "compress/flate", typ: $funcType([], [sliceType$5], false)}, {prop: "writeMark", name: "writeMark", pkg: "compress/flate", typ: $funcType([$Int], [], false)}, {prop: "writeByte", name: "writeByte", pkg: "compress/flate", typ: $funcType([$Uint8], [], false)}, {prop: "writeCopy", name: "writeCopy", pkg: "compress/flate", typ: $funcType([$Int, $Int], [$Int], false)}, {prop: "tryWriteCopy", name: "tryWriteCopy", pkg: "compress/flate", typ: $funcType([$Int, $Int], [$Int], false)}, {prop: "readFlush", name: "readFlush", pkg: "compress/flate", typ: $funcType([], [sliceType$5], false)}]; + ptrType$10.methods = [{prop: "encode", name: "encode", pkg: "compress/flate", typ: $funcType([sliceType$10, sliceType$5], [sliceType$10], false)}, {prop: "matchLen", name: "matchLen", pkg: "compress/flate", typ: $funcType([$Int32, $Int32, sliceType$5], [$Int32], false)}, {prop: "reset", name: "reset", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "shiftOffsets", name: "shiftOffsets", pkg: "compress/flate", typ: $funcType([], [], false)}]; + ptrType$8.methods = [{prop: "fillDeflate", name: "fillDeflate", pkg: "compress/flate", typ: $funcType([sliceType$5], [$Int], false)}, {prop: "writeBlock", name: "writeBlock", pkg: "compress/flate", typ: $funcType([sliceType$10, $Int], [$error], false)}, {prop: "fillWindow", name: "fillWindow", pkg: "compress/flate", typ: $funcType([sliceType$5], [], false)}, {prop: "findMatch", name: "findMatch", pkg: "compress/flate", typ: $funcType([$Int, $Int, $Int, $Int], [$Int, $Int, $Bool], false)}, {prop: "writeStoredBlock", name: "writeStoredBlock", pkg: "compress/flate", typ: $funcType([sliceType$5], [$error], false)}, {prop: "encSpeed", name: "encSpeed", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "initDeflate", name: "initDeflate", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "deflate", name: "deflate", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "fillStore", name: "fillStore", pkg: "compress/flate", typ: $funcType([sliceType$5], [$Int], false)}, {prop: "store", name: "store", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "storeHuff", name: "storeHuff", pkg: "compress/flate", typ: $funcType([], [], false)}, {prop: "write", name: "write", pkg: "compress/flate", typ: $funcType([sliceType$5], [$Int, $error], false)}, {prop: "syncFlush", name: "syncFlush", pkg: "compress/flate", typ: $funcType([], [$error], false)}, {prop: "init", name: "init", pkg: "compress/flate", typ: $funcType([io.Writer, $Int], [$error], false)}, {prop: "reset", name: "reset", pkg: "compress/flate", typ: $funcType([io.Writer], [], false)}, {prop: "close", name: "close", pkg: "compress/flate", typ: $funcType([], [$error], false)}]; + ptrType$12.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$5], [$Int, $error], false)}]; + ptrType$11.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$5], [$Int, $error], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Writer], [], false)}]; + Resetter.init([{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Reader, sliceType$5], [$error], false)}]); + huffmanDecoder.init("compress/flate", [{prop: "min", name: "min", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "chunks", name: "chunks", embedded: false, exported: false, typ: arrayType, tag: ""}, {prop: "links", name: "links", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "linkMask", name: "linkMask", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + Reader.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$5], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}]); + decompressor.init("compress/flate", [{prop: "r", name: "r", embedded: false, exported: false, typ: Reader, tag: ""}, {prop: "roffset", name: "roffset", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "b", name: "b", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "nb", name: "nb", embedded: false, exported: false, typ: $Uint, tag: ""}, {prop: "h1", name: "h1", embedded: false, exported: false, typ: huffmanDecoder, tag: ""}, {prop: "h2", name: "h2", embedded: false, exported: false, typ: huffmanDecoder, tag: ""}, {prop: "bits", name: "bits", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "codebits", name: "codebits", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "dict", name: "dict", embedded: false, exported: false, typ: dictDecoder, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: arrayType$5, tag: ""}, {prop: "step", name: "step", embedded: false, exported: false, typ: funcType, tag: ""}, {prop: "stepState", name: "stepState", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "final$12", name: "final", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "toRead", name: "toRead", embedded: false, exported: false, typ: sliceType$5, tag: ""}, {prop: "hl", name: "hl", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "hd", name: "hd", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "copyLen", name: "copyLen", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "copyDist", name: "copyDist", embedded: false, exported: false, typ: $Int, tag: ""}]); + hcode.init("compress/flate", [{prop: "code", name: "code", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "len", name: "len", embedded: false, exported: false, typ: $Uint16, tag: ""}]); + huffmanEncoder.init("compress/flate", [{prop: "codes", name: "codes", embedded: false, exported: false, typ: sliceType$6, tag: ""}, {prop: "freqcache", name: "freqcache", embedded: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "bitCount", name: "bitCount", embedded: false, exported: false, typ: arrayType$6, tag: ""}, {prop: "lns", name: "lns", embedded: false, exported: false, typ: byLiteral, tag: ""}, {prop: "lfs", name: "lfs", embedded: false, exported: false, typ: byFreq, tag: ""}]); + literalNode.init("compress/flate", [{prop: "literal", name: "literal", embedded: false, exported: false, typ: $Uint16, tag: ""}, {prop: "freq", name: "freq", embedded: false, exported: false, typ: $Int32, tag: ""}]); + levelInfo.init("compress/flate", [{prop: "level", name: "level", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "lastFreq", name: "lastFreq", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "nextCharFreq", name: "nextCharFreq", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "nextPairFreq", name: "nextPairFreq", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "needed", name: "needed", embedded: false, exported: false, typ: $Int32, tag: ""}]); + byLiteral.init(literalNode); + byFreq.init(literalNode); + huffmanBitWriter.init("compress/flate", [{prop: "writer", name: "writer", embedded: false, exported: false, typ: io.Writer, tag: ""}, {prop: "bits", name: "bits", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "nbits", name: "nbits", embedded: false, exported: false, typ: $Uint, tag: ""}, {prop: "bytes", name: "bytes", embedded: false, exported: false, typ: arrayType$10, tag: ""}, {prop: "codegenFreq", name: "codegenFreq", embedded: false, exported: false, typ: arrayType$11, tag: ""}, {prop: "nbytes", name: "nbytes", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "literalFreq", name: "literalFreq", embedded: false, exported: false, typ: sliceType$8, tag: ""}, {prop: "offsetFreq", name: "offsetFreq", embedded: false, exported: false, typ: sliceType$8, tag: ""}, {prop: "codegen", name: "codegen", embedded: false, exported: false, typ: sliceType$5, tag: ""}, {prop: "literalEncoding", name: "literalEncoding", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "offsetEncoding", name: "offsetEncoding", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "codegenEncoding", name: "codegenEncoding", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + dictDecoder.init("compress/flate", [{prop: "hist", name: "hist", embedded: false, exported: false, typ: sliceType$5, tag: ""}, {prop: "wrPos", name: "wrPos", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "rdPos", name: "rdPos", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "full", name: "full", embedded: false, exported: false, typ: $Bool, tag: ""}]); + tableEntry.init("compress/flate", [{prop: "val", name: "val", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int32, tag: ""}]); + deflateFast.init("compress/flate", [{prop: "table", name: "table", embedded: false, exported: false, typ: arrayType$12, tag: ""}, {prop: "prev", name: "prev", embedded: false, exported: false, typ: sliceType$5, tag: ""}, {prop: "cur", name: "cur", embedded: false, exported: false, typ: $Int32, tag: ""}]); + compressionLevel.init("compress/flate", [{prop: "level", name: "level", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "good", name: "good", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lazy", name: "lazy", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "nice", name: "nice", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "chain", name: "chain", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "fastSkipHashing", name: "fastSkipHashing", embedded: false, exported: false, typ: $Int, tag: ""}]); + compressor.init("compress/flate", [{prop: "compressionLevel", name: "compressionLevel", embedded: true, exported: false, typ: compressionLevel, tag: ""}, {prop: "w", name: "w", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "bulkHasher", name: "bulkHasher", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "fill", name: "fill", embedded: false, exported: false, typ: funcType$2, tag: ""}, {prop: "step", name: "step", embedded: false, exported: false, typ: funcType$3, tag: ""}, {prop: "sync", name: "sync", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "bestSpeed", name: "bestSpeed", embedded: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "chainHead", name: "chainHead", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "hashHead", name: "hashHead", embedded: false, exported: false, typ: arrayType$13, tag: ""}, {prop: "hashPrev", name: "hashPrev", embedded: false, exported: false, typ: arrayType$14, tag: ""}, {prop: "hashOffset", name: "hashOffset", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "window", name: "window", embedded: false, exported: false, typ: sliceType$5, tag: ""}, {prop: "windowEnd", name: "windowEnd", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "blockStart", name: "blockStart", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "byteAvailable", name: "byteAvailable", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "tokens", name: "tokens", embedded: false, exported: false, typ: sliceType$10, tag: ""}, {prop: "length", name: "length", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "maxInsertIndex", name: "maxInsertIndex", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "hashMatch", name: "hashMatch", embedded: false, exported: false, typ: arrayType$15, tag: ""}]); + dictWriter.init("compress/flate", [{prop: "w", name: "w", embedded: false, exported: false, typ: io.Writer, tag: ""}]); + Writer.init("compress/flate", [{prop: "d", name: "d", embedded: false, exported: false, typ: compressor, tag: ""}, {prop: "dict", name: "dict", embedded: false, exported: false, typ: sliceType$5, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bits.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + fixedOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)); + fixedHuffmanDecoder = new huffmanDecoder.ptr(0, arrayType.zero(), sliceType$1.nil, 0); + huffOffset = ptrType.nil; + lengthCodes = $toNativeArray($kindUint32, [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28]); + offsetCodes = $toNativeArray($kindUint32, [0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15]); + codeOrder = $toNativeArray($kindInt, [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); + fixedLiteralEncoding = generateFixedLiteralEncoding(); + fixedOffsetEncoding = generateFixedOffsetEncoding(); + lengthExtraBits = new sliceType$2([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]); + lengthBase = new sliceType([0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 255]); + offsetExtraBits = new sliceType$2([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]); + offsetBase = new sliceType([0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576]); + codegenOrder = new sliceType([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); + levels = new sliceType$3([$clone(new compressionLevel.ptr(0, 0, 0, 0, 0, 0), compressionLevel), $clone(new compressionLevel.ptr(1, 0, 0, 0, 0, 0), compressionLevel), $clone(new compressionLevel.ptr(2, 4, 0, 16, 8, 5), compressionLevel), $clone(new compressionLevel.ptr(3, 4, 0, 32, 32, 6), compressionLevel), $clone(new compressionLevel.ptr(4, 4, 4, 16, 16, 2147483647), compressionLevel), $clone(new compressionLevel.ptr(5, 8, 16, 32, 32, 2147483647), compressionLevel), $clone(new compressionLevel.ptr(6, 8, 16, 128, 128, 2147483647), compressionLevel), $clone(new compressionLevel.ptr(7, 8, 32, 128, 256, 2147483647), compressionLevel), $clone(new compressionLevel.ptr(8, 32, 128, 258, 1024, 2147483647), compressionLevel), $clone(new compressionLevel.ptr(9, 32, 258, 258, 4096, 2147483647), compressionLevel)]); + errWriterClosed = errors.New("flate: closed writer"); + $r = init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["encoding/binary"] = (function() { + var $pkg = {}, $init, errors, io, math, reflect, sync, littleEndian, bigEndian, sliceType, overflow; + errors = $packages["errors"]; + io = $packages["io"]; + math = $packages["math"]; + reflect = $packages["reflect"]; + sync = $packages["sync"]; + littleEndian = $newType(0, $kindStruct, "binary.littleEndian", true, "encoding/binary", false, function() { this.$val = this; }); + bigEndian = $newType(0, $kindStruct, "binary.bigEndian", true, "encoding/binary", false, function() { this.$val = this; }); + $pkg.littleEndian = littleEndian; + $pkg.bigEndian = bigEndian; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint8); + $ptrType(littleEndian).prototype.Uint16 = function Uint16(b) { + var b; + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + return ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) << 16 >>> 16)) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) << 16 >>> 16)) << 8 << 16 >>> 16)) >>> 0; + }; + littleEndian.prototype.Uint16 = function(...$args) { return this.$val.Uint16(...$args); }; + $ptrType(littleEndian).prototype.PutUint16 = function PutUint16(b, v) { + var b, v; + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 8 << 16 >>> 16) << 24 >>> 24))); + }; + littleEndian.prototype.PutUint16 = function(...$args) { return this.$val.PutUint16(...$args); }; + $ptrType(littleEndian).prototype.AppendUint16 = function AppendUint16(b, v) { + var b, v; + return $append(b, ((v << 24 >>> 24)), (((v >>> 8 << 16 >>> 16) << 24 >>> 24))); + }; + littleEndian.prototype.AppendUint16 = function(...$args) { return this.$val.AppendUint16(...$args); }; + $ptrType(littleEndian).prototype.Uint32 = function Uint32(b) { + var b; + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + return ((((((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) << 24 >>> 0)) >>> 0; + }; + littleEndian.prototype.Uint32 = function(...$args) { return this.$val.Uint32(...$args); }; + $ptrType(littleEndian).prototype.PutUint32 = function PutUint32(b, v) { + var b, v; + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 8 >>> 0) << 24 >>> 24))); + (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (((v >>> 16 >>> 0) << 24 >>> 24))); + (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (((v >>> 24 >>> 0) << 24 >>> 24))); + }; + littleEndian.prototype.PutUint32 = function(...$args) { return this.$val.PutUint32(...$args); }; + $ptrType(littleEndian).prototype.AppendUint32 = function AppendUint32(b, v) { + var b, v; + return $append(b, ((v << 24 >>> 24)), (((v >>> 8 >>> 0) << 24 >>> 24)), (((v >>> 16 >>> 0) << 24 >>> 24)), (((v >>> 24 >>> 0) << 24 >>> 24))); + }; + littleEndian.prototype.AppendUint32 = function(...$args) { return this.$val.AppendUint32(...$args); }; + $ptrType(littleEndian).prototype.Uint64 = function Uint64(b) { + var b, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + return (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), x$7 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0)); + }; + littleEndian.prototype.Uint64 = function(...$args) { return this.$val.Uint64(...$args); }; + $ptrType(littleEndian).prototype.PutUint64 = function PutUint64(b, v) { + var b, v; + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = ((v.$low << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (($shiftRightUint64(v, 8).$low << 24 >>> 24))); + (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (($shiftRightUint64(v, 16).$low << 24 >>> 24))); + (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (($shiftRightUint64(v, 24).$low << 24 >>> 24))); + (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4] = (($shiftRightUint64(v, 32).$low << 24 >>> 24))); + (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5] = (($shiftRightUint64(v, 40).$low << 24 >>> 24))); + (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6] = (($shiftRightUint64(v, 48).$low << 24 >>> 24))); + (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7] = (($shiftRightUint64(v, 56).$low << 24 >>> 24))); + }; + littleEndian.prototype.PutUint64 = function(...$args) { return this.$val.PutUint64(...$args); }; + $ptrType(littleEndian).prototype.AppendUint64 = function AppendUint64(b, v) { + var b, v; + return $append(b, ((v.$low << 24 >>> 24)), (($shiftRightUint64(v, 8).$low << 24 >>> 24)), (($shiftRightUint64(v, 16).$low << 24 >>> 24)), (($shiftRightUint64(v, 24).$low << 24 >>> 24)), (($shiftRightUint64(v, 32).$low << 24 >>> 24)), (($shiftRightUint64(v, 40).$low << 24 >>> 24)), (($shiftRightUint64(v, 48).$low << 24 >>> 24)), (($shiftRightUint64(v, 56).$low << 24 >>> 24))); + }; + littleEndian.prototype.AppendUint64 = function(...$args) { return this.$val.AppendUint64(...$args); }; + $ptrType(littleEndian).prototype.String = function String() { + return "LittleEndian"; + }; + littleEndian.prototype.String = function(...$args) { return this.$val.String(...$args); }; + $ptrType(littleEndian).prototype.GoString = function GoString() { + return "binary.LittleEndian"; + }; + littleEndian.prototype.GoString = function(...$args) { return this.$val.GoString(...$args); }; + $ptrType(bigEndian).prototype.Uint16 = function Uint16$1(b) { + var b; + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + return ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) << 16 >>> 16)) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) << 16 >>> 16)) << 8 << 16 >>> 16)) >>> 0; + }; + bigEndian.prototype.Uint16 = function(...$args) { return this.$val.Uint16(...$args); }; + $ptrType(bigEndian).prototype.PutUint16 = function PutUint16$1(b, v) { + var b, v; + $unused((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (((v >>> 8 << 16 >>> 16) << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = ((v << 24 >>> 24))); + }; + bigEndian.prototype.PutUint16 = function(...$args) { return this.$val.PutUint16(...$args); }; + $ptrType(bigEndian).prototype.AppendUint16 = function AppendUint16$1(b, v) { + var b, v; + return $append(b, (((v >>> 8 << 16 >>> 16) << 24 >>> 24)), ((v << 24 >>> 24))); + }; + bigEndian.prototype.AppendUint16 = function(...$args) { return this.$val.AppendUint16(...$args); }; + $ptrType(bigEndian).prototype.Uint32 = function Uint32$1(b) { + var b; + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + return ((((((((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]) >>> 0)) | ((((2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]) >>> 0)) << 24 >>> 0)) >>> 0; + }; + bigEndian.prototype.Uint32 = function(...$args) { return this.$val.Uint32(...$args); }; + $ptrType(bigEndian).prototype.PutUint32 = function PutUint32$1(b, v) { + var b, v; + $unused((3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (((v >>> 24 >>> 0) << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (((v >>> 16 >>> 0) << 24 >>> 24))); + (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (((v >>> 8 >>> 0) << 24 >>> 24))); + (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = ((v << 24 >>> 24))); + }; + bigEndian.prototype.PutUint32 = function(...$args) { return this.$val.PutUint32(...$args); }; + $ptrType(bigEndian).prototype.AppendUint32 = function AppendUint32$1(b, v) { + var b, v; + return $append(b, (((v >>> 24 >>> 0) << 24 >>> 24)), (((v >>> 16 >>> 0) << 24 >>> 24)), (((v >>> 8 >>> 0) << 24 >>> 24)), ((v << 24 >>> 24))); + }; + bigEndian.prototype.AppendUint32 = function(...$args) { return this.$val.AppendUint32(...$args); }; + $ptrType(bigEndian).prototype.Uint64 = function Uint64$1(b) { + var b, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + return (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = (new $Uint64(0, (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7]))), x$7 = $shiftLeft64((new $Uint64(0, (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6]))), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5]))), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4]))), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3]))), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2]))), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1]))), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0]))), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0)); + }; + bigEndian.prototype.Uint64 = function(...$args) { return this.$val.Uint64(...$args); }; + $ptrType(bigEndian).prototype.PutUint64 = function PutUint64$1(b, v) { + var b, v; + $unused((7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7])); + (0 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 0] = (($shiftRightUint64(v, 56).$low << 24 >>> 24))); + (1 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 1] = (($shiftRightUint64(v, 48).$low << 24 >>> 24))); + (2 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 2] = (($shiftRightUint64(v, 40).$low << 24 >>> 24))); + (3 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 3] = (($shiftRightUint64(v, 32).$low << 24 >>> 24))); + (4 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 4] = (($shiftRightUint64(v, 24).$low << 24 >>> 24))); + (5 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 5] = (($shiftRightUint64(v, 16).$low << 24 >>> 24))); + (6 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 6] = (($shiftRightUint64(v, 8).$low << 24 >>> 24))); + (7 >= b.$length ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + 7] = ((v.$low << 24 >>> 24))); + }; + bigEndian.prototype.PutUint64 = function(...$args) { return this.$val.PutUint64(...$args); }; + $ptrType(bigEndian).prototype.AppendUint64 = function AppendUint64$1(b, v) { + var b, v; + return $append(b, (($shiftRightUint64(v, 56).$low << 24 >>> 24)), (($shiftRightUint64(v, 48).$low << 24 >>> 24)), (($shiftRightUint64(v, 40).$low << 24 >>> 24)), (($shiftRightUint64(v, 32).$low << 24 >>> 24)), (($shiftRightUint64(v, 24).$low << 24 >>> 24)), (($shiftRightUint64(v, 16).$low << 24 >>> 24)), (($shiftRightUint64(v, 8).$low << 24 >>> 24)), ((v.$low << 24 >>> 24))); + }; + bigEndian.prototype.AppendUint64 = function(...$args) { return this.$val.AppendUint64(...$args); }; + $ptrType(bigEndian).prototype.String = function String$1() { + return "BigEndian"; + }; + bigEndian.prototype.String = function(...$args) { return this.$val.String(...$args); }; + $ptrType(bigEndian).prototype.GoString = function GoString$1() { + return "binary.BigEndian"; + }; + bigEndian.prototype.GoString = function(...$args) { return this.$val.GoString(...$args); }; + littleEndian.methods = [{prop: "Uint16", name: "Uint16", pkg: "", typ: $funcType([sliceType], [$Uint16], false)}, {prop: "PutUint16", name: "PutUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [], false)}, {prop: "AppendUint16", name: "AppendUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [sliceType], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([sliceType], [$Uint32], false)}, {prop: "PutUint32", name: "PutUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [], false)}, {prop: "AppendUint32", name: "AppendUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [sliceType], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([sliceType], [$Uint64], false)}, {prop: "PutUint64", name: "PutUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [], false)}, {prop: "AppendUint64", name: "AppendUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [sliceType], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]; + bigEndian.methods = [{prop: "Uint16", name: "Uint16", pkg: "", typ: $funcType([sliceType], [$Uint16], false)}, {prop: "PutUint16", name: "PutUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [], false)}, {prop: "AppendUint16", name: "AppendUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [sliceType], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([sliceType], [$Uint32], false)}, {prop: "PutUint32", name: "PutUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [], false)}, {prop: "AppendUint32", name: "AppendUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [sliceType], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([sliceType], [$Uint64], false)}, {prop: "PutUint64", name: "PutUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [], false)}, {prop: "AppendUint64", name: "AppendUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [sliceType], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]; + littleEndian.init("", []); + bigEndian.init("", []); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.LittleEndian = new littleEndian.ptr(); + $pkg.BigEndian = new bigEndian.ptr(); + overflow = errors.New("binary: varint overflows a 64-bit integer"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["hash"] = (function() { + var $pkg = {}, $init, io, Hash, sliceType; + io = $packages["io"]; + Hash = $newType(8, $kindInterface, "hash.Hash", true, "hash", true, null); + $pkg.Hash = Hash; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint8); + Hash.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["hash/crc32"] = (function() { + var $pkg = {}, $init, errors, hash, sync, atomic, slicing8Table, Table, ptrType, ptrType$1, arrayType, arrayType$1, castagnoliTable, updateCastagnoli, haveCastagnoli, ieeeTable8, updateIEEE, ieeeOnce, archAvailableIEEE, archInitIEEE, archUpdateIEEE, simpleMakeTable, simplePopulateTable, simpleUpdate, slicingMakeTable, slicingUpdate, ieeeInit, update, Update, ChecksumIEEE; + errors = $packages["errors"]; + hash = $packages["hash"]; + sync = $packages["sync"]; + atomic = $packages["sync/atomic"]; + slicing8Table = $newType(8192, $kindArray, "crc32.slicing8Table", true, "hash/crc32", false, null); + Table = $newType(1024, $kindArray, "crc32.Table", true, "hash/crc32", true, null); + $pkg.slicing8Table = slicing8Table; + $pkg.Table = Table; + $pkg.$finishSetup = function() { + ptrType = $ptrType(Table); + ptrType$1 = $ptrType(slicing8Table); + arrayType = $arrayType($Uint32, 256); + arrayType$1 = $arrayType(Table, 8); + archAvailableIEEE = function archAvailableIEEE$1() { + return false; + }; + archInitIEEE = function archInitIEEE$1() { + $panic(new $String("not available")); + }; + archUpdateIEEE = function archUpdateIEEE$1(crc, p) { + var crc, p; + $panic(new $String("not available")); + }; + simpleMakeTable = function simpleMakeTable$1(poly) { + var poly, t; + t = arrayType.zero(); + simplePopulateTable(poly, t); + return t; + }; + simplePopulateTable = function simplePopulateTable$1(poly, t) { + var crc, i, j, poly, t, y; + i = 0; + while (true) { + if (!(i < 256)) { break; } + crc = ((i >>> 0)); + j = 0; + while (true) { + if (!(j < 8)) { break; } + if (((crc & 1) >>> 0) === 1) { + crc = (((crc >>> 1 >>> 0)) ^ poly) >>> 0; + } else { + crc = (y = (1), y < 32 ? (crc >>> y) : 0) >>> 0; + } + j = j + (1) >> 0; + } + t.nilCheck, ((i < 0 || i >= t.length) ? ($throwRuntimeError("index out of range"), undefined) : t[i] = crc); + i = i + (1) >> 0; + } + }; + simpleUpdate = function simpleUpdate$1(crc, tab, p) { + var _i, _ref, crc, p, tab, v, x, x$1; + crc = ~crc >>> 0; + _ref = p; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + crc = ((x = tab, x$1 = (((crc << 24 >>> 24)) ^ v) << 24 >>> 24, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) ^ ((crc >>> 8 >>> 0))) >>> 0; + _i++; + } + return ~crc >>> 0; + }; + slicingMakeTable = function slicingMakeTable$1(poly) { + var crc, i, j, poly, t, x, x$1, x$2, x$3, x$4; + t = arrayType$1.zero(); + simplePopulateTable(poly, t[0]); + i = 0; + while (true) { + if (!(i < 256)) { break; } + crc = (x = t[0], ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])); + j = 1; + while (true) { + if (!(j < 8)) { break; } + crc = ((x$1 = t[0], x$2 = (crc & 255) >>> 0, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])) ^ ((crc >>> 8 >>> 0))) >>> 0; + (x$3 = (x$4 = t, ((j < 0 || j >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[j])), ((i < 0 || i >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[i] = crc)); + j = j + (1) >> 0; + } + i = i + (1) >> 0; + } + return t; + }; + slicingUpdate = function slicingUpdate$1(crc, tab, p) { + var crc, p, tab, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + if (p.$length >= 16) { + crc = ~crc >>> 0; + while (true) { + if (!(p.$length > 8)) { break; } + crc = (crc ^ ((((((((((0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]) >>> 0)) | ((((1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1]) >>> 0)) << 8 >>> 0)) >>> 0) | ((((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2]) >>> 0)) << 16 >>> 0)) >>> 0) | ((((3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3]) >>> 0)) << 24 >>> 0)) >>> 0))) >>> 0; + crc = ((((((((((((((x = tab[0], x$1 = (7 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 7]), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])) ^ (x$2 = tab[1], x$3 = (6 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 6]), ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3]))) >>> 0) ^ (x$4 = tab[2], x$5 = (5 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 5]), ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5]))) >>> 0) ^ (x$6 = tab[3], x$7 = (4 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 4]), ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7]))) >>> 0) ^ (x$8 = tab[4], x$9 = crc >>> 24 >>> 0, ((x$9 < 0 || x$9 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[x$9]))) >>> 0) ^ (x$10 = tab[5], x$11 = (((crc >>> 16 >>> 0)) & 255) >>> 0, ((x$11 < 0 || x$11 >= x$10.length) ? ($throwRuntimeError("index out of range"), undefined) : x$10[x$11]))) >>> 0) ^ (x$12 = tab[6], x$13 = (((crc >>> 8 >>> 0)) & 255) >>> 0, ((x$13 < 0 || x$13 >= x$12.length) ? ($throwRuntimeError("index out of range"), undefined) : x$12[x$13]))) >>> 0) ^ (x$14 = tab[7], x$15 = (crc & 255) >>> 0, ((x$15 < 0 || x$15 >= x$14.length) ? ($throwRuntimeError("index out of range"), undefined) : x$14[x$15]))) >>> 0; + p = $subslice(p, 8); + } + crc = ~crc >>> 0; + } + if (p.$length === 0) { + return crc; + } + return simpleUpdate(crc, tab[0], p); + }; + ieeeInit = function ieeeInit$1() { + if (archAvailableIEEE()) { + archInitIEEE(); + updateIEEE = archUpdateIEEE; + } else { + ieeeTable8 = slicingMakeTable(3988292384); + updateIEEE = (function ieeeInit·func1(crc, p) { + var crc, p; + return slicingUpdate(crc, ieeeTable8, p); + }); + } + }; + update = function update$1(crc, tab, p, checkInitIEEE) { + var {$24r, $24r$1, _r, _r$1, checkInitIEEE, crc, p, tab, $s, $r, $c} = $restore(this, {crc, tab, p, checkInitIEEE}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (haveCastagnoli.Load() && tab === castagnoliTable) { $s = 2; continue; } + /* */ if (tab === $pkg.IEEETable) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (haveCastagnoli.Load() && tab === castagnoliTable) { */ case 2: + _r = updateCastagnoli(crc, p); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 7; case 7: return $24r; + /* } else if (tab === $pkg.IEEETable) { */ case 3: + /* */ if (checkInitIEEE) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (checkInitIEEE) { */ case 8: + $r = ieeeOnce.Do(ieeeInit); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + _r$1 = updateIEEE(crc, p); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 12; case 12: return $24r$1; + /* } else { */ case 4: + $s = -1; return simpleUpdate(crc, tab, p); + /* } */ case 5: + case 1: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: update$1, $c: true, $r, $24r, $24r$1, _r, _r$1, checkInitIEEE, crc, p, tab, $s};return $f; + }; + Update = function Update$1(crc, tab, p) { + var {$24r, _r, crc, p, tab, $s, $r, $c} = $restore(this, {crc, tab, p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = update(crc, tab, p, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Update$1, $c: true, $r, $24r, _r, crc, p, tab, $s};return $f; + }; + $pkg.Update = Update; + ChecksumIEEE = function ChecksumIEEE$1(data) { + var {$24r, _r, data, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = ieeeOnce.Do(ieeeInit); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = updateIEEE(0, data); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: ChecksumIEEE$1, $c: true, $r, $24r, _r, data, $s};return $f; + }; + $pkg.ChecksumIEEE = ChecksumIEEE; + slicing8Table.init(Table, 8); + Table.init($Uint32, 256); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + castagnoliTable = ptrType.nil; + updateCastagnoli = $throwNilPointerError; + haveCastagnoli = new atomic.Bool.ptr(new atomic.noCopy.ptr(), 0); + ieeeTable8 = ptrType$1.nil; + updateIEEE = $throwNilPointerError; + ieeeOnce = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)); + $pkg.IEEETable = simpleMakeTable(3988292384); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["compress/gzip"] = (function() { + var $pkg = {}, $init, bufio, flate, binary, errors, fmt, crc32, io, time, Header, Reader, sliceType$1, ptrType$1, arrayType$1, ptrType$3, sliceType$2, le, noEOF, NewReader; + bufio = $packages["bufio"]; + flate = $packages["compress/flate"]; + binary = $packages["encoding/binary"]; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + crc32 = $packages["hash/crc32"]; + io = $packages["io"]; + time = $packages["time"]; + Header = $newType(0, $kindStruct, "gzip.Header", true, "compress/gzip", true, function(Comment_, Extra_, ModTime_, Name_, OS_) { + this.$val = this; + if (arguments.length === 0) { + this.Comment = ""; + this.Extra = sliceType$1.nil; + this.ModTime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil); + this.Name = ""; + this.OS = 0; + return; + } + this.Comment = Comment_; + this.Extra = Extra_; + this.ModTime = ModTime_; + this.Name = Name_; + this.OS = OS_; + }); + Reader = $newType(0, $kindStruct, "gzip.Reader", true, "compress/gzip", true, function(Header_, r_, decompressor_, digest_, size_, buf_, err_, multistream_) { + this.$val = this; + if (arguments.length === 0) { + this.Header = new Header.ptr("", sliceType$1.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), "", 0); + this.r = $ifaceNil; + this.decompressor = $ifaceNil; + this.digest = 0; + this.size = 0; + this.buf = arrayType$1.zero(); + this.err = $ifaceNil; + this.multistream = false; + return; + } + this.Header = Header_; + this.r = r_; + this.decompressor = decompressor_; + this.digest = digest_; + this.size = size_; + this.buf = buf_; + this.err = err_; + this.multistream = multistream_; + }); + $pkg.Header = Header; + $pkg.Reader = Reader; + $pkg.$finishSetup = function() { + sliceType$1 = $sliceType($Uint8); + ptrType$1 = $ptrType(time.Location); + arrayType$1 = $arrayType($Uint8, 512); + ptrType$3 = $ptrType(Reader); + sliceType$2 = $sliceType($Int32); + noEOF = function noEOF$1(err) { + var err; + if ($interfaceIsEqual(err, io.EOF)) { + return io.ErrUnexpectedEOF; + } + return err; + }; + NewReader = function NewReader$1(r) { + var {_r, err, r, z, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = new Reader.ptr(new Header.ptr("", sliceType$1.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), "", 0), $ifaceNil, $ifaceNil, 0, 0, arrayType$1.zero(), $ifaceNil, false); + _r = z.Reset(r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$3.nil, err]; + } + $s = -1; return [z, $ifaceNil]; + /* */ } return; } var $f = {$blk: NewReader$1, $c: true, $r, _r, err, r, z, $s};return $f; + }; + $pkg.NewReader = NewReader; + $ptrType(Reader).prototype.Reset = function Reset$1(r) { + var {_r, _tuple, _tuple$1, ok, r, rr, z, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + Reader.copy(z, new Reader.ptr(new Header.ptr("", sliceType$1.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), "", 0), $ifaceNil, z.decompressor, 0, 0, arrayType$1.zero(), $ifaceNil, true)); + _tuple = $assertType(r, flate.Reader, true); + rr = _tuple[0]; + ok = _tuple[1]; + if (ok) { + z.r = rr; + } else { + z.r = bufio.NewReader(r); + } + _r = z.readHeader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + Header.copy(z.Header, _tuple$1[0]); + z.err = _tuple$1[1]; + $s = -1; return z.err; + /* */ } return; } var $f = {$blk: Reset$1, $c: true, $r, _r, _tuple, _tuple$1, ok, r, rr, z, $s};return $f; + }; + $ptrType(Reader).prototype.Multistream = function Multistream(ok) { + var ok, z; + z = this; + z.multistream = ok; + }; + $ptrType(Reader).prototype.readString = function readString() { + var {_i, _r, _r$1, _ref, _tuple, err, i, needConv, s, v, x, x$1, x$2, z, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + err = $ifaceNil; + needConv = false; + i = 0; + /* while (true) { */ case 1: + if (i >= 512) { + $s = -1; return ["", $pkg.ErrHeader]; + } + _r = z.r.ReadByte(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + (x = z.buf, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = _tuple[0])); + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return ["", err]; + } + if ((x$1 = z.buf, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i])) > 127) { + needConv = true; + } + /* */ if ((x$2 = z.buf, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((x$2 = z.buf, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i])) === 0) { */ case 4: + _r$1 = crc32.Update(z.digest, crc32.IEEETable, $subslice(new sliceType$1(z.buf), 0, (i + 1 >> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.digest = _r$1; + if (needConv) { + s = $makeSlice(sliceType$2, 0, i); + _ref = $subslice(new sliceType$1(z.buf), 0, i); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + s = $append(s, ((v >> 0))); + _i++; + } + $s = -1; return [($runesToString(s)), $ifaceNil]; + } + $s = -1; return [($bytesToString($subslice(new sliceType$1(z.buf), 0, i))), $ifaceNil]; + /* } */ case 5: + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return ["", $ifaceNil]; + /* */ } return; } var $f = {$blk: readString, $c: true, $r, _i, _r, _r$1, _ref, _tuple, err, i, needConv, s, v, x, x$1, x$2, z, $s};return $f; + }; + $ptrType(Reader).prototype.readHeader = function readHeader() { + var {_r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, data, digest, err, flg, hdr, s, t, z, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + hdr = new Header.ptr("", sliceType$1.nil, new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil), "", 0); + err = $ifaceNil; + z = this; + _r = io.ReadFull(z.r, $subslice(new sliceType$1(z.buf), 0, 10)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = $clone(hdr, Header); + _tmp$1 = err; + Header.copy(hdr, _tmp); + err = _tmp$1; + $s = -1; return [hdr, err]; + } + if (!((z.buf[0] === 31)) || !((z.buf[1] === 139)) || !((z.buf[2] === 8))) { + _tmp$2 = $clone(hdr, Header); + _tmp$3 = $pkg.ErrHeader; + Header.copy(hdr, _tmp$2); + err = _tmp$3; + $s = -1; return [hdr, err]; + } + flg = z.buf[3]; + t = (new $Int64(0, $clone(le, binary.littleEndian).Uint32($subslice(new sliceType$1(z.buf), 4, 8)))); + if ((t.$high > 0 || (t.$high === 0 && t.$low > 0))) { + time.Time.copy(hdr.ModTime, time.Unix(t, new $Int64(0, 0))); + } + hdr.OS = z.buf[9]; + _r$1 = crc32.ChecksumIEEE($subslice(new sliceType$1(z.buf), 0, 10)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.digest = _r$1; + /* */ if (!((((flg & 4) >>> 0) === 0))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!((((flg & 4) >>> 0) === 0))) { */ case 3: + _r$2 = io.ReadFull(z.r, $subslice(new sliceType$1(z.buf), 0, 2)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$4 = $clone(hdr, Header); + _tmp$5 = noEOF(err); + Header.copy(hdr, _tmp$4); + err = _tmp$5; + $s = -1; return [hdr, err]; + } + _r$3 = crc32.Update(z.digest, crc32.IEEETable, $subslice(new sliceType$1(z.buf), 0, 2)); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + z.digest = _r$3; + data = $makeSlice(sliceType$1, $clone(le, binary.littleEndian).Uint16($subslice(new sliceType$1(z.buf), 0, 2))); + _r$4 = io.ReadFull(z.r, data); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$2 = _r$4; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$6 = $clone(hdr, Header); + _tmp$7 = noEOF(err); + Header.copy(hdr, _tmp$6); + err = _tmp$7; + $s = -1; return [hdr, err]; + } + _r$5 = crc32.Update(z.digest, crc32.IEEETable, data); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + z.digest = _r$5; + hdr.Extra = data; + /* } */ case 4: + s = ""; + /* */ if (!((((flg & 8) >>> 0) === 0))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!((((flg & 8) >>> 0) === 0))) { */ case 9: + _r$6 = z.readString(); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$3 = _r$6; + s = _tuple$3[0]; + err = _tuple$3[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$8 = $clone(hdr, Header); + _tmp$9 = noEOF(err); + Header.copy(hdr, _tmp$8); + err = _tmp$9; + $s = -1; return [hdr, err]; + } + hdr.Name = s; + /* } */ case 10: + /* */ if (!((((flg & 16) >>> 0) === 0))) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!((((flg & 16) >>> 0) === 0))) { */ case 12: + _r$7 = z.readString(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$4 = _r$7; + s = _tuple$4[0]; + err = _tuple$4[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$10 = $clone(hdr, Header); + _tmp$11 = noEOF(err); + Header.copy(hdr, _tmp$10); + err = _tmp$11; + $s = -1; return [hdr, err]; + } + hdr.Comment = s; + /* } */ case 13: + /* */ if (!((((flg & 2) >>> 0) === 0))) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!((((flg & 2) >>> 0) === 0))) { */ case 15: + _r$8 = io.ReadFull(z.r, $subslice(new sliceType$1(z.buf), 0, 2)); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tuple$5 = _r$8; + err = _tuple$5[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$12 = $clone(hdr, Header); + _tmp$13 = noEOF(err); + Header.copy(hdr, _tmp$12); + err = _tmp$13; + $s = -1; return [hdr, err]; + } + digest = $clone(le, binary.littleEndian).Uint16($subslice(new sliceType$1(z.buf), 0, 2)); + if (!((digest === ((z.digest << 16 >>> 16))))) { + _tmp$14 = $clone(hdr, Header); + _tmp$15 = $pkg.ErrHeader; + Header.copy(hdr, _tmp$14); + err = _tmp$15; + $s = -1; return [hdr, err]; + } + /* } */ case 16: + z.digest = 0; + /* */ if ($interfaceIsEqual(z.decompressor, $ifaceNil)) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if ($interfaceIsEqual(z.decompressor, $ifaceNil)) { */ case 18: + _r$9 = flate.NewReader(z.r); /* */ $s = 21; case 21: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + z.decompressor = _r$9; + $s = 20; continue; + /* } else { */ case 19: + _r$10 = $assertType(z.decompressor, flate.Resetter).Reset(z.r, sliceType$1.nil); /* */ $s = 22; case 22: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + /* } */ case 20: + _tmp$16 = $clone(hdr, Header); + _tmp$17 = $ifaceNil; + Header.copy(hdr, _tmp$16); + err = _tmp$17; + $s = -1; return [hdr, err]; + /* */ } return; } var $f = {$blk: readHeader, $c: true, $r, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, data, digest, err, flg, hdr, s, t, z, $s};return $f; + }; + $ptrType(Reader).prototype.Read = function Read(p) { + var {_r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, digest, err, err$1, n, p, size, z, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + z = this; + if (!($interfaceIsEqual(z.err, $ifaceNil))) { + _tmp = 0; + _tmp$1 = z.err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + /* while (true) { */ case 1: + /* if (!(n === 0)) { break; } */ if(!(n === 0)) { $s = 2; continue; } + _r = z.decompressor.Read(p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + z.err = _tuple[1]; + _r$1 = crc32.Update(z.digest, crc32.IEEETable, $subslice(p, 0, n)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.digest = _r$1; + z.size = z.size + (((n >>> 0))) >>> 0; + if (!($interfaceIsEqual(z.err, io.EOF))) { + _tmp$2 = n; + _tmp$3 = z.err; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + _r$2 = io.ReadFull(z.r, $subslice(new sliceType$1(z.buf), 0, 8)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + err$1 = _tuple$1[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + z.err = noEOF(err$1); + _tmp$4 = n; + _tmp$5 = z.err; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + } + digest = $clone(le, binary.littleEndian).Uint32($subslice(new sliceType$1(z.buf), 0, 4)); + size = $clone(le, binary.littleEndian).Uint32($subslice(new sliceType$1(z.buf), 4, 8)); + if (!((digest === z.digest)) || !((size === z.size))) { + z.err = $pkg.ErrChecksum; + _tmp$6 = n; + _tmp$7 = z.err; + n = _tmp$6; + err = _tmp$7; + $s = -1; return [n, err]; + } + _tmp$8 = 0; + _tmp$9 = 0; + z.digest = _tmp$8; + z.size = _tmp$9; + if (!z.multistream) { + _tmp$10 = n; + _tmp$11 = io.EOF; + n = _tmp$10; + err = _tmp$11; + $s = -1; return [n, err]; + } + z.err = $ifaceNil; + _r$3 = z.readHeader(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$2 = _r$3; + z.err = _tuple$2[1]; + if (!($interfaceIsEqual(z.err, $ifaceNil))) { + _tmp$12 = n; + _tmp$13 = z.err; + n = _tmp$12; + err = _tmp$13; + $s = -1; return [n, err]; + } + $s = 1; continue; + case 2: + _tmp$14 = n; + _tmp$15 = $ifaceNil; + n = _tmp$14; + err = _tmp$15; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Read, $c: true, $r, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, digest, err, err$1, n, p, size, z, $s};return $f; + }; + $ptrType(Reader).prototype.Close = function Close$1() { + var {$24r, _r, z, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.decompressor.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Close$1, $c: true, $r, $24r, _r, z, $s};return $f; + }; + ptrType$3.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Reader], [$error], false)}, {prop: "Multistream", name: "Multistream", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "readString", name: "readString", pkg: "compress/gzip", typ: $funcType([], [$String, $error], false)}, {prop: "readHeader", name: "readHeader", pkg: "compress/gzip", typ: $funcType([], [Header, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; + Header.init("", [{prop: "Comment", name: "Comment", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Extra", name: "Extra", embedded: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "ModTime", name: "ModTime", embedded: false, exported: true, typ: time.Time, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "OS", name: "OS", embedded: false, exported: true, typ: $Uint8, tag: ""}]); + Reader.init("compress/gzip", [{prop: "Header", name: "Header", embedded: true, exported: true, typ: Header, tag: ""}, {prop: "r", name: "r", embedded: false, exported: false, typ: flate.Reader, tag: ""}, {prop: "decompressor", name: "decompressor", embedded: false, exported: false, typ: io.ReadCloser, tag: ""}, {prop: "digest", name: "digest", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "multistream", name: "multistream", embedded: false, exported: false, typ: $Bool, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = flate.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = binary.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = crc32.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ErrChecksum = errors.New("gzip: invalid checksum"); + $pkg.ErrHeader = errors.New("gzip: invalid header"); + le = $clone(binary.LittleEndian, binary.littleEndian); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["encoding"] = (function() { + var $pkg = {}, $init, BinaryMarshaler, BinaryUnmarshaler, TextMarshaler, TextUnmarshaler, sliceType; + BinaryMarshaler = $newType(8, $kindInterface, "encoding.BinaryMarshaler", true, "encoding", true, null); + BinaryUnmarshaler = $newType(8, $kindInterface, "encoding.BinaryUnmarshaler", true, "encoding", true, null); + TextMarshaler = $newType(8, $kindInterface, "encoding.TextMarshaler", true, "encoding", true, null); + TextUnmarshaler = $newType(8, $kindInterface, "encoding.TextUnmarshaler", true, "encoding", true, null); + $pkg.BinaryMarshaler = BinaryMarshaler; + $pkg.BinaryUnmarshaler = BinaryUnmarshaler; + $pkg.TextMarshaler = TextMarshaler; + $pkg.TextUnmarshaler = TextUnmarshaler; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint8); + BinaryMarshaler.init([{prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType, $error], false)}]); + BinaryUnmarshaler.init([{prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType], [$error], false)}]); + TextMarshaler.init([{prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType, $error], false)}]); + TextUnmarshaler.init([{prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType], [$error], false)}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/saferio"] = (function() { + var $pkg = {}, $init, io, reflect, sliceType, ReadData, SliceCap; + io = $packages["io"]; + reflect = $packages["reflect"]; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint8); + ReadData = function ReadData$1(r, n) { + var {_r, _r$1, _tuple, _tuple$1, buf, buf$1, buf1, err, err$1, n, next, r, x, x$1, x$2, $s, $r, $c} = $restore(this, {r, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ((x = (new $Int64(n.$high, n.$low)), (x.$high < 0 || (x.$high === 0 && x.$low < 0))) || !((x$1 = (new $Uint64(0, ((n.$low >> 0)))), (n.$high === x$1.$high && n.$low === x$1.$low)))) { + $s = -1; return [sliceType.nil, io.ErrUnexpectedEOF]; + } + /* */ if ((n.$high < 0 || (n.$high === 0 && n.$low < 10485760))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((n.$high < 0 || (n.$high === 0 && n.$low < 10485760))) { */ case 1: + buf = $makeSlice(sliceType, $flatten64(n)); + _r = io.ReadFull(r, buf); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType.nil, err]; + } + $s = -1; return [buf, $ifaceNil]; + /* } */ case 2: + buf$1 = sliceType.nil; + buf1 = $makeSlice(sliceType, 10485760); + /* while (true) { */ case 4: + /* if (!((n.$high > 0 || (n.$high === 0 && n.$low > 0)))) { break; } */ if(!((n.$high > 0 || (n.$high === 0 && n.$low > 0)))) { $s = 5; continue; } + next = n; + if ((next.$high > 0 || (next.$high === 0 && next.$low > 10485760))) { + next = new $Uint64(0, 10485760); + } + _r$1 = io.ReadFull(r, $subslice(buf1, 0, $flatten64(next))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + err$1 = _tuple$1[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + if (buf$1.$length > 0 && $interfaceIsEqual(err$1, io.EOF)) { + err$1 = io.ErrUnexpectedEOF; + } + $s = -1; return [sliceType.nil, err$1]; + } + buf$1 = $appendSlice(buf$1, $subslice(buf1, 0, $flatten64(next))); + n = (x$2 = next, new $Uint64(n.$high - x$2.$high, n.$low - x$2.$low)); + $s = 4; continue; + case 5: + $s = -1; return [buf$1, $ifaceNil]; + /* */ } return; } var $f = {$blk: ReadData$1, $c: true, $r, _r, _r$1, _tuple, _tuple$1, buf, buf$1, buf1, err, err$1, n, next, r, x, x$1, x$2, $s};return $f; + }; + $pkg.ReadData = ReadData; + SliceCap = function SliceCap$1(v, c) { + var {_r, _r$1, _r$2, c, size, typ, v, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {v, c}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ((x = (new $Int64(c.$high, c.$low)), (x.$high < 0 || (x.$high === 0 && x.$low < 0))) || !((x$1 = (new $Uint64(0, ((c.$low >> 0)))), (c.$high === x$1.$high && c.$low === x$1.$low)))) { + $s = -1; return -1; + } + typ = reflect.TypeOf(v); + _r = typ.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 22))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 22))) { */ case 1: + $panic(new $String("SliceCap called with non-pointer type")); + /* } */ case 2: + _r$1 = typ.Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Size(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + size = ((x$2 = _r$2, new $Uint64(0, x$2.constructor === Number ? x$2 : 1))); + if ((size.$high > 0 || (size.$high === 0 && size.$low > 0)) && (x$3 = $div64(new $Uint64(4294967295, 4294967295), size, false), (c.$high > x$3.$high || (c.$high === x$3.$high && c.$low > x$3.$low)))) { + $s = -1; return -1; + } + if ((x$4 = $mul64(c, size), (x$4.$high > 0 || (x$4.$high === 0 && x$4.$low > 10485760)))) { + c = ($div64(new $Uint64(0, 10485760), size, false)); + if ((c.$high === 0 && c.$low === 0)) { + c = new $Uint64(0, 1); + } + } + $s = -1; return ((c.$low >> 0)); + /* */ } return; } var $f = {$blk: SliceCap$1, $c: true, $r, _r, _r$1, _r$2, c, size, typ, v, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + $pkg.SliceCap = SliceCap; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["encoding/gob"] = (function() { + var $pkg = {}, $init, bufio, encoding, binary, errors, fmt, nosync, saferio, io, math, bits, os, reflect, atomic, unicode, utf8, userTypeInfo, typeId, gobType, CommonType, arrayType, gobEncoderType, mapType, sliceType, fieldType, structType, wireType, typeInfo, GobEncoder, GobDecoder, gobError, Encoder, encHelper, encoderState, encBuffer, encOp, encInstr, encEngine, Decoder, decHelper, decoderState, decBuffer, decOp, decInstr, decEngine, emptyStruct, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, sliceType$1, ptrType$12, ptrType$13, ptrType$14, ptrType$15, structType$1, ptrType$16, structType$2, ptrType$17, structType$3, ptrType$18, structType$4, ptrType$19, structType$5, ptrType$20, structType$6, ptrType$21, structType$7, ptrType$22, ptrType$23, ptrType$24, ptrType$25, ptrType$26, ptrType$27, sliceType$2, arrayType$1, ptrType$28, sliceType$3, ptrType$29, ptrType$30, mapType$1, ptrType$31, sliceType$4, sliceType$5, sliceType$6, sliceType$7, sliceType$8, sliceType$9, sliceType$10, sliceType$11, sliceType$12, sliceType$13, sliceType$14, sliceType$15, sliceType$16, sliceType$17, sliceType$18, sliceType$19, sliceType$20, ptrType$32, ptrType$33, ptrType$34, arrayType$2, ptrType$35, ptrType$36, sliceType$21, ptrType$37, ptrType$38, ptrType$39, ptrType$40, ptrType$41, sliceType$22, ptrType$42, ptrType$43, sliceType$23, ptrType$44, ptrType$45, ptrType$46, ptrType$47, ptrType$48, ptrType$49, ptrType$50, ptrType$51, ptrType$52, ptrType$53, ptrType$54, ptrType$55, ptrType$56, ptrType$57, ptrType$58, ptrType$59, mapType$2, ptrType$60, mapType$3, mapType$4, mapType$5, mapType$6, mapType$7, mapType$8, ptrType$61, userTypeCache, nextId, typeLock, builtinIdToType, wireTypeUserInfo, typeInfoMap, nameToConcreteType, concreteTypeToName, noValue, gobEncoderInterfaceType, _r, gobDecoderInterfaceType, _r$1, binaryMarshalerInterfaceType, _r$2, binaryUnmarshalerInterfaceType, _r$3, textMarshalerInterfaceType, _r$4, textUnmarshalerInterfaceType, _r$5, types, idToType, tBool, _r$6, tInt, _r$7, tUint, _r$8, tFloat, _r$9, tBytes, _r$10, tString, _r$11, tComplex, _r$12, tInterface, _r$13, tReserved7, _r$14, tReserved6, _r$15, tReserved5, _r$16, tReserved4, _r$17, tReserved3, _r$18, tReserved2, _r$19, tReserved1, _r$20, tWireType, x, _r$21, spaceForLength, encBufferPool, encOpTable, encArrayHelper, encSliceHelper, errBadCount, errBadUint, errBadType, errRange, decOpTable, decIgnoreOpMap, maxIgnoreNestingDepth, emptyStructType, x$1, decArrayHelper, decSliceHelper, validUserType, implementsInterface, userType, setTypeId, init, newArrayType, newGobEncoderType, newMapType, newSliceType, newStructType, newTypeObject, isExported, isSent, getBaseType, getType, checkId, bootstrapType, lookupTypeInfo, getTypeInfo, buildTypeInfo, mustGetTypeInfo, RegisterName, Register, registerBasics, errorf, error_, catchError, NewEncoder, encIndirect, encBool, encInt, encUint, floatBits, encFloat, encComplex, encUint8Array, encString, encStructTerminator, valid, encodeReflectValue, isZero, encOpFor, gobEncodeOpFor, compileEnc, getEncEngine, buildEncEngine, encBoolArray, encBoolSlice, encComplex64Array, encComplex64Slice, encComplex128Array, encComplex128Slice, encFloat32Array, encFloat32Slice, encFloat64Array, encFloat64Slice, encIntArray, encIntSlice, encInt16Array, encInt16Slice, encInt32Array, encInt32Slice, encInt64Array, encInt64Slice, encInt8Array, encInt8Slice, encStringArray, encStringSlice, encUintArray, encUintSlice, encUint16Array, encUint16Slice, encUint32Array, encUint32Slice, encUint64Array, encUint64Slice, encUintptrArray, encUintptrSlice, NewDecoder, toInt, overflow, decodeUintReader, ignoreUint, ignoreTwoUints, decAlloc, decBool, decInt8, decUint8, decInt16, decUint16, decInt32, decUint32, decInt64, decUint64, float64FromBits, float32FromBits, decFloat32, decFloat64, decComplex64, decComplex128, decUint8Slice, decString, ignoreUint8Array, decodeIntoValue, init$1, allocValue, decBoolArray, decBoolSlice, decComplex64Array, decComplex64Slice, decComplex128Array, decComplex128Slice, decFloat32Array, decFloat32Slice, decFloat64Array, decFloat64Slice, decIntArray, decIntSlice, decInt16Array, decInt16Slice, decInt32Array, decInt32Slice, decInt64Array, decInt64Slice, decInt8Array, decInt8Slice, decStringArray, decStringSlice, decUintArray, decUintSlice, decUint16Array, decUint16Slice, decUint32Array, decUint32Slice, decUint64Array, decUint64Slice, decUintptrArray, decUintptrSlice, growSlice = []; + bufio = $packages["bufio"]; + encoding = $packages["encoding"]; + binary = $packages["encoding/binary"]; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; + saferio = $packages["internal/saferio"]; + io = $packages["io"]; + math = $packages["math"]; + bits = $packages["math/bits"]; + os = $packages["os"]; + reflect = $packages["reflect"]; + atomic = $packages["sync/atomic"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + userTypeInfo = $newType(0, $kindStruct, "gob.userTypeInfo", true, "encoding/gob", false, function(user_, base_, indir_, externalEnc_, externalDec_, encIndir_, decIndir_) { + this.$val = this; + if (arguments.length === 0) { + this.user = $ifaceNil; + this.base = $ifaceNil; + this.indir = 0; + this.externalEnc = 0; + this.externalDec = 0; + this.encIndir = 0; + this.decIndir = 0; + return; + } + this.user = user_; + this.base = base_; + this.indir = indir_; + this.externalEnc = externalEnc_; + this.externalDec = externalDec_; + this.encIndir = encIndir_; + this.decIndir = decIndir_; + }); + typeId = $newType(4, $kindInt32, "gob.typeId", true, "encoding/gob", false, null); + gobType = $newType(8, $kindInterface, "gob.gobType", true, "encoding/gob", false, null); + CommonType = $newType(0, $kindStruct, "gob.CommonType", true, "encoding/gob", true, function(Name_, Id_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.Id = 0; + return; + } + this.Name = Name_; + this.Id = Id_; + }); + arrayType = $newType(0, $kindStruct, "gob.arrayType", true, "encoding/gob", false, function(CommonType_, Elem_, Len_) { + this.$val = this; + if (arguments.length === 0) { + this.CommonType = new CommonType.ptr("", 0); + this.Elem = 0; + this.Len = 0; + return; + } + this.CommonType = CommonType_; + this.Elem = Elem_; + this.Len = Len_; + }); + gobEncoderType = $newType(0, $kindStruct, "gob.gobEncoderType", true, "encoding/gob", false, function(CommonType_) { + this.$val = this; + if (arguments.length === 0) { + this.CommonType = new CommonType.ptr("", 0); + return; + } + this.CommonType = CommonType_; + }); + mapType = $newType(0, $kindStruct, "gob.mapType", true, "encoding/gob", false, function(CommonType_, Key_, Elem_) { + this.$val = this; + if (arguments.length === 0) { + this.CommonType = new CommonType.ptr("", 0); + this.Key = 0; + this.Elem = 0; + return; + } + this.CommonType = CommonType_; + this.Key = Key_; + this.Elem = Elem_; + }); + sliceType = $newType(0, $kindStruct, "gob.sliceType", true, "encoding/gob", false, function(CommonType_, Elem_) { + this.$val = this; + if (arguments.length === 0) { + this.CommonType = new CommonType.ptr("", 0); + this.Elem = 0; + return; + } + this.CommonType = CommonType_; + this.Elem = Elem_; + }); + fieldType = $newType(0, $kindStruct, "gob.fieldType", true, "encoding/gob", false, function(Name_, Id_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.Id = 0; + return; + } + this.Name = Name_; + this.Id = Id_; + }); + structType = $newType(0, $kindStruct, "gob.structType", true, "encoding/gob", false, function(CommonType_, Field_) { + this.$val = this; + if (arguments.length === 0) { + this.CommonType = new CommonType.ptr("", 0); + this.Field = sliceType$3.nil; + return; + } + this.CommonType = CommonType_; + this.Field = Field_; + }); + wireType = $newType(0, $kindStruct, "gob.wireType", true, "encoding/gob", false, function(ArrayT_, SliceT_, StructT_, MapT_, GobEncoderT_, BinaryMarshalerT_, TextMarshalerT_) { + this.$val = this; + if (arguments.length === 0) { + this.ArrayT = ptrType$23.nil; + this.SliceT = ptrType$24.nil; + this.StructT = ptrType$25.nil; + this.MapT = ptrType$26.nil; + this.GobEncoderT = ptrType$27.nil; + this.BinaryMarshalerT = ptrType$27.nil; + this.TextMarshalerT = ptrType$27.nil; + return; + } + this.ArrayT = ArrayT_; + this.SliceT = SliceT_; + this.StructT = StructT_; + this.MapT = MapT_; + this.GobEncoderT = GobEncoderT_; + this.BinaryMarshalerT = BinaryMarshalerT_; + this.TextMarshalerT = TextMarshalerT_; + }); + typeInfo = $newType(0, $kindStruct, "gob.typeInfo", true, "encoding/gob", false, function(id_, encInit_, encoder_, wire_) { + this.$val = this; + if (arguments.length === 0) { + this.id = 0; + this.encInit = new nosync.Mutex.ptr(false, false, false, false, 0); + this.encoder = new atomic.Pointer[0 /* encoding/gob.encEngine */].ptr(ptrType$31.nil); + this.wire = ptrType$29.nil; + return; + } + this.id = id_; + this.encInit = encInit_; + this.encoder = encoder_; + this.wire = wire_; + }); + GobEncoder = $newType(8, $kindInterface, "gob.GobEncoder", true, "encoding/gob", true, null); + GobDecoder = $newType(8, $kindInterface, "gob.GobDecoder", true, "encoding/gob", true, null); + gobError = $newType(0, $kindStruct, "gob.gobError", true, "encoding/gob", false, function(err_) { + this.$val = this; + if (arguments.length === 0) { + this.err = $ifaceNil; + return; + } + this.err = err_; + }); + Encoder = $newType(0, $kindStruct, "gob.Encoder", true, "encoding/gob", true, function(mutex_, w_, sent_, countState_, freeList_, byteBuf_, err_) { + this.$val = this; + if (arguments.length === 0) { + this.mutex = new nosync.Mutex.ptr(false, false, false, false, 0); + this.w = sliceType$20.nil; + this.sent = false; + this.countState = ptrType$32.nil; + this.freeList = ptrType$32.nil; + this.byteBuf = new encBuffer.ptr(sliceType$1.nil, arrayType$1.zero()); + this.err = $ifaceNil; + return; + } + this.mutex = mutex_; + this.w = w_; + this.sent = sent_; + this.countState = countState_; + this.freeList = freeList_; + this.byteBuf = byteBuf_; + this.err = err_; + }); + encHelper = $newType(4, $kindFunc, "gob.encHelper", true, "encoding/gob", false, null); + encoderState = $newType(0, $kindStruct, "gob.encoderState", true, "encoding/gob", false, function(enc_, b_, sendZero_, fieldnum_, buf_, next_) { + this.$val = this; + if (arguments.length === 0) { + this.enc = ptrType$33.nil; + this.b = ptrType$34.nil; + this.sendZero = false; + this.fieldnum = 0; + this.buf = arrayType$2.zero(); + this.next = ptrType$32.nil; + return; + } + this.enc = enc_; + this.b = b_; + this.sendZero = sendZero_; + this.fieldnum = fieldnum_; + this.buf = buf_; + this.next = next_; + }); + encBuffer = $newType(0, $kindStruct, "gob.encBuffer", true, "encoding/gob", false, function(data_, scratch_) { + this.$val = this; + if (arguments.length === 0) { + this.data = sliceType$1.nil; + this.scratch = arrayType$1.zero(); + return; + } + this.data = data_; + this.scratch = scratch_; + }); + encOp = $newType(4, $kindFunc, "gob.encOp", true, "encoding/gob", false, null); + encInstr = $newType(0, $kindStruct, "gob.encInstr", true, "encoding/gob", false, function(op_, field_, index_, indir_) { + this.$val = this; + if (arguments.length === 0) { + this.op = $throwNilPointerError; + this.field = 0; + this.index = sliceType$4.nil; + this.indir = 0; + return; + } + this.op = op_; + this.field = field_; + this.index = index_; + this.indir = indir_; + }); + encEngine = $newType(0, $kindStruct, "gob.encEngine", true, "encoding/gob", false, function(instr_) { + this.$val = this; + if (arguments.length === 0) { + this.instr = sliceType$21.nil; + return; + } + this.instr = instr_; + }); + Decoder = $newType(0, $kindStruct, "gob.Decoder", true, "encoding/gob", true, function(mutex_, r_, buf_, wireType_, decoderCache_, ignorerCache_, freeList_, countBuf_, err_) { + this.$val = this; + if (arguments.length === 0) { + this.mutex = new nosync.Mutex.ptr(false, false, false, false, 0); + this.r = $ifaceNil; + this.buf = new decBuffer.ptr(sliceType$1.nil, 0); + this.wireType = false; + this.decoderCache = false; + this.ignorerCache = false; + this.freeList = ptrType$38.nil; + this.countBuf = sliceType$1.nil; + this.err = $ifaceNil; + return; + } + this.mutex = mutex_; + this.r = r_; + this.buf = buf_; + this.wireType = wireType_; + this.decoderCache = decoderCache_; + this.ignorerCache = ignorerCache_; + this.freeList = freeList_; + this.countBuf = countBuf_; + this.err = err_; + }); + decHelper = $newType(4, $kindFunc, "gob.decHelper", true, "encoding/gob", false, null); + decoderState = $newType(0, $kindStruct, "gob.decoderState", true, "encoding/gob", false, function(dec_, b_, fieldnum_, next_) { + this.$val = this; + if (arguments.length === 0) { + this.dec = ptrType$39.nil; + this.b = ptrType$40.nil; + this.fieldnum = 0; + this.next = ptrType$38.nil; + return; + } + this.dec = dec_; + this.b = b_; + this.fieldnum = fieldnum_; + this.next = next_; + }); + decBuffer = $newType(0, $kindStruct, "gob.decBuffer", true, "encoding/gob", false, function(data_, offset_) { + this.$val = this; + if (arguments.length === 0) { + this.data = sliceType$1.nil; + this.offset = 0; + return; + } + this.data = data_; + this.offset = offset_; + }); + decOp = $newType(4, $kindFunc, "gob.decOp", true, "encoding/gob", false, null); + decInstr = $newType(0, $kindStruct, "gob.decInstr", true, "encoding/gob", false, function(op_, field_, index_, ovfl_) { + this.$val = this; + if (arguments.length === 0) { + this.op = $throwNilPointerError; + this.field = 0; + this.index = sliceType$4.nil; + this.ovfl = $ifaceNil; + return; + } + this.op = op_; + this.field = field_; + this.index = index_; + this.ovfl = ovfl_; + }); + decEngine = $newType(0, $kindStruct, "gob.decEngine", true, "encoding/gob", false, function(instr_, numInstr_) { + this.$val = this; + if (arguments.length === 0) { + this.instr = sliceType$23.nil; + this.numInstr = 0; + return; + } + this.instr = instr_; + this.numInstr = numInstr_; + }); + emptyStruct = $newType(0, $kindStruct, "gob.emptyStruct", true, "encoding/gob", false, function() { this.$val = this; }); + $pkg.userTypeInfo = userTypeInfo; + $pkg.typeId = typeId; + $pkg.gobType = gobType; + $pkg.CommonType = CommonType; + $pkg.arrayType = arrayType; + $pkg.gobEncoderType = gobEncoderType; + $pkg.mapType = mapType; + $pkg.sliceType = sliceType; + $pkg.fieldType = fieldType; + $pkg.structType = structType; + $pkg.wireType = wireType; + $pkg.typeInfo = typeInfo; + $pkg.GobEncoder = GobEncoder; + $pkg.GobDecoder = GobDecoder; + $pkg.gobError = gobError; + $pkg.Encoder = Encoder; + $pkg.encHelper = encHelper; + $pkg.encoderState = encoderState; + $pkg.encBuffer = encBuffer; + $pkg.encOp = encOp; + $pkg.encInstr = encInstr; + $pkg.encEngine = encEngine; + $pkg.Decoder = Decoder; + $pkg.decHelper = decHelper; + $pkg.decoderState = decoderState; + $pkg.decBuffer = decBuffer; + $pkg.decOp = decOp; + $pkg.decInstr = decInstr; + $pkg.decEngine = decEngine; + $pkg.emptyStruct = emptyStruct; + $pkg.$finishSetup = function() { + ptrType = $ptrType(userTypeInfo); + ptrType$1 = $ptrType(reflect.rtype); + ptrType$2 = $ptrType(GobEncoder); + ptrType$3 = $ptrType(GobDecoder); + ptrType$4 = $ptrType(encoding.BinaryMarshaler); + ptrType$5 = $ptrType(encoding.BinaryUnmarshaler); + ptrType$6 = $ptrType(encoding.TextMarshaler); + ptrType$7 = $ptrType(encoding.TextUnmarshaler); + ptrType$8 = $ptrType($Bool); + ptrType$9 = $ptrType($Int); + ptrType$10 = $ptrType($Uint); + ptrType$11 = $ptrType($Float64); + sliceType$1 = $sliceType($Uint8); + ptrType$12 = $ptrType(sliceType$1); + ptrType$13 = $ptrType($String); + ptrType$14 = $ptrType($Complex128); + ptrType$15 = $ptrType($emptyInterface); + structType$1 = $structType("encoding/gob", [{prop: "r7", name: "r7", embedded: false, exported: false, typ: $Int, tag: ""}]); + ptrType$16 = $ptrType(structType$1); + structType$2 = $structType("encoding/gob", [{prop: "r6", name: "r6", embedded: false, exported: false, typ: $Int, tag: ""}]); + ptrType$17 = $ptrType(structType$2); + structType$3 = $structType("encoding/gob", [{prop: "r5", name: "r5", embedded: false, exported: false, typ: $Int, tag: ""}]); + ptrType$18 = $ptrType(structType$3); + structType$4 = $structType("encoding/gob", [{prop: "r4", name: "r4", embedded: false, exported: false, typ: $Int, tag: ""}]); + ptrType$19 = $ptrType(structType$4); + structType$5 = $structType("encoding/gob", [{prop: "r3", name: "r3", embedded: false, exported: false, typ: $Int, tag: ""}]); + ptrType$20 = $ptrType(structType$5); + structType$6 = $structType("encoding/gob", [{prop: "r2", name: "r2", embedded: false, exported: false, typ: $Int, tag: ""}]); + ptrType$21 = $ptrType(structType$6); + structType$7 = $structType("encoding/gob", [{prop: "r1", name: "r1", embedded: false, exported: false, typ: $Int, tag: ""}]); + ptrType$22 = $ptrType(structType$7); + ptrType$23 = $ptrType(arrayType); + ptrType$24 = $ptrType(sliceType); + ptrType$25 = $ptrType(structType); + ptrType$26 = $ptrType(mapType); + ptrType$27 = $ptrType(gobEncoderType); + sliceType$2 = $sliceType($emptyInterface); + arrayType$1 = $arrayType($Uint8, 64); + ptrType$28 = $ptrType(fieldType); + sliceType$3 = $sliceType(ptrType$28); + ptrType$29 = $ptrType(wireType); + ptrType$30 = $ptrType(typeInfo); + mapType$1 = $mapType(reflect.Type, ptrType$30); + ptrType$31 = $ptrType(encEngine); + sliceType$4 = $sliceType($Int); + sliceType$5 = $sliceType($Int8); + sliceType$6 = $sliceType($Int16); + sliceType$7 = $sliceType($Int32); + sliceType$8 = $sliceType($Int64); + sliceType$9 = $sliceType($Uint); + sliceType$10 = $sliceType($Uint16); + sliceType$11 = $sliceType($Uint32); + sliceType$12 = $sliceType($Uint64); + sliceType$13 = $sliceType($Float32); + sliceType$14 = $sliceType($Float64); + sliceType$15 = $sliceType($Complex64); + sliceType$16 = $sliceType($Complex128); + sliceType$17 = $sliceType($Uintptr); + sliceType$18 = $sliceType($Bool); + sliceType$19 = $sliceType($String); + sliceType$20 = $sliceType(io.Writer); + ptrType$32 = $ptrType(encoderState); + ptrType$33 = $ptrType(Encoder); + ptrType$34 = $ptrType(encBuffer); + arrayType$2 = $arrayType($Uint8, 9); + ptrType$35 = $ptrType(encInstr); + ptrType$36 = $ptrType(encOp); + sliceType$21 = $sliceType(encInstr); + ptrType$37 = $ptrType($error); + ptrType$38 = $ptrType(decoderState); + ptrType$39 = $ptrType(Decoder); + ptrType$40 = $ptrType(decBuffer); + ptrType$41 = $ptrType($Uint8); + sliceType$22 = $sliceType(reflect.Value); + ptrType$42 = $ptrType(decOp); + ptrType$43 = $ptrType(decEngine); + sliceType$23 = $sliceType(decInstr); + ptrType$44 = $ptrType(ptrType$43); + ptrType$45 = $ptrType(sliceType$18); + ptrType$46 = $ptrType(sliceType$15); + ptrType$47 = $ptrType(sliceType$16); + ptrType$48 = $ptrType(sliceType$13); + ptrType$49 = $ptrType(sliceType$14); + ptrType$50 = $ptrType(sliceType$4); + ptrType$51 = $ptrType(sliceType$6); + ptrType$52 = $ptrType(sliceType$7); + ptrType$53 = $ptrType(sliceType$8); + ptrType$54 = $ptrType(sliceType$5); + ptrType$55 = $ptrType(sliceType$9); + ptrType$56 = $ptrType(sliceType$10); + ptrType$57 = $ptrType(sliceType$11); + ptrType$58 = $ptrType(sliceType$12); + ptrType$59 = $ptrType(sliceType$17); + mapType$2 = $mapType(typeId, $Bool); + ptrType$60 = $ptrType(CommonType); + mapType$3 = $mapType(reflect.Type, typeId); + mapType$4 = $mapType(reflect.Type, ptrType$42); + mapType$5 = $mapType(typeId, ptrType$42); + mapType$6 = $mapType(typeId, ptrType$29); + mapType$7 = $mapType(typeId, ptrType$44); + mapType$8 = $mapType(reflect.Type, mapType$7); + ptrType$61 = $ptrType(decInstr); + validUserType = function validUserType$1(rt) { + var {$24r, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, indir, indir$1, indir$2, indir$3, ok, ok$1, ok$2, ok$3, ok$4, pt, rt, slowpoke, ui, ui$1, ut, $s, $r, $c} = $restore(this, {rt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = userTypeCache.Load(rt); + ui = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return [$assertType(ui, ptrType), $ifaceNil]; + } + ut = new userTypeInfo.ptr($ifaceNil, $ifaceNil, 0, 0, 0, 0, 0); + ut.base = rt; + ut.user = rt; + slowpoke = ut.base; + /* while (true) { */ case 1: + pt = ut.base; + _r$22 = pt.Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* */ if (!((_r$22 === 22))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!((_r$22 === 22))) { */ case 3: + /* break; */ $s = 2; continue; + /* } */ case 4: + _r$23 = pt.Elem(); /* */ $s = 6; case 6: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + ut.base = _r$23; + /* */ if ($interfaceIsEqual(ut.base, slowpoke)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ($interfaceIsEqual(ut.base, slowpoke)) { */ case 7: + _r$24 = ut.base.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _r$25 = errors.New("can't represent recursive pointer type " + _r$24); /* */ $s = 10; case 10: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + $24r = [ptrType.nil, _r$25]; + $s = 11; case 11: return $24r; + /* } */ case 8: + /* */ if ((_r$26 = ut.indir % 2, _r$26 === _r$26 ? _r$26 : $throwRuntimeError("integer divide by zero")) === 0) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ((_r$26 = ut.indir % 2, _r$26 === _r$26 ? _r$26 : $throwRuntimeError("integer divide by zero")) === 0) { */ case 12: + _r$27 = slowpoke.Elem(); /* */ $s = 14; case 14: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + slowpoke = _r$27; + /* } */ case 13: + ut.indir = ut.indir + (1) >> 0; + $s = 1; continue; + case 2: + _r$28 = implementsInterface(ut.user, gobEncoderInterfaceType); /* */ $s = 15; case 15: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _tuple$1 = _r$28; + ok$1 = _tuple$1[0]; + indir = _tuple$1[1]; + /* */ if (ok$1) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (ok$1) { */ case 16: + _tmp = 1; + _tmp$1 = indir; + ut.externalEnc = _tmp; + ut.encIndir = _tmp$1; + $s = 18; continue; + /* } else { */ case 17: + _r$29 = implementsInterface(ut.user, binaryMarshalerInterfaceType); /* */ $s = 19; case 19: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + _tuple$2 = _r$29; + ok$2 = _tuple$2[0]; + indir$1 = _tuple$2[1]; + if (ok$2) { + _tmp$2 = 2; + _tmp$3 = indir$1; + ut.externalEnc = _tmp$2; + ut.encIndir = _tmp$3; + } + /* } */ case 18: + _r$30 = implementsInterface(ut.user, gobDecoderInterfaceType); /* */ $s = 20; case 20: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _tuple$3 = _r$30; + ok$3 = _tuple$3[0]; + indir$2 = _tuple$3[1]; + /* */ if (ok$3) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (ok$3) { */ case 21: + _tmp$4 = 1; + _tmp$5 = indir$2; + ut.externalDec = _tmp$4; + ut.decIndir = _tmp$5; + $s = 23; continue; + /* } else { */ case 22: + _r$31 = implementsInterface(ut.user, binaryUnmarshalerInterfaceType); /* */ $s = 24; case 24: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + _tuple$4 = _r$31; + ok$4 = _tuple$4[0]; + indir$3 = _tuple$4[1]; + if (ok$4) { + _tmp$6 = 2; + _tmp$7 = indir$3; + ut.externalDec = _tmp$6; + ut.decIndir = _tmp$7; + } + /* } */ case 23: + _tuple$5 = userTypeCache.LoadOrStore(rt, ut); + ui$1 = _tuple$5[0]; + $s = -1; return [$assertType(ui$1, ptrType), $ifaceNil]; + /* */ } return; } var $f = {$blk: validUserType$1, $c: true, $r, $24r, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, indir, indir$1, indir$2, indir$3, ok, ok$1, ok$2, ok$3, ok$4, pt, rt, slowpoke, ui, ui$1, ut, $s};return $f; + }; + implementsInterface = function implementsInterface$1(typ, gobEncDecType) { + var {_r$22, _r$23, _r$24, _r$25, _r$26, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, gobEncDecType, indir, p, rt, success, typ, $s, $r, $c} = $restore(this, {typ, gobEncDecType}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + success = false; + indir = 0; + if ($interfaceIsEqual(typ, $ifaceNil)) { + $s = -1; return [success, indir]; + } + rt = typ; + /* while (true) { */ case 1: + _r$22 = rt.Implements(gobEncDecType); /* */ $s = 5; case 5: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* */ if (_r$22) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$22) { */ case 3: + _tmp = true; + _tmp$1 = indir; + success = _tmp; + indir = _tmp$1; + $s = -1; return [success, indir]; + /* } */ case 4: + p = rt; + _r$23 = p.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + /* */ if (_r$23 === 22) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$23 === 22) { */ case 6: + indir = indir + (1) << 24 >> 24; + if (indir > 100) { + _tmp$2 = false; + _tmp$3 = 0; + success = _tmp$2; + indir = _tmp$3; + $s = -1; return [success, indir]; + } + _r$24 = p.Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + rt = _r$24; + /* continue; */ $s = 1; continue; + /* } */ case 7: + /* break; */ $s = 2; continue; + case 2: + _r$25 = typ.Kind(); /* */ $s = 12; case 12: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + /* */ if (!((_r$25 === 22))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!((_r$25 === 22))) { */ case 10: + _r$26 = reflect.PointerTo(typ).Implements(gobEncDecType); /* */ $s = 15; case 15: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + /* */ if (_r$26) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_r$26) { */ case 13: + _tmp$4 = true; + _tmp$5 = -1; + success = _tmp$4; + indir = _tmp$5; + $s = -1; return [success, indir]; + /* } */ case 14: + /* } */ case 11: + _tmp$6 = false; + _tmp$7 = 0; + success = _tmp$6; + indir = _tmp$7; + $s = -1; return [success, indir]; + /* */ } return; } var $f = {$blk: implementsInterface$1, $c: true, $r, _r$22, _r$23, _r$24, _r$25, _r$26, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, gobEncDecType, indir, p, rt, success, typ, $s};return $f; + }; + userType = function userType$1(rt) { + var {_r$22, _tuple, err, rt, ut, $s, $r, $c} = $restore(this, {rt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = validUserType(rt); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + ut = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + error_(err); + } + $s = -1; return ut; + /* */ } return; } var $f = {$blk: userType$1, $c: true, $r, _r$22, _tuple, err, rt, ut, $s};return $f; + }; + setTypeId = function setTypeId$1(typ) { + var {_key, _r$22, typ, $s, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = typ.id(); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* */ if (!((_r$22 === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r$22 === 0))) { */ case 1: + $s = -1; return; + /* } */ case 2: + nextId = nextId + (1) >> 0; + $r = typ.setId(nextId); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _key = nextId; (idToType || $throwRuntimeError("assignment to entry in nil map")).set(typeId.keyFor(_key), { k: _key, v: typ }); + $s = -1; return; + /* */ } return; } var $f = {$blk: setTypeId$1, $c: true, $r, _key, _r$22, typ, $s};return $f; + }; + typeId.prototype.gobType = function gobType$1() { + var _entry, t; + t = this.$val; + if (t === 0) { + return $ifaceNil; + } + return (_entry = $mapIndex(idToType,typeId.keyFor(t)), _entry !== undefined ? _entry.v : $ifaceNil); + }; + $ptrType(typeId).prototype.gobType = function(...$args) { return new typeId(this.$get()).gobType(...$args); }; + typeId.prototype.string = function string() { + var {$24r, _r$22, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this.$val; + if ($interfaceIsEqual(new typeId(t).gobType(), $ifaceNil)) { + $s = -1; return ""; + } + _r$22 = new typeId(t).gobType().string(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $24r = _r$22; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: string, $c: true, $r, $24r, _r$22, t, $s};return $f; + }; + $ptrType(typeId).prototype.string = function(...$args) { return new typeId(this.$get()).string(...$args); }; + typeId.prototype.name = function name() { + var {$24r, _r$22, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this.$val; + if ($interfaceIsEqual(new typeId(t).gobType(), $ifaceNil)) { + $s = -1; return ""; + } + _r$22 = new typeId(t).gobType().name(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $24r = _r$22; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: name, $c: true, $r, $24r, _r$22, t, $s};return $f; + }; + $ptrType(typeId).prototype.name = function(...$args) { return new typeId(this.$get()).name(...$args); }; + $ptrType(CommonType).prototype.id = function id() { + var t; + t = this; + return t.Id; + }; + $ptrType(CommonType).prototype.setId = function setId(id$1) { + var id$1, t; + t = this; + t.Id = id$1; + }; + $ptrType(CommonType).prototype.string = function string$1() { + var t; + t = this; + return t.Name; + }; + $ptrType(CommonType).prototype.safeString = function safeString(seen) { + var seen, t; + t = this; + return t.Name; + }; + $ptrType(CommonType).prototype.name = function name$1() { + var t; + t = this; + return t.Name; + }; + init = function init$2() { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _entry, _i, _key, _key$1, _keys, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _ref, _size, k, v, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = checkId(16, tWireType); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$22 = mustGetTypeInfo(reflect.TypeOf((x$2 = new arrayType.ptr(new CommonType.ptr("", 0), 0, 0), new x$2.constructor.elem(x$2)))); /* */ $s = 2; case 2: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg = _r$22.id; + $r = checkId(17, _arg); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$23 = mustGetTypeInfo(reflect.TypeOf((x$3 = new CommonType.ptr("", 0), new x$3.constructor.elem(x$3)))); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$1 = _r$23.id; + $r = checkId(18, _arg$1); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$24 = mustGetTypeInfo(reflect.TypeOf((x$4 = new sliceType.ptr(new CommonType.ptr("", 0), 0), new x$4.constructor.elem(x$4)))); /* */ $s = 6; case 6: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _arg$2 = _r$24.id; + $r = checkId(19, _arg$2); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$25 = mustGetTypeInfo(reflect.TypeOf((x$5 = new structType.ptr(new CommonType.ptr("", 0), sliceType$3.nil), new x$5.constructor.elem(x$5)))); /* */ $s = 8; case 8: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _arg$3 = _r$25.id; + $r = checkId(20, _arg$3); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$26 = mustGetTypeInfo(reflect.TypeOf((x$6 = new fieldType.ptr("", 0), new x$6.constructor.elem(x$6)))); /* */ $s = 10; case 10: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _arg$4 = _r$26.id; + $r = checkId(21, _arg$4); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$27 = mustGetTypeInfo(reflect.TypeOf((x$7 = new mapType.ptr(new CommonType.ptr("", 0), 0, 0), new x$7.constructor.elem(x$7)))); /* */ $s = 12; case 12: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _arg$5 = _r$27.id; + $r = checkId(23, _arg$5); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + builtinIdToType = new $global.Map(); + _ref = idToType; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + k = _entry.k; + v = _entry.v; + _key$1 = k; (builtinIdToType || $throwRuntimeError("assignment to entry in nil map")).set(typeId.keyFor(_key$1), { k: _key$1, v: v }); + _i++; + } + /* */ if (nextId > 64) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (nextId > 64) { */ case 14: + _r$28 = fmt.Sprintln(new sliceType$2([new $String("nextId too large:"), new typeId(nextId)])); /* */ $s = 16; case 16: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + $panic(new $String(_r$28)); + /* } */ case 15: + nextId = 64; + $r = registerBasics(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$29 = userType(reflect.TypeOf((ptrType$29.nil))); /* */ $s = 18; case 18: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + wireTypeUserInfo = _r$29; + $s = -1; return; + /* */ } return; } var $f = {$blk: init$2, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _entry, _i, _key, _key$1, _keys, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _ref, _size, k, v, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + newArrayType = function newArrayType$1(name$2) { + var a, name$2; + a = new arrayType.ptr($clone(new CommonType.ptr(name$2, 0), CommonType), 0, 0); + return a; + }; + $ptrType(arrayType).prototype.init = function init$3(elem, len) { + var {_r$22, a, elem, len, $s, $r, $c} = $restore(this, {elem, len}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = this; + $r = setTypeId(a); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$22 = elem.id(); /* */ $s = 2; case 2: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + a.Elem = _r$22; + a.Len = len; + $s = -1; return; + /* */ } return; } var $f = {$blk: init$3, $c: true, $r, _r$22, a, elem, len, $s};return $f; + }; + $ptrType(arrayType).prototype.safeString = function safeString$1(seen) { + var {$24r, _arg, _arg$1, _entry, _key, _r$22, _r$23, a, seen, $s, $r, $c} = $restore(this, {seen}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = this; + if ((_entry = $mapIndex(seen,typeId.keyFor(a.CommonType.Id)), _entry !== undefined ? _entry.v : false)) { + $s = -1; return a.CommonType.Name; + } + _key = a.CommonType.Id; (seen || $throwRuntimeError("assignment to entry in nil map")).set(typeId.keyFor(_key), { k: _key, v: true }); + _arg = new $Int(a.Len); + _r$22 = new typeId(a.Elem).gobType().safeString(seen); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$22); + _r$23 = fmt.Sprintf("[%d]%s", new sliceType$2([_arg, _arg$1])); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $24r = _r$23; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: safeString$1, $c: true, $r, $24r, _arg, _arg$1, _entry, _key, _r$22, _r$23, a, seen, $s};return $f; + }; + $ptrType(arrayType).prototype.string = function string$2() { + var {$24r, _r$22, a, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = this; + _r$22 = a.safeString(new $global.Map()); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $24r = _r$22; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: string$2, $c: true, $r, $24r, _r$22, a, $s};return $f; + }; + newGobEncoderType = function newGobEncoderType$1(name$2) { + var {g, name$2, $s, $r, $c} = $restore(this, {name$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + g = new gobEncoderType.ptr($clone(new CommonType.ptr(name$2, 0), CommonType)); + $r = setTypeId(g); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return g; + /* */ } return; } var $f = {$blk: newGobEncoderType$1, $c: true, $r, g, name$2, $s};return $f; + }; + $ptrType(gobEncoderType).prototype.safeString = function safeString$2(seen) { + var g, seen; + g = this; + return g.CommonType.Name; + }; + $ptrType(gobEncoderType).prototype.string = function string$3() { + var g; + g = this; + return g.CommonType.Name; + }; + newMapType = function newMapType$1(name$2) { + var m, name$2; + m = new mapType.ptr($clone(new CommonType.ptr(name$2, 0), CommonType), 0, 0); + return m; + }; + $ptrType(mapType).prototype.init = function init$4(key, elem) { + var {_r$22, _r$23, elem, key, m, $s, $r, $c} = $restore(this, {key, elem}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + $r = setTypeId(m); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$22 = key.id(); /* */ $s = 2; case 2: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + m.Key = _r$22; + _r$23 = elem.id(); /* */ $s = 3; case 3: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + m.Elem = _r$23; + $s = -1; return; + /* */ } return; } var $f = {$blk: init$4, $c: true, $r, _r$22, _r$23, elem, key, m, $s};return $f; + }; + $ptrType(mapType).prototype.safeString = function safeString$3(seen) { + var {$24r, _entry, _key, _r$22, _r$23, _r$24, elem, key, m, seen, $s, $r, $c} = $restore(this, {seen}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + if ((_entry = $mapIndex(seen,typeId.keyFor(m.CommonType.Id)), _entry !== undefined ? _entry.v : false)) { + $s = -1; return m.CommonType.Name; + } + _key = m.CommonType.Id; (seen || $throwRuntimeError("assignment to entry in nil map")).set(typeId.keyFor(_key), { k: _key, v: true }); + _r$22 = new typeId(m.Key).gobType().safeString(seen); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + key = _r$22; + _r$23 = new typeId(m.Elem).gobType().safeString(seen); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + elem = _r$23; + _r$24 = fmt.Sprintf("map[%s]%s", new sliceType$2([new $String(key), new $String(elem)])); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: safeString$3, $c: true, $r, $24r, _entry, _key, _r$22, _r$23, _r$24, elem, key, m, seen, $s};return $f; + }; + $ptrType(mapType).prototype.string = function string$4() { + var {$24r, _r$22, m, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + _r$22 = m.safeString(new $global.Map()); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $24r = _r$22; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: string$4, $c: true, $r, $24r, _r$22, m, $s};return $f; + }; + newSliceType = function newSliceType$1(name$2) { + var name$2, s; + s = new sliceType.ptr($clone(new CommonType.ptr(name$2, 0), CommonType), 0); + return s; + }; + $ptrType(sliceType).prototype.init = function init$5(elem) { + var {_r$22, _r$23, elem, s, $s, $r, $c} = $restore(this, {elem}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + $r = setTypeId(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$22 = elem.id(); /* */ $s = 4; case 4: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* */ if (_r$22 === 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_r$22 === 0) { */ case 2: + $r = setTypeId(elem); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + _r$23 = elem.id(); /* */ $s = 6; case 6: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + s.Elem = _r$23; + $s = -1; return; + /* */ } return; } var $f = {$blk: init$5, $c: true, $r, _r$22, _r$23, elem, s, $s};return $f; + }; + $ptrType(sliceType).prototype.safeString = function safeString$4(seen) { + var {$24r, _arg, _entry, _key, _r$22, _r$23, s, seen, $s, $r, $c} = $restore(this, {seen}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + if ((_entry = $mapIndex(seen,typeId.keyFor(s.CommonType.Id)), _entry !== undefined ? _entry.v : false)) { + $s = -1; return s.CommonType.Name; + } + _key = s.CommonType.Id; (seen || $throwRuntimeError("assignment to entry in nil map")).set(typeId.keyFor(_key), { k: _key, v: true }); + _r$22 = new typeId(s.Elem).gobType().safeString(seen); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg = new $String(_r$22); + _r$23 = fmt.Sprintf("[]%s", new sliceType$2([_arg])); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $24r = _r$23; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: safeString$4, $c: true, $r, $24r, _arg, _entry, _key, _r$22, _r$23, s, seen, $s};return $f; + }; + $ptrType(sliceType).prototype.string = function string$5() { + var {$24r, _r$22, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r$22 = s.safeString(new $global.Map()); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $24r = _r$22; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: string$5, $c: true, $r, $24r, _r$22, s, $s};return $f; + }; + $ptrType(structType).prototype.safeString = function safeString$5(seen) { + var {_arg, _arg$1, _entry, _i, _key, _r$22, _r$23, _ref, _tuple, f, ok, s, seen, str, $s, $r, $c} = $restore(this, {seen}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + if (s === ptrType$25.nil) { + $s = -1; return ""; + } + _tuple = (_entry = $mapIndex(seen,typeId.keyFor(s.CommonType.Id)), _entry !== undefined ? [_entry.v, true] : [false, false]); + ok = _tuple[1]; + if (ok) { + $s = -1; return s.CommonType.Name; + } + _key = s.CommonType.Id; (seen || $throwRuntimeError("assignment to entry in nil map")).set(typeId.keyFor(_key), { k: _key, v: true }); + str = s.CommonType.Name + " = struct { "; + _ref = s.Field; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _arg = new $String(f.Name); + _r$22 = new typeId(f.Id).gobType().safeString(seen); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$22); + _r$23 = fmt.Sprintf("%s %s; ", new sliceType$2([_arg, _arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + str = str + (_r$23); + _i++; + $s = 1; continue; + case 2: + str = str + ("}"); + $s = -1; return str; + /* */ } return; } var $f = {$blk: safeString$5, $c: true, $r, _arg, _arg$1, _entry, _i, _key, _r$22, _r$23, _ref, _tuple, f, ok, s, seen, str, $s};return $f; + }; + $ptrType(structType).prototype.string = function string$6() { + var {$24r, _r$22, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r$22 = s.safeString(new $global.Map()); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $24r = _r$22; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: string$6, $c: true, $r, $24r, _r$22, s, $s};return $f; + }; + newStructType = function newStructType$1(name$2) { + var {name$2, s, $s, $r, $c} = $restore(this, {name$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = new structType.ptr($clone(new CommonType.ptr(name$2, 0), CommonType), sliceType$3.nil); + $r = setTypeId(s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return s; + /* */ } return; } var $f = {$blk: newStructType$1, $c: true, $r, name$2, s, $s};return $f; + }; + newTypeObject = function newTypeObject$1(name$2, ut, rt) { + var {$24r, $24r$1, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _key, _key$1, _key$2, _key$3, _key$4, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, at, err, err$1, f, gt, i, mt, name$2, rt, st, st$1, t, t$1, tname, typ, type0, type1, ut, $s, $deferred, $r, $c} = $restore(this, {name$2, ut, rt}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + err = [err]; + rt = [rt]; + /* */ if (!((ut.externalEnc === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((ut.externalEnc === 0))) { */ case 1: + _r$22 = newGobEncoderType(name$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $24r = [_r$22, $ifaceNil]; + $s = 4; case 4: return $24r; + /* } */ case 2: + err[0] = $ifaceNil; + _tmp = $ifaceNil; + _tmp$1 = $ifaceNil; + type0 = _tmp; + type1 = _tmp$1; + $deferred.push([(function(err, rt) { return function newTypeObject·func1() { + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + $mapDelete(types, reflect.Type.keyFor(rt[0])); + } + }; })(err, rt), []]); + t = rt[0]; + _r$23 = t.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _1 = _r$23; + /* */ if (_1 === (1)) { $s = 7; continue; } + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 8; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 9; continue; } + /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 10; continue; } + /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 11; continue; } + /* */ if (_1 === (24)) { $s = 12; continue; } + /* */ if (_1 === (20)) { $s = 13; continue; } + /* */ if (_1 === (17)) { $s = 14; continue; } + /* */ if (_1 === (21)) { $s = 15; continue; } + /* */ if (_1 === (23)) { $s = 16; continue; } + /* */ if (_1 === (25)) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_1 === (1)) { */ case 7: + $s = -1; return [new typeId(tBool).gobType(), $ifaceNil]; + /* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 8: + $s = -1; return [new typeId(tInt).gobType(), $ifaceNil]; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 9: + $s = -1; return [new typeId(tUint).gobType(), $ifaceNil]; + /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 10: + $s = -1; return [new typeId(tFloat).gobType(), $ifaceNil]; + /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 11: + $s = -1; return [new typeId(tComplex).gobType(), $ifaceNil]; + /* } else if (_1 === (24)) { */ case 12: + $s = -1; return [new typeId(tString).gobType(), $ifaceNil]; + /* } else if (_1 === (20)) { */ case 13: + $s = -1; return [new typeId(tInterface).gobType(), $ifaceNil]; + /* } else if (_1 === (17)) { */ case 14: + at = newArrayType(name$2); + _key = rt[0]; (types || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key), { k: _key, v: at }); + _r$24 = t.Elem(); /* */ $s = 20; case 20: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _arg = _r$24; + _r$25 = getBaseType("", _arg); /* */ $s = 21; case 21: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _tuple = _r$25; + type0 = _tuple[0]; + err[0] = _tuple[1]; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + $s = -1; return [$ifaceNil, err[0]]; + } + _arg$1 = type0; + _r$26 = t.Len(); /* */ $s = 22; case 22: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _arg$2 = _r$26; + $r = at.init(_arg$1, _arg$2); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [at, $ifaceNil]; + /* } else if (_1 === (21)) { */ case 15: + mt = newMapType(name$2); + _key$1 = rt[0]; (types || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key$1), { k: _key$1, v: mt }); + _r$27 = t.Key(); /* */ $s = 24; case 24: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _arg$3 = _r$27; + _r$28 = getBaseType("", _arg$3); /* */ $s = 25; case 25: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _tuple$1 = _r$28; + type0 = _tuple$1[0]; + err[0] = _tuple$1[1]; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + $s = -1; return [$ifaceNil, err[0]]; + } + _r$29 = t.Elem(); /* */ $s = 26; case 26: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + _arg$4 = _r$29; + _r$30 = getBaseType("", _arg$4); /* */ $s = 27; case 27: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _tuple$2 = _r$30; + type1 = _tuple$2[0]; + err[0] = _tuple$2[1]; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + $s = -1; return [$ifaceNil, err[0]]; + } + $r = mt.init(type0, type1); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [mt, $ifaceNil]; + /* } else if (_1 === (23)) { */ case 16: + _r$31 = t.Elem(); /* */ $s = 31; case 31: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + _r$32 = _r$31.Kind(); /* */ $s = 32; case 32: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + /* */ if (_r$32 === 8) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (_r$32 === 8) { */ case 29: + $s = -1; return [new typeId(tBytes).gobType(), $ifaceNil]; + /* } */ case 30: + st = newSliceType(name$2); + _key$2 = rt[0]; (types || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key$2), { k: _key$2, v: st }); + _r$33 = t.Elem(); /* */ $s = 33; case 33: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + _r$34 = _r$33.Name(); /* */ $s = 34; case 34: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + _arg$5 = _r$34; + _r$35 = t.Elem(); /* */ $s = 35; case 35: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } + _arg$6 = _r$35; + _r$36 = getBaseType(_arg$5, _arg$6); /* */ $s = 36; case 36: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } + _tuple$3 = _r$36; + type0 = _tuple$3[0]; + err[0] = _tuple$3[1]; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + $s = -1; return [$ifaceNil, err[0]]; + } + $r = st.init(type0); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [st, $ifaceNil]; + /* } else if (_1 === (25)) { */ case 17: + _r$37 = newStructType(name$2); /* */ $s = 38; case 38: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; } + st$1 = _r$37; + _key$3 = rt[0]; (types || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key$3), { k: _key$3, v: st$1 }); + _key$4 = st$1.CommonType.id(); (idToType || $throwRuntimeError("assignment to entry in nil map")).set(typeId.keyFor(_key$4), { k: _key$4, v: st$1 }); + i = 0; + /* while (true) { */ case 39: + _r$38 = t.NumField(); /* */ $s = 41; case 41: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; } + /* if (!(i < _r$38)) { break; } */ if(!(i < _r$38)) { $s = 40; continue; } + f = [f]; + _r$39 = t.Field(i); /* */ $s = 42; case 42: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; } + f[0] = $clone(_r$39, reflect.StructField); + _r$40 = isSent(f[0]); /* */ $s = 45; case 45: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; } + /* */ if (!_r$40) { $s = 43; continue; } + /* */ $s = 44; continue; + /* if (!_r$40) { */ case 43: + i = i + (1) >> 0; + /* continue; */ $s = 39; continue; + /* } */ case 44: + _r$41 = userType(f[0].Type); /* */ $s = 46; case 46: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; } + typ = _r$41.base; + _r$42 = typ.Name(); /* */ $s = 47; case 47: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; } + tname = _r$42; + /* */ if (tname === "") { $s = 48; continue; } + /* */ $s = 49; continue; + /* if (tname === "") { */ case 48: + _r$43 = userType(f[0].Type); /* */ $s = 50; case 50: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; } + t$1 = _r$43.base; + _r$44 = t$1.String(); /* */ $s = 51; case 51: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; } + tname = _r$44; + /* } */ case 49: + _r$45 = getBaseType(tname, f[0].Type); /* */ $s = 52; case 52: if($c) { $c = false; _r$45 = _r$45.$blk(); } if (_r$45 && _r$45.$blk !== undefined) { break s; } + _tuple$4 = _r$45; + gt = _tuple$4[0]; + err$1 = _tuple$4[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [$ifaceNil, err$1]; + } + _r$46 = gt.id(); /* */ $s = 55; case 55: if($c) { $c = false; _r$46 = _r$46.$blk(); } if (_r$46 && _r$46.$blk !== undefined) { break s; } + /* */ if (_r$46 === 0) { $s = 53; continue; } + /* */ $s = 54; continue; + /* if (_r$46 === 0) { */ case 53: + $r = setTypeId(gt); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 54: + _r$47 = gt.id(); /* */ $s = 57; case 57: if($c) { $c = false; _r$47 = _r$47.$blk(); } if (_r$47 && _r$47.$blk !== undefined) { break s; } + st$1.Field = $append(st$1.Field, new fieldType.ptr(f[0].Name, _r$47)); + i = i + (1) >> 0; + $s = 39; continue; + case 40: + $s = -1; return [st$1, $ifaceNil]; + /* } else { */ case 18: + _r$48 = rt[0].String(); /* */ $s = 58; case 58: if($c) { $c = false; _r$48 = _r$48.$blk(); } if (_r$48 && _r$48.$blk !== undefined) { break s; } + _r$49 = errors.New("gob NewTypeObject can't handle type: " + _r$48); /* */ $s = 59; case 59: if($c) { $c = false; _r$49 = _r$49.$blk(); } if (_r$49 && _r$49.$blk !== undefined) { break s; } + $24r$1 = [$ifaceNil, _r$49]; + $s = 60; case 60: return $24r$1; + /* } */ case 19: + case 5: + $s = -1; return [$ifaceNil, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: newTypeObject$1, $c: true, $r, $24r, $24r$1, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _key, _key$1, _key$2, _key$3, _key$4, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, at, err, err$1, f, gt, i, mt, name$2, rt, st, st$1, t, t$1, tname, typ, type0, type1, ut, $s, $deferred};return $f; } } + }; + isExported = function isExported$1(name$2) { + var _tuple, name$2, rune; + _tuple = utf8.DecodeRuneInString(name$2); + rune = _tuple[0]; + return unicode.IsUpper(rune); + }; + isSent = function isSent$1(field) { + var {_r$22, _r$23, _r$24, _r$25, _v, field, typ, $s, $r, $c} = $restore(this, {field}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!isExported(field.Name)) { + $s = -1; return false; + } + typ = field.Type; + /* while (true) { */ case 1: + _r$22 = typ.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* if (!(_r$22 === 22)) { break; } */ if(!(_r$22 === 22)) { $s = 2; continue; } + _r$23 = typ.Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + typ = _r$23; + $s = 1; continue; + case 2: + _r$24 = typ.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + if (_r$24 === 18) { _v = true; $s = 7; continue s; } + _r$25 = typ.Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _v = _r$25 === 19; case 7: + /* */ if (_v) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_v) { */ case 5: + $s = -1; return false; + /* } */ case 6: + $s = -1; return true; + /* */ } return; } var $f = {$blk: isSent$1, $c: true, $r, _r$22, _r$23, _r$24, _r$25, _v, field, typ, $s};return $f; + }; + getBaseType = function getBaseType$1(name$2, rt) { + var {$24r, _r$22, _r$23, name$2, rt, ut, $s, $r, $c} = $restore(this, {name$2, rt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = userType(rt); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + ut = _r$22; + _r$23 = getType(name$2, ut, ut.base); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $24r = _r$23; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: getBaseType$1, $c: true, $r, $24r, _r$22, _r$23, name$2, rt, ut, $s};return $f; + }; + getType = function getType$1(name$2, ut, rt) { + var {_entry, _key, _r$22, _tuple, _tuple$1, err, name$2, present, rt, typ, ut, $s, $r, $c} = $restore(this, {name$2, ut, rt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = (_entry = $mapIndex(types,reflect.Type.keyFor(rt)), _entry !== undefined ? [_entry.v, true] : [$ifaceNil, false]); + typ = _tuple[0]; + present = _tuple[1]; + if (present) { + $s = -1; return [typ, $ifaceNil]; + } + _r$22 = newTypeObject(name$2, ut, rt); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple$1 = _r$22; + typ = _tuple$1[0]; + err = _tuple$1[1]; + if ($interfaceIsEqual(err, $ifaceNil)) { + _key = rt; (types || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key), { k: _key, v: typ }); + } + $s = -1; return [typ, err]; + /* */ } return; } var $f = {$blk: getType$1, $c: true, $r, _entry, _key, _r$22, _tuple, _tuple$1, err, name$2, present, rt, typ, ut, $s};return $f; + }; + checkId = function checkId$1(want, got) { + var {_r$22, _r$23, _r$24, _r$25, got, want, $s, $r, $c} = $restore(this, {want, got}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!((want === got))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((want === got))) { */ case 1: + _r$22 = fmt.Fprintf(os.Stderr, "checkId: %d should be %d\n", new sliceType$2([new $Int(((got >> 0))), new $Int(((want >> 0)))])); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$22; + _r$23 = new typeId(got).name(); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = new typeId(got).string(); /* */ $s = 5; case 5: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _r$25 = new typeId(want).string(); /* */ $s = 6; case 6: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + $panic(new $String("bootstrap type wrong id: " + _r$23 + " " + _r$24 + " not " + _r$25)); + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: checkId$1, $c: true, $r, _r$22, _r$23, _r$24, _r$25, got, want, $s};return $f; + }; + bootstrapType = function bootstrapType$1(name$2, e, expect) { + var {_entry, _key, _r$22, _r$23, _r$24, _tuple, e, expect, name$2, present, rt, typ, $s, $r, $c} = $restore(this, {name$2, e, expect}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = reflect.TypeOf(e).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + rt = _r$22; + _tuple = (_entry = $mapIndex(types,reflect.Type.keyFor(rt)), _entry !== undefined ? [_entry.v, true] : [$ifaceNil, false]); + present = _tuple[1]; + /* */ if (present) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (present) { */ case 2: + _r$23 = rt.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $panic(new $String("bootstrap type already present: " + name$2 + ", " + _r$23)); + /* } */ case 3: + typ = new CommonType.ptr(name$2, 0); + _key = rt; (types || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key), { k: _key, v: typ }); + $r = setTypeId(typ); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = checkId(expect, nextId); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$24 = userType(rt); /* */ $s = 7; case 7: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _r$24; + $s = -1; return nextId; + /* */ } return; } var $f = {$blk: bootstrapType$1, $c: true, $r, _entry, _key, _r$22, _r$23, _r$24, _tuple, e, expect, name$2, present, rt, typ, $s};return $f; + }; + $ptrType(wireType).prototype.string = function string$7() { + var w; + w = this; + if (w === ptrType$29.nil) { + return "unknown type"; + } + if (!(w.ArrayT === ptrType$23.nil)) { + return w.ArrayT.CommonType.Name; + } else if (!(w.SliceT === ptrType$24.nil)) { + return w.SliceT.CommonType.Name; + } else if (!(w.StructT === ptrType$25.nil)) { + return w.StructT.CommonType.Name; + } else if (!(w.MapT === ptrType$26.nil)) { + return w.MapT.CommonType.Name; + } else if (!(w.GobEncoderT === ptrType$27.nil)) { + return w.GobEncoderT.CommonType.Name; + } else if (!(w.BinaryMarshalerT === ptrType$27.nil)) { + return w.BinaryMarshalerT.CommonType.Name; + } else if (!(w.TextMarshalerT === ptrType$27.nil)) { + return w.TextMarshalerT.CommonType.Name; + } + return "unknown type"; + }; + lookupTypeInfo = function lookupTypeInfo$1(rt) { + var _entry, _tuple, m, rt; + _tuple = $assertType(typeInfoMap.Load(), mapType$1, true); + m = _tuple[0]; + return (_entry = $mapIndex(m,reflect.Type.keyFor(rt)), _entry !== undefined ? _entry.v : ptrType$30.nil); + }; + getTypeInfo = function getTypeInfo$1(ut) { + var {$24r, _r$22, info, rt, ut, $s, $r, $c} = $restore(this, {ut}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rt = ut.base; + if (!((ut.externalEnc === 0))) { + rt = ut.user; + } + info = lookupTypeInfo(rt); + if (!(info === ptrType$30.nil)) { + $s = -1; return [info, $ifaceNil]; + } + _r$22 = buildTypeInfo(ut, rt); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $24r = _r$22; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: getTypeInfo$1, $c: true, $r, $24r, _r$22, info, rt, ut, $s};return $f; + }; + buildTypeInfo = function buildTypeInfo$1(ut, rt) { + var {_1, _2, _entry, _i, _key, _key$1, _key$2, _keys, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _ref, _size, _tuple, _tuple$1, _tuple$2, err, err$1, gt, gt$1, info, info$1, k, m, newm, rt, t, typ, userType$2, ut, v, $s, $deferred, $r, $c} = $restore(this, {ut, rt}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + typeLock.Lock(); + $deferred.push([$methodVal(typeLock, "Unlock"), []]); + info = lookupTypeInfo(rt); + if (!(info === ptrType$30.nil)) { + $s = -1; return [info, $ifaceNil]; + } + _r$22 = rt.Name(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$23 = getBaseType(_r$22, rt); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _tuple = _r$23; + gt = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$30.nil, err]; + } + _r$24 = gt.id(); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + info$1 = new typeInfo.ptr(_r$24, new nosync.Mutex.ptr(false, false, false, false, 0), new atomic.Pointer[0 /* encoding/gob.encEngine */].ptr(ptrType$31.nil), ptrType$29.nil); + /* */ if (!((ut.externalEnc === 0))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!((ut.externalEnc === 0))) { */ case 4: + _r$25 = rt.Name(); /* */ $s = 7; case 7: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$26 = getType(_r$25, ut, rt); /* */ $s = 8; case 8: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _tuple$1 = _r$26; + userType$2 = _tuple$1[0]; + err$1 = _tuple$1[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$30.nil, err$1]; + } + _r$27 = userType$2.id(); /* */ $s = 9; case 9: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _r$28 = new typeId(_r$27).gobType(); /* */ $s = 10; case 10: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + gt$1 = $assertType(_r$28, ptrType$27); + _1 = ut.externalEnc; + if (_1 === (1)) { + info$1.wire = new wireType.ptr(ptrType$23.nil, ptrType$24.nil, ptrType$25.nil, ptrType$26.nil, gt$1, ptrType$27.nil, ptrType$27.nil); + } else if (_1 === (2)) { + info$1.wire = new wireType.ptr(ptrType$23.nil, ptrType$24.nil, ptrType$25.nil, ptrType$26.nil, ptrType$27.nil, gt$1, ptrType$27.nil); + } else if (_1 === (3)) { + info$1.wire = new wireType.ptr(ptrType$23.nil, ptrType$24.nil, ptrType$25.nil, ptrType$26.nil, ptrType$27.nil, ptrType$27.nil, gt$1); + } + rt = ut.user; + $s = 6; continue; + /* } else { */ case 5: + t = new typeId(info$1.id).gobType(); + typ = rt; + _r$29 = typ.Kind(); /* */ $s = 12; case 12: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + _2 = _r$29; + /* */ if (_2 === (17)) { $s = 13; continue; } + /* */ if (_2 === (21)) { $s = 14; continue; } + /* */ if (_2 === (23)) { $s = 15; continue; } + /* */ if (_2 === (25)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_2 === (17)) { */ case 13: + info$1.wire = new wireType.ptr($assertType(t, ptrType$23), ptrType$24.nil, ptrType$25.nil, ptrType$26.nil, ptrType$27.nil, ptrType$27.nil, ptrType$27.nil); + $s = 17; continue; + /* } else if (_2 === (21)) { */ case 14: + info$1.wire = new wireType.ptr(ptrType$23.nil, ptrType$24.nil, ptrType$25.nil, $assertType(t, ptrType$26), ptrType$27.nil, ptrType$27.nil, ptrType$27.nil); + $s = 17; continue; + /* } else if (_2 === (23)) { */ case 15: + _r$30 = typ.Elem(); /* */ $s = 20; case 20: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _r$31 = _r$30.Kind(); /* */ $s = 21; case 21: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + /* */ if (!((_r$31 === 8))) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!((_r$31 === 8))) { */ case 18: + info$1.wire = new wireType.ptr(ptrType$23.nil, $assertType(t, ptrType$24), ptrType$25.nil, ptrType$26.nil, ptrType$27.nil, ptrType$27.nil, ptrType$27.nil); + /* } */ case 19: + $s = 17; continue; + /* } else if (_2 === (25)) { */ case 16: + info$1.wire = new wireType.ptr(ptrType$23.nil, ptrType$24.nil, $assertType(t, ptrType$25), ptrType$26.nil, ptrType$27.nil, ptrType$27.nil, ptrType$27.nil); + /* } */ case 17: + case 11: + /* } */ case 6: + newm = new $global.Map(); + _tuple$2 = $assertType(typeInfoMap.Load(), mapType$1, true); + m = _tuple$2[0]; + _ref = m; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + k = _entry.k; + v = _entry.v; + _key$1 = k; (newm || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key$1), { k: _key$1, v: v }); + _i++; + } + _key$2 = rt; (newm || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key$2), { k: _key$2, v: info$1 }); + typeInfoMap.Store(new mapType$1(newm)); + $s = -1; return [info$1, $ifaceNil]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$30.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: buildTypeInfo$1, $c: true, $r, _1, _2, _entry, _i, _key, _key$1, _key$2, _keys, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _ref, _size, _tuple, _tuple$1, _tuple$2, err, err$1, gt, gt$1, info, info$1, k, m, newm, rt, t, typ, userType$2, ut, v, $s, $deferred};return $f; } } + }; + mustGetTypeInfo = function mustGetTypeInfo$1(rt) { + var {_r$22, _r$23, _r$24, _tuple, err, rt, t, $s, $r, $c} = $restore(this, {rt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = userType(rt); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$23 = getTypeInfo(_r$22); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _tuple = _r$23; + t = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3: + _r$24 = err.Error(); /* */ $s = 5; case 5: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $panic(new $String("getTypeInfo: " + _r$24)); + /* } */ case 4: + $s = -1; return t; + /* */ } return; } var $f = {$blk: mustGetTypeInfo$1, $c: true, $r, _r$22, _r$23, _r$24, _tuple, err, rt, t, $s};return $f; + }; + RegisterName = function RegisterName$1(name$2, value) { + var {_r$22, _r$23, _r$24, _tuple, _tuple$1, dup, dup$1, n, name$2, t, ut, value, $s, $r, $c} = $restore(this, {name$2, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (name$2 === "") { + $panic(new $String("attempt to register empty name")); + } + _r$22 = userType(reflect.TypeOf(value)); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + ut = _r$22; + _tuple = nameToConcreteType.LoadOrStore(new $String(name$2), reflect.TypeOf(value)); + t = _tuple[0]; + dup = _tuple[1]; + /* */ if (dup && !($interfaceIsEqual(t, ut.user))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (dup && !($interfaceIsEqual(t, ut.user))) { */ case 2: + _r$23 = fmt.Sprintf("gob: registering duplicate types for %q: %s != %s", new sliceType$2([new $String(name$2), t, ut.user])); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $panic(new $String(_r$23)); + /* } */ case 3: + _tuple$1 = concreteTypeToName.LoadOrStore(ut.base, new $String(name$2)); + n = _tuple$1[0]; + dup$1 = _tuple$1[1]; + /* */ if (dup$1 && !($interfaceIsEqual(n, new $String(name$2)))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (dup$1 && !($interfaceIsEqual(n, new $String(name$2)))) { */ case 5: + nameToConcreteType.Delete(new $String(name$2)); + _r$24 = fmt.Sprintf("gob: registering duplicate names for %s: %q != %q", new sliceType$2([ut.user, n, new $String(name$2)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $panic(new $String(_r$24)); + /* } */ case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: RegisterName$1, $c: true, $r, _r$22, _r$23, _r$24, _tuple, _tuple$1, dup, dup$1, n, name$2, t, ut, value, $s};return $f; + }; + $pkg.RegisterName = RegisterName; + Register = function Register$1(value) { + var {_r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, name$2, pt, rt, star, value, $s, $r, $c} = $restore(this, {value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rt = reflect.TypeOf(value); + _r$22 = rt.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + name$2 = _r$22; + star = ""; + _r$23 = rt.Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + /* */ if (_r$23 === "") { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_r$23 === "") { */ case 2: + pt = rt; + _r$24 = pt.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + /* */ if (_r$24 === 22) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r$24 === 22) { */ case 5: + star = "*"; + rt = pt; + /* } */ case 6: + /* } */ case 3: + _r$25 = rt.Name(); /* */ $s = 10; case 10: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + /* */ if (!(_r$25 === "")) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!(_r$25 === "")) { */ case 8: + _r$26 = rt.PkgPath(); /* */ $s = 14; case 14: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + /* */ if (_r$26 === "") { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_r$26 === "") { */ case 11: + _r$27 = rt.Name(); /* */ $s = 15; case 15: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + name$2 = star + _r$27; + $s = 13; continue; + /* } else { */ case 12: + _r$28 = rt.PkgPath(); /* */ $s = 16; case 16: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _r$29 = rt.Name(); /* */ $s = 17; case 17: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + name$2 = star + _r$28 + "." + _r$29; + /* } */ case 13: + /* } */ case 9: + $r = RegisterName(name$2, value); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Register$1, $c: true, $r, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, name$2, pt, rt, star, value, $s};return $f; + }; + $pkg.Register = Register; + registerBasics = function registerBasics$1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = Register(new $Int(0)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Int8(0)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Int16(0)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Int32(0)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Int64(0, 0)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Uint(0)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Uint8(0)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Uint16(0)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Uint32(0)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Uint64(0, 0)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Float32(0)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Float64(0)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Complex64(0, 0)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Complex128(0, 0)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Uintptr(0)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $Bool(false)); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register(new $String("")); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$1.nil)); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$4.nil)); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$5.nil)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$6.nil)); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$7.nil)); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$8.nil)); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$9.nil)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$1.nil)); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$10.nil)); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$11.nil)); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$12.nil)); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$13.nil)); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$14.nil)); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$15.nil)); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$16.nil)); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$17.nil)); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$18.nil)); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Register((sliceType$19.nil)); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: registerBasics$1, $c: true, $r, $s};return $f; + }; + errorf = function errorf$1(format, args) { + var {_r$22, args, format, $s, $r, $c} = $restore(this, {format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = fmt.Errorf("gob: " + format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = error_(_r$22); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: errorf$1, $c: true, $r, _r$22, args, format, $s};return $f; + }; + error_ = function error_$1(err) { + var err, x$2; + $panic((x$2 = new gobError.ptr(err), new x$2.constructor.elem(x$2))); + }; + catchError = function catchError$1(err) { + var _tuple, e, err, ge, ok; + e = $recover(); + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tuple = $assertType(e, gobError, true); + ge = $clone(_tuple[0], gobError); + ok = _tuple[1]; + if (!ok) { + $panic(e); + } + err.$set(ge.err); + } + }; + NewEncoder = function NewEncoder$1(w) { + var enc, w; + enc = new Encoder.ptr(new nosync.Mutex.ptr(false, false, false, false, 0), sliceType$20.nil, false, ptrType$32.nil, ptrType$32.nil, new encBuffer.ptr(sliceType$1.nil, arrayType$1.zero()), $ifaceNil); + enc.w = new sliceType$20([w]); + enc.sent = new $global.Map(); + enc.countState = enc.newEncoderState(new encBuffer.ptr(sliceType$1.nil, arrayType$1.zero())); + return enc; + }; + $pkg.NewEncoder = NewEncoder; + $ptrType(Encoder).prototype.writer = function writer() { + var enc, x$2, x$3; + enc = this; + return (x$2 = enc.w, x$3 = enc.w.$length - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])); + }; + $ptrType(Encoder).prototype.pushWriter = function pushWriter(w) { + var enc, w; + enc = this; + enc.w = $append(enc.w, w); + }; + $ptrType(Encoder).prototype.popWriter = function popWriter() { + var enc; + enc = this; + enc.w = $subslice(enc.w, 0, (enc.w.$length - 1 >> 0)); + }; + $ptrType(Encoder).prototype.setError = function setError(err) { + var enc, err; + enc = this; + if ($interfaceIsEqual(enc.err, $ifaceNil)) { + enc.err = err; + } + }; + $ptrType(Encoder).prototype.writeMessage = function writeMessage(w, b) { + var {_r$22, _tuple, b, enc, err, message, messageLen, offset, w, $s, $r, $c} = $restore(this, {w, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + enc = this; + message = b.Bytes(); + messageLen = message.$length - 9 >> 0; + if (messageLen >= 1073741824) { + enc.setError(errors.New("gob: encoder: message too big")); + $s = -1; return; + } + enc.countState.b.Reset(); + enc.countState.encodeUint((new $Uint64(0, messageLen))); + offset = 9 - enc.countState.b.Len() >> 0; + $copySlice($subslice(message, offset), enc.countState.b.Bytes()); + _r$22 = w.Write($subslice(message, offset)); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + err = _tuple[1]; + b.Reset(); + b.Write(spaceForLength); + if (!($interfaceIsEqual(err, $ifaceNil))) { + enc.setError(err); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: writeMessage, $c: true, $r, _r$22, _tuple, b, enc, err, message, messageLen, offset, w, $s};return $f; + }; + $ptrType(Encoder).prototype.sendActualType = function sendActualType(w, state, ut, actual) { + var {_1, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _entry, _key, _key$1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _tuple, _tuple$1, actual, alreadySent, enc, err, i, info, sent, st, state, ut, w, x$2, $s, $r, $c} = $restore(this, {w, state, ut, actual}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + sent = false; + enc = this; + _tuple = (_entry = $mapIndex(enc.sent,reflect.Type.keyFor(actual)), _entry !== undefined ? [_entry.v, true] : [0, false]); + alreadySent = _tuple[1]; + if (alreadySent) { + sent = false; + $s = -1; return sent; + } + _r$22 = getTypeInfo(ut); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple$1 = _r$22; + info = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + enc.setError(err); + $s = -1; return sent; + } + state.encodeInt((x$2 = (new $Int64(0, info.id)), new $Int64(-x$2.$high, -x$2.$low))); + _arg = state.b; + _r$23 = reflect.ValueOf(info.wire); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$23, reflect.Value); + _arg$2 = wireTypeUserInfo; + $r = enc.encode(_arg, _arg$1, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = enc.writeMessage(w, state.b); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(enc.err, $ifaceNil))) { + $s = -1; return sent; + } + _key = ut.base; (enc.sent || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key), { k: _key, v: info.id }); + if (!($interfaceIsEqual(ut.user, ut.base))) { + _key$1 = ut.user; (enc.sent || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key$1), { k: _key$1, v: info.id }); + } + st = actual; + _r$24 = st.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _1 = _r$24; + /* */ if (_1 === (25)) { $s = 7; continue; } + /* */ if ((_1 === (17)) || (_1 === (23))) { $s = 8; continue; } + /* */ if (_1 === (21)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_1 === (25)) { */ case 7: + i = 0; + /* while (true) { */ case 11: + _r$25 = st.NumField(); /* */ $s = 13; case 13: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + /* if (!(i < _r$25)) { break; } */ if(!(i < _r$25)) { $s = 12; continue; } + _r$26 = st.Field(i); /* */ $s = 16; case 16: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _r$27 = isExported(_r$26.Name); /* */ $s = 17; case 17: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + /* */ if (_r$27) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_r$27) { */ case 14: + _arg$3 = w; + _arg$4 = state; + _r$28 = st.Field(i); /* */ $s = 18; case 18: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _arg$5 = _r$28.Type; + _r$29 = enc.sendType(_arg$3, _arg$4, _arg$5); /* */ $s = 19; case 19: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + _r$29; + /* } */ case 15: + i = i + (1) >> 0; + $s = 11; continue; + case 12: + $s = 10; continue; + /* } else if ((_1 === (17)) || (_1 === (23))) { */ case 8: + _arg$6 = w; + _arg$7 = state; + _r$30 = st.Elem(); /* */ $s = 20; case 20: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _arg$8 = _r$30; + _r$31 = enc.sendType(_arg$6, _arg$7, _arg$8); /* */ $s = 21; case 21: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + _r$31; + $s = 10; continue; + /* } else if (_1 === (21)) { */ case 9: + _arg$9 = w; + _arg$10 = state; + _r$32 = st.Key(); /* */ $s = 22; case 22: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + _arg$11 = _r$32; + _r$33 = enc.sendType(_arg$9, _arg$10, _arg$11); /* */ $s = 23; case 23: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + _r$33; + _arg$12 = w; + _arg$13 = state; + _r$34 = st.Elem(); /* */ $s = 24; case 24: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + _arg$14 = _r$34; + _r$35 = enc.sendType(_arg$12, _arg$13, _arg$14); /* */ $s = 25; case 25: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } + _r$35; + /* } */ case 10: + case 5: + sent = true; + $s = -1; return sent; + /* */ } return; } var $f = {$blk: sendActualType, $c: true, $r, _1, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _entry, _key, _key$1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _tuple, _tuple$1, actual, alreadySent, enc, err, i, info, sent, st, state, ut, w, x$2, $s};return $f; + }; + $ptrType(Encoder).prototype.sendType = function sendType(w, state, origt) { + var {$24r, $24r$1, _1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, enc, origt, rt, sent, state, ut, w, $s, $r, $c} = $restore(this, {w, state, origt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + sent = false; + enc = this; + _r$22 = userType(origt); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + ut = _r$22; + /* */ if (!((ut.externalEnc === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((ut.externalEnc === 0))) { */ case 2: + _r$23 = enc.sendActualType(w, state, ut, ut.base); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + sent = _r$23; + $24r = sent; + $s = 5; case 5: return $24r; + /* } */ case 3: + rt = ut.base; + _r$24 = rt.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _1 = _r$24; + /* */ if (_1 === (23)) { $s = 8; continue; } + /* */ if (_1 === (17)) { $s = 9; continue; } + /* */ if (_1 === (21)) { $s = 10; continue; } + /* */ if (_1 === (25)) { $s = 11; continue; } + /* */ if ((_1 === (18)) || (_1 === (19))) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (_1 === (23)) { */ case 8: + _r$25 = rt.Elem(); /* */ $s = 17; case 17: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$26 = _r$25.Kind(); /* */ $s = 18; case 18: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + /* */ if (_r$26 === 8) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (_r$26 === 8) { */ case 15: + $s = -1; return sent; + /* } */ case 16: + /* break; */ $s = 6; continue; + $s = 14; continue; + /* } else if (_1 === (17)) { */ case 9: + /* break; */ $s = 6; continue; + $s = 14; continue; + /* } else if (_1 === (21)) { */ case 10: + /* break; */ $s = 6; continue; + $s = 14; continue; + /* } else if (_1 === (25)) { */ case 11: + /* break; */ $s = 6; continue; + $s = 14; continue; + /* } else if ((_1 === (18)) || (_1 === (19))) { */ case 12: + $s = -1; return sent; + /* } else { */ case 13: + $s = -1; return sent; + /* } */ case 14: + case 6: + _r$27 = enc.sendActualType(w, state, ut, ut.base); /* */ $s = 19; case 19: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + sent = _r$27; + $24r$1 = sent; + $s = 20; case 20: return $24r$1; + /* */ } return; } var $f = {$blk: sendType, $c: true, $r, $24r, $24r$1, _1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, enc, origt, rt, sent, state, ut, w, $s};return $f; + }; + $ptrType(Encoder).prototype.Encode = function Encode(e) { + var {$24r, _r$22, _r$23, e, enc, $s, $r, $c} = $restore(this, {e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + enc = this; + _r$22 = reflect.ValueOf(e); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$23 = enc.EncodeValue($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $24r = _r$23; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Encode, $c: true, $r, $24r, _r$22, _r$23, e, enc, $s};return $f; + }; + $ptrType(Encoder).prototype.sendTypeDescriptor = function sendTypeDescriptor(w, state, ut) { + var {_entry, _key, _r$22, _r$23, _tuple, _tuple$1, alreadySent, enc, err, info, rt, sent, state, ut, w, $s, $r, $c} = $restore(this, {w, state, ut}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + enc = this; + rt = ut.base; + if (!((ut.externalEnc === 0))) { + rt = ut.user; + } + _tuple = (_entry = $mapIndex(enc.sent,reflect.Type.keyFor(rt)), _entry !== undefined ? [_entry.v, true] : [0, false]); + alreadySent = _tuple[1]; + /* */ if (!alreadySent) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!alreadySent) { */ case 1: + _r$22 = enc.sendType(w, state, rt); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + sent = _r$22; + if (!($interfaceIsEqual(enc.err, $ifaceNil))) { + $s = -1; return; + } + /* */ if (!sent) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!sent) { */ case 4: + _r$23 = getTypeInfo(ut); /* */ $s = 6; case 6: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _tuple$1 = _r$23; + info = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + enc.setError(err); + $s = -1; return; + } + _key = rt; (enc.sent || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key), { k: _key, v: info.id }); + /* } */ case 5: + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: sendTypeDescriptor, $c: true, $r, _entry, _key, _r$22, _r$23, _tuple, _tuple$1, alreadySent, enc, err, info, rt, sent, state, ut, w, $s};return $f; + }; + $ptrType(Encoder).prototype.sendTypeId = function sendTypeId(state, ut) { + var _entry, enc, state, ut; + enc = this; + state.encodeInt((new $Int64(0, (_entry = $mapIndex(enc.sent,reflect.Type.keyFor(ut.base)), _entry !== undefined ? _entry.v : 0)))); + }; + $ptrType(Encoder).prototype.EncodeValue = function EncodeValue(value) { + var {_r$22, _r$23, _tuple, enc, err, state, ut, value, $s, $deferred, $r, $c} = $restore(this, {value}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + enc = this; + if ($clone(value, reflect.Value).Kind() === 0) { + $s = -1; return errors.New("gob: cannot encode nil value"); + } + /* */ if (($clone(value, reflect.Value).Kind() === 22) && $clone(value, reflect.Value).IsNil()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (($clone(value, reflect.Value).Kind() === 22) && $clone(value, reflect.Value).IsNil()) { */ case 1: + _r$22 = $clone(value, reflect.Value).Type().String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $panic(new $String("gob: cannot encode nil pointer of type " + _r$22)); + /* } */ case 2: + enc.mutex.Lock(); + $deferred.push([$methodVal(enc.mutex, "Unlock"), []]); + enc.w = $subslice(enc.w, 0, 1); + _r$23 = validUserType($clone(value, reflect.Value).Type()); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _tuple = _r$23; + ut = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + enc.err = $ifaceNil; + enc.byteBuf.Reset(); + enc.byteBuf.Write(spaceForLength); + state = enc.newEncoderState(enc.byteBuf); + $r = enc.sendTypeDescriptor(enc.writer(), state, ut); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + enc.sendTypeId(state, ut); + if (!($interfaceIsEqual(enc.err, $ifaceNil))) { + $s = -1; return enc.err; + } + $r = enc.encode(state.b, $clone(value, reflect.Value), ut); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if ($interfaceIsEqual(enc.err, $ifaceNil)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ($interfaceIsEqual(enc.err, $ifaceNil)) { */ case 7: + $r = enc.writeMessage(enc.writer(), state.b); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + enc.freeEncoderState(state); + $s = -1; return enc.err; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: EncodeValue, $c: true, $r, _r$22, _r$23, _tuple, enc, err, state, ut, value, $s, $deferred};return $f; } } + }; + $ptrType(encBuffer).prototype.writeByte = function writeByte(c) { + var c, e; + e = this; + e.data = $append(e.data, c); + }; + $ptrType(encBuffer).prototype.Write = function Write(p) { + var e, p; + e = this; + e.data = $appendSlice(e.data, p); + return [p.$length, $ifaceNil]; + }; + $ptrType(encBuffer).prototype.WriteString = function WriteString(s) { + var e, s; + e = this; + e.data = $appendSlice(e.data, s); + }; + $ptrType(encBuffer).prototype.Len = function Len() { + var e; + e = this; + return e.data.$length; + }; + $ptrType(encBuffer).prototype.Bytes = function Bytes() { + var e; + e = this; + return e.data; + }; + $ptrType(encBuffer).prototype.Reset = function Reset() { + var e; + e = this; + if (e.data.$length >= 1073741824) { + e.data = $subslice(new sliceType$1(e.scratch), 0, 0); + } else { + e.data = $subslice(e.data, 0, 0); + } + }; + $ptrType(Encoder).prototype.newEncoderState = function newEncoderState(b) { + var b, e, enc; + enc = this; + e = enc.freeList; + if (e === ptrType$32.nil) { + e = new encoderState.ptr(ptrType$33.nil, ptrType$34.nil, false, 0, arrayType$2.zero(), ptrType$32.nil); + e.enc = enc; + } else { + enc.freeList = e.next; + } + e.sendZero = false; + e.fieldnum = 0; + e.b = b; + if (b.data.$length === 0) { + b.data = $subslice(new sliceType$1(b.scratch), 0, 0); + } + return e; + }; + $ptrType(Encoder).prototype.freeEncoderState = function freeEncoderState(e) { + var e, enc; + enc = this; + e.next = enc.freeList; + enc.freeList = e; + }; + $ptrType(encoderState).prototype.encodeUint = function encodeUint(x$2) { + var bc, state, x$2, x$3; + state = this; + if ((x$2.$high < 0 || (x$2.$high === 0 && x$2.$low <= 127))) { + state.b.writeByte(((x$2.$low << 24 >>> 24))); + return; + } + $clone(binary.BigEndian, binary.bigEndian).PutUint64($subslice(new sliceType$1(state.buf), 1), x$2); + bc = bits.LeadingZeros64(x$2) >> 3 >> 0; + (x$3 = state.buf, ((bc < 0 || bc >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[bc] = (((bc - 8 >> 0) << 24 >>> 24)))); + state.b.Write($subslice(new sliceType$1(state.buf), bc, 9)); + }; + $ptrType(encoderState).prototype.encodeInt = function encodeInt(i) { + var i, state, x$2, x$3, x$4, x$5; + state = this; + x$2 = new $Uint64(0, 0); + if ((i.$high < 0 || (i.$high === 0 && i.$low < 0))) { + x$2 = (x$3 = ((x$4 = $shiftLeft64(new $Int64(~i.$high, ~i.$low >>> 0), 1), new $Uint64(x$4.$high, x$4.$low))), new $Uint64(x$3.$high | 0, (x$3.$low | 1) >>> 0)); + } else { + x$2 = ((x$5 = $shiftLeft64(i, 1), new $Uint64(x$5.$high, x$5.$low))); + } + state.encodeUint(x$2); + }; + $ptrType(encoderState).prototype.update = function update(instr) { + var instr, state; + state = this; + if (!(instr === ptrType$35.nil)) { + state.encodeUint((new $Uint64(0, (instr.field - state.fieldnum >> 0)))); + state.fieldnum = instr.field; + } + }; + encIndirect = function encIndirect$1(pv, indir) { + var {_r$22, indir, pv, $s, $r, $c} = $restore(this, {pv, indir}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* while (true) { */ case 1: + /* if (!(indir > 0)) { break; } */ if(!(indir > 0)) { $s = 2; continue; } + if ($clone(pv, reflect.Value).IsNil()) { + /* break; */ $s = 2; continue; + } + _r$22 = $clone(pv, reflect.Value).Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + pv = _r$22; + indir = indir - (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return pv; + /* */ } return; } var $f = {$blk: encIndirect$1, $c: true, $r, _r$22, indir, pv, $s};return $f; + }; + encBool = function encBool$1(i, state, v) { + var b, i, state, v; + b = $clone(v, reflect.Value).Bool(); + if (b || state.sendZero) { + state.update(i); + if (b) { + state.encodeUint(new $Uint64(0, 1)); + } else { + state.encodeUint(new $Uint64(0, 0)); + } + } + }; + encInt = function encInt$1(i, state, v) { + var i, state, v, value; + value = $clone(v, reflect.Value).Int(); + if (!((value.$high === 0 && value.$low === 0)) || state.sendZero) { + state.update(i); + state.encodeInt(value); + } + }; + encUint = function encUint$1(i, state, v) { + var i, state, v, value; + value = $clone(v, reflect.Value).Uint(); + if (!((value.$high === 0 && value.$low === 0)) || state.sendZero) { + state.update(i); + state.encodeUint(value); + } + }; + floatBits = function floatBits$1(f) { + var f, u; + u = math.Float64bits(f); + return bits.ReverseBytes64(u); + }; + encFloat = function encFloat$1(i, state, v) { + var bits$1, f, i, state, v; + f = $clone(v, reflect.Value).Float(); + if (!((f === 0)) || state.sendZero) { + bits$1 = floatBits(f); + state.update(i); + state.encodeUint(bits$1); + } + }; + encComplex = function encComplex$1(i, state, v) { + var c, i, ipart, rpart, state, v; + c = $clone(v, reflect.Value).Complex(); + if (!((c.$real === 0 && c.$imag === 0)) || state.sendZero) { + rpart = floatBits(c.$real); + ipart = floatBits(c.$imag); + state.update(i); + state.encodeUint(rpart); + state.encodeUint(ipart); + } + }; + encUint8Array = function encUint8Array$1(i, state, v) { + var {_r$22, b, i, state, v, $s, $r, $c} = $restore(this, {i, state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Bytes(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + b = _r$22; + if (b.$length > 0 || state.sendZero) { + state.update(i); + state.encodeUint((new $Uint64(0, b.$length))); + state.b.Write(b); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: encUint8Array$1, $c: true, $r, _r$22, b, i, state, v, $s};return $f; + }; + encString = function encString$1(i, state, v) { + var {_r$22, i, s, state, v, $s, $r, $c} = $restore(this, {i, state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + s = _r$22; + if (s.length > 0 || state.sendZero) { + state.update(i); + state.encodeUint((new $Uint64(0, s.length))); + state.b.WriteString(s); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: encString$1, $c: true, $r, _r$22, i, s, state, v, $s};return $f; + }; + encStructTerminator = function encStructTerminator$1(i, state, v) { + var i, state, v; + state.encodeUint(new $Uint64(0, 0)); + }; + valid = function valid$1(v) { + var _1, v; + _1 = $clone(v, reflect.Value).Kind(); + if (_1 === (0)) { + return false; + } else if (_1 === (22)) { + return !$clone(v, reflect.Value).IsNil(); + } + return true; + }; + $ptrType(Encoder).prototype.encodeSingle = function encodeSingle(b, engine, value) { + var {_r$22, b, enc, engine, instr, state, value, x$2, $s, $deferred, $r, $c} = $restore(this, {b, engine, value}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + enc = this; + state = enc.newEncoderState(b); + $deferred.push([$methodVal(enc, "freeEncoderState"), [state]]); + state.fieldnum = 0; + state.sendZero = true; + instr = (x$2 = engine.instr, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])); + /* */ if (instr.indir > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (instr.indir > 0) { */ case 1: + _r$22 = encIndirect($clone(value, reflect.Value), instr.indir); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + value = _r$22; + /* } */ case 2: + /* */ if (valid($clone(value, reflect.Value))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (valid($clone(value, reflect.Value))) { */ case 4: + $r = instr.op(instr, state, $clone(value, reflect.Value)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: encodeSingle, $c: true, $r, _r$22, b, enc, engine, instr, state, value, x$2, $s, $deferred};return $f; } } + }; + $ptrType(Encoder).prototype.encodeStruct = function encodeStruct(b, engine, value) { + var {_r$22, _r$23, b, enc, engine, field, i, instr, state, value, x$2, $s, $deferred, $r, $c} = $restore(this, {b, engine, value}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + enc = this; + if (!valid($clone(value, reflect.Value))) { + $s = -1; return; + } + state = enc.newEncoderState(b); + $deferred.push([$methodVal(enc, "freeEncoderState"), [state]]); + state.fieldnum = -1; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < engine.instr.$length)) { break; } */ if(!(i < engine.instr.$length)) { $s = 2; continue; } + instr = (x$2 = engine.instr, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i])); + /* */ if (i >= $clone(value, reflect.Value).NumField()) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (i >= $clone(value, reflect.Value).NumField()) { */ case 3: + $r = instr.op(instr, state, $clone(new reflect.Value.ptr(ptrType$1.nil, 0, 0), reflect.Value)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 2; continue; + /* } */ case 4: + _r$22 = $clone(value, reflect.Value).FieldByIndex(instr.index); /* */ $s = 6; case 6: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + field = _r$22; + /* */ if (instr.indir > 0) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (instr.indir > 0) { */ case 7: + _r$23 = encIndirect($clone(field, reflect.Value), instr.indir); /* */ $s = 9; case 9: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + field = _r$23; + if (!valid($clone(field, reflect.Value))) { + i = i + (1) >> 0; + /* continue; */ $s = 1; continue; + } + /* } */ case 8: + $r = instr.op(instr, state, $clone(field, reflect.Value)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: encodeStruct, $c: true, $r, _r$22, _r$23, b, enc, engine, field, i, instr, state, value, x$2, $s, $deferred};return $f; } } + }; + $ptrType(Encoder).prototype.encodeArray = function encodeArray(b, value, op, elemIndir, length, helper) { + var {_r$22, _r$23, _r$24, _v, b, elem, elemIndir, enc, helper, i, length, op, state, value, $s, $deferred, $r, $c} = $restore(this, {b, value, op, elemIndir, length, helper}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + enc = this; + state = enc.newEncoderState(b); + $deferred.push([$methodVal(enc, "freeEncoderState"), [state]]); + state.fieldnum = -1; + state.sendZero = true; + state.encodeUint((new $Uint64(0, length))); + if (!(!(helper === $throwNilPointerError))) { _v = false; $s = 3; continue s; } + _r$22 = helper(state, $clone(value, reflect.Value)); /* */ $s = 4; case 4: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _v = _r$22; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return; + /* } */ case 2: + i = 0; + /* while (true) { */ case 5: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 6; continue; } + _r$23 = $clone(value, reflect.Value).Index(i); /* */ $s = 7; case 7: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + elem = _r$23; + /* */ if (elemIndir > 0) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (elemIndir > 0) { */ case 8: + _r$24 = encIndirect($clone(elem, reflect.Value), elemIndir); /* */ $s = 10; case 10: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + elem = _r$24; + /* */ if (!valid($clone(elem, reflect.Value))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!valid($clone(elem, reflect.Value))) { */ case 11: + $r = errorf("encodeArray: nil element", sliceType$2.nil); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + /* } */ case 9: + $r = op(ptrType$35.nil, state, $clone(elem, reflect.Value)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 5; continue; + case 6: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: encodeArray, $c: true, $r, _r$22, _r$23, _r$24, _v, b, elem, elemIndir, enc, helper, i, length, op, state, value, $s, $deferred};return $f; } } + }; + encodeReflectValue = function encodeReflectValue$1(state, v, op, indir) { + var {_r$22, i, indir, op, state, v, $s, $r, $c} = $restore(this, {state, v, op, indir}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = 0; + /* while (true) { */ case 1: + /* if (!(i < indir && $clone(v, reflect.Value).IsValid())) { break; } */ if(!(i < indir && $clone(v, reflect.Value).IsValid())) { $s = 2; continue; } + _r$22 = reflect.Indirect($clone(v, reflect.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + v = _r$22; + i = i + (1) >> 0; + $s = 1; continue; + case 2: + /* */ if (!$clone(v, reflect.Value).IsValid()) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!$clone(v, reflect.Value).IsValid()) { */ case 4: + $r = errorf("encodeReflectValue: nil element", sliceType$2.nil); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + $r = op(ptrType$35.nil, state, $clone(v, reflect.Value)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: encodeReflectValue$1, $c: true, $r, _r$22, i, indir, op, state, v, $s};return $f; + }; + $ptrType(Encoder).prototype.encodeMap = function encodeMap(b, mv, keyOp, elemOp, keyIndir, elemIndir) { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r$22, _r$23, _r$24, _r$25, b, elemIndir, elemOp, enc, keyIndir, keyOp, mi, mv, state, $s, $r, $c} = $restore(this, {b, mv, keyOp, elemOp, keyIndir, elemIndir}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + enc = this; + state = enc.newEncoderState(b); + state.fieldnum = -1; + state.sendZero = true; + _r$22 = $clone(mv, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = state.encodeUint((new $Uint64(0, _r$22))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + mi = $clone(mv, reflect.Value).MapRange(); + /* while (true) { */ case 3: + _r$23 = mi.Next(); /* */ $s = 5; case 5: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + /* if (!(_r$23)) { break; } */ if(!(_r$23)) { $s = 4; continue; } + _arg = state; + _r$24 = mi.Key(); /* */ $s = 6; case 6: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$24, reflect.Value); + _arg$2 = keyOp; + _arg$3 = keyIndir; + $r = encodeReflectValue(_arg, _arg$1, _arg$2, _arg$3); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _arg$4 = state; + _r$25 = mi.Value(); /* */ $s = 8; case 8: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _arg$5 = $clone(_r$25, reflect.Value); + _arg$6 = elemOp; + _arg$7 = elemIndir; + $r = encodeReflectValue(_arg$4, _arg$5, _arg$6, _arg$7); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 3; continue; + case 4: + enc.freeEncoderState(state); + $s = -1; return; + /* */ } return; } var $f = {$blk: encodeMap, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r$22, _r$23, _r$24, _r$25, b, elemIndir, elemOp, enc, keyIndir, keyOp, mi, mv, state, $s};return $f; + }; + $ptrType(Encoder).prototype.encodeInterface = function encodeInterface(b, iv) { + var {_arg, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _tuple, b, data, elem, enc, iv, name$2, namei, ok, state, ut, $s, $r, $c} = $restore(this, {b, iv}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + enc = this; + _r$22 = $clone(iv, reflect.Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + elem = _r$22; + /* */ if (($clone(elem, reflect.Value).Kind() === 22) && $clone(elem, reflect.Value).IsNil()) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (($clone(elem, reflect.Value).Kind() === 22) && $clone(elem, reflect.Value).IsNil()) { */ case 2: + _r$23 = $clone(iv, reflect.Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = $clone(_r$23, reflect.Value).Type(); /* */ $s = 5; case 5: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _arg = _r$24; + $r = errorf("gob: cannot encode nil pointer of type %s inside interface", new sliceType$2([_arg])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + state = enc.newEncoderState(b); + state.fieldnum = -1; + state.sendZero = true; + if ($clone(iv, reflect.Value).IsNil()) { + state.encodeUint(new $Uint64(0, 0)); + $s = -1; return; + } + _r$25 = $clone(iv, reflect.Value).Elem(); /* */ $s = 7; case 7: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$26 = $clone(_r$25, reflect.Value).Type(); /* */ $s = 8; case 8: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _r$27 = userType(_r$26); /* */ $s = 9; case 9: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + ut = _r$27; + _tuple = concreteTypeToName.Load(ut.base); + namei = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!ok) { */ case 10: + $r = errorf("type not registered for interface: %s", new sliceType$2([ut.base])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + name$2 = $assertType(namei, $String); + state.encodeUint((new $Uint64(0, name$2.length))); + state.b.WriteString(name$2); + $r = enc.sendTypeDescriptor(enc.writer(), state, ut); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + enc.sendTypeId(state, ut); + enc.pushWriter(b); + _r$28 = encBufferPool.Get(); /* */ $s = 14; case 14: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + data = $assertType(_r$28, ptrType$34); + data.Write(spaceForLength); + $r = enc.encode(data, $clone(elem, reflect.Value), ut); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(enc.err, $ifaceNil))) { + error_(enc.err); + } + enc.popWriter(); + $r = enc.writeMessage(b, data); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + data.Reset(); + encBufferPool.Put(data); + if (!($interfaceIsEqual(enc.err, $ifaceNil))) { + error_(enc.err); + } + enc.freeEncoderState(state); + $s = -1; return; + /* */ } return; } var $f = {$blk: encodeInterface, $c: true, $r, _arg, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _tuple, b, data, elem, enc, iv, name$2, namei, ok, state, ut, $s};return $f; + }; + isZero = function isZero$1(val) { + var {$24r, _1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, i, i$1, val, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {val}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _1 = $clone(val, reflect.Value).Kind(); + /* */ if (_1 === (17)) { $s = 2; continue; } + /* */ if ((_1 === (21)) || (_1 === (23)) || (_1 === (24))) { $s = 3; continue; } + /* */ if (_1 === (1)) { $s = 4; continue; } + /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 5; continue; } + /* */ if ((_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (22))) { $s = 6; continue; } + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 7; continue; } + /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 8; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 9; continue; } + /* */ if (_1 === (25)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_1 === (17)) { */ case 2: + i = 0; + /* while (true) { */ case 12: + _r$22 = $clone(val, reflect.Value).Len(); /* */ $s = 14; case 14: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* if (!(i < _r$22)) { break; } */ if(!(i < _r$22)) { $s = 13; continue; } + _r$23 = $clone(val, reflect.Value).Index(i); /* */ $s = 17; case 17: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = isZero($clone(_r$23, reflect.Value)); /* */ $s = 18; case 18: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + /* */ if (!_r$24) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!_r$24) { */ case 15: + $s = -1; return false; + /* } */ case 16: + i = i + (1) >> 0; + $s = 12; continue; + case 13: + $s = -1; return true; + /* } else if ((_1 === (21)) || (_1 === (23)) || (_1 === (24))) { */ case 3: + _r$25 = $clone(val, reflect.Value).Len(); /* */ $s = 19; case 19: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + $24r = _r$25 === 0; + $s = 20; case 20: return $24r; + /* } else if (_1 === (1)) { */ case 4: + $s = -1; return !$clone(val, reflect.Value).Bool(); + /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 5: + $s = -1; return (x$2 = $clone(val, reflect.Value).Complex(), (x$2.$real === 0 && x$2.$imag === 0)); + /* } else if ((_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (22))) { */ case 6: + $s = -1; return $clone(val, reflect.Value).IsNil(); + /* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 7: + $s = -1; return (x$3 = $clone(val, reflect.Value).Int(), (x$3.$high === 0 && x$3.$low === 0)); + /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 8: + $s = -1; return $clone(val, reflect.Value).Float() === 0; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 9: + $s = -1; return (x$4 = $clone(val, reflect.Value).Uint(), (x$4.$high === 0 && x$4.$low === 0)); + /* } else if (_1 === (25)) { */ case 10: + i$1 = 0; + /* while (true) { */ case 21: + /* if (!(i$1 < $clone(val, reflect.Value).NumField())) { break; } */ if(!(i$1 < $clone(val, reflect.Value).NumField())) { $s = 22; continue; } + _r$26 = $clone(val, reflect.Value).Field(i$1); /* */ $s = 25; case 25: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _r$27 = isZero($clone(_r$26, reflect.Value)); /* */ $s = 26; case 26: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + /* */ if (!_r$27) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (!_r$27) { */ case 23: + $s = -1; return false; + /* } */ case 24: + i$1 = i$1 + (1) >> 0; + $s = 21; continue; + case 22: + $s = -1; return true; + /* } */ case 11: + case 1: + _r$28 = $clone(val, reflect.Value).Type().String(); /* */ $s = 27; case 27: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + $panic(new $String("unknown type in isZero " + _r$28)); + $s = -1; return false; + /* */ } return; } var $f = {$blk: isZero$1, $c: true, $r, $24r, _1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, i, i$1, val, x$2, x$3, x$4, $s};return $f; + }; + $ptrType(Encoder).prototype.encodeGobEncoder = function encodeGobEncoder(b, ut, v) { + var {_1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _tuple, _tuple$1, _tuple$2, b, data, enc, err, state, ut, v, $s, $r, $c} = $restore(this, {b, ut, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + enc = this; + data = sliceType$1.nil; + err = $ifaceNil; + _1 = ut.externalEnc; + /* */ if (_1 === (1)) { $s = 2; continue; } + /* */ if (_1 === (2)) { $s = 3; continue; } + /* */ if (_1 === (3)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (1)) { */ case 2: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 6; case 6: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$23 = $assertType(_r$22, GobEncoder).GobEncode(); /* */ $s = 7; case 7: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _tuple = _r$23; + data = _tuple[0]; + err = _tuple[1]; + $s = 5; continue; + /* } else if (_1 === (2)) { */ case 3: + _r$24 = $clone(v, reflect.Value).Interface(); /* */ $s = 8; case 8: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _r$25 = $assertType(_r$24, encoding.BinaryMarshaler).MarshalBinary(); /* */ $s = 9; case 9: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _tuple$1 = _r$25; + data = _tuple$1[0]; + err = _tuple$1[1]; + $s = 5; continue; + /* } else if (_1 === (3)) { */ case 4: + _r$26 = $clone(v, reflect.Value).Interface(); /* */ $s = 10; case 10: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _r$27 = $assertType(_r$26, encoding.TextMarshaler).MarshalText(); /* */ $s = 11; case 11: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _tuple$2 = _r$27; + data = _tuple$2[0]; + err = _tuple$2[1]; + /* } */ case 5: + case 1: + if (!($interfaceIsEqual(err, $ifaceNil))) { + error_(err); + } + state = enc.newEncoderState(b); + state.fieldnum = -1; + state.encodeUint((new $Uint64(0, data.$length))); + state.b.Write(data); + enc.freeEncoderState(state); + $s = -1; return; + /* */ } return; } var $f = {$blk: encodeGobEncoder, $c: true, $r, _1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _tuple, _tuple$1, _tuple$2, b, data, enc, err, state, ut, v, $s};return $f; + }; + encOpFor = function encOpFor$1(rt, inProgress, building) { + var {$24r, _1, _entry, _entry$1, _entry$2, _key, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$40, _r$41, _r$42, _tuple, _tuple$1, _tuple$2, _tuple$3, building, elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, inProgress, indir, info, k, keyIndir, keyOp, op, opPtr, rt, t, typ, ut, $s, $r, $c} = $restore(this, {rt, inProgress, building}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + elemIndir = [elemIndir]; + elemIndir$1 = [elemIndir$1]; + elemIndir$2 = [elemIndir$2]; + elemOp = [elemOp]; + elemOp$1 = [elemOp$1]; + elemOp$2 = [elemOp$2]; + helper = [helper]; + helper$1 = [helper$1]; + info = [info]; + keyIndir = [keyIndir]; + keyOp = [keyOp]; + op = [op]; + _r$22 = userType(rt); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + ut = _r$22; + /* */ if (!((ut.externalEnc === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((ut.externalEnc === 0))) { */ case 2: + _r$23 = gobEncodeOpFor(ut); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $24r = _r$23; + $s = 5; case 5: return $24r; + /* } */ case 3: + opPtr = (_entry = $mapIndex(inProgress,reflect.Type.keyFor(rt)), _entry !== undefined ? _entry.v : ptrType$36.nil); + if (!(opPtr === ptrType$36.nil)) { + $s = -1; return [opPtr, ut.indir]; + } + typ = ut.base; + indir = ut.indir; + _r$24 = typ.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + k = _r$24; + op[0] = $throwNilPointerError; + if (((k >> 0)) < 25) { + op[0] = ((k < 0 || k >= encOpTable.length) ? ($throwRuntimeError("index out of range"), undefined) : encOpTable[k]); + } + /* */ if (op[0] === $throwNilPointerError) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (op[0] === $throwNilPointerError) { */ case 7: + _key = rt; (inProgress || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key), { k: _key, v: (op.$ptr || (op.$ptr = new ptrType$36(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, op))) }); + t = typ; + _r$25 = t.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _1 = _r$25; + /* */ if (_1 === (23)) { $s = 11; continue; } + /* */ if (_1 === (17)) { $s = 12; continue; } + /* */ if (_1 === (21)) { $s = 13; continue; } + /* */ if (_1 === (25)) { $s = 14; continue; } + /* */ if (_1 === (20)) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (_1 === (23)) { */ case 11: + _r$26 = t.Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _r$27 = _r$26.Kind(); /* */ $s = 20; case 20: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + /* */ if (_r$27 === 8) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_r$27 === 8) { */ case 17: + op[0] = encUint8Array; + /* break; */ $s = 9; continue; + /* } */ case 18: + _r$28 = t.Elem(); /* */ $s = 21; case 21: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _r$29 = encOpFor(_r$28, inProgress, building); /* */ $s = 22; case 22: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + _tuple = _r$29; + elemOp[0] = _tuple[0]; + elemIndir[0] = _tuple[1]; + _r$30 = t.Elem(); /* */ $s = 23; case 23: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _r$31 = _r$30.Kind(); /* */ $s = 24; case 24: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + helper[0] = (_entry$1 = $mapIndex(encSliceHelper,reflect.Kind.keyFor(_r$31)), _entry$1 !== undefined ? _entry$1.v : $throwNilPointerError); + op[0] = (function(elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, info, keyIndir, keyOp, op) { return function encOpFor·func1(i, state, slice) { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r$32, _r$33, _v, i, slice, state, $s, $r, $c} = $restore(this, {i, state, slice}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(!state.sendZero)) { _v = false; $s = 3; continue s; } + _r$32 = $clone(slice, reflect.Value).Len(); /* */ $s = 4; case 4: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + _v = _r$32 === 0; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return; + /* } */ case 2: + state.update(i); + _arg = state.b; + _arg$1 = $clone(slice, reflect.Value); + _arg$2 = elemOp[0].$get(); + _arg$3 = elemIndir[0]; + _r$33 = $clone(slice, reflect.Value).Len(); /* */ $s = 5; case 5: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + _arg$4 = _r$33; + _arg$5 = helper[0]; + $r = state.enc.encodeArray(_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: encOpFor·func1, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r$32, _r$33, _v, i, slice, state, $s};return $f; + }; })(elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, info, keyIndir, keyOp, op); + $s = 16; continue; + /* } else if (_1 === (17)) { */ case 12: + _r$32 = t.Elem(); /* */ $s = 25; case 25: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + _r$33 = encOpFor(_r$32, inProgress, building); /* */ $s = 26; case 26: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + _tuple$1 = _r$33; + elemOp$1[0] = _tuple$1[0]; + elemIndir$1[0] = _tuple$1[1]; + _r$34 = t.Elem(); /* */ $s = 27; case 27: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + _r$35 = _r$34.Kind(); /* */ $s = 28; case 28: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } + helper$1[0] = (_entry$2 = $mapIndex(encArrayHelper,reflect.Kind.keyFor(_r$35)), _entry$2 !== undefined ? _entry$2.v : $throwNilPointerError); + op[0] = (function(elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, info, keyIndir, keyOp, op) { return function encOpFor·func2(i, state, array) { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r$36, array, i, state, $s, $r, $c} = $restore(this, {i, state, array}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + state.update(i); + _arg = state.b; + _arg$1 = $clone(array, reflect.Value); + _arg$2 = elemOp$1[0].$get(); + _arg$3 = elemIndir$1[0]; + _r$36 = $clone(array, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } + _arg$4 = _r$36; + _arg$5 = helper$1[0]; + $r = state.enc.encodeArray(_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: encOpFor·func2, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r$36, array, i, state, $s};return $f; + }; })(elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, info, keyIndir, keyOp, op); + $s = 16; continue; + /* } else if (_1 === (21)) { */ case 13: + _r$36 = t.Key(); /* */ $s = 29; case 29: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } + _r$37 = encOpFor(_r$36, inProgress, building); /* */ $s = 30; case 30: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; } + _tuple$2 = _r$37; + keyOp[0] = _tuple$2[0]; + keyIndir[0] = _tuple$2[1]; + _r$38 = t.Elem(); /* */ $s = 31; case 31: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; } + _r$39 = encOpFor(_r$38, inProgress, building); /* */ $s = 32; case 32: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; } + _tuple$3 = _r$39; + elemOp$2[0] = _tuple$3[0]; + elemIndir$2[0] = _tuple$3[1]; + op[0] = (function(elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, info, keyIndir, keyOp, op) { return function encOpFor·func3(i, state, mv) { + var {i, mv, state, $s, $r, $c} = $restore(this, {i, state, mv}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!state.sendZero && $clone(mv, reflect.Value).IsNil()) { + $s = -1; return; + } + state.update(i); + $r = state.enc.encodeMap(state.b, $clone(mv, reflect.Value), keyOp[0].$get(), elemOp$2[0].$get(), keyIndir[0], elemIndir$2[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: encOpFor·func3, $c: true, $r, i, mv, state, $s};return $f; + }; })(elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, info, keyIndir, keyOp, op); + $s = 16; continue; + /* } else if (_1 === (25)) { */ case 14: + _r$40 = userType(typ); /* */ $s = 33; case 33: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; } + _r$41 = getEncEngine(_r$40, building); /* */ $s = 34; case 34: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; } + _r$41; + _r$42 = mustGetTypeInfo(typ); /* */ $s = 35; case 35: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; } + info[0] = _r$42; + op[0] = (function(elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, info, keyIndir, keyOp, op) { return function encOpFor·func4(i, state, sv) { + var {enc, i, state, sv, $s, $r, $c} = $restore(this, {i, state, sv}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + state.update(i); + enc = info[0].encoder.Load(); + $r = state.enc.encodeStruct(state.b, enc, $clone(sv, reflect.Value)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: encOpFor·func4, $c: true, $r, enc, i, state, sv, $s};return $f; + }; })(elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, info, keyIndir, keyOp, op); + $s = 16; continue; + /* } else if (_1 === (20)) { */ case 15: + op[0] = (function(elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, info, keyIndir, keyOp, op) { return function encOpFor·func5(i, state, iv) { + var {i, iv, state, $s, $r, $c} = $restore(this, {i, state, iv}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!state.sendZero && (!$clone(iv, reflect.Value).IsValid() || $clone(iv, reflect.Value).IsNil())) { + $s = -1; return; + } + state.update(i); + $r = state.enc.encodeInterface(state.b, $clone(iv, reflect.Value)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: encOpFor·func5, $c: true, $r, i, iv, state, $s};return $f; + }; })(elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, info, keyIndir, keyOp, op); + /* } */ case 16: + case 9: + /* } */ case 8: + /* */ if (op[0] === $throwNilPointerError) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (op[0] === $throwNilPointerError) { */ case 36: + $r = errorf("can't happen: encode type %s", new sliceType$2([rt])); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 37: + $s = -1; return [(op.$ptr || (op.$ptr = new ptrType$36(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, op))), indir]; + /* */ } return; } var $f = {$blk: encOpFor$1, $c: true, $r, $24r, _1, _entry, _entry$1, _entry$2, _key, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$40, _r$41, _r$42, _tuple, _tuple$1, _tuple$2, _tuple$3, building, elemIndir, elemIndir$1, elemIndir$2, elemOp, elemOp$1, elemOp$2, helper, helper$1, inProgress, indir, info, k, keyIndir, keyOp, op, opPtr, rt, t, typ, ut, $s};return $f; + }; + gobEncodeOpFor = function gobEncodeOpFor$1(ut) { + var {_r$22, i, op, rt, ut, $s, $r, $c} = $restore(this, {ut}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + op = [op]; + rt = [rt]; + ut = [ut]; + rt[0] = ut[0].user; + /* */ if (ut[0].encIndir === -1) { $s = 1; continue; } + /* */ if (ut[0].encIndir > 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ut[0].encIndir === -1) { */ case 1: + rt[0] = reflect.PointerTo(rt[0]); + $s = 3; continue; + /* } else if (ut[0].encIndir > 0) { */ case 2: + i = 0; + /* while (true) { */ case 4: + /* if (!(i < ut[0].encIndir)) { break; } */ if(!(i < ut[0].encIndir)) { $s = 5; continue; } + _r$22 = rt[0].Elem(); /* */ $s = 6; case 6: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + rt[0] = _r$22; + i = i + (1) << 24 >> 24; + $s = 4; continue; + case 5: + /* } */ case 3: + op[0] = $throwNilPointerError; + op[0] = (function(op, rt, ut) { return function gobEncodeOpFor·func1(i$1, state, v) { + var {_r$23, _v, i$1, state, v, $s, $r, $c} = $restore(this, {i$1, state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (ut[0].encIndir === -1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ut[0].encIndir === -1) { */ case 1: + /* */ if (!$clone(v, reflect.Value).CanAddr()) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!$clone(v, reflect.Value).CanAddr()) { */ case 3: + $r = errorf("unaddressable value of type %s", new sliceType$2([rt[0]])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + v = $clone(v, reflect.Value).Addr(); + /* } */ case 2: + if (!(!state.sendZero)) { _v = false; $s = 8; continue s; } + _r$23 = isZero($clone(v, reflect.Value)); /* */ $s = 9; case 9: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _v = _r$23; case 8: + /* */ if (_v) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_v) { */ case 6: + $s = -1; return; + /* } */ case 7: + state.update(i$1); + $r = state.enc.encodeGobEncoder(state.b, ut[0], $clone(v, reflect.Value)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: gobEncodeOpFor·func1, $c: true, $r, _r$23, _v, i$1, state, v, $s};return $f; + }; })(op, rt, ut); + $s = -1; return [(op.$ptr || (op.$ptr = new ptrType$36(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, op))), ((ut[0].encIndir >> 0))]; + /* */ } return; } var $f = {$blk: gobEncodeOpFor$1, $c: true, $r, _r$22, i, op, rt, ut, $s};return $f; + }; + compileEnc = function compileEnc$1(ut, building) { + var {_r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _tmp, _tmp$1, _tuple, _tuple$1, _v, building, engine, f, fieldNum, indir, indir$1, op, op$1, rt, seen, srt, ut, wireFieldNum, x$2, $s, $r, $c} = $restore(this, {ut, building}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + srt = ut.base; + engine = new encEngine.ptr(sliceType$21.nil); + seen = new $global.Map(); + rt = ut.base; + if (!((ut.externalEnc === 0))) { + rt = ut.user; + } + if (!(ut.externalEnc === 0)) { _v = false; $s = 4; continue s; } + _r$22 = srt.Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _v = _r$22 === 25; case 4: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + _tmp = 0; + _tmp$1 = 0; + fieldNum = _tmp; + wireFieldNum = _tmp$1; + /* while (true) { */ case 6: + _r$23 = srt.NumField(); /* */ $s = 8; case 8: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + /* if (!(fieldNum < _r$23)) { break; } */ if(!(fieldNum < _r$23)) { $s = 7; continue; } + f = [f]; + _r$24 = srt.Field(fieldNum); /* */ $s = 9; case 9: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + f[0] = $clone(_r$24, reflect.StructField); + _r$25 = isSent(f[0]); /* */ $s = 12; case 12: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + /* */ if (!_r$25) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!_r$25) { */ case 10: + fieldNum = fieldNum + (1) >> 0; + /* continue; */ $s = 6; continue; + /* } */ case 11: + _r$26 = encOpFor(f[0].Type, seen, building); /* */ $s = 13; case 13: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _tuple = _r$26; + op = _tuple[0]; + indir = _tuple[1]; + engine.instr = $append(engine.instr, new encInstr.ptr(op.$get(), wireFieldNum, f[0].Index, indir)); + wireFieldNum = wireFieldNum + (1) >> 0; + fieldNum = fieldNum + (1) >> 0; + $s = 6; continue; + case 7: + _r$27 = srt.NumField(); /* */ $s = 16; case 16: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + /* */ if (_r$27 > 0 && (engine.instr.$length === 0)) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_r$27 > 0 && (engine.instr.$length === 0)) { */ case 14: + $r = errorf("type %s has no exported fields", new sliceType$2([rt])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 15: + engine.instr = $append(engine.instr, new encInstr.ptr(encStructTerminator, 0, sliceType$4.nil, 0)); + $s = 3; continue; + /* } else { */ case 2: + engine.instr = $makeSlice(sliceType$21, 1); + _r$28 = encOpFor(rt, seen, building); /* */ $s = 18; case 18: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _tuple$1 = _r$28; + op$1 = _tuple$1[0]; + indir$1 = _tuple$1[1]; + encInstr.copy((x$2 = engine.instr, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])), new encInstr.ptr(op$1.$get(), 0, sliceType$4.nil, indir$1)); + /* } */ case 3: + $s = -1; return engine; + /* */ } return; } var $f = {$blk: compileEnc$1, $c: true, $r, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _tmp, _tmp$1, _tuple, _tuple$1, _v, building, engine, f, fieldNum, indir, indir$1, op, op$1, rt, seen, srt, ut, wireFieldNum, x$2, $s};return $f; + }; + getEncEngine = function getEncEngine$1(ut, building) { + var {_r$22, _r$23, _tuple, building, enc, err, info, ut, $s, $r, $c} = $restore(this, {ut, building}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = getTypeInfo(ut); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + info = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + error_(err); + } + enc = info.encoder.Load(); + /* */ if (enc === ptrType$31.nil) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (enc === ptrType$31.nil) { */ case 2: + _r$23 = buildEncEngine(info, ut, building); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + enc = _r$23; + /* } */ case 3: + $s = -1; return enc; + /* */ } return; } var $f = {$blk: getEncEngine$1, $c: true, $r, _r$22, _r$23, _tuple, building, enc, err, info, ut, $s};return $f; + }; + buildEncEngine = function buildEncEngine$1(info, ut, building) { + var {_entry, _key, _r$22, building, enc, info, ut, $s, $deferred, $r, $c} = $restore(this, {info, ut, building}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + if (!(building === false) && (_entry = $mapIndex(building,ptrType$30.keyFor(info)), _entry !== undefined ? _entry.v : false)) { + $s = -1; return ptrType$31.nil; + } + info.encInit.Lock(); + $deferred.push([$methodVal(info.encInit, "Unlock"), []]); + enc = info.encoder.Load(); + /* */ if (enc === ptrType$31.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (enc === ptrType$31.nil) { */ case 1: + if (building === false) { + building = new $global.Map(); + } + _key = info; (building || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$30.keyFor(_key), { k: _key, v: true }); + _r$22 = compileEnc(ut, building); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + enc = _r$22; + info.encoder.Store(enc); + /* } */ case 2: + $s = -1; return enc; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$31.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: buildEncEngine$1, $c: true, $r, _entry, _key, _r$22, building, enc, info, ut, $s, $deferred};return $f; } } + }; + $ptrType(Encoder).prototype.encode = function encode(b, value, ut) { + var {_r$22, _r$23, _r$24, _v, b, enc, engine, i, indir, ut, value, $s, $deferred, $r, $c} = $restore(this, {b, value, ut}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + enc = this; + $deferred.push([catchError, [(enc.$ptr_err || (enc.$ptr_err = new ptrType$37(function() { return this.$target.err; }, function($v) { this.$target.err = $v; }, enc)))]]); + _r$22 = getEncEngine(ut, false); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + engine = _r$22; + indir = ut.indir; + if (!((ut.externalEnc === 0))) { + indir = ((ut.encIndir >> 0)); + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < indir)) { break; } */ if(!(i < indir)) { $s = 3; continue; } + _r$23 = reflect.Indirect($clone(value, reflect.Value)); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + value = _r$23; + i = i + (1) >> 0; + $s = 2; continue; + case 3: + if (!(ut.externalEnc === 0)) { _v = false; $s = 8; continue s; } + _r$24 = $clone(value, reflect.Value).Type().Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _v = _r$24 === 25; case 8: + /* */ if (_v) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_v) { */ case 5: + $r = enc.encodeStruct(b, engine, $clone(value, reflect.Value)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + /* } else { */ case 6: + $r = enc.encodeSingle(b, engine, $clone(value, reflect.Value)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: encode, $c: true, $r, _r$22, _r$23, _r$24, _v, b, enc, engine, i, indir, ut, value, $s, $deferred};return $f; } } + }; + encBoolArray = function encBoolArray$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encBoolSlice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encBoolArray$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encBoolSlice = function encBoolSlice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$18, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(x$2 === false) || state.sendZero) { + if (x$2) { + state.encodeUint(new $Uint64(0, 1)); + } else { + state.encodeUint(new $Uint64(0, 0)); + } + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encBoolSlice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + encComplex64Array = function encComplex64Array$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encComplex64Slice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encComplex64Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encComplex64Slice = function encComplex64Slice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ipart, ok, rpart, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$15, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2.$real === 0 && x$2.$imag === 0)) || state.sendZero) { + rpart = floatBits((x$2.$real)); + ipart = floatBits((x$2.$imag)); + state.encodeUint(rpart); + state.encodeUint(ipart); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encComplex64Slice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ipart, ok, rpart, slice, state, v, x$2, $s};return $f; + }; + encComplex128Array = function encComplex128Array$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encComplex128Slice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encComplex128Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encComplex128Slice = function encComplex128Slice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ipart, ok, rpart, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$16, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2.$real === 0 && x$2.$imag === 0)) || state.sendZero) { + rpart = floatBits(x$2.$real); + ipart = floatBits(x$2.$imag); + state.encodeUint(rpart); + state.encodeUint(ipart); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encComplex128Slice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ipart, ok, rpart, slice, state, v, x$2, $s};return $f; + }; + encFloat32Array = function encFloat32Array$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encFloat32Slice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encFloat32Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encFloat32Slice = function encFloat32Slice$1(state, v) { + var {_i, _r$22, _ref, _tuple, bits$1, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$13, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2 === 0)) || state.sendZero) { + bits$1 = floatBits((x$2)); + state.encodeUint(bits$1); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encFloat32Slice$1, $c: true, $r, _i, _r$22, _ref, _tuple, bits$1, ok, slice, state, v, x$2, $s};return $f; + }; + encFloat64Array = function encFloat64Array$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encFloat64Slice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encFloat64Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encFloat64Slice = function encFloat64Slice$1(state, v) { + var {_i, _r$22, _ref, _tuple, bits$1, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$14, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2 === 0)) || state.sendZero) { + bits$1 = floatBits(x$2); + state.encodeUint(bits$1); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encFloat64Slice$1, $c: true, $r, _i, _r$22, _ref, _tuple, bits$1, ok, slice, state, v, x$2, $s};return $f; + }; + encIntArray = function encIntArray$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encIntSlice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encIntArray$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encIntSlice = function encIntSlice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$4, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2 === 0)) || state.sendZero) { + state.encodeInt((new $Int64(0, x$2))); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encIntSlice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + encInt16Array = function encInt16Array$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encInt16Slice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encInt16Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encInt16Slice = function encInt16Slice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$6, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2 === 0)) || state.sendZero) { + state.encodeInt((new $Int64(0, x$2))); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encInt16Slice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + encInt32Array = function encInt32Array$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encInt32Slice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encInt32Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encInt32Slice = function encInt32Slice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$7, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2 === 0)) || state.sendZero) { + state.encodeInt((new $Int64(0, x$2))); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encInt32Slice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + encInt64Array = function encInt64Array$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encInt64Slice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encInt64Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encInt64Slice = function encInt64Slice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$8, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2.$high === 0 && x$2.$low === 0)) || state.sendZero) { + state.encodeInt(x$2); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encInt64Slice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + encInt8Array = function encInt8Array$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encInt8Slice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encInt8Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encInt8Slice = function encInt8Slice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$5, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2 === 0)) || state.sendZero) { + state.encodeInt((new $Int64(0, x$2))); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encInt8Slice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + encStringArray = function encStringArray$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encStringSlice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encStringArray$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encStringSlice = function encStringSlice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$19, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(x$2 === "") || state.sendZero) { + state.encodeUint((new $Uint64(0, x$2.length))); + state.b.WriteString(x$2); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encStringSlice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + encUintArray = function encUintArray$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encUintSlice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encUintArray$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encUintSlice = function encUintSlice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$9, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2 === 0)) || state.sendZero) { + state.encodeUint((new $Uint64(0, x$2))); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encUintSlice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + encUint16Array = function encUint16Array$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encUint16Slice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encUint16Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encUint16Slice = function encUint16Slice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$10, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2 === 0)) || state.sendZero) { + state.encodeUint((new $Uint64(0, x$2))); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encUint16Slice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + encUint32Array = function encUint32Array$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encUint32Slice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encUint32Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encUint32Slice = function encUint32Slice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$11, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2 === 0)) || state.sendZero) { + state.encodeUint((new $Uint64(0, x$2))); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encUint32Slice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + encUint64Array = function encUint64Array$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encUint64Slice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encUint64Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encUint64Slice = function encUint64Slice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$12, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2.$high === 0 && x$2.$low === 0)) || state.sendZero) { + state.encodeUint(x$2); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encUint64Slice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + encUintptrArray = function encUintptrArray$1(state, v) { + var {$24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _r$24 = encUintptrSlice(_arg, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: encUintptrArray$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _r$22, _r$23, _r$24, state, v, $s};return $f; + }; + encUintptrSlice = function encUintptrSlice$1(state, v) { + var {_i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$17, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$2 === 0)) || state.sendZero) { + state.encodeUint((new $Uint64(0, x$2.constructor === Number ? x$2 : 1))); + } + _i++; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: encUintptrSlice$1, $c: true, $r, _i, _r$22, _ref, _tuple, ok, slice, state, v, x$2, $s};return $f; + }; + NewDecoder = function NewDecoder$1(r) { + var _tuple, dec, ok, r; + dec = new Decoder.ptr(new nosync.Mutex.ptr(false, false, false, false, 0), $ifaceNil, new decBuffer.ptr(sliceType$1.nil, 0), false, false, false, ptrType$38.nil, sliceType$1.nil, $ifaceNil); + _tuple = $assertType(r, io.ByteReader, true); + ok = _tuple[1]; + if (!ok) { + r = bufio.NewReader(r); + } + dec.r = r; + dec.wireType = new $global.Map(); + dec.decoderCache = new $global.Map(); + dec.ignorerCache = new $global.Map(); + dec.countBuf = $makeSlice(sliceType$1, 9); + return dec; + }; + $pkg.NewDecoder = NewDecoder; + $ptrType(Decoder).prototype.recvType = function recvType(id$1) { + var {_arg, _arg$1, _entry, _key, _r$22, dec, id$1, wire, $s, $r, $c} = $restore(this, {id$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + if (id$1 < 64 || !((_entry = $mapIndex(dec.wireType,typeId.keyFor(id$1)), _entry !== undefined ? _entry.v : ptrType$29.nil) === ptrType$29.nil)) { + dec.err = errors.New("gob: duplicate type received"); + $s = -1; return; + } + wire = new wireType.ptr(ptrType$23.nil, ptrType$24.nil, ptrType$25.nil, ptrType$26.nil, ptrType$27.nil, ptrType$27.nil, ptrType$27.nil); + _arg = tWireType; + _r$22 = reflect.ValueOf(wire); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$22, reflect.Value); + $r = dec.decodeValue(_arg, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(dec.err, $ifaceNil))) { + $s = -1; return; + } + _key = id$1; (dec.wireType || $throwRuntimeError("assignment to entry in nil map")).set(typeId.keyFor(_key), { k: _key, v: wire }); + $s = -1; return; + /* */ } return; } var $f = {$blk: recvType, $c: true, $r, _arg, _arg$1, _entry, _key, _r$22, dec, id$1, wire, $s};return $f; + }; + $ptrType(Decoder).prototype.recvMessage = function recvMessage() { + var {_r$22, _tuple, dec, err, nbytes, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = decodeUintReader(dec.r, dec.countBuf); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + nbytes = _tuple[0]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + dec.err = err; + $s = -1; return false; + } + if ((nbytes.$high > 0 || (nbytes.$high === 0 && nbytes.$low >= 1073741824))) { + dec.err = errBadCount; + $s = -1; return false; + } + $r = dec.readMessage(((nbytes.$low >> 0))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return $interfaceIsEqual(dec.err, $ifaceNil); + /* */ } return; } var $f = {$blk: recvMessage, $c: true, $r, _r$22, _tuple, dec, err, nbytes, $s};return $f; + }; + $ptrType(Decoder).prototype.readMessage = function readMessage(nbytes) { + var {_r$22, _tuple, buf, dec, nbytes, $s, $r, $c} = $restore(this, {nbytes}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + if (!((dec.buf.Len() === 0))) { + $panic(new $String("non-empty decoder buffer")); + } + buf = sliceType$1.nil; + _r$22 = saferio.ReadData(dec.r, (new $Uint64(0, nbytes))); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + buf = _tuple[0]; + dec.err = _tuple[1]; + dec.buf.SetBytes(buf); + if ($interfaceIsEqual(dec.err, io.EOF)) { + dec.err = io.ErrUnexpectedEOF; + } + $s = -1; return; + /* */ } return; } var $f = {$blk: readMessage, $c: true, $r, _r$22, _tuple, buf, dec, nbytes, $s};return $f; + }; + toInt = function toInt$1(x$2) { + var i, x$2, x$3, x$4; + i = ((x$3 = $shiftRightUint64(x$2, 1), new $Int64(x$3.$high, x$3.$low))); + if (!((x$4 = new $Uint64(x$2.$high & 0, (x$2.$low & 1) >>> 0), (x$4.$high === 0 && x$4.$low === 0)))) { + i = new $Int64(~i.$high, ~i.$low >>> 0); + } + return i; + }; + $ptrType(Decoder).prototype.nextInt = function nextInt() { + var {_r$22, _tuple, dec, err, n, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = decodeUintReader(dec.buf, dec.countBuf); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + n = _tuple[0]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + dec.err = err; + } + $s = -1; return toInt(n); + /* */ } return; } var $f = {$blk: nextInt, $c: true, $r, _r$22, _tuple, dec, err, n, $s};return $f; + }; + $ptrType(Decoder).prototype.nextUint = function nextUint() { + var {_r$22, _tuple, dec, err, n, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = decodeUintReader(dec.buf, dec.countBuf); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + n = _tuple[0]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + dec.err = err; + } + $s = -1; return n; + /* */ } return; } var $f = {$blk: nextUint, $c: true, $r, _r$22, _tuple, dec, err, n, $s};return $f; + }; + $ptrType(Decoder).prototype.decodeTypeSequence = function decodeTypeSequence(isInterface) { + var {_r$22, _r$23, _r$24, dec, firstMessage, id$1, isInterface, x$2, $s, $r, $c} = $restore(this, {isInterface}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + firstMessage = true; + /* while (true) { */ case 1: + /* if (!($interfaceIsEqual(dec.err, $ifaceNil))) { break; } */ if(!($interfaceIsEqual(dec.err, $ifaceNil))) { $s = 2; continue; } + /* */ if (dec.buf.Len() === 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (dec.buf.Len() === 0) { */ case 3: + _r$22 = dec.recvMessage(); /* */ $s = 7; case 7: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* */ if (!_r$22) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!_r$22) { */ case 5: + if (!firstMessage && $interfaceIsEqual(dec.err, io.EOF)) { + dec.err = io.ErrUnexpectedEOF; + } + /* break; */ $s = 2; continue; + /* } */ case 6: + /* } */ case 4: + _r$23 = dec.nextInt(); /* */ $s = 8; case 8: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + id$1 = (((x$2 = _r$23, x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0)); + if (id$1 >= 0) { + $s = -1; return id$1; + } + $r = dec.recvType(-id$1); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(dec.err, $ifaceNil))) { + /* break; */ $s = 2; continue; + } + /* */ if (dec.buf.Len() > 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (dec.buf.Len() > 0) { */ case 10: + if (!isInterface) { + dec.err = errors.New("extra data in buffer"); + /* break; */ $s = 2; continue; + } + _r$24 = dec.nextUint(); /* */ $s = 12; case 12: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _r$24; + /* } */ case 11: + firstMessage = false; + $s = 1; continue; + case 2: + $s = -1; return -1; + /* */ } return; } var $f = {$blk: decodeTypeSequence, $c: true, $r, _r$22, _r$23, _r$24, dec, firstMessage, id$1, isInterface, x$2, $s};return $f; + }; + $ptrType(Decoder).prototype.Decode = function Decode(e) { + var {$24r, $24r$1, _r$22, _r$23, _r$24, _r$25, dec, e, value, $s, $r, $c} = $restore(this, {e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + /* */ if ($interfaceIsEqual(e, $ifaceNil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($interfaceIsEqual(e, $ifaceNil)) { */ case 1: + _r$22 = dec.DecodeValue($clone(new reflect.Value.ptr(ptrType$1.nil, 0, 0), reflect.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $24r = _r$22; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$23 = reflect.ValueOf(e); /* */ $s = 5; case 5: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + value = _r$23; + _r$24 = $clone(value, reflect.Value).Type().Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + /* */ if (!((_r$24 === 22))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!((_r$24 === 22))) { */ case 6: + dec.err = errors.New("gob: attempt to decode into a non-pointer"); + $s = -1; return dec.err; + /* } */ case 7: + _r$25 = dec.DecodeValue($clone(value, reflect.Value)); /* */ $s = 9; case 9: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + $24r$1 = _r$25; + $s = 10; case 10: return $24r$1; + /* */ } return; } var $f = {$blk: Decode, $c: true, $r, $24r, $24r$1, _r$22, _r$23, _r$24, _r$25, dec, e, value, $s};return $f; + }; + $ptrType(Decoder).prototype.DecodeValue = function DecodeValue(v) { + var {_r$22, dec, id$1, v, $s, $deferred, $r, $c} = $restore(this, {v}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + dec = this; + if ($clone(v, reflect.Value).IsValid()) { + if (($clone(v, reflect.Value).Kind() === 22) && !$clone(v, reflect.Value).IsNil()) { + } else if (!$clone(v, reflect.Value).CanSet()) { + $s = -1; return errors.New("gob: DecodeValue of unassignable value"); + } + } + dec.mutex.Lock(); + $deferred.push([$methodVal(dec.mutex, "Unlock"), []]); + dec.buf.Reset(); + dec.err = $ifaceNil; + _r$22 = dec.decodeTypeSequence(false); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + id$1 = _r$22; + /* */ if ($interfaceIsEqual(dec.err, $ifaceNil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($interfaceIsEqual(dec.err, $ifaceNil)) { */ case 2: + $r = dec.decodeValue(id$1, $clone(v, reflect.Value)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $s = -1; return dec.err; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: DecodeValue, $c: true, $r, _r$22, dec, id$1, v, $s, $deferred};return $f; } } + }; + $ptrType(decBuffer).prototype.Read = function Read(p) { + var d, n, p; + d = this; + n = $copySlice(p, $subslice(d.data, d.offset)); + if ((n === 0) && !((p.$length === 0))) { + return [0, io.EOF]; + } + d.offset = d.offset + (n) >> 0; + return [n, $ifaceNil]; + }; + $ptrType(decBuffer).prototype.Drop = function Drop(n) { + var d, n; + d = this; + if (n > d.Len()) { + $panic(new $String("drop")); + } + d.offset = d.offset + (n) >> 0; + }; + $ptrType(decBuffer).prototype.ReadByte = function ReadByte() { + var c, d, x$2, x$3; + d = this; + if (d.offset >= d.data.$length) { + return [0, io.EOF]; + } + c = (x$2 = d.data, x$3 = d.offset, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])); + d.offset = d.offset + (1) >> 0; + return [c, $ifaceNil]; + }; + $ptrType(decBuffer).prototype.Len = function Len$1() { + var d; + d = this; + return d.data.$length - d.offset >> 0; + }; + $ptrType(decBuffer).prototype.Bytes = function Bytes$1() { + var d; + d = this; + return $subslice(d.data, d.offset); + }; + $ptrType(decBuffer).prototype.SetBytes = function SetBytes(data) { + var d, data; + d = this; + d.data = data; + d.offset = 0; + }; + $ptrType(decBuffer).prototype.Reset = function Reset$1() { + var d; + d = this; + d.data = $subslice(d.data, 0, 0); + d.offset = 0; + }; + $ptrType(Decoder).prototype.newDecoderState = function newDecoderState(buf) { + var buf, d, dec; + dec = this; + d = dec.freeList; + if (d === ptrType$38.nil) { + d = new decoderState.ptr(ptrType$39.nil, ptrType$40.nil, 0, ptrType$38.nil); + d.dec = dec; + } else { + dec.freeList = d.next; + } + d.b = buf; + return d; + }; + $ptrType(Decoder).prototype.freeDecoderState = function freeDecoderState(d) { + var d, dec; + dec = this; + d.next = dec.freeList; + dec.freeList = d; + }; + overflow = function overflow$1(name$2) { + var name$2; + return errors.New("value for \"" + name$2 + "\" out of range"); + }; + decodeUintReader = function decodeUintReader$1(r, buf) { + var {_i, _r$22, _r$23, _ref, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, b, b$1, buf, err, n, r, width, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {r, buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x$2 = new $Uint64(0, 0); + width = 0; + err = $ifaceNil; + width = 1; + _r$22 = io.ReadFull(r, $subslice(buf, 0, width)); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + n = _tuple[0]; + err = _tuple[1]; + if (n === 0) { + $s = -1; return [x$2, width, err]; + } + b = (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]); + if (b <= 127) { + _tmp = (new $Uint64(0, b)); + _tmp$1 = width; + _tmp$2 = $ifaceNil; + x$2 = _tmp; + width = _tmp$1; + err = _tmp$2; + $s = -1; return [x$2, width, err]; + } + n = -((((b << 24 >> 24)) >> 0)); + if (n > 8) { + err = errBadUint; + $s = -1; return [x$2, width, err]; + } + _r$23 = io.ReadFull(r, $subslice(buf, 0, n)); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _tuple$1 = _r$23; + width = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + if ($interfaceIsEqual(err, io.EOF)) { + err = io.ErrUnexpectedEOF; + } + $s = -1; return [x$2, width, err]; + } + _ref = $subslice(buf, 0, width); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + b$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + x$2 = (x$3 = $shiftLeft64(x$2, 8), x$4 = (new $Uint64(0, b$1)), new $Uint64(x$3.$high | x$4.$high, (x$3.$low | x$4.$low) >>> 0)); + _i++; + } + width = width + (1) >> 0; + $s = -1; return [x$2, width, err]; + /* */ } return; } var $f = {$blk: decodeUintReader$1, $c: true, $r, _i, _r$22, _r$23, _ref, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, b, b$1, buf, err, n, r, width, x$2, x$3, x$4, $s};return $f; + }; + $ptrType(decoderState).prototype.decodeUint = function decodeUint() { + var {_i, _ref, _tuple, b, b$1, buf, err, n, state, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x$2 = new $Uint64(0, 0); + state = this; + _tuple = state.b.ReadByte(); + b = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + error_(err); + } + if (b <= 127) { + x$2 = (new $Uint64(0, b)); + $s = -1; return x$2; + } + n = -((((b << 24 >> 24)) >> 0)); + if (n > 8) { + error_(errBadUint); + } + buf = state.b.Bytes(); + /* */ if (buf.$length < n) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (buf.$length < n) { */ case 1: + $r = errorf("invalid uint data length %d: exceeds input size %d", new sliceType$2([new $Int(n), new $Int(buf.$length)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _ref = $subslice(buf, 0, n); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + b$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + x$2 = (x$3 = $shiftLeft64(x$2, 8), x$4 = (new $Uint64(0, b$1)), new $Uint64(x$3.$high | x$4.$high, (x$3.$low | x$4.$low) >>> 0)); + _i++; + } + state.b.Drop(n); + x$2 = x$2; + $s = -1; return x$2; + /* */ } return; } var $f = {$blk: decodeUint, $c: true, $r, _i, _ref, _tuple, b, b$1, buf, err, n, state, x$2, x$3, x$4, $s};return $f; + }; + $ptrType(decoderState).prototype.decodeInt = function decodeInt() { + var {_r$22, state, x$2, x$3, x$4, x$5, x$6, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + state = this; + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + x$2 = _r$22; + if (!((x$3 = new $Uint64(x$2.$high & 0, (x$2.$low & 1) >>> 0), (x$3.$high === 0 && x$3.$low === 0)))) { + $s = -1; return (x$4 = ((x$5 = $shiftRightUint64(x$2, 1), new $Int64(x$5.$high, x$5.$low))), new $Int64(~x$4.$high, ~x$4.$low >>> 0)); + } + $s = -1; return ((x$6 = $shiftRightUint64(x$2, 1), new $Int64(x$6.$high, x$6.$low))); + /* */ } return; } var $f = {$blk: decodeInt, $c: true, $r, _r$22, state, x$2, x$3, x$4, x$5, x$6, $s};return $f; + }; + $ptrType(decoderState).prototype.getLength = function getLength() { + var {_r$22, n, state, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + state = this; + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + n = ((_r$22.$low >> 0)); + if (n < 0 || state.b.Len() < n || 1073741824 <= n) { + $s = -1; return [0, false]; + } + $s = -1; return [n, true]; + /* */ } return; } var $f = {$blk: getLength, $c: true, $r, _r$22, n, state, $s};return $f; + }; + ignoreUint = function ignoreUint$1(i, state, v) { + var {_r$22, i, state, v, $s, $r, $c} = $restore(this, {i, state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$22; + $s = -1; return; + /* */ } return; } var $f = {$blk: ignoreUint$1, $c: true, $r, _r$22, i, state, v, $s};return $f; + }; + ignoreTwoUints = function ignoreTwoUints$1(i, state, v) { + var {_r$22, _r$23, i, state, v, $s, $r, $c} = $restore(this, {i, state, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$22; + _r$23 = state.decodeUint(); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$23; + $s = -1; return; + /* */ } return; } var $f = {$blk: ignoreTwoUints$1, $c: true, $r, _r$22, _r$23, i, state, v, $s};return $f; + }; + decAlloc = function decAlloc$1(v) { + var {_r$22, _r$23, _r$24, v, $s, $r, $c} = $restore(this, {v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* while (true) { */ case 1: + /* if (!($clone(v, reflect.Value).Kind() === 22)) { break; } */ if(!($clone(v, reflect.Value).Kind() === 22)) { $s = 2; continue; } + /* */ if ($clone(v, reflect.Value).IsNil()) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($clone(v, reflect.Value).IsNil()) { */ case 3: + _r$22 = $clone(v, reflect.Value).Type().Elem(); /* */ $s = 5; case 5: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$23 = reflect.New(_r$22); /* */ $s = 6; case 6: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$23, reflect.Value)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + _r$24 = $clone(v, reflect.Value).Elem(); /* */ $s = 8; case 8: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + v = _r$24; + $s = 1; continue; + case 2: + $s = -1; return v; + /* */ } return; } var $f = {$blk: decAlloc$1, $c: true, $r, _r$22, _r$23, _r$24, v, $s};return $f; + }; + decBool = function decBool$1(i, state, value) { + var {_r$22, i, state, value, x$2, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(value, reflect.Value).SetBool(!((x$2 = _r$22, (x$2.$high === 0 && x$2.$low === 0)))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: decBool$1, $c: true, $r, _r$22, i, state, value, x$2, $s};return $f; + }; + decInt8 = function decInt8$1(i, state, value) { + var {_r$22, i, state, v, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeInt(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + v = _r$22; + if ((v.$high < -1 || (v.$high === -1 && v.$low < 4294967168)) || (0 < v.$high || (0 === v.$high && 127 < v.$low))) { + error_(i.ovfl); + } + $clone(value, reflect.Value).SetInt(v); + $s = -1; return; + /* */ } return; } var $f = {$blk: decInt8$1, $c: true, $r, _r$22, i, state, v, value, $s};return $f; + }; + decUint8 = function decUint8$1(i, state, value) { + var {_r$22, i, state, v, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + v = _r$22; + if ((0 < v.$high || (0 === v.$high && 255 < v.$low))) { + error_(i.ovfl); + } + $clone(value, reflect.Value).SetUint(v); + $s = -1; return; + /* */ } return; } var $f = {$blk: decUint8$1, $c: true, $r, _r$22, i, state, v, value, $s};return $f; + }; + decInt16 = function decInt16$1(i, state, value) { + var {_r$22, i, state, v, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeInt(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + v = _r$22; + if ((v.$high < -1 || (v.$high === -1 && v.$low < 4294934528)) || (0 < v.$high || (0 === v.$high && 32767 < v.$low))) { + error_(i.ovfl); + } + $clone(value, reflect.Value).SetInt(v); + $s = -1; return; + /* */ } return; } var $f = {$blk: decInt16$1, $c: true, $r, _r$22, i, state, v, value, $s};return $f; + }; + decUint16 = function decUint16$1(i, state, value) { + var {_r$22, i, state, v, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + v = _r$22; + if ((0 < v.$high || (0 === v.$high && 65535 < v.$low))) { + error_(i.ovfl); + } + $clone(value, reflect.Value).SetUint(v); + $s = -1; return; + /* */ } return; } var $f = {$blk: decUint16$1, $c: true, $r, _r$22, i, state, v, value, $s};return $f; + }; + decInt32 = function decInt32$1(i, state, value) { + var {_r$22, i, state, v, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeInt(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + v = _r$22; + if ((v.$high < -1 || (v.$high === -1 && v.$low < 2147483648)) || (0 < v.$high || (0 === v.$high && 2147483647 < v.$low))) { + error_(i.ovfl); + } + $clone(value, reflect.Value).SetInt(v); + $s = -1; return; + /* */ } return; } var $f = {$blk: decInt32$1, $c: true, $r, _r$22, i, state, v, value, $s};return $f; + }; + decUint32 = function decUint32$1(i, state, value) { + var {_r$22, i, state, v, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + v = _r$22; + if ((0 < v.$high || (0 === v.$high && 4294967295 < v.$low))) { + error_(i.ovfl); + } + $clone(value, reflect.Value).SetUint(v); + $s = -1; return; + /* */ } return; } var $f = {$blk: decUint32$1, $c: true, $r, _r$22, i, state, v, value, $s};return $f; + }; + decInt64 = function decInt64$1(i, state, value) { + var {_r$22, i, state, v, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeInt(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + v = _r$22; + $clone(value, reflect.Value).SetInt(v); + $s = -1; return; + /* */ } return; } var $f = {$blk: decInt64$1, $c: true, $r, _r$22, i, state, v, value, $s};return $f; + }; + decUint64 = function decUint64$1(i, state, value) { + var {_r$22, i, state, v, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + v = _r$22; + $clone(value, reflect.Value).SetUint(v); + $s = -1; return; + /* */ } return; } var $f = {$blk: decUint64$1, $c: true, $r, _r$22, i, state, v, value, $s};return $f; + }; + float64FromBits = function float64FromBits$1(u) { + var u, v; + v = bits.ReverseBytes64(u); + return math.Float64frombits(v); + }; + float32FromBits = function float32FromBits$1(u, ovfl) { + var av, ovfl, u, v; + v = float64FromBits(u); + av = v; + if (av < 0) { + av = -av; + } + if (3.4028234663852886e+38 < av && av <= 1.7976931348623157e+308) { + error_(ovfl); + } + return v; + }; + decFloat32 = function decFloat32$1(i, state, value) { + var {_r$22, _r$23, i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$23 = float32FromBits(_r$22, i.ovfl); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $r = $clone(value, reflect.Value).SetFloat(_r$23); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: decFloat32$1, $c: true, $r, _r$22, _r$23, i, state, value, $s};return $f; + }; + decFloat64 = function decFloat64$1(i, state, value) { + var {_r$22, _r$23, i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$23 = float64FromBits(_r$22); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $r = $clone(value, reflect.Value).SetFloat(_r$23); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: decFloat64$1, $c: true, $r, _r$22, _r$23, i, state, value, $s};return $f; + }; + decComplex64 = function decComplex64$1(i, state, value) { + var {_r$22, _r$23, _r$24, _r$25, i, imag, real, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$23 = float32FromBits(_r$22, i.ovfl); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + real = _r$23; + _r$24 = state.decodeUint(); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _r$25 = float32FromBits(_r$24, i.ovfl); /* */ $s = 4; case 4: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + imag = _r$25; + $clone(value, reflect.Value).SetComplex(new $Complex128(real, imag)); + $s = -1; return; + /* */ } return; } var $f = {$blk: decComplex64$1, $c: true, $r, _r$22, _r$23, _r$24, _r$25, i, imag, real, state, value, $s};return $f; + }; + decComplex128 = function decComplex128$1(i, state, value) { + var {_r$22, _r$23, _r$24, _r$25, i, imag, real, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$23 = float64FromBits(_r$22); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + real = _r$23; + _r$24 = state.decodeUint(); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _r$25 = float64FromBits(_r$24); /* */ $s = 4; case 4: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + imag = _r$25; + $clone(value, reflect.Value).SetComplex(new $Complex128(real, imag)); + $s = -1; return; + /* */ } return; } var $f = {$blk: decComplex128$1, $c: true, $r, _r$22, _r$23, _r$24, _r$25, i, imag, real, state, value, $s};return $f; + }; + decUint8Slice = function decUint8Slice$1(i, state, value) { + var {_arg, _arg$1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _tuple, _tuple$1, _tuple$2, err, err$1, i, i$1, ln, n, ok, safe, state, sub, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.getLength(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + n = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + $r = errorf("bad %s slice length: %d", new sliceType$2([$clone(value, reflect.Value).Type(), new $Int(n)])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + _r$23 = $clone(value, reflect.Value).Cap(); /* */ $s = 8; case 8: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + /* */ if (_r$23 < n) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r$23 < n) { */ case 5: + _r$24 = saferio.SliceCap((ptrType$41.nil), (new $Uint64(0, n))); /* */ $s = 9; case 9: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + safe = _r$24; + /* */ if (safe < 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (safe < 0) { */ case 10: + $r = errorf("%s slice too big: %d elements", new sliceType$2([$clone(value, reflect.Value).Type(), new $Int(n)])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + _r$25 = reflect.MakeSlice($clone(value, reflect.Value).Type(), safe, safe); /* */ $s = 13; case 13: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + $r = $clone(value, reflect.Value).Set($clone(_r$25, reflect.Value)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ln = safe; + i$1 = 0; + /* while (true) { */ case 15: + /* if (!(i$1 < n)) { break; } */ if(!(i$1 < n)) { $s = 16; continue; } + /* */ if (i$1 >= ln) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (i$1 >= ln) { */ case 17: + _arg = $clone(value, reflect.Value); + _r$26 = $clone(value, reflect.Value).Type().Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _r$27 = reflect.Zero(_r$26); /* */ $s = 20; case 20: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$27, reflect.Value); + _r$28 = reflect.Append(_arg, new sliceType$22([_arg$1])); /* */ $s = 21; case 21: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + $r = $clone(value, reflect.Value).Set($clone(_r$28, reflect.Value)); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + _r$29 = $clone(value, reflect.Value).Cap(); /* */ $s = 23; case 23: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + ln = _r$29; + if (ln > n) { + ln = n; + } + $clone(value, reflect.Value).SetLen(ln); + _r$30 = $clone(value, reflect.Value).Slice(i$1, ln); /* */ $s = 24; case 24: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + sub = _r$30; + _r$31 = $clone(sub, reflect.Value).Bytes(); /* */ $s = 25; case 25: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + _r$32 = state.b.Read(_r$31); /* */ $s = 26; case 26: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + _tuple$1 = _r$32; + err = _tuple$1[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 27: + $r = errorf("error decoding []byte at %d: %s", new sliceType$2([err, new $Int(i$1)])); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 28: + i$1 = ln; + $s = 15; continue; + case 16: + $s = 7; continue; + /* } else { */ case 6: + $clone(value, reflect.Value).SetLen(n); + _r$33 = $clone(value, reflect.Value).Bytes(); /* */ $s = 30; case 30: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + _r$34 = state.b.Read(_r$33); /* */ $s = 31; case 31: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + _tuple$2 = _r$34; + err$1 = _tuple$2[1]; + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 32: + $r = errorf("error decoding []byte: %s", new sliceType$2([err$1])); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 33: + /* } */ case 7: + $s = -1; return; + /* */ } return; } var $f = {$blk: decUint8Slice$1, $c: true, $r, _arg, _arg$1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _tuple, _tuple$1, _tuple$2, err, err$1, i, i$1, ln, n, ok, safe, state, sub, value, $s};return $f; + }; + decString = function decString$1(i, state, value) { + var {_r$22, _tuple, data, i, n, ok, s, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.getLength(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + n = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + $r = errorf("bad %s slice length: %d", new sliceType$2([$clone(value, reflect.Value).Type(), new $Int(n)])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + data = state.b.Bytes(); + /* */ if (data.$length < n) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (data.$length < n) { */ case 5: + $r = errorf("invalid string length %d: exceeds input size %d", new sliceType$2([new $Int(n), new $Int(data.$length)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + s = ($bytesToString($subslice(data, 0, n))); + state.b.Drop(n); + $clone(value, reflect.Value).SetString(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: decString$1, $c: true, $r, _r$22, _tuple, data, i, n, ok, s, state, value, $s};return $f; + }; + ignoreUint8Array = function ignoreUint8Array$1(i, state, value) { + var {_r$22, _tuple, bn, i, n, ok, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = state.getLength(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + n = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + $r = errorf("slice length too large", sliceType$2.nil); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + bn = state.b.Len(); + /* */ if (bn < n) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (bn < n) { */ case 5: + $r = errorf("invalid slice length %d: exceeds input size %d", new sliceType$2([new $Int(n), new $Int(bn)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + state.b.Drop(n); + $s = -1; return; + /* */ } return; } var $f = {$blk: ignoreUint8Array$1, $c: true, $r, _r$22, _tuple, bn, i, n, ok, state, value, $s};return $f; + }; + $ptrType(Decoder).prototype.decodeSingle = function decodeSingle(engine, value) { + var {_r$22, dec, engine, instr, state, value, x$2, x$3, $s, $deferred, $r, $c} = $restore(this, {engine, value}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + dec = this; + state = dec.newDecoderState(dec.buf); + $deferred.push([$methodVal(dec, "freeDecoderState"), [state]]); + state.fieldnum = 0; + _r$22 = state.decodeUint(); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* */ if (!((x$2 = _r$22, (x$2.$high === 0 && x$2.$low === 0)))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((x$2 = _r$22, (x$2.$high === 0 && x$2.$low === 0)))) { */ case 1: + $r = errorf("decode: corrupted data: non-zero delta for singleton", sliceType$2.nil); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + instr = (x$3 = engine.instr, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])); + $r = instr.op(instr, state, $clone(value, reflect.Value)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: decodeSingle, $c: true, $r, _r$22, dec, engine, instr, state, value, x$2, x$3, $s, $deferred};return $f; } } + }; + $ptrType(Decoder).prototype.decodeStruct = function decodeStruct(engine, value) { + var {_r$22, _r$23, _r$24, dec, delta, engine, field, fieldnum, instr, state, value, x$2, $s, $deferred, $r, $c} = $restore(this, {engine, value}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + dec = this; + state = dec.newDecoderState(dec.buf); + $deferred.push([$methodVal(dec, "freeDecoderState"), [state]]); + state.fieldnum = -1; + /* while (true) { */ case 1: + /* if (!(state.b.Len() > 0)) { break; } */ if(!(state.b.Len() > 0)) { $s = 2; continue; } + _r$22 = state.decodeUint(); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + delta = ((_r$22.$low >> 0)); + /* */ if (delta < 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (delta < 0) { */ case 4: + $r = errorf("decode: corrupted data: negative delta", sliceType$2.nil); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + if (delta === 0) { + /* break; */ $s = 2; continue; + } + if (state.fieldnum >= (engine.instr.$length - delta >> 0)) { + error_(errRange); + } + fieldnum = state.fieldnum + delta >> 0; + instr = (x$2 = engine.instr, ((fieldnum < 0 || fieldnum >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + fieldnum])); + field = new reflect.Value.ptr(ptrType$1.nil, 0, 0); + /* */ if (!(instr.index === sliceType$4.nil)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(instr.index === sliceType$4.nil)) { */ case 7: + _r$23 = $clone(value, reflect.Value).FieldByIndex(instr.index); /* */ $s = 9; case 9: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + field = _r$23; + /* */ if ($clone(field, reflect.Value).Kind() === 22) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ($clone(field, reflect.Value).Kind() === 22) { */ case 10: + _r$24 = decAlloc($clone(field, reflect.Value)); /* */ $s = 12; case 12: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + field = _r$24; + /* } */ case 11: + /* } */ case 8: + $r = instr.op(instr, state, $clone(field, reflect.Value)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + state.fieldnum = fieldnum; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: decodeStruct, $c: true, $r, _r$22, _r$23, _r$24, dec, delta, engine, field, fieldnum, instr, state, value, x$2, $s, $deferred};return $f; } } + }; + $ptrType(Decoder).prototype.ignoreStruct = function ignoreStruct(engine) { + var {_r$22, dec, delta, engine, fieldnum, instr, state, x$2, $s, $deferred, $r, $c} = $restore(this, {engine}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + dec = this; + state = dec.newDecoderState(dec.buf); + $deferred.push([$methodVal(dec, "freeDecoderState"), [state]]); + state.fieldnum = -1; + /* while (true) { */ case 1: + /* if (!(state.b.Len() > 0)) { break; } */ if(!(state.b.Len() > 0)) { $s = 2; continue; } + _r$22 = state.decodeUint(); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + delta = ((_r$22.$low >> 0)); + /* */ if (delta < 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (delta < 0) { */ case 4: + $r = errorf("ignore decode: corrupted data: negative delta", sliceType$2.nil); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + if (delta === 0) { + /* break; */ $s = 2; continue; + } + fieldnum = state.fieldnum + delta >> 0; + if (fieldnum >= engine.instr.$length) { + error_(errRange); + } + instr = (x$2 = engine.instr, ((fieldnum < 0 || fieldnum >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + fieldnum])); + $r = instr.op(instr, state, $clone(noValue, reflect.Value)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + state.fieldnum = fieldnum; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ignoreStruct, $c: true, $r, _r$22, dec, delta, engine, fieldnum, instr, state, x$2, $s, $deferred};return $f; } } + }; + $ptrType(Decoder).prototype.ignoreSingle = function ignoreSingle(engine) { + var {_r$22, dec, delta, engine, instr, state, x$2, $s, $deferred, $r, $c} = $restore(this, {engine}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + dec = this; + state = dec.newDecoderState(dec.buf); + $deferred.push([$methodVal(dec, "freeDecoderState"), [state]]); + state.fieldnum = 0; + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + delta = ((_r$22.$low >> 0)); + /* */ if (!((delta === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((delta === 0))) { */ case 2: + $r = errorf("decode: corrupted data: non-zero delta for singleton", sliceType$2.nil); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + instr = (x$2 = engine.instr, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])); + $r = instr.op(instr, state, $clone(noValue, reflect.Value)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: ignoreSingle, $c: true, $r, _r$22, dec, delta, engine, instr, state, x$2, $s, $deferred};return $f; } } + }; + $ptrType(Decoder).prototype.decodeArrayHelper = function decodeArrayHelper(state, value, elemOp, length, ovfl, helper) { + var {_arg, _arg$1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _v, cp, dec, elemOp, helper, i, instr, isPtr, length, ln, ovfl, state, v, value, $s, $r, $c} = $restore(this, {state, value, elemOp, length, ovfl, helper}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + if (!(!(helper === $throwNilPointerError))) { _v = false; $s = 3; continue s; } + _r$22 = helper(state, $clone(value, reflect.Value), length, ovfl); /* */ $s = 4; case 4: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _v = _r$22; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return; + /* } */ case 2: + instr = new decInstr.ptr(elemOp, 0, sliceType$4.nil, ovfl); + _r$23 = $clone(value, reflect.Value).Type().Elem(); /* */ $s = 5; case 5: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = _r$23.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + isPtr = _r$24 === 22; + _r$25 = $clone(value, reflect.Value).Len(); /* */ $s = 7; case 7: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + ln = _r$25; + i = 0; + /* while (true) { */ case 8: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 9; continue; } + /* */ if (state.b.Len() === 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (state.b.Len() === 0) { */ case 10: + $r = errorf("decoding array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + /* */ if (i >= ln) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (i >= ln) { */ case 13: + _arg = $clone(value, reflect.Value); + _r$26 = $clone(value, reflect.Value).Type().Elem(); /* */ $s = 15; case 15: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _r$27 = reflect.Zero(_r$26); /* */ $s = 16; case 16: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$27, reflect.Value); + _r$28 = reflect.Append(_arg, new sliceType$22([_arg$1])); /* */ $s = 17; case 17: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + $r = $clone(value, reflect.Value).Set($clone(_r$28, reflect.Value)); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$29 = $clone(value, reflect.Value).Cap(); /* */ $s = 19; case 19: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + cp = _r$29; + if (cp > length) { + cp = length; + } + $clone(value, reflect.Value).SetLen(cp); + ln = cp; + /* } */ case 14: + _r$30 = $clone(value, reflect.Value).Index(i); /* */ $s = 20; case 20: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + v = _r$30; + /* */ if (isPtr) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (isPtr) { */ case 21: + _r$31 = decAlloc($clone(v, reflect.Value)); /* */ $s = 23; case 23: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + v = _r$31; + /* } */ case 22: + $r = elemOp(instr, state, $clone(v, reflect.Value)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 8; continue; + case 9: + $s = -1; return; + /* */ } return; } var $f = {$blk: decodeArrayHelper, $c: true, $r, _arg, _arg$1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _v, cp, dec, elemOp, helper, i, instr, isPtr, length, ln, ovfl, state, v, value, $s};return $f; + }; + $ptrType(Decoder).prototype.decodeArray = function decodeArray(state, value, elemOp, length, ovfl, helper) { + var {_r$22, dec, elemOp, helper, length, n, ovfl, state, value, x$2, $s, $r, $c} = $restore(this, {state, value, elemOp, length, ovfl, helper}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + n = _r$22; + /* */ if (!((x$2 = (new $Uint64(0, length)), (n.$high === x$2.$high && n.$low === x$2.$low)))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((x$2 = (new $Uint64(0, length)), (n.$high === x$2.$high && n.$low === x$2.$low)))) { */ case 2: + $r = errorf("length mismatch in decodeArray", sliceType$2.nil); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $r = dec.decodeArrayHelper(state, $clone(value, reflect.Value), elemOp, length, ovfl, helper); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: decodeArray, $c: true, $r, _r$22, dec, elemOp, helper, length, n, ovfl, state, value, x$2, $s};return $f; + }; + decodeIntoValue = function decodeIntoValue$1(state, op, isPtr, value, instr) { + var {_r$22, instr, isPtr, op, state, v, value, $s, $r, $c} = $restore(this, {state, op, isPtr, value, instr}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = value; + /* */ if (isPtr) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (isPtr) { */ case 1: + _r$22 = decAlloc($clone(value, reflect.Value)); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + v = _r$22; + /* } */ case 2: + $r = op(instr, state, $clone(v, reflect.Value)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return value; + /* */ } return; } var $f = {$blk: decodeIntoValue$1, $c: true, $r, _r$22, instr, isPtr, op, state, v, value, $s};return $f; + }; + $ptrType(Decoder).prototype.decodeMap = function decodeMap(mtyp, state, value, keyOp, elemOp, ovfl) { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$40, _r$41, dec, elem, elemInstr, elemIsPtr, elemOp, elemP, elemZ, i, key, keyInstr, keyIsPtr, keyOp, keyP, keyZ, mtyp, n, ovfl, state, value, $s, $r, $c} = $restore(this, {mtyp, state, value, keyOp, elemOp, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + n = ((_r$22.$low >> 0)); + /* */ if ($clone(value, reflect.Value).IsNil()) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($clone(value, reflect.Value).IsNil()) { */ case 2: + _r$23 = reflect.MakeMapWithSize(mtyp, n); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $r = $clone(value, reflect.Value).Set($clone(_r$23, reflect.Value)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + _r$24 = mtyp.Key(); /* */ $s = 6; case 6: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _r$25 = _r$24.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + keyIsPtr = _r$25 === 22; + _r$26 = mtyp.Elem(); /* */ $s = 8; case 8: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _r$27 = _r$26.Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + elemIsPtr = _r$27 === 22; + keyInstr = new decInstr.ptr(keyOp, 0, sliceType$4.nil, ovfl); + elemInstr = new decInstr.ptr(elemOp, 0, sliceType$4.nil, ovfl); + _r$28 = mtyp.Key(); /* */ $s = 10; case 10: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _r$29 = reflect.New(_r$28); /* */ $s = 11; case 11: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + keyP = _r$29; + _r$30 = mtyp.Key(); /* */ $s = 12; case 12: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _r$31 = reflect.Zero(_r$30); /* */ $s = 13; case 13: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + keyZ = _r$31; + _r$32 = mtyp.Elem(); /* */ $s = 14; case 14: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + _r$33 = reflect.New(_r$32); /* */ $s = 15; case 15: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + elemP = _r$33; + _r$34 = mtyp.Elem(); /* */ $s = 16; case 16: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + _r$35 = reflect.Zero(_r$34); /* */ $s = 17; case 17: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } + elemZ = _r$35; + i = 0; + /* while (true) { */ case 18: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 19; continue; } + _arg = state; + _arg$1 = keyOp; + _arg$2 = keyIsPtr; + _r$36 = $clone(keyP, reflect.Value).Elem(); /* */ $s = 20; case 20: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } + _arg$3 = $clone(_r$36, reflect.Value); + _arg$4 = keyInstr; + _r$37 = decodeIntoValue(_arg, _arg$1, _arg$2, _arg$3, _arg$4); /* */ $s = 21; case 21: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; } + key = _r$37; + _arg$5 = state; + _arg$6 = elemOp; + _arg$7 = elemIsPtr; + _r$38 = $clone(elemP, reflect.Value).Elem(); /* */ $s = 22; case 22: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; } + _arg$8 = $clone(_r$38, reflect.Value); + _arg$9 = elemInstr; + _r$39 = decodeIntoValue(_arg$5, _arg$6, _arg$7, _arg$8, _arg$9); /* */ $s = 23; case 23: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; } + elem = _r$39; + $r = $clone(value, reflect.Value).SetMapIndex($clone(key, reflect.Value), $clone(elem, reflect.Value)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$40 = $clone(keyP, reflect.Value).Elem(); /* */ $s = 25; case 25: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; } + $r = $clone(_r$40, reflect.Value).Set($clone(keyZ, reflect.Value)); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$41 = $clone(elemP, reflect.Value).Elem(); /* */ $s = 27; case 27: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; } + $r = $clone(_r$41, reflect.Value).Set($clone(elemZ, reflect.Value)); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 18; continue; + case 19: + $s = -1; return; + /* */ } return; } var $f = {$blk: decodeMap, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$40, _r$41, dec, elem, elemInstr, elemIsPtr, elemOp, elemP, elemZ, i, key, keyInstr, keyIsPtr, keyOp, keyP, keyZ, mtyp, n, ovfl, state, value, $s};return $f; + }; + $ptrType(Decoder).prototype.ignoreArrayHelper = function ignoreArrayHelper(state, elemOp, length) { + var {dec, elemOp, i, instr, length, state, $s, $r, $c} = $restore(this, {state, elemOp, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + instr = new decInstr.ptr(elemOp, 0, sliceType$4.nil, errors.New("no error")); + i = 0; + /* while (true) { */ case 1: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 2; continue; } + /* */ if (state.b.Len() === 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (state.b.Len() === 0) { */ case 3: + $r = errorf("decoding array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + $r = elemOp(instr, state, $clone(noValue, reflect.Value)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: ignoreArrayHelper, $c: true, $r, dec, elemOp, i, instr, length, state, $s};return $f; + }; + $ptrType(Decoder).prototype.ignoreArray = function ignoreArray(state, elemOp, length) { + var {_r$22, dec, elemOp, length, n, state, x$2, $s, $r, $c} = $restore(this, {state, elemOp, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + n = _r$22; + /* */ if (!((x$2 = (new $Uint64(0, length)), (n.$high === x$2.$high && n.$low === x$2.$low)))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((x$2 = (new $Uint64(0, length)), (n.$high === x$2.$high && n.$low === x$2.$low)))) { */ case 2: + $r = errorf("length mismatch in ignoreArray", sliceType$2.nil); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $r = dec.ignoreArrayHelper(state, elemOp, length); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: ignoreArray, $c: true, $r, _r$22, dec, elemOp, length, n, state, x$2, $s};return $f; + }; + $ptrType(Decoder).prototype.ignoreMap = function ignoreMap(state, keyOp, elemOp) { + var {_r$22, dec, elemInstr, elemOp, i, keyInstr, keyOp, n, state, $s, $r, $c} = $restore(this, {state, keyOp, elemOp}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + n = ((_r$22.$low >> 0)); + keyInstr = new decInstr.ptr(keyOp, 0, sliceType$4.nil, errors.New("no error")); + elemInstr = new decInstr.ptr(elemOp, 0, sliceType$4.nil, errors.New("no error")); + i = 0; + /* while (true) { */ case 2: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 3; continue; } + $r = keyOp(keyInstr, state, $clone(noValue, reflect.Value)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = elemOp(elemInstr, state, $clone(noValue, reflect.Value)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: ignoreMap, $c: true, $r, _r$22, dec, elemInstr, elemOp, i, keyInstr, keyOp, n, state, $s};return $f; + }; + $ptrType(Decoder).prototype.decodeSlice = function decodeSlice(state, value, elemOp, ovfl, helper) { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, dec, elemOp, helper, n, nBytes, ovfl, safe, size, state, typ, u, value, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {state, value, elemOp, ovfl, helper}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + u = _r$22; + typ = $clone(value, reflect.Value).Type(); + _r$23 = typ.Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = _r$23.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + size = ((x$2 = _r$24, new $Uint64(0, x$2.constructor === Number ? x$2 : 1))); + nBytes = $mul64(u, size); + n = ((u.$low >> 0)); + /* */ if (n < 0 || !((x$3 = (new $Uint64(0, n)), (x$3.$high === u.$high && x$3.$low === u.$low))) || (nBytes.$high > 0 || (nBytes.$high === 0 && nBytes.$low > 1073741824)) || ((size.$high > 0 || (size.$high === 0 && size.$low > 0)) && !((x$4 = $div64(nBytes, size, false), (x$4.$high === u.$high && x$4.$low === u.$low))))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (n < 0 || !((x$3 = (new $Uint64(0, n)), (x$3.$high === u.$high && x$3.$low === u.$low))) || (nBytes.$high > 0 || (nBytes.$high === 0 && nBytes.$low > 1073741824)) || ((size.$high > 0 || (size.$high === 0 && size.$low > 0)) && !((x$4 = $div64(nBytes, size, false), (x$4.$high === u.$high && x$4.$low === u.$low))))) { */ case 4: + _r$25 = typ.Elem(); /* */ $s = 6; case 6: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _arg = _r$25; + _arg$1 = u; + _arg$2 = size; + $r = errorf("%s slice too big: %d elements of %d bytes", new sliceType$2([_arg, _arg$1, _arg$2])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + _r$26 = $clone(value, reflect.Value).Cap(); /* */ $s = 11; case 11: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + /* */ if (_r$26 < n) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_r$26 < n) { */ case 8: + _r$27 = typ.Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _r$28 = reflect.PtrTo(_r$27); /* */ $s = 13; case 13: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _r$29 = reflect.Zero(_r$28); /* */ $s = 14; case 14: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + _r$30 = $clone(_r$29, reflect.Value).Interface(); /* */ $s = 15; case 15: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _r$31 = saferio.SliceCap(_r$30, (new $Uint64(0, n))); /* */ $s = 16; case 16: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + safe = _r$31; + /* */ if (safe < 0) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (safe < 0) { */ case 17: + _r$32 = typ.Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + _arg$3 = _r$32; + _arg$4 = u; + _arg$5 = size; + $r = errorf("%s slice too big: %d elements of %d bytes", new sliceType$2([_arg$3, _arg$4, _arg$5])); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + _r$33 = reflect.MakeSlice(typ, safe, safe); /* */ $s = 21; case 21: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + $r = $clone(value, reflect.Value).Set($clone(_r$33, reflect.Value)); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 10; continue; + /* } else { */ case 9: + $clone(value, reflect.Value).SetLen(n); + /* } */ case 10: + $r = dec.decodeArrayHelper(state, $clone(value, reflect.Value), elemOp, n, ovfl, helper); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: decodeSlice, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, dec, elemOp, helper, n, nBytes, ovfl, safe, size, state, typ, u, value, x$2, x$3, x$4, $s};return $f; + }; + $ptrType(Decoder).prototype.ignoreSlice = function ignoreSlice(state, elemOp) { + var {_arg, _arg$1, _arg$2, _r$22, dec, elemOp, state, $s, $r, $c} = $restore(this, {state, elemOp}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _arg = state; + _arg$1 = elemOp; + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$2 = ((_r$22.$low >> 0)); + $r = dec.ignoreArrayHelper(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: ignoreSlice, $c: true, $r, _arg, _arg$1, _arg$2, _r$22, dec, elemOp, state, $s};return $f; + }; + $ptrType(Decoder).prototype.decodeInterface = function decodeInterface(ityp, state, value) { + var {_r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _tuple, concreteId, dec, ityp, n, name$2, nr, ok, state, typ, typi, v, value, x$2, $s, $r, $c} = $restore(this, {ityp, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = state.decodeUint(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + nr = _r$22; + /* */ if ((nr.$high > 0 || (nr.$high === 0 && nr.$low > 2147483648))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ((nr.$high > 0 || (nr.$high === 0 && nr.$low > 2147483648))) { */ case 2: + $r = errorf("invalid type name length %d", new sliceType$2([nr])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + /* */ if ((x$2 = (new $Uint64(0, state.b.Len())), (nr.$high > x$2.$high || (nr.$high === x$2.$high && nr.$low > x$2.$low)))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ((x$2 = (new $Uint64(0, state.b.Len())), (nr.$high > x$2.$high || (nr.$high === x$2.$high && nr.$low > x$2.$low)))) { */ case 5: + $r = errorf("invalid type name length %d: exceeds input size", new sliceType$2([nr])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + n = ((nr.$low >> 0)); + name$2 = $subslice(state.b.Bytes(), 0, n); + state.b.Drop(n); + /* */ if (name$2.$length === 0) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (name$2.$length === 0) { */ case 8: + _r$23 = reflect.Zero($clone(value, reflect.Value).Type()); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $r = $clone(value, reflect.Value).Set($clone(_r$23, reflect.Value)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 9: + /* */ if (name$2.$length > 1024) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (name$2.$length > 1024) { */ case 12: + $r = errorf("name too long (%d bytes): %.20q...", new sliceType$2([new $Int(name$2.$length), name$2])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 13: + _tuple = nameToConcreteType.Load(new $String(($bytesToString(name$2)))); + typi = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!ok) { */ case 15: + $r = errorf("name not registered for interface: %q", new sliceType$2([name$2])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 16: + typ = $assertType(typi, reflect.Type); + _r$24 = dec.decodeTypeSequence(true); /* */ $s = 18; case 18: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + concreteId = _r$24; + if (concreteId < 0) { + error_(dec.err); + } + _r$25 = state.decodeUint(); /* */ $s = 19; case 19: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$25; + _r$26 = allocValue(typ); /* */ $s = 20; case 20: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + v = _r$26; + $r = dec.decodeValue(concreteId, $clone(v, reflect.Value)); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!($interfaceIsEqual(dec.err, $ifaceNil))) { + error_(dec.err); + } + _r$27 = typ.AssignableTo(ityp); /* */ $s = 24; case 24: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + /* */ if (!_r$27) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!_r$27) { */ case 22: + $r = errorf("%s is not assignable to type %s", new sliceType$2([typ, ityp])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 23: + $r = $clone(value, reflect.Value).Set($clone(v, reflect.Value)); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: decodeInterface, $c: true, $r, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _tuple, concreteId, dec, ityp, n, name$2, nr, ok, state, typ, typi, v, value, x$2, $s};return $f; + }; + $ptrType(Decoder).prototype.ignoreInterface = function ignoreInterface(state) { + var {_r$22, _r$23, _r$24, _tuple, _tuple$1, bn, dec, id$1, n, ok, state, $s, $r, $c} = $restore(this, {state}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = state.getLength(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + n = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + $r = errorf("bad interface encoding: name too large for buffer", sliceType$2.nil); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + bn = state.b.Len(); + /* */ if (bn < n) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (bn < n) { */ case 5: + $r = errorf("invalid interface value length %d: exceeds input size %d", new sliceType$2([new $Int(n), new $Int(bn)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + state.b.Drop(n); + _r$23 = dec.decodeTypeSequence(true); /* */ $s = 8; case 8: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + id$1 = _r$23; + if (id$1 < 0) { + error_(dec.err); + } + _r$24 = state.getLength(); /* */ $s = 9; case 9: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _tuple$1 = _r$24; + n = _tuple$1[0]; + ok = _tuple$1[1]; + /* */ if (!ok) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!ok) { */ case 10: + $r = errorf("bad interface encoding: data length too large for buffer", sliceType$2.nil); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + state.b.Drop(n); + $s = -1; return; + /* */ } return; } var $f = {$blk: ignoreInterface, $c: true, $r, _r$22, _r$23, _r$24, _tuple, _tuple$1, bn, dec, id$1, n, ok, state, $s};return $f; + }; + $ptrType(Decoder).prototype.decodeGobDecoder = function decodeGobDecoder(ut, state, value) { + var {_1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _tuple, b, dec, err, n, ok, state, ut, value, $s, $r, $c} = $restore(this, {ut, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = state.getLength(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + n = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + $r = errorf("GobDecoder: length too large for buffer", sliceType$2.nil); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + b = state.b.Bytes(); + /* */ if (b.$length < n) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (b.$length < n) { */ case 5: + $r = errorf("GobDecoder: invalid data length %d: exceeds input size %d", new sliceType$2([new $Int(n), new $Int(b.$length)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + b = $subslice(b, 0, n); + state.b.Drop(n); + err = $ifaceNil; + _1 = ut.externalDec; + /* */ if (_1 === (1)) { $s = 9; continue; } + /* */ if (_1 === (2)) { $s = 10; continue; } + /* */ if (_1 === (3)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_1 === (1)) { */ case 9: + _r$23 = $clone(value, reflect.Value).Interface(); /* */ $s = 13; case 13: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = $assertType(_r$23, GobDecoder).GobDecode(b); /* */ $s = 14; case 14: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + err = _r$24; + $s = 12; continue; + /* } else if (_1 === (2)) { */ case 10: + _r$25 = $clone(value, reflect.Value).Interface(); /* */ $s = 15; case 15: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$26 = $assertType(_r$25, encoding.BinaryUnmarshaler).UnmarshalBinary(b); /* */ $s = 16; case 16: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + err = _r$26; + $s = 12; continue; + /* } else if (_1 === (3)) { */ case 11: + _r$27 = $clone(value, reflect.Value).Interface(); /* */ $s = 17; case 17: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _r$28 = $assertType(_r$27, encoding.TextUnmarshaler).UnmarshalText(b); /* */ $s = 18; case 18: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + err = _r$28; + /* } */ case 12: + case 8: + if (!($interfaceIsEqual(err, $ifaceNil))) { + error_(err); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: decodeGobDecoder, $c: true, $r, _1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _tuple, b, dec, err, n, ok, state, ut, value, $s};return $f; + }; + $ptrType(Decoder).prototype.ignoreGobDecoder = function ignoreGobDecoder(state) { + var {_r$22, _tuple, bn, dec, n, ok, state, $s, $r, $c} = $restore(this, {state}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _r$22 = state.getLength(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + n = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + $r = errorf("GobDecoder: length too large for buffer", sliceType$2.nil); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + bn = state.b.Len(); + /* */ if (bn < n) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (bn < n) { */ case 5: + $r = errorf("GobDecoder: invalid data length %d: exceeds input size %d", new sliceType$2([new $Int(n), new $Int(bn)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + state.b.Drop(n); + $s = -1; return; + /* */ } return; } var $f = {$blk: ignoreGobDecoder, $c: true, $r, _r$22, _tuple, bn, dec, n, ok, state, $s};return $f; + }; + $ptrType(Decoder).prototype.decOpFor = function decOpFor(wireId, rt, name$2, inProgress) { + var {$24r, _1, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _entry$7, _key, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$40, _r$41, _tuple, _tuple$1, dec, elemId, elemId$1, elemId$2, elemOp, elemOp$1, elemOp$2, enginePtr, err, helper, helper$1, inProgress, k, keyId, keyOp, name$2, ok, op, opPtr, ovfl, ovfl$1, ovfl$2, rt, t, tt, typ, ut, ut$1, wireId, $s, $r, $c} = $restore(this, {wireId, rt, name$2, inProgress}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = [dec]; + elemOp = [elemOp]; + elemOp$1 = [elemOp$1]; + elemOp$2 = [elemOp$2]; + enginePtr = [enginePtr]; + helper = [helper]; + helper$1 = [helper$1]; + keyOp = [keyOp]; + op = [op]; + ovfl = [ovfl]; + ovfl$1 = [ovfl$1]; + ovfl$2 = [ovfl$2]; + t = [t]; + dec[0] = this; + _r$22 = userType(rt); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + ut = _r$22; + /* */ if (!((ut.externalDec === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((ut.externalDec === 0))) { */ case 2: + _r$23 = dec[0].gobDecodeOpFor(ut); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + $24r = _r$23; + $s = 5; case 5: return $24r; + /* } */ case 3: + opPtr = (_entry = $mapIndex(inProgress,reflect.Type.keyFor(rt)), _entry !== undefined ? _entry.v : ptrType$42.nil); + if (!(opPtr === ptrType$42.nil)) { + $s = -1; return opPtr; + } + typ = ut.base; + op[0] = $throwNilPointerError; + _r$24 = typ.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + k = _r$24; + if (((k >> 0)) < 25) { + op[0] = ((k < 0 || k >= decOpTable.length) ? ($throwRuntimeError("index out of range"), undefined) : decOpTable[k]); + } + /* */ if (op[0] === $throwNilPointerError) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (op[0] === $throwNilPointerError) { */ case 7: + _key = rt; (inProgress || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key), { k: _key, v: (op.$ptr || (op.$ptr = new ptrType$42(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, op))) }); + t[0] = typ; + _r$25 = t[0].Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _1 = _r$25; + /* */ if (_1 === (17)) { $s = 11; continue; } + /* */ if (_1 === (21)) { $s = 12; continue; } + /* */ if (_1 === (23)) { $s = 13; continue; } + /* */ if (_1 === (25)) { $s = 14; continue; } + /* */ if (_1 === (20)) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (_1 === (17)) { */ case 11: + name$2 = "element of " + name$2; + elemId = (_entry$1 = $mapIndex(dec[0].wireType,typeId.keyFor(wireId)), _entry$1 !== undefined ? _entry$1.v : ptrType$29.nil).ArrayT.Elem; + _arg = elemId; + _r$26 = t[0].Elem(); /* */ $s = 17; case 17: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _arg$1 = _r$26; + _arg$2 = name$2; + _arg$3 = inProgress; + _r$27 = dec[0].decOpFor(_arg, _arg$1, _arg$2, _arg$3); /* */ $s = 18; case 18: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + elemOp[0] = _r$27; + ovfl[0] = overflow(name$2); + _r$28 = t[0].Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _r$29 = _r$28.Kind(); /* */ $s = 20; case 20: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + helper[0] = (_entry$2 = $mapIndex(decArrayHelper,reflect.Kind.keyFor(_r$29)), _entry$2 !== undefined ? _entry$2.v : $throwNilPointerError); + op[0] = (function(dec, elemOp, elemOp$1, elemOp$2, enginePtr, helper, helper$1, keyOp, op, ovfl, ovfl$1, ovfl$2, t) { return function Decoder·decOpFor·func1(i, state, value) { + var {_arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _r$30, i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg$4 = state; + _arg$5 = $clone(value, reflect.Value); + _arg$6 = elemOp[0].$get(); + _r$30 = t[0].Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _arg$7 = _r$30; + _arg$8 = ovfl[0]; + _arg$9 = helper[0]; + $r = state.dec.decodeArray(_arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·decOpFor·func1, $c: true, $r, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _r$30, i, state, value, $s};return $f; + }; })(dec, elemOp, elemOp$1, elemOp$2, enginePtr, helper, helper$1, keyOp, op, ovfl, ovfl$1, ovfl$2, t); + $s = 16; continue; + /* } else if (_1 === (21)) { */ case 12: + keyId = (_entry$3 = $mapIndex(dec[0].wireType,typeId.keyFor(wireId)), _entry$3 !== undefined ? _entry$3.v : ptrType$29.nil).MapT.Key; + elemId$1 = (_entry$4 = $mapIndex(dec[0].wireType,typeId.keyFor(wireId)), _entry$4 !== undefined ? _entry$4.v : ptrType$29.nil).MapT.Elem; + _arg$4 = keyId; + _r$30 = t[0].Key(); /* */ $s = 21; case 21: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _arg$5 = _r$30; + _arg$6 = "key of " + name$2; + _arg$7 = inProgress; + _r$31 = dec[0].decOpFor(_arg$4, _arg$5, _arg$6, _arg$7); /* */ $s = 22; case 22: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + keyOp[0] = _r$31; + _arg$8 = elemId$1; + _r$32 = t[0].Elem(); /* */ $s = 23; case 23: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + _arg$9 = _r$32; + _arg$10 = "element of " + name$2; + _arg$11 = inProgress; + _r$33 = dec[0].decOpFor(_arg$8, _arg$9, _arg$10, _arg$11); /* */ $s = 24; case 24: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + elemOp$1[0] = _r$33; + ovfl$1[0] = overflow(name$2); + op[0] = (function(dec, elemOp, elemOp$1, elemOp$2, enginePtr, helper, helper$1, keyOp, op, ovfl, ovfl$1, ovfl$2, t) { return function Decoder·decOpFor·func2(i, state, value) { + var {i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = state.dec.decodeMap(t[0], state, $clone(value, reflect.Value), keyOp[0].$get(), elemOp$1[0].$get(), ovfl$1[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·decOpFor·func2, $c: true, $r, i, state, value, $s};return $f; + }; })(dec, elemOp, elemOp$1, elemOp$2, enginePtr, helper, helper$1, keyOp, op, ovfl, ovfl$1, ovfl$2, t); + $s = 16; continue; + /* } else if (_1 === (23)) { */ case 13: + name$2 = "element of " + name$2; + _r$34 = t[0].Elem(); /* */ $s = 27; case 27: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + _r$35 = _r$34.Kind(); /* */ $s = 28; case 28: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } + /* */ if (_r$35 === 8) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (_r$35 === 8) { */ case 25: + op[0] = decUint8Slice; + /* break; */ $s = 9; continue; + /* } */ case 26: + elemId$2 = 0; + _tuple = (_entry$5 = $mapIndex(builtinIdToType,typeId.keyFor(wireId)), _entry$5 !== undefined ? [_entry$5.v, true] : [$ifaceNil, false]); + tt = _tuple[0]; + ok = _tuple[1]; + if (ok) { + elemId$2 = $assertType(tt, ptrType$24).Elem; + } else { + elemId$2 = (_entry$6 = $mapIndex(dec[0].wireType,typeId.keyFor(wireId)), _entry$6 !== undefined ? _entry$6.v : ptrType$29.nil).SliceT.Elem; + } + _arg$12 = elemId$2; + _r$36 = t[0].Elem(); /* */ $s = 29; case 29: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } + _arg$13 = _r$36; + _arg$14 = name$2; + _arg$15 = inProgress; + _r$37 = dec[0].decOpFor(_arg$12, _arg$13, _arg$14, _arg$15); /* */ $s = 30; case 30: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; } + elemOp$2[0] = _r$37; + ovfl$2[0] = overflow(name$2); + _r$38 = t[0].Elem(); /* */ $s = 31; case 31: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; } + _r$39 = _r$38.Kind(); /* */ $s = 32; case 32: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; } + helper$1[0] = (_entry$7 = $mapIndex(decSliceHelper,reflect.Kind.keyFor(_r$39)), _entry$7 !== undefined ? _entry$7.v : $throwNilPointerError); + op[0] = (function(dec, elemOp, elemOp$1, elemOp$2, enginePtr, helper, helper$1, keyOp, op, ovfl, ovfl$1, ovfl$2, t) { return function Decoder·decOpFor·func3(i, state, value) { + var {i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = state.dec.decodeSlice(state, $clone(value, reflect.Value), elemOp$2[0].$get(), ovfl$2[0], helper$1[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·decOpFor·func3, $c: true, $r, i, state, value, $s};return $f; + }; })(dec, elemOp, elemOp$1, elemOp$2, enginePtr, helper, helper$1, keyOp, op, ovfl, ovfl$1, ovfl$2, t); + $s = 16; continue; + /* } else if (_1 === (25)) { */ case 14: + _r$40 = userType(typ); /* */ $s = 33; case 33: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; } + ut$1 = _r$40; + _r$41 = dec[0].getDecEnginePtr(wireId, ut$1); /* */ $s = 34; case 34: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; } + _tuple$1 = _r$41; + enginePtr[0] = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + error_(err); + } + op[0] = (function(dec, elemOp, elemOp$1, elemOp$2, enginePtr, helper, helper$1, keyOp, op, ovfl, ovfl$1, ovfl$2, t) { return function Decoder·decOpFor·func4(i, state, value) { + var {i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = dec[0].decodeStruct(enginePtr[0].$get(), $clone(value, reflect.Value)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·decOpFor·func4, $c: true, $r, i, state, value, $s};return $f; + }; })(dec, elemOp, elemOp$1, elemOp$2, enginePtr, helper, helper$1, keyOp, op, ovfl, ovfl$1, ovfl$2, t); + $s = 16; continue; + /* } else if (_1 === (20)) { */ case 15: + op[0] = (function(dec, elemOp, elemOp$1, elemOp$2, enginePtr, helper, helper$1, keyOp, op, ovfl, ovfl$1, ovfl$2, t) { return function Decoder·decOpFor·func5(i, state, value) { + var {i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = state.dec.decodeInterface(t[0], state, $clone(value, reflect.Value)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·decOpFor·func5, $c: true, $r, i, state, value, $s};return $f; + }; })(dec, elemOp, elemOp$1, elemOp$2, enginePtr, helper, helper$1, keyOp, op, ovfl, ovfl$1, ovfl$2, t); + /* } */ case 16: + case 9: + /* } */ case 8: + /* */ if (op[0] === $throwNilPointerError) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (op[0] === $throwNilPointerError) { */ case 35: + $r = errorf("decode can't handle type %s", new sliceType$2([rt])); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 36: + $s = -1; return (op.$ptr || (op.$ptr = new ptrType$42(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, op))); + /* */ } return; } var $f = {$blk: decOpFor, $c: true, $r, $24r, _1, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _entry$7, _key, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$40, _r$41, _tuple, _tuple$1, dec, elemId, elemId$1, elemId$2, elemOp, elemOp$1, elemOp$2, enginePtr, err, helper, helper$1, inProgress, k, keyId, keyOp, name$2, ok, op, opPtr, ovfl, ovfl$1, ovfl$2, rt, t, tt, typ, ut, ut$1, wireId, $s};return $f; + }; + $ptrType(Decoder).prototype.decIgnoreOpFor = function decIgnoreOpFor(wireId, inProgress, depth) { + var {_arg, _arg$1, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _key, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _tuple, _tuple$1, dec, depth, elemId, elemId$1, elemId$2, elemOp, elemOp$1, elemOp$2, enginePtr, err, inProgress, keyId, keyOp, ok, op, opPtr, wire, wireId, $s, $r, $c} = $restore(this, {wireId, inProgress, depth}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + elemOp = [elemOp]; + elemOp$1 = [elemOp$1]; + elemOp$2 = [elemOp$2]; + enginePtr = [enginePtr]; + keyOp = [keyOp]; + op = [op]; + wire = [wire]; + dec = this; + if (depth > maxIgnoreNestingDepth) { + error_(errors.New("invalid nesting depth")); + } + opPtr = (_entry = $mapIndex(inProgress,typeId.keyFor(wireId)), _entry !== undefined ? _entry.v : ptrType$42.nil); + if (!(opPtr === ptrType$42.nil)) { + $s = -1; return opPtr; + } + _tuple = (_entry$1 = $mapIndex(decIgnoreOpMap,typeId.keyFor(wireId)), _entry$1 !== undefined ? [_entry$1.v, true] : [$throwNilPointerError, false]); + op[0] = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!ok) { */ case 1: + _key = wireId; (inProgress || $throwRuntimeError("assignment to entry in nil map")).set(typeId.keyFor(_key), { k: _key, v: (op.$ptr || (op.$ptr = new ptrType$42(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, op))) }); + /* */ if (wireId === tInterface) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (wireId === tInterface) { */ case 3: + op[0] = (function(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire) { return function Decoder·decIgnoreOpFor·func1(i, state, value) { + var {i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = state.dec.ignoreInterface(state); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·decIgnoreOpFor·func1, $c: true, $r, i, state, value, $s};return $f; + }; })(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire); + $s = -1; return (op.$ptr || (op.$ptr = new ptrType$42(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, op))); + /* } */ case 4: + wire[0] = (_entry$2 = $mapIndex(dec.wireType,typeId.keyFor(wireId)), _entry$2 !== undefined ? _entry$2.v : ptrType$29.nil); + /* */ if (wire[0] === ptrType$29.nil) { $s = 6; continue; } + /* */ if (!(wire[0].ArrayT === ptrType$23.nil)) { $s = 7; continue; } + /* */ if (!(wire[0].MapT === ptrType$26.nil)) { $s = 8; continue; } + /* */ if (!(wire[0].SliceT === ptrType$24.nil)) { $s = 9; continue; } + /* */ if (!(wire[0].StructT === ptrType$25.nil)) { $s = 10; continue; } + /* */ if ((!(wire[0].GobEncoderT === ptrType$27.nil)) || (!(wire[0].BinaryMarshalerT === ptrType$27.nil)) || (!(wire[0].TextMarshalerT === ptrType$27.nil))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (wire[0] === ptrType$29.nil) { */ case 6: + _r$22 = new typeId(wireId).string(); /* */ $s = 13; case 13: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg = new $String(_r$22); + $r = errorf("bad data: undefined type %s", new sliceType$2([_arg])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 12; continue; + /* } else if (!(wire[0].ArrayT === ptrType$23.nil)) { */ case 7: + elemId = wire[0].ArrayT.Elem; + _r$23 = dec.decIgnoreOpFor(elemId, inProgress, depth + 1 >> 0); /* */ $s = 15; case 15: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + elemOp[0] = _r$23; + op[0] = (function(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire) { return function Decoder·decIgnoreOpFor·func2(i, state, value) { + var {i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = state.dec.ignoreArray(state, elemOp[0].$get(), wire[0].ArrayT.Len); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·decIgnoreOpFor·func2, $c: true, $r, i, state, value, $s};return $f; + }; })(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire); + $s = 12; continue; + /* } else if (!(wire[0].MapT === ptrType$26.nil)) { */ case 8: + keyId = (_entry$3 = $mapIndex(dec.wireType,typeId.keyFor(wireId)), _entry$3 !== undefined ? _entry$3.v : ptrType$29.nil).MapT.Key; + elemId$1 = (_entry$4 = $mapIndex(dec.wireType,typeId.keyFor(wireId)), _entry$4 !== undefined ? _entry$4.v : ptrType$29.nil).MapT.Elem; + _r$24 = dec.decIgnoreOpFor(keyId, inProgress, depth + 1 >> 0); /* */ $s = 16; case 16: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + keyOp[0] = _r$24; + _r$25 = dec.decIgnoreOpFor(elemId$1, inProgress, depth + 1 >> 0); /* */ $s = 17; case 17: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + elemOp$1[0] = _r$25; + op[0] = (function(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire) { return function Decoder·decIgnoreOpFor·func3(i, state, value) { + var {i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = state.dec.ignoreMap(state, keyOp[0].$get(), elemOp$1[0].$get()); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·decIgnoreOpFor·func3, $c: true, $r, i, state, value, $s};return $f; + }; })(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire); + $s = 12; continue; + /* } else if (!(wire[0].SliceT === ptrType$24.nil)) { */ case 9: + elemId$2 = wire[0].SliceT.Elem; + _r$26 = dec.decIgnoreOpFor(elemId$2, inProgress, depth + 1 >> 0); /* */ $s = 18; case 18: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + elemOp$2[0] = _r$26; + op[0] = (function(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire) { return function Decoder·decIgnoreOpFor·func4(i, state, value) { + var {i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = state.dec.ignoreSlice(state, elemOp$2[0].$get()); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·decIgnoreOpFor·func4, $c: true, $r, i, state, value, $s};return $f; + }; })(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire); + $s = 12; continue; + /* } else if (!(wire[0].StructT === ptrType$25.nil)) { */ case 10: + _r$27 = dec.getIgnoreEnginePtr(wireId); /* */ $s = 19; case 19: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _tuple$1 = _r$27; + enginePtr[0] = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + error_(err); + } + op[0] = (function(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire) { return function Decoder·decIgnoreOpFor·func5(i, state, value) { + var {i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = state.dec.ignoreStruct(enginePtr[0].$get()); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·decIgnoreOpFor·func5, $c: true, $r, i, state, value, $s};return $f; + }; })(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire); + $s = 12; continue; + /* } else if ((!(wire[0].GobEncoderT === ptrType$27.nil)) || (!(wire[0].BinaryMarshalerT === ptrType$27.nil)) || (!(wire[0].TextMarshalerT === ptrType$27.nil))) { */ case 11: + op[0] = (function(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire) { return function Decoder·decIgnoreOpFor·func6(i, state, value) { + var {i, state, value, $s, $r, $c} = $restore(this, {i, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = state.dec.ignoreGobDecoder(state); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·decIgnoreOpFor·func6, $c: true, $r, i, state, value, $s};return $f; + }; })(elemOp, elemOp$1, elemOp$2, enginePtr, keyOp, op, wire); + /* } */ case 12: + case 5: + /* } */ case 2: + /* */ if (op[0] === $throwNilPointerError) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (op[0] === $throwNilPointerError) { */ case 20: + _r$28 = new typeId(wireId).string(); /* */ $s = 22; case 22: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$28); + $r = errorf("bad data: ignore can't handle type %s", new sliceType$2([_arg$1])); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 21: + $s = -1; return (op.$ptr || (op.$ptr = new ptrType$42(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, op))); + /* */ } return; } var $f = {$blk: decIgnoreOpFor, $c: true, $r, _arg, _arg$1, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _key, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _tuple, _tuple$1, dec, depth, elemId, elemId$1, elemId$2, elemOp, elemOp$1, elemOp$2, enginePtr, err, inProgress, keyId, keyOp, ok, op, opPtr, wire, wireId, $s};return $f; + }; + $ptrType(Decoder).prototype.gobDecodeOpFor = function gobDecodeOpFor(ut) { + var {_r$22, dec, i, op, rcvrType, ut, $s, $r, $c} = $restore(this, {ut}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + op = [op]; + rcvrType = [rcvrType]; + ut = [ut]; + dec = this; + rcvrType[0] = ut[0].user; + /* */ if (ut[0].decIndir === -1) { $s = 1; continue; } + /* */ if (ut[0].decIndir > 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ut[0].decIndir === -1) { */ case 1: + rcvrType[0] = reflect.PointerTo(rcvrType[0]); + $s = 3; continue; + /* } else if (ut[0].decIndir > 0) { */ case 2: + i = 0; + /* while (true) { */ case 4: + /* if (!(i < ut[0].decIndir)) { break; } */ if(!(i < ut[0].decIndir)) { $s = 5; continue; } + _r$22 = rcvrType[0].Elem(); /* */ $s = 6; case 6: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + rcvrType[0] = _r$22; + i = i + (1) << 24 >> 24; + $s = 4; continue; + case 5: + /* } */ case 3: + op[0] = $throwNilPointerError; + op[0] = (function(op, rcvrType, ut) { return function Decoder·gobDecodeOpFor·func1(i$1, state, value) { + var {_r$23, _v, i$1, state, value, $s, $r, $c} = $restore(this, {i$1, state, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(!(($clone(value, reflect.Value).Kind() === 22)))) { _v = false; $s = 3; continue s; } + _r$23 = rcvrType[0].Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _v = _r$23 === 22; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + value = $clone(value, reflect.Value).Addr(); + /* } */ case 2: + $r = state.dec.decodeGobDecoder(ut[0], state, $clone(value, reflect.Value)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Decoder·gobDecodeOpFor·func1, $c: true, $r, _r$23, _v, i$1, state, value, $s};return $f; + }; })(op, rcvrType, ut); + $s = -1; return (op.$ptr || (op.$ptr = new ptrType$42(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, op))); + /* */ } return; } var $f = {$blk: gobDecodeOpFor, $c: true, $r, _r$22, dec, i, op, rcvrType, ut, $s};return $f; + }; + $ptrType(Decoder).prototype.compatibleType = function compatibleType(fr, fw, inProgress) { + var {$24r, $24r$1, $24r$2, MapType, _1, _entry, _entry$1, _entry$2, _key, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, _v$1, _v$2, array, dec, elem, fr, fw, inProgress, ok, ok$1, ok$2, rhs, sw, t, tt, ut, wire, $s, $r, $c} = $restore(this, {fr, fw, inProgress}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + _tuple = (_entry = $mapIndex(inProgress,reflect.Type.keyFor(fr)), _entry !== undefined ? [_entry.v, true] : [0, false]); + rhs = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return rhs === fw; + } + _key = fr; (inProgress || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key), { k: _key, v: fw }); + _r$22 = userType(fr); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + ut = _r$22; + _tuple$1 = (_entry$1 = $mapIndex(dec.wireType,typeId.keyFor(fw)), _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$29.nil, false]); + wire = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (!(((ut.externalDec === 1)) === (ok$1 && !(wire.GobEncoderT === ptrType$27.nil))) || !(((ut.externalDec === 2)) === (ok$1 && !(wire.BinaryMarshalerT === ptrType$27.nil))) || !(((ut.externalDec === 3)) === (ok$1 && !(wire.TextMarshalerT === ptrType$27.nil)))) { + $s = -1; return false; + } + if (!((ut.externalDec === 0))) { + $s = -1; return true; + } + t = ut.base; + _r$23 = t.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _1 = _r$23; + /* */ if (_1 === (1)) { $s = 4; continue; } + /* */ if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { $s = 5; continue; } + /* */ if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { $s = 6; continue; } + /* */ if ((_1 === (13)) || (_1 === (14))) { $s = 7; continue; } + /* */ if ((_1 === (15)) || (_1 === (16))) { $s = 8; continue; } + /* */ if (_1 === (24)) { $s = 9; continue; } + /* */ if (_1 === (20)) { $s = 10; continue; } + /* */ if (_1 === (17)) { $s = 11; continue; } + /* */ if (_1 === (21)) { $s = 12; continue; } + /* */ if (_1 === (23)) { $s = 13; continue; } + /* */ if (_1 === (25)) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_1 === (1)) { */ case 4: + $s = -1; return fw === tBool; + /* } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (4)) || (_1 === (5)) || (_1 === (6))) { */ case 5: + $s = -1; return fw === tInt; + /* } else if ((_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10)) || (_1 === (11)) || (_1 === (12))) { */ case 6: + $s = -1; return fw === tUint; + /* } else if ((_1 === (13)) || (_1 === (14))) { */ case 7: + $s = -1; return fw === tFloat; + /* } else if ((_1 === (15)) || (_1 === (16))) { */ case 8: + $s = -1; return fw === tComplex; + /* } else if (_1 === (24)) { */ case 9: + $s = -1; return fw === tString; + /* } else if (_1 === (20)) { */ case 10: + $s = -1; return fw === tInterface; + /* } else if (_1 === (17)) { */ case 11: + if (!ok$1 || wire.ArrayT === ptrType$23.nil) { + $s = -1; return false; + } + array = wire.ArrayT; + _r$24 = t.Len(); /* */ $s = 18; case 18: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + if (!(_r$24 === array.Len)) { _v = false; $s = 17; continue s; } + _r$25 = t.Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$26 = dec.compatibleType(_r$25, array.Elem, inProgress); /* */ $s = 20; case 20: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _v = _r$26; case 17: + $24r = _v; + $s = 21; case 21: return $24r; + /* } else if (_1 === (21)) { */ case 12: + if (!ok$1 || wire.MapT === ptrType$26.nil) { + $s = -1; return false; + } + MapType = wire.MapT; + _r$27 = t.Key(); /* */ $s = 23; case 23: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _r$28 = dec.compatibleType(_r$27, MapType.Key, inProgress); /* */ $s = 24; case 24: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + if (!(_r$28)) { _v$1 = false; $s = 22; continue s; } + _r$29 = t.Elem(); /* */ $s = 25; case 25: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + _r$30 = dec.compatibleType(_r$29, MapType.Elem, inProgress); /* */ $s = 26; case 26: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _v$1 = _r$30; case 22: + $24r$1 = _v$1; + $s = 27; case 27: return $24r$1; + /* } else if (_1 === (23)) { */ case 13: + _r$31 = t.Elem(); /* */ $s = 30; case 30: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + _r$32 = _r$31.Kind(); /* */ $s = 31; case 31: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + /* */ if (_r$32 === 8) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (_r$32 === 8) { */ case 28: + $s = -1; return fw === tBytes; + /* } */ case 29: + sw = ptrType$24.nil; + _tuple$2 = (_entry$2 = $mapIndex(builtinIdToType,typeId.keyFor(fw)), _entry$2 !== undefined ? [_entry$2.v, true] : [$ifaceNil, false]); + tt = _tuple$2[0]; + ok$2 = _tuple$2[1]; + if (ok$2) { + _tuple$3 = $assertType(tt, ptrType$24, true); + sw = _tuple$3[0]; + } else if (!(wire === ptrType$29.nil)) { + sw = wire.SliceT; + } + _r$33 = t.Elem(); /* */ $s = 32; case 32: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + _r$34 = userType(_r$33); /* */ $s = 33; case 33: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + elem = _r$34.base; + if (!(!(sw === ptrType$24.nil))) { _v$2 = false; $s = 34; continue s; } + _r$35 = dec.compatibleType(elem, sw.Elem, inProgress); /* */ $s = 35; case 35: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } + _v$2 = _r$35; case 34: + $24r$2 = _v$2; + $s = 36; case 36: return $24r$2; + /* } else if (_1 === (25)) { */ case 14: + $s = -1; return true; + /* } else { */ case 15: + $s = -1; return false; + /* } */ case 16: + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: compatibleType, $c: true, $r, $24r, $24r$1, $24r$2, MapType, _1, _entry, _entry$1, _entry$2, _key, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, _v$1, _v$2, array, dec, elem, fr, fw, inProgress, ok, ok$1, ok$2, rhs, sw, t, tt, ut, wire, $s};return $f; + }; + $ptrType(Decoder).prototype.typeString = function typeString(remoteId) { + var {$24r, _entry, _entry$1, _r$22, dec, remoteId, t, $s, $deferred, $r, $c} = $restore(this, {remoteId}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + dec = this; + typeLock.Lock(); + $deferred.push([$methodVal(typeLock, "Unlock"), []]); + t = (_entry = $mapIndex(idToType,typeId.keyFor(remoteId)), _entry !== undefined ? _entry.v : $ifaceNil); + /* */ if (!($interfaceIsEqual(t, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(t, $ifaceNil))) { */ case 1: + _r$22 = t.string(); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $24r = _r$22; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return (_entry$1 = $mapIndex(dec.wireType,typeId.keyFor(remoteId)), _entry$1 !== undefined ? _entry$1.v : ptrType$29.nil).string(); + /* */ } return; } } catch(err) { $err = err; $s = -1; return ""; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: typeString, $c: true, $r, $24r, _entry, _entry$1, _r$22, dec, remoteId, t, $s, $deferred};return $f; } } + }; + $ptrType(Decoder).prototype.compileSingle = function compileSingle(remoteId, ut) { + var {_r$22, _r$23, _r$24, _r$25, _r$26, _tmp, _tmp$1, _tmp$2, _tmp$3, dec, engine, err, name$2, op, ovfl, remoteId, remoteType, rt, ut, x$2, $s, $r, $c} = $restore(this, {remoteId, ut}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + engine = ptrType$43.nil; + err = $ifaceNil; + dec = this; + rt = ut.user; + engine = new decEngine.ptr(sliceType$23.nil, 0); + engine.instr = $makeSlice(sliceType$23, 1); + _r$22 = rt.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + name$2 = _r$22; + _r$23 = dec.compatibleType(rt, remoteId, new $global.Map()); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + /* */ if (!_r$23) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!_r$23) { */ case 2: + _r$24 = dec.typeString(remoteId); /* */ $s = 5; case 5: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + remoteType = _r$24; + _r$25 = ut.base.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + /* */ if ((_r$25 === 20) && !((remoteId === tInterface))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((_r$25 === 20) && !((remoteId === tInterface))) { */ case 6: + _tmp = ptrType$43.nil; + _tmp$1 = errors.New("gob: local interface type " + name$2 + " can only be decoded from remote interface type; received concrete type " + remoteType); + engine = _tmp; + err = _tmp$1; + $s = -1; return [engine, err]; + /* } */ case 7: + _tmp$2 = ptrType$43.nil; + _tmp$3 = errors.New("gob: decoding into local type " + name$2 + ", received remote type " + remoteType); + engine = _tmp$2; + err = _tmp$3; + $s = -1; return [engine, err]; + /* } */ case 3: + _r$26 = dec.decOpFor(remoteId, rt, name$2, new $global.Map()); /* */ $s = 9; case 9: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + op = _r$26; + ovfl = errors.New("value for \"" + name$2 + "\" out of range"); + decInstr.copy((x$2 = engine.instr, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])), new decInstr.ptr(op.$get(), 0, sliceType$4.nil, ovfl)); + engine.numInstr = 1; + $s = -1; return [engine, err]; + /* */ } return; } var $f = {$blk: compileSingle, $c: true, $r, _r$22, _r$23, _r$24, _r$25, _r$26, _tmp, _tmp$1, _tmp$2, _tmp$3, dec, engine, err, name$2, op, ovfl, remoteId, remoteType, rt, ut, x$2, $s};return $f; + }; + $ptrType(Decoder).prototype.compileIgnoreSingle = function compileIgnoreSingle(remoteId) { + var {_r$22, _r$23, _r$24, dec, engine, op, ovfl, remoteId, x$2, $s, $r, $c} = $restore(this, {remoteId}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + engine = new decEngine.ptr(sliceType$23.nil, 0); + engine.instr = $makeSlice(sliceType$23, 1); + _r$22 = dec.decIgnoreOpFor(remoteId, new $global.Map(), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + op = _r$22; + _r$23 = dec.typeString(remoteId); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = overflow(_r$23); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + ovfl = _r$24; + decInstr.copy((x$2 = engine.instr, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])), new decInstr.ptr(op.$get(), 0, sliceType$4.nil, ovfl)); + engine.numInstr = 1; + $s = -1; return engine; + /* */ } return; } var $f = {$blk: compileIgnoreSingle, $c: true, $r, _r$22, _r$23, _r$24, dec, engine, op, ovfl, remoteId, x$2, $s};return $f; + }; + $ptrType(Decoder).prototype.compileDec = function compileDec(remoteId, ut) { + var {$24r, _entry, _entry$1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _tuple, _tuple$1, _tuple$2, _tuple$3, dec, engine, err, fieldnum, localField, ok, op, op$1, ovfl, present, remoteId, rt, seen, srt, t, ut, wire, wireField, wireStruct, x$2, x$3, x$4, $s, $deferred, $r, $c} = $restore(this, {remoteId, ut}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + err = [err]; + engine = ptrType$43.nil; + err[0] = $ifaceNil; + dec = this; + $deferred.push([catchError, [(err.$ptr || (err.$ptr = new ptrType$37(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, err)))]]); + rt = ut.base; + srt = rt; + _r$22 = srt.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* */ if (!((_r$22 === 25)) || !((ut.externalDec === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r$22 === 25)) || !((ut.externalDec === 0))) { */ case 1: + _r$23 = dec.compileSingle(remoteId, ut); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _tuple = _r$23; + engine = _tuple[0]; + err[0] = _tuple[1]; + $24r = [engine, err[0]]; + $s = 5; case 5: return $24r; + /* } */ case 2: + wireStruct = ptrType$25.nil; + _tuple$1 = (_entry = $mapIndex(builtinIdToType,typeId.keyFor(remoteId)), _entry !== undefined ? [_entry.v, true] : [$ifaceNil, false]); + t = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok) { + _tuple$2 = $assertType(t, ptrType$25, true); + wireStruct = _tuple$2[0]; + } else { + wire = (_entry$1 = $mapIndex(dec.wireType,typeId.keyFor(remoteId)), _entry$1 !== undefined ? _entry$1.v : ptrType$29.nil); + if (wire === ptrType$29.nil) { + error_(errBadType); + } + wireStruct = wire.StructT; + } + /* */ if (wireStruct === ptrType$25.nil) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (wireStruct === ptrType$25.nil) { */ case 6: + $r = errorf("type mismatch in decoder: want struct type %s; got non-struct", new sliceType$2([rt])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + engine = new decEngine.ptr(sliceType$23.nil, 0); + engine.instr = $makeSlice(sliceType$23, wireStruct.Field.$length); + seen = new $global.Map(); + fieldnum = 0; + /* while (true) { */ case 9: + /* if (!(fieldnum < wireStruct.Field.$length)) { break; } */ if(!(fieldnum < wireStruct.Field.$length)) { $s = 10; continue; } + wireField = (x$2 = wireStruct.Field, ((fieldnum < 0 || fieldnum >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + fieldnum])); + /* */ if (wireField.Name === "") { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (wireField.Name === "") { */ case 11: + $r = errorf("empty name for remote field of type %s", new sliceType$2([new $String(wireStruct.CommonType.Name)])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + ovfl = overflow(wireField.Name); + _r$24 = srt.FieldByName(wireField.Name); /* */ $s = 14; case 14: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _tuple$3 = _r$24; + localField = $clone(_tuple$3[0], reflect.StructField); + present = _tuple$3[1]; + /* */ if (!present || !isExported(wireField.Name)) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!present || !isExported(wireField.Name)) { */ case 15: + _r$25 = dec.decIgnoreOpFor(wireField.Id, new $global.Map(), 0); /* */ $s = 17; case 17: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + op = _r$25; + decInstr.copy((x$3 = engine.instr, ((fieldnum < 0 || fieldnum >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + fieldnum])), new decInstr.ptr(op.$get(), fieldnum, sliceType$4.nil, ovfl)); + fieldnum = fieldnum + (1) >> 0; + /* continue; */ $s = 9; continue; + /* } */ case 16: + _r$26 = dec.compatibleType(localField.Type, wireField.Id, new $global.Map()); /* */ $s = 20; case 20: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + /* */ if (!_r$26) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!_r$26) { */ case 18: + $r = errorf("wrong type (%s) for received field %s.%s", new sliceType$2([localField.Type, new $String(wireStruct.CommonType.Name), new $String(wireField.Name)])); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 19: + _r$27 = dec.decOpFor(wireField.Id, localField.Type, localField.Name, seen); /* */ $s = 22; case 22: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + op$1 = _r$27; + decInstr.copy((x$4 = engine.instr, ((fieldnum < 0 || fieldnum >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + fieldnum])), new decInstr.ptr(op$1.$get(), fieldnum, localField.Index, ovfl)); + engine.numInstr = engine.numInstr + (1) >> 0; + fieldnum = fieldnum + (1) >> 0; + $s = 9; continue; + case 10: + $s = -1; return [engine, err[0]]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [engine, err[0]]; } if($curGoroutine.asleep) { var $f = {$blk: compileDec, $c: true, $r, $24r, _entry, _entry$1, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _tuple, _tuple$1, _tuple$2, _tuple$3, dec, engine, err, fieldnum, localField, ok, op, op$1, ovfl, present, remoteId, rt, seen, srt, t, ut, wire, wireField, wireStruct, x$2, x$3, x$4, $s, $deferred};return $f; } } + }; + $ptrType(Decoder).prototype.getDecEnginePtr = function getDecEnginePtr(remoteId, ut) { + var {_entry, _entry$1, _key, _key$1, _r$22, _tuple, _tuple$1, _tuple$2, dec, decoderMap, enginePtr, err, ok, remoteId, rt, ut, $s, $r, $c} = $restore(this, {remoteId, ut}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + enginePtr = ptrType$44.nil; + err = $ifaceNil; + dec = this; + rt = ut.user; + _tuple = (_entry = $mapIndex(dec.decoderCache,reflect.Type.keyFor(rt)), _entry !== undefined ? [_entry.v, true] : [false, false]); + decoderMap = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + decoderMap = new $global.Map(); + _key = rt; (dec.decoderCache || $throwRuntimeError("assignment to entry in nil map")).set(reflect.Type.keyFor(_key), { k: _key, v: decoderMap }); + } + _tuple$1 = (_entry$1 = $mapIndex(decoderMap,typeId.keyFor(remoteId)), _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$44.nil, false]); + enginePtr = _tuple$1[0]; + ok = _tuple$1[1]; + /* */ if (!ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!ok) { */ case 1: + enginePtr = $newDataPointer(ptrType$43.nil, ptrType$44); + _key$1 = remoteId; (decoderMap || $throwRuntimeError("assignment to entry in nil map")).set(typeId.keyFor(_key$1), { k: _key$1, v: enginePtr }); + _r$22 = dec.compileDec(remoteId, ut); /* */ $s = 3; case 3: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple$2 = _r$22; + enginePtr.$set(_tuple$2[0]); + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $mapDelete(decoderMap, typeId.keyFor(remoteId)); + } + /* } */ case 2: + $s = -1; return [enginePtr, err]; + /* */ } return; } var $f = {$blk: getDecEnginePtr, $c: true, $r, _entry, _entry$1, _key, _key$1, _r$22, _tuple, _tuple$1, _tuple$2, dec, decoderMap, enginePtr, err, ok, remoteId, rt, ut, $s};return $f; + }; + $ptrType(Decoder).prototype.getIgnoreEnginePtr = function getIgnoreEnginePtr(wireId) { + var {_arg, _arg$1, _entry, _entry$1, _key, _r$22, _r$23, _r$24, _tuple, _tuple$1, dec, enginePtr, err, ok, wire, wireId, $s, $r, $c} = $restore(this, {wireId}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + enginePtr = ptrType$44.nil; + err = $ifaceNil; + dec = this; + ok = false; + _tuple = (_entry = $mapIndex(dec.ignorerCache,typeId.keyFor(wireId)), _entry !== undefined ? [_entry.v, true] : [ptrType$44.nil, false]); + enginePtr = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!ok) { */ case 1: + enginePtr = $newDataPointer(ptrType$43.nil, ptrType$44); + _key = wireId; (dec.ignorerCache || $throwRuntimeError("assignment to entry in nil map")).set(typeId.keyFor(_key), { k: _key, v: enginePtr }); + wire = (_entry$1 = $mapIndex(dec.wireType,typeId.keyFor(wireId)), _entry$1 !== undefined ? _entry$1.v : ptrType$29.nil); + /* */ if (!(wire === ptrType$29.nil) && !(wire.StructT === ptrType$25.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(wire === ptrType$29.nil) && !(wire.StructT === ptrType$25.nil)) { */ case 3: + _arg = wireId; + _r$22 = userType(emptyStructType); /* */ $s = 6; case 6: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = dec.compileDec(_arg, _arg$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _tuple$1 = _r$23; + enginePtr.$set(_tuple$1[0]); + err = _tuple$1[1]; + $s = 5; continue; + /* } else { */ case 4: + _r$24 = dec.compileIgnoreSingle(wireId); /* */ $s = 8; case 8: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + enginePtr.$set(_r$24); + /* } */ case 5: + if (!($interfaceIsEqual(err, $ifaceNil))) { + $mapDelete(dec.ignorerCache, typeId.keyFor(wireId)); + } + /* } */ case 2: + $s = -1; return [enginePtr, err]; + /* */ } return; } var $f = {$blk: getIgnoreEnginePtr, $c: true, $r, _arg, _arg$1, _entry, _entry$1, _key, _r$22, _r$23, _r$24, _tuple, _tuple$1, dec, enginePtr, err, ok, wire, wireId, $s};return $f; + }; + $ptrType(Decoder).prototype.decodeValue = function decodeValue(wireId, value) { + var {_entry, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _tuple, _v, base, dec, engine, enginePtr, name$2, st, ut, value, wireId, wt, $s, $deferred, $r, $c} = $restore(this, {wireId, value}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + dec = this; + $deferred.push([catchError, [(dec.$ptr_err || (dec.$ptr_err = new ptrType$37(function() { return this.$target.err; }, function($v) { this.$target.err = $v; }, dec)))]]); + /* */ if (!$clone(value, reflect.Value).IsValid()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!$clone(value, reflect.Value).IsValid()) { */ case 1: + $r = dec.decodeIgnoredValue(wireId); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 2: + _r$22 = userType($clone(value, reflect.Value).Type()); /* */ $s = 4; case 4: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + ut = _r$22; + base = ut.base; + enginePtr = ptrType$44.nil; + _r$23 = dec.getDecEnginePtr(wireId, ut); /* */ $s = 5; case 5: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _tuple = _r$23; + enginePtr = _tuple[0]; + dec.err = _tuple[1]; + if (!($interfaceIsEqual(dec.err, $ifaceNil))) { + $s = -1; return; + } + _r$24 = decAlloc($clone(value, reflect.Value)); /* */ $s = 6; case 6: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + value = _r$24; + engine = enginePtr.$get(); + st = base; + _r$25 = st.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + /* */ if ((_r$25 === 25) && (ut.externalDec === 0)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ((_r$25 === 25) && (ut.externalDec === 0)) { */ case 7: + wt = (_entry = $mapIndex(dec.wireType,typeId.keyFor(wireId)), _entry !== undefined ? _entry.v : ptrType$29.nil); + if (!(engine.numInstr === 0)) { _v = false; $s = 13; continue s; } + _r$26 = st.NumField(); /* */ $s = 14; case 14: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _v = _r$26 > 0; case 13: + /* */ if (_v && !(wt === ptrType$29.nil) && wt.StructT.Field.$length > 0) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_v && !(wt === ptrType$29.nil) && wt.StructT.Field.$length > 0) { */ case 11: + _r$27 = base.Name(); /* */ $s = 15; case 15: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + name$2 = _r$27; + $r = errorf("type mismatch: no fields matched compiling decoder for %s", new sliceType$2([new $String(name$2)])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + $r = dec.decodeStruct(engine, $clone(value, reflect.Value)); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 9; continue; + /* } else { */ case 8: + $r = dec.decodeSingle(engine, $clone(value, reflect.Value)); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: decodeValue, $c: true, $r, _entry, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _tuple, _v, base, dec, engine, enginePtr, name$2, st, ut, value, wireId, wt, $s, $deferred};return $f; } } + }; + $ptrType(Decoder).prototype.decodeIgnoredValue = function decodeIgnoredValue(wireId) { + var {_entry, _r$22, _tuple, dec, enginePtr, wire, wireId, $s, $r, $c} = $restore(this, {wireId}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dec = this; + enginePtr = ptrType$44.nil; + _r$22 = dec.getIgnoreEnginePtr(wireId); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = _r$22; + enginePtr = _tuple[0]; + dec.err = _tuple[1]; + if (!($interfaceIsEqual(dec.err, $ifaceNil))) { + $s = -1; return; + } + wire = (_entry = $mapIndex(dec.wireType,typeId.keyFor(wireId)), _entry !== undefined ? _entry.v : ptrType$29.nil); + /* */ if (!(wire === ptrType$29.nil) && !(wire.StructT === ptrType$25.nil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(wire === ptrType$29.nil) && !(wire.StructT === ptrType$25.nil)) { */ case 2: + $r = dec.ignoreStruct(enginePtr.$get()); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 4; continue; + /* } else { */ case 3: + $r = dec.ignoreSingle(enginePtr.$get()); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + $s = -1; return; + /* */ } return; } var $f = {$blk: decodeIgnoredValue, $c: true, $r, _entry, _r$22, _tuple, dec, enginePtr, wire, wireId, $s};return $f; + }; + init$1 = function init$6() { + var _1, _2, _tmp, _tmp$1, iop, uop; + _tmp = $throwNilPointerError; + _tmp$1 = $throwNilPointerError; + iop = _tmp; + uop = _tmp$1; + _1 = 32; + if (_1 === (32)) { + iop = decInt32; + uop = decUint32; + } else if (_1 === (64)) { + iop = decInt64; + uop = decUint64; + } else { + $panic(new $String("gob: unknown size of int/uint")); + } + decOpTable[2] = iop; + decOpTable[7] = uop; + _2 = 32; + if (_2 === (32)) { + uop = decUint32; + } else if (_2 === (64)) { + uop = decUint64; + } else { + $panic(new $String("gob: unknown size of uintptr")); + } + decOpTable[12] = uop; + }; + allocValue = function allocValue$1(t) { + var {$24r, _r$22, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(reflect.New(t), reflect.Value).Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $24r = _r$22; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: allocValue$1, $c: true, $r, $24r, _r$22, t, $s};return $f; + }; + decBoolArray = function decBoolArray$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decBoolSlice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decBoolArray$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decBoolSlice = function decBoolSlice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$18, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding bool array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[0 /* bool */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$45(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeUint(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = !((x$2 = _r$23, (x$2.$high === 0 && x$2.$low === 0)))); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decBoolSlice$1, $c: true, $r, _r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s};return $f; + }; + decComplex64Array = function decComplex64Array$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decComplex64Slice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decComplex64Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decComplex64Slice = function decComplex64Slice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _r$24, _r$25, _r$26, _tuple, i, imag, length, ok, ovfl, real, slice, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$15, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding complex64 array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[1 /* complex64 */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$46(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeUint(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = float32FromBits(_r$23, ovfl); /* */ $s = 11; case 11: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + real = _r$24; + _r$25 = state.decodeUint(); /* */ $s = 12; case 12: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$26 = float32FromBits(_r$25, ovfl); /* */ $s = 13; case 13: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + imag = _r$26; + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = new $Complex64(($fround(real)), ($fround(imag)))); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decComplex64Slice$1, $c: true, $r, _r$22, _r$23, _r$24, _r$25, _r$26, _tuple, i, imag, length, ok, ovfl, real, slice, state, v, $s};return $f; + }; + decComplex128Array = function decComplex128Array$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decComplex128Slice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decComplex128Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decComplex128Slice = function decComplex128Slice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _r$24, _r$25, _r$26, _tuple, i, imag, length, ok, ovfl, real, slice, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$16, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding complex128 array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[2 /* complex128 */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$47(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeUint(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = float64FromBits(_r$23); /* */ $s = 11; case 11: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + real = _r$24; + _r$25 = state.decodeUint(); /* */ $s = 12; case 12: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$26 = float64FromBits(_r$25); /* */ $s = 13; case 13: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + imag = _r$26; + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = new $Complex128(real, imag)); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decComplex128Slice$1, $c: true, $r, _r$22, _r$23, _r$24, _r$25, _r$26, _tuple, i, imag, length, ok, ovfl, real, slice, state, v, $s};return $f; + }; + decFloat32Array = function decFloat32Array$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decFloat32Slice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decFloat32Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decFloat32Slice = function decFloat32Slice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _r$24, _tuple, i, length, ok, ovfl, slice, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$13, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding float32 array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[3 /* float32 */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$48(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeUint(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = float32FromBits(_r$23, ovfl); /* */ $s = 11; case 11: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = ($fround(_r$24))); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decFloat32Slice$1, $c: true, $r, _r$22, _r$23, _r$24, _tuple, i, length, ok, ovfl, slice, state, v, $s};return $f; + }; + decFloat64Array = function decFloat64Array$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decFloat64Slice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decFloat64Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decFloat64Slice = function decFloat64Slice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _r$24, _tuple, i, length, ok, ovfl, slice, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$14, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding float64 array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[4 /* float64 */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$49(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeUint(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = float64FromBits(_r$23); /* */ $s = 11; case 11: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = _r$24); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decFloat64Slice$1, $c: true, $r, _r$22, _r$23, _r$24, _tuple, i, length, ok, ovfl, slice, state, v, $s};return $f; + }; + decIntArray = function decIntArray$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decIntSlice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decIntArray$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decIntSlice = function decIntSlice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$4, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding int array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[5 /* int */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$50(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeInt(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + x$2 = _r$23; + if ((x$2.$high < -1 || (x$2.$high === -1 && x$2.$low < 2147483648)) || (0 < x$2.$high || (0 === x$2.$high && 2147483647 < x$2.$low))) { + error_(ovfl); + } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = (((x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0))); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decIntSlice$1, $c: true, $r, _r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s};return $f; + }; + decInt16Array = function decInt16Array$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decInt16Slice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decInt16Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decInt16Slice = function decInt16Slice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$6, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding int16 array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[6 /* int16 */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$51(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeInt(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + x$2 = _r$23; + if ((x$2.$high < -1 || (x$2.$high === -1 && x$2.$low < 4294934528)) || (0 < x$2.$high || (0 === x$2.$high && 32767 < x$2.$low))) { + error_(ovfl); + } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = (((x$2.$low + ((x$2.$high >> 31) * 4294967296)) << 16 >> 16))); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decInt16Slice$1, $c: true, $r, _r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s};return $f; + }; + decInt32Array = function decInt32Array$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decInt32Slice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decInt32Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decInt32Slice = function decInt32Slice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$7, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding int32 array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[7 /* int32 */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$52(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeInt(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + x$2 = _r$23; + if ((x$2.$high < -1 || (x$2.$high === -1 && x$2.$low < 2147483648)) || (0 < x$2.$high || (0 === x$2.$high && 2147483647 < x$2.$low))) { + error_(ovfl); + } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = (((x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0))); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decInt32Slice$1, $c: true, $r, _r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s};return $f; + }; + decInt64Array = function decInt64Array$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decInt64Slice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decInt64Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decInt64Slice = function decInt64Slice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$8, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding int64 array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[8 /* int64 */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$53(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeInt(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = _r$23); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decInt64Slice$1, $c: true, $r, _r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, $s};return $f; + }; + decInt8Array = function decInt8Array$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decInt8Slice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decInt8Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decInt8Slice = function decInt8Slice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$5, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding int8 array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[9 /* int8 */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$54(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeInt(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + x$2 = _r$23; + if ((x$2.$high < -1 || (x$2.$high === -1 && x$2.$low < 4294967168)) || (0 < x$2.$high || (0 === x$2.$high && 127 < x$2.$low))) { + error_(ovfl); + } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = (((x$2.$low + ((x$2.$high >> 31) * 4294967296)) << 24 >> 24))); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decInt8Slice$1, $c: true, $r, _r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s};return $f; + }; + decStringArray = function decStringArray$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decStringSlice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decStringArray$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decStringSlice = function decStringSlice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, data, i, length, n, ok, ovfl, slice, state, u, v, x$2, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$19, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding string array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + _r$23 = state.decodeUint(); /* */ $s = 7; case 7: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + u = _r$23; + n = ((u.$low >> 0)); + /* */ if (n < 0 || !((x$2 = (new $Uint64(0, n)), (x$2.$high === u.$high && x$2.$low === u.$low))) || n > state.b.Len()) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (n < 0 || !((x$2 = (new $Uint64(0, n)), (x$2.$high === u.$high && x$2.$low === u.$low))) || n > state.b.Len()) { */ case 8: + $r = errorf("length of string exceeds input size (%d bytes)", new sliceType$2([u])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + /* */ if (n > state.b.Len()) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (n > state.b.Len()) { */ case 11: + $r = errorf("string data too long for buffer: %d", new sliceType$2([new $Int(n)])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + data = state.b.Bytes(); + /* */ if (data.$length < n) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (data.$length < n) { */ case 14: + $r = errorf("invalid string length %d: exceeds input size %d", new sliceType$2([new $Int(n), new $Int(data.$length)])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 15: + ((i < 0 || i >= slice.$length) ? ($throwRuntimeError("index out of range"), undefined) : slice.$array[slice.$offset + i] = ($bytesToString($subslice(data, 0, n)))); + state.b.Drop(n); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decStringSlice$1, $c: true, $r, _r$22, _r$23, _tuple, data, i, length, n, ok, ovfl, slice, state, u, v, x$2, $s};return $f; + }; + decUintArray = function decUintArray$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decUintSlice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decUintArray$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decUintSlice = function decUintSlice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$9, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding uint array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[10 /* uint */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$55(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeUint(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + x$2 = _r$23; + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = ((x$2.$low >>> 0))); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decUintSlice$1, $c: true, $r, _r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s};return $f; + }; + decUint16Array = function decUint16Array$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decUint16Slice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decUint16Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decUint16Slice = function decUint16Slice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$10, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding uint16 array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[11 /* uint16 */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$56(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeUint(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + x$2 = _r$23; + if ((0 < x$2.$high || (0 === x$2.$high && 65535 < x$2.$low))) { + error_(ovfl); + } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = ((x$2.$low << 16 >>> 16))); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decUint16Slice$1, $c: true, $r, _r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s};return $f; + }; + decUint32Array = function decUint32Array$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decUint32Slice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decUint32Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decUint32Slice = function decUint32Slice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$11, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding uint32 array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[12 /* uint32 */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$57(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeUint(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + x$2 = _r$23; + if ((0 < x$2.$high || (0 === x$2.$high && 4294967295 < x$2.$low))) { + error_(ovfl); + } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = ((x$2.$low >>> 0))); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decUint32Slice$1, $c: true, $r, _r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s};return $f; + }; + decUint64Array = function decUint64Array$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decUint64Slice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decUint64Array$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decUint64Slice = function decUint64Slice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$12, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding uint64 array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[13 /* uint64 */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$58(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeUint(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = _r$23); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decUint64Slice$1, $c: true, $r, _r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, $s};return $f; + }; + decUintptrArray = function decUintptrArray$1(state, v, length, ovfl) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!$clone(v, reflect.Value).CanAddr()) { + $s = -1; return false; + } + _arg = state; + _r$22 = $clone(v, reflect.Value).Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + _r$23 = $clone(v, reflect.Value).Slice(0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$23, reflect.Value); + _arg$3 = length; + _arg$4 = ovfl; + _r$24 = decUintptrSlice(_arg, _arg$2, _arg$3, _arg$4); /* */ $s = 3; case 3: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r = _r$24; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: decUintptrArray$1, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r$22, _r$23, _r$24, length, ovfl, state, v, $s};return $f; + }; + decUintptrSlice = function decUintptrSlice$1(state, v, length, ovfl) { + var {_r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s, $r, $c} = $restore(this, {state, v, length, ovfl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + slice = [slice]; + _r$22 = $clone(v, reflect.Value).Interface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple = $assertType(_r$22, sliceType$17, true); + slice[0] = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return false; + } + i = 0; + /* while (true) { */ case 2: + /* if (!(i < length)) { break; } */ if(!(i < length)) { $s = 3; continue; } + /* */ if (state.b.Len() === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (state.b.Len() === 0) { */ case 4: + $r = errorf("decoding uintptr array or slice: length exceeds input size (%d elements)", new sliceType$2([new $Int(length)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* */ if (i >= slice[0].$length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i >= slice[0].$length) { */ case 7: + $r = growSlice[14 /* uintptr */]($clone(v, reflect.Value), (slice.$ptr || (slice.$ptr = new ptrType$59(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, slice))), length); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _r$23 = state.decodeUint(); /* */ $s = 10; case 10: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + x$2 = _r$23; + if ((0 < x$2.$high || (0 === x$2.$high && 4294967295 < x$2.$low))) { + error_(ovfl); + } + ((i < 0 || i >= slice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : slice[0].$array[slice[0].$offset + i] = ((x$2.$low >>> 0))); + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: decUintptrSlice$1, $c: true, $r, _r$22, _r$23, _tuple, i, length, ok, ovfl, slice, state, v, x$2, $s};return $f; + }; + growSlice[0 /* bool */] = function growSlice$1(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = false; + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$1, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[1 /* complex64 */] = function growSlice$2(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = new $Complex64(0, 0); + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$2, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[2 /* complex128 */] = function growSlice$3(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = new $Complex128(0, 0); + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$3, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[3 /* float32 */] = function growSlice$4(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = 0; + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$4, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[4 /* float64 */] = function growSlice$5(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = 0; + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$5, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[5 /* int */] = function growSlice$6(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = 0; + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$6, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[6 /* int16 */] = function growSlice$7(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = 0; + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$7, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[7 /* int32 */] = function growSlice$8(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = 0; + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$8, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[8 /* int64 */] = function growSlice$9(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = new $Int64(0, 0); + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$9, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[9 /* int8 */] = function growSlice$10(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = 0; + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$10, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[10 /* uint */] = function growSlice$11(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = 0; + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$11, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[11 /* uint16 */] = function growSlice$12(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = 0; + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$12, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[12 /* uint32 */] = function growSlice$13(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = 0; + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$13, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[13 /* uint64 */] = function growSlice$14(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = new $Uint64(0, 0); + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$14, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + growSlice[14 /* uintptr */] = function growSlice$15(v, ps, length) { + var {_r$22, cp, length, ps, s, v, zero, $s, $r, $c} = $restore(this, {v, ps, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + zero = 0; + s = ps.$get(); + s = $append(s, zero); + cp = s.$capacity; + if (cp > length) { + cp = length; + } + s = $subslice(s, 0, cp); + _r$22 = reflect.ValueOf(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = $clone(v, reflect.Value).Set($clone(_r$22, reflect.Value)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ps.$set(s); + $s = -1; return; + /* */ } return; } var $f = {$blk: growSlice$15, $c: true, $r, _r$22, cp, length, ps, s, v, zero, $s};return $f; + }; + typeId.methods = [{prop: "gobType", name: "gobType", pkg: "encoding/gob", typ: $funcType([], [gobType], false)}, {prop: "string", name: "string", pkg: "encoding/gob", typ: $funcType([], [$String], false)}, {prop: "name", name: "name", pkg: "encoding/gob", typ: $funcType([], [$String], false)}]; + ptrType$60.methods = [{prop: "id", name: "id", pkg: "encoding/gob", typ: $funcType([], [typeId], false)}, {prop: "setId", name: "setId", pkg: "encoding/gob", typ: $funcType([typeId], [], false)}, {prop: "string", name: "string", pkg: "encoding/gob", typ: $funcType([], [$String], false)}, {prop: "safeString", name: "safeString", pkg: "encoding/gob", typ: $funcType([mapType$2], [$String], false)}, {prop: "name", name: "name", pkg: "encoding/gob", typ: $funcType([], [$String], false)}]; + ptrType$23.methods = [{prop: "init", name: "init", pkg: "encoding/gob", typ: $funcType([gobType, $Int], [], false)}, {prop: "safeString", name: "safeString", pkg: "encoding/gob", typ: $funcType([mapType$2], [$String], false)}, {prop: "string", name: "string", pkg: "encoding/gob", typ: $funcType([], [$String], false)}]; + ptrType$27.methods = [{prop: "safeString", name: "safeString", pkg: "encoding/gob", typ: $funcType([mapType$2], [$String], false)}, {prop: "string", name: "string", pkg: "encoding/gob", typ: $funcType([], [$String], false)}]; + ptrType$26.methods = [{prop: "init", name: "init", pkg: "encoding/gob", typ: $funcType([gobType, gobType], [], false)}, {prop: "safeString", name: "safeString", pkg: "encoding/gob", typ: $funcType([mapType$2], [$String], false)}, {prop: "string", name: "string", pkg: "encoding/gob", typ: $funcType([], [$String], false)}]; + ptrType$24.methods = [{prop: "init", name: "init", pkg: "encoding/gob", typ: $funcType([gobType], [], false)}, {prop: "safeString", name: "safeString", pkg: "encoding/gob", typ: $funcType([mapType$2], [$String], false)}, {prop: "string", name: "string", pkg: "encoding/gob", typ: $funcType([], [$String], false)}]; + ptrType$25.methods = [{prop: "safeString", name: "safeString", pkg: "encoding/gob", typ: $funcType([mapType$2], [$String], false)}, {prop: "string", name: "string", pkg: "encoding/gob", typ: $funcType([], [$String], false)}]; + ptrType$29.methods = [{prop: "string", name: "string", pkg: "encoding/gob", typ: $funcType([], [$String], false)}]; + ptrType$33.methods = [{prop: "writer", name: "writer", pkg: "encoding/gob", typ: $funcType([], [io.Writer], false)}, {prop: "pushWriter", name: "pushWriter", pkg: "encoding/gob", typ: $funcType([io.Writer], [], false)}, {prop: "popWriter", name: "popWriter", pkg: "encoding/gob", typ: $funcType([], [], false)}, {prop: "setError", name: "setError", pkg: "encoding/gob", typ: $funcType([$error], [], false)}, {prop: "writeMessage", name: "writeMessage", pkg: "encoding/gob", typ: $funcType([io.Writer, ptrType$34], [], false)}, {prop: "sendActualType", name: "sendActualType", pkg: "encoding/gob", typ: $funcType([io.Writer, ptrType$32, ptrType, reflect.Type], [$Bool], false)}, {prop: "sendType", name: "sendType", pkg: "encoding/gob", typ: $funcType([io.Writer, ptrType$32, reflect.Type], [$Bool], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([$emptyInterface], [$error], false)}, {prop: "sendTypeDescriptor", name: "sendTypeDescriptor", pkg: "encoding/gob", typ: $funcType([io.Writer, ptrType$32, ptrType], [], false)}, {prop: "sendTypeId", name: "sendTypeId", pkg: "encoding/gob", typ: $funcType([ptrType$32, ptrType], [], false)}, {prop: "EncodeValue", name: "EncodeValue", pkg: "", typ: $funcType([reflect.Value], [$error], false)}, {prop: "newEncoderState", name: "newEncoderState", pkg: "encoding/gob", typ: $funcType([ptrType$34], [ptrType$32], false)}, {prop: "freeEncoderState", name: "freeEncoderState", pkg: "encoding/gob", typ: $funcType([ptrType$32], [], false)}, {prop: "encodeSingle", name: "encodeSingle", pkg: "encoding/gob", typ: $funcType([ptrType$34, ptrType$31, reflect.Value], [], false)}, {prop: "encodeStruct", name: "encodeStruct", pkg: "encoding/gob", typ: $funcType([ptrType$34, ptrType$31, reflect.Value], [], false)}, {prop: "encodeArray", name: "encodeArray", pkg: "encoding/gob", typ: $funcType([ptrType$34, reflect.Value, encOp, $Int, $Int, encHelper], [], false)}, {prop: "encodeMap", name: "encodeMap", pkg: "encoding/gob", typ: $funcType([ptrType$34, reflect.Value, encOp, encOp, $Int, $Int], [], false)}, {prop: "encodeInterface", name: "encodeInterface", pkg: "encoding/gob", typ: $funcType([ptrType$34, reflect.Value], [], false)}, {prop: "encodeGobEncoder", name: "encodeGobEncoder", pkg: "encoding/gob", typ: $funcType([ptrType$34, ptrType, reflect.Value], [], false)}, {prop: "encode", name: "encode", pkg: "encoding/gob", typ: $funcType([ptrType$34, reflect.Value, ptrType], [], false)}]; + ptrType$32.methods = [{prop: "encodeUint", name: "encodeUint", pkg: "encoding/gob", typ: $funcType([$Uint64], [], false)}, {prop: "encodeInt", name: "encodeInt", pkg: "encoding/gob", typ: $funcType([$Int64], [], false)}, {prop: "update", name: "update", pkg: "encoding/gob", typ: $funcType([ptrType$35], [], false)}]; + ptrType$34.methods = [{prop: "writeByte", name: "writeByte", pkg: "encoding/gob", typ: $funcType([$Uint8], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}]; + ptrType$39.methods = [{prop: "recvType", name: "recvType", pkg: "encoding/gob", typ: $funcType([typeId], [], false)}, {prop: "recvMessage", name: "recvMessage", pkg: "encoding/gob", typ: $funcType([], [$Bool], false)}, {prop: "readMessage", name: "readMessage", pkg: "encoding/gob", typ: $funcType([$Int], [], false)}, {prop: "nextInt", name: "nextInt", pkg: "encoding/gob", typ: $funcType([], [$Int64], false)}, {prop: "nextUint", name: "nextUint", pkg: "encoding/gob", typ: $funcType([], [$Uint64], false)}, {prop: "decodeTypeSequence", name: "decodeTypeSequence", pkg: "encoding/gob", typ: $funcType([$Bool], [typeId], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([$emptyInterface], [$error], false)}, {prop: "DecodeValue", name: "DecodeValue", pkg: "", typ: $funcType([reflect.Value], [$error], false)}, {prop: "newDecoderState", name: "newDecoderState", pkg: "encoding/gob", typ: $funcType([ptrType$40], [ptrType$38], false)}, {prop: "freeDecoderState", name: "freeDecoderState", pkg: "encoding/gob", typ: $funcType([ptrType$38], [], false)}, {prop: "decodeSingle", name: "decodeSingle", pkg: "encoding/gob", typ: $funcType([ptrType$43, reflect.Value], [], false)}, {prop: "decodeStruct", name: "decodeStruct", pkg: "encoding/gob", typ: $funcType([ptrType$43, reflect.Value], [], false)}, {prop: "ignoreStruct", name: "ignoreStruct", pkg: "encoding/gob", typ: $funcType([ptrType$43], [], false)}, {prop: "ignoreSingle", name: "ignoreSingle", pkg: "encoding/gob", typ: $funcType([ptrType$43], [], false)}, {prop: "decodeArrayHelper", name: "decodeArrayHelper", pkg: "encoding/gob", typ: $funcType([ptrType$38, reflect.Value, decOp, $Int, $error, decHelper], [], false)}, {prop: "decodeArray", name: "decodeArray", pkg: "encoding/gob", typ: $funcType([ptrType$38, reflect.Value, decOp, $Int, $error, decHelper], [], false)}, {prop: "decodeMap", name: "decodeMap", pkg: "encoding/gob", typ: $funcType([reflect.Type, ptrType$38, reflect.Value, decOp, decOp, $error], [], false)}, {prop: "ignoreArrayHelper", name: "ignoreArrayHelper", pkg: "encoding/gob", typ: $funcType([ptrType$38, decOp, $Int], [], false)}, {prop: "ignoreArray", name: "ignoreArray", pkg: "encoding/gob", typ: $funcType([ptrType$38, decOp, $Int], [], false)}, {prop: "ignoreMap", name: "ignoreMap", pkg: "encoding/gob", typ: $funcType([ptrType$38, decOp, decOp], [], false)}, {prop: "decodeSlice", name: "decodeSlice", pkg: "encoding/gob", typ: $funcType([ptrType$38, reflect.Value, decOp, $error, decHelper], [], false)}, {prop: "ignoreSlice", name: "ignoreSlice", pkg: "encoding/gob", typ: $funcType([ptrType$38, decOp], [], false)}, {prop: "decodeInterface", name: "decodeInterface", pkg: "encoding/gob", typ: $funcType([reflect.Type, ptrType$38, reflect.Value], [], false)}, {prop: "ignoreInterface", name: "ignoreInterface", pkg: "encoding/gob", typ: $funcType([ptrType$38], [], false)}, {prop: "decodeGobDecoder", name: "decodeGobDecoder", pkg: "encoding/gob", typ: $funcType([ptrType, ptrType$38, reflect.Value], [], false)}, {prop: "ignoreGobDecoder", name: "ignoreGobDecoder", pkg: "encoding/gob", typ: $funcType([ptrType$38], [], false)}, {prop: "decOpFor", name: "decOpFor", pkg: "encoding/gob", typ: $funcType([typeId, reflect.Type, $String, mapType$4], [ptrType$42], false)}, {prop: "decIgnoreOpFor", name: "decIgnoreOpFor", pkg: "encoding/gob", typ: $funcType([typeId, mapType$5, $Int], [ptrType$42], false)}, {prop: "gobDecodeOpFor", name: "gobDecodeOpFor", pkg: "encoding/gob", typ: $funcType([ptrType], [ptrType$42], false)}, {prop: "compatibleType", name: "compatibleType", pkg: "encoding/gob", typ: $funcType([reflect.Type, typeId, mapType$3], [$Bool], false)}, {prop: "typeString", name: "typeString", pkg: "encoding/gob", typ: $funcType([typeId], [$String], false)}, {prop: "compileSingle", name: "compileSingle", pkg: "encoding/gob", typ: $funcType([typeId, ptrType], [ptrType$43, $error], false)}, {prop: "compileIgnoreSingle", name: "compileIgnoreSingle", pkg: "encoding/gob", typ: $funcType([typeId], [ptrType$43], false)}, {prop: "compileDec", name: "compileDec", pkg: "encoding/gob", typ: $funcType([typeId, ptrType], [ptrType$43, $error], false)}, {prop: "getDecEnginePtr", name: "getDecEnginePtr", pkg: "encoding/gob", typ: $funcType([typeId, ptrType], [ptrType$44, $error], false)}, {prop: "getIgnoreEnginePtr", name: "getIgnoreEnginePtr", pkg: "encoding/gob", typ: $funcType([typeId], [ptrType$44, $error], false)}, {prop: "decodeValue", name: "decodeValue", pkg: "encoding/gob", typ: $funcType([typeId, reflect.Value], [], false)}, {prop: "decodeIgnoredValue", name: "decodeIgnoredValue", pkg: "encoding/gob", typ: $funcType([typeId], [], false)}]; + ptrType$38.methods = [{prop: "decodeUint", name: "decodeUint", pkg: "encoding/gob", typ: $funcType([], [$Uint64], false)}, {prop: "decodeInt", name: "decodeInt", pkg: "encoding/gob", typ: $funcType([], [$Int64], false)}, {prop: "getLength", name: "getLength", pkg: "encoding/gob", typ: $funcType([], [$Int, $Bool], false)}]; + ptrType$40.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Drop", name: "Drop", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType$1], [], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}]; + userTypeInfo.init("encoding/gob", [{prop: "user", name: "user", embedded: false, exported: false, typ: reflect.Type, tag: ""}, {prop: "base", name: "base", embedded: false, exported: false, typ: reflect.Type, tag: ""}, {prop: "indir", name: "indir", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "externalEnc", name: "externalEnc", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "externalDec", name: "externalDec", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "encIndir", name: "encIndir", embedded: false, exported: false, typ: $Int8, tag: ""}, {prop: "decIndir", name: "decIndir", embedded: false, exported: false, typ: $Int8, tag: ""}]); + gobType.init([{prop: "id", name: "id", pkg: "encoding/gob", typ: $funcType([], [typeId], false)}, {prop: "name", name: "name", pkg: "encoding/gob", typ: $funcType([], [$String], false)}, {prop: "safeString", name: "safeString", pkg: "encoding/gob", typ: $funcType([mapType$2], [$String], false)}, {prop: "setId", name: "setId", pkg: "encoding/gob", typ: $funcType([typeId], [], false)}, {prop: "string", name: "string", pkg: "encoding/gob", typ: $funcType([], [$String], false)}]); + CommonType.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Id", name: "Id", embedded: false, exported: true, typ: typeId, tag: ""}]); + arrayType.init("", [{prop: "CommonType", name: "CommonType", embedded: true, exported: true, typ: CommonType, tag: ""}, {prop: "Elem", name: "Elem", embedded: false, exported: true, typ: typeId, tag: ""}, {prop: "Len", name: "Len", embedded: false, exported: true, typ: $Int, tag: ""}]); + gobEncoderType.init("", [{prop: "CommonType", name: "CommonType", embedded: true, exported: true, typ: CommonType, tag: ""}]); + mapType.init("", [{prop: "CommonType", name: "CommonType", embedded: true, exported: true, typ: CommonType, tag: ""}, {prop: "Key", name: "Key", embedded: false, exported: true, typ: typeId, tag: ""}, {prop: "Elem", name: "Elem", embedded: false, exported: true, typ: typeId, tag: ""}]); + sliceType.init("", [{prop: "CommonType", name: "CommonType", embedded: true, exported: true, typ: CommonType, tag: ""}, {prop: "Elem", name: "Elem", embedded: false, exported: true, typ: typeId, tag: ""}]); + fieldType.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Id", name: "Id", embedded: false, exported: true, typ: typeId, tag: ""}]); + structType.init("", [{prop: "CommonType", name: "CommonType", embedded: true, exported: true, typ: CommonType, tag: ""}, {prop: "Field", name: "Field", embedded: false, exported: true, typ: sliceType$3, tag: ""}]); + wireType.init("", [{prop: "ArrayT", name: "ArrayT", embedded: false, exported: true, typ: ptrType$23, tag: ""}, {prop: "SliceT", name: "SliceT", embedded: false, exported: true, typ: ptrType$24, tag: ""}, {prop: "StructT", name: "StructT", embedded: false, exported: true, typ: ptrType$25, tag: ""}, {prop: "MapT", name: "MapT", embedded: false, exported: true, typ: ptrType$26, tag: ""}, {prop: "GobEncoderT", name: "GobEncoderT", embedded: false, exported: true, typ: ptrType$27, tag: ""}, {prop: "BinaryMarshalerT", name: "BinaryMarshalerT", embedded: false, exported: true, typ: ptrType$27, tag: ""}, {prop: "TextMarshalerT", name: "TextMarshalerT", embedded: false, exported: true, typ: ptrType$27, tag: ""}]); + typeInfo.init("encoding/gob", [{prop: "id", name: "id", embedded: false, exported: false, typ: typeId, tag: ""}, {prop: "encInit", name: "encInit", embedded: false, exported: false, typ: nosync.Mutex, tag: ""}, {prop: "encoder", name: "encoder", embedded: false, exported: false, typ: atomic.Pointer[0 /* encoding/gob.encEngine */], tag: ""}, {prop: "wire", name: "wire", embedded: false, exported: false, typ: ptrType$29, tag: ""}]); + GobEncoder.init([{prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}]); + GobDecoder.init([{prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$1], [$error], false)}]); + gobError.init("encoding/gob", [{prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + Encoder.init("encoding/gob", [{prop: "mutex", name: "mutex", embedded: false, exported: false, typ: nosync.Mutex, tag: ""}, {prop: "w", name: "w", embedded: false, exported: false, typ: sliceType$20, tag: ""}, {prop: "sent", name: "sent", embedded: false, exported: false, typ: mapType$3, tag: ""}, {prop: "countState", name: "countState", embedded: false, exported: false, typ: ptrType$32, tag: ""}, {prop: "freeList", name: "freeList", embedded: false, exported: false, typ: ptrType$32, tag: ""}, {prop: "byteBuf", name: "byteBuf", embedded: false, exported: false, typ: encBuffer, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + encHelper.init([ptrType$32, reflect.Value], [$Bool], false); + encoderState.init("encoding/gob", [{prop: "enc", name: "enc", embedded: false, exported: false, typ: ptrType$33, tag: ""}, {prop: "b", name: "b", embedded: false, exported: false, typ: ptrType$34, tag: ""}, {prop: "sendZero", name: "sendZero", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "fieldnum", name: "fieldnum", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: arrayType$2, tag: ""}, {prop: "next", name: "next", embedded: false, exported: false, typ: ptrType$32, tag: ""}]); + encBuffer.init("encoding/gob", [{prop: "data", name: "data", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "scratch", name: "scratch", embedded: false, exported: false, typ: arrayType$1, tag: ""}]); + encOp.init([ptrType$35, ptrType$32, reflect.Value], [], false); + encInstr.init("encoding/gob", [{prop: "op", name: "op", embedded: false, exported: false, typ: encOp, tag: ""}, {prop: "field", name: "field", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "indir", name: "indir", embedded: false, exported: false, typ: $Int, tag: ""}]); + encEngine.init("encoding/gob", [{prop: "instr", name: "instr", embedded: false, exported: false, typ: sliceType$21, tag: ""}]); + Decoder.init("encoding/gob", [{prop: "mutex", name: "mutex", embedded: false, exported: false, typ: nosync.Mutex, tag: ""}, {prop: "r", name: "r", embedded: false, exported: false, typ: io.Reader, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: decBuffer, tag: ""}, {prop: "wireType", name: "wireType", embedded: false, exported: false, typ: mapType$6, tag: ""}, {prop: "decoderCache", name: "decoderCache", embedded: false, exported: false, typ: mapType$8, tag: ""}, {prop: "ignorerCache", name: "ignorerCache", embedded: false, exported: false, typ: mapType$7, tag: ""}, {prop: "freeList", name: "freeList", embedded: false, exported: false, typ: ptrType$38, tag: ""}, {prop: "countBuf", name: "countBuf", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + decHelper.init([ptrType$38, reflect.Value, $Int, $error], [$Bool], false); + decoderState.init("encoding/gob", [{prop: "dec", name: "dec", embedded: false, exported: false, typ: ptrType$39, tag: ""}, {prop: "b", name: "b", embedded: false, exported: false, typ: ptrType$40, tag: ""}, {prop: "fieldnum", name: "fieldnum", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "next", name: "next", embedded: false, exported: false, typ: ptrType$38, tag: ""}]); + decBuffer.init("encoding/gob", [{prop: "data", name: "data", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}]); + decOp.init([ptrType$61, ptrType$38, reflect.Value], [], false); + decInstr.init("encoding/gob", [{prop: "op", name: "op", embedded: false, exported: false, typ: decOp, tag: ""}, {prop: "field", name: "field", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "ovfl", name: "ovfl", embedded: false, exported: false, typ: $error, tag: ""}]); + decEngine.init("encoding/gob", [{prop: "instr", name: "instr", embedded: false, exported: false, typ: sliceType$23, tag: ""}, {prop: "numInstr", name: "numInstr", embedded: false, exported: false, typ: $Int, tag: ""}]); + emptyStruct.init("", []); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = encoding.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = binary.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = nosync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = saferio.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bits.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + userTypeCache = new nosync.Map.ptr(false); + nextId = 0; + typeLock = new nosync.Mutex.ptr(false, false, false, false, 0); + builtinIdToType = false; + wireTypeUserInfo = ptrType.nil; + typeInfoMap = new atomic.Value.ptr($ifaceNil); + nameToConcreteType = new nosync.Map.ptr(false); + concreteTypeToName = new nosync.Map.ptr(false); + noValue = new reflect.Value.ptr(ptrType$1.nil, 0, 0); + _r = reflect.TypeOf((ptrType$2.nil)).Elem(); /* */ $s = 16; case 16: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + gobEncoderInterfaceType = _r; + _r$1 = reflect.TypeOf((ptrType$3.nil)).Elem(); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + gobDecoderInterfaceType = _r$1; + _r$2 = reflect.TypeOf((ptrType$4.nil)).Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + binaryMarshalerInterfaceType = _r$2; + _r$3 = reflect.TypeOf((ptrType$5.nil)).Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + binaryUnmarshalerInterfaceType = _r$3; + _r$4 = reflect.TypeOf((ptrType$6.nil)).Elem(); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + textMarshalerInterfaceType = _r$4; + _r$5 = reflect.TypeOf((ptrType$7.nil)).Elem(); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + textUnmarshalerInterfaceType = _r$5; + types = new $global.Map(); + idToType = new $global.Map(); + _r$6 = bootstrapType("bool", (ptrType$8.nil), 1); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + tBool = _r$6; + _r$7 = bootstrapType("int", (ptrType$9.nil), 2); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + tInt = _r$7; + _r$8 = bootstrapType("uint", (ptrType$10.nil), 3); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + tUint = _r$8; + _r$9 = bootstrapType("float", (ptrType$11.nil), 4); /* */ $s = 25; case 25: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + tFloat = _r$9; + _r$10 = bootstrapType("bytes", (ptrType$12.nil), 5); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + tBytes = _r$10; + _r$11 = bootstrapType("string", (ptrType$13.nil), 6); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + tString = _r$11; + _r$12 = bootstrapType("complex", (ptrType$14.nil), 7); /* */ $s = 28; case 28: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + tComplex = _r$12; + _r$13 = bootstrapType("interface", (ptrType$15.nil), 8); /* */ $s = 29; case 29: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + tInterface = _r$13; + _r$14 = bootstrapType("_reserved1", (ptrType$16.nil), 9); /* */ $s = 30; case 30: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + tReserved7 = _r$14; + _r$15 = bootstrapType("_reserved1", (ptrType$17.nil), 10); /* */ $s = 31; case 31: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + tReserved6 = _r$15; + _r$16 = bootstrapType("_reserved1", (ptrType$18.nil), 11); /* */ $s = 32; case 32: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + tReserved5 = _r$16; + _r$17 = bootstrapType("_reserved1", (ptrType$19.nil), 12); /* */ $s = 33; case 33: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + tReserved4 = _r$17; + _r$18 = bootstrapType("_reserved1", (ptrType$20.nil), 13); /* */ $s = 34; case 34: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + tReserved3 = _r$18; + _r$19 = bootstrapType("_reserved1", (ptrType$21.nil), 14); /* */ $s = 35; case 35: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + tReserved2 = _r$19; + _r$20 = bootstrapType("_reserved1", (ptrType$22.nil), 15); /* */ $s = 36; case 36: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + tReserved1 = _r$20; + _r$21 = mustGetTypeInfo(reflect.TypeOf((x = new wireType.ptr(ptrType$23.nil, ptrType$24.nil, ptrType$25.nil, ptrType$26.nil, ptrType$27.nil, ptrType$27.nil, ptrType$27.nil), new x.constructor.elem(x)))); /* */ $s = 37; case 37: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + tWireType = _r$21.id; + spaceForLength = $makeSlice(sliceType$1, 9); + encBufferPool = new nosync.Pool.ptr(sliceType$2.nil, (function func1() { + var e; + e = new encBuffer.ptr(sliceType$1.nil, arrayType$1.zero()); + e.data = $subslice(new sliceType$1(e.scratch), 0, 0); + return e; + })); + encOpTable = $toNativeArray($kindFunc, [$throwNilPointerError, encBool, encInt, encInt, encInt, encInt, encInt, encUint, encUint, encUint, encUint, encUint, encUint, encFloat, encFloat, encComplex, encComplex, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, encString]); + encArrayHelper = $makeMap(reflect.Kind.keyFor, [{ k: 1, v: encBoolArray }, { k: 15, v: encComplex64Array }, { k: 16, v: encComplex128Array }, { k: 13, v: encFloat32Array }, { k: 14, v: encFloat64Array }, { k: 2, v: encIntArray }, { k: 4, v: encInt16Array }, { k: 5, v: encInt32Array }, { k: 6, v: encInt64Array }, { k: 3, v: encInt8Array }, { k: 24, v: encStringArray }, { k: 7, v: encUintArray }, { k: 9, v: encUint16Array }, { k: 10, v: encUint32Array }, { k: 11, v: encUint64Array }, { k: 12, v: encUintptrArray }]); + encSliceHelper = $makeMap(reflect.Kind.keyFor, [{ k: 1, v: encBoolSlice }, { k: 15, v: encComplex64Slice }, { k: 16, v: encComplex128Slice }, { k: 13, v: encFloat32Slice }, { k: 14, v: encFloat64Slice }, { k: 2, v: encIntSlice }, { k: 4, v: encInt16Slice }, { k: 5, v: encInt32Slice }, { k: 6, v: encInt64Slice }, { k: 3, v: encInt8Slice }, { k: 24, v: encStringSlice }, { k: 7, v: encUintSlice }, { k: 9, v: encUint16Slice }, { k: 10, v: encUint32Slice }, { k: 11, v: encUint64Slice }, { k: 12, v: encUintptrSlice }]); + errBadCount = errors.New("invalid message length"); + errBadUint = errors.New("gob: encoded unsigned integer out of range"); + errBadType = errors.New("gob: unknown type id or corrupted data"); + errRange = errors.New("gob: bad data: field numbers out of bounds"); + decOpTable = $toNativeArray($kindFunc, [$throwNilPointerError, decBool, $throwNilPointerError, decInt8, decInt16, decInt32, decInt64, $throwNilPointerError, decUint8, decUint16, decUint32, decUint64, $throwNilPointerError, decFloat32, decFloat64, decComplex64, decComplex128, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, decString]); + decIgnoreOpMap = $makeMap(typeId.keyFor, [{ k: tBool, v: ignoreUint }, { k: tInt, v: ignoreUint }, { k: tUint, v: ignoreUint }, { k: tFloat, v: ignoreUint }, { k: tBytes, v: ignoreUint8Array }, { k: tString, v: ignoreUint8Array }, { k: tComplex, v: ignoreTwoUints }]); + maxIgnoreNestingDepth = 10000; + emptyStructType = reflect.TypeOf((x$1 = new emptyStruct.ptr(), new x$1.constructor.elem(x$1))); + decArrayHelper = $makeMap(reflect.Kind.keyFor, [{ k: 1, v: decBoolArray }, { k: 15, v: decComplex64Array }, { k: 16, v: decComplex128Array }, { k: 13, v: decFloat32Array }, { k: 14, v: decFloat64Array }, { k: 2, v: decIntArray }, { k: 4, v: decInt16Array }, { k: 5, v: decInt32Array }, { k: 6, v: decInt64Array }, { k: 3, v: decInt8Array }, { k: 24, v: decStringArray }, { k: 7, v: decUintArray }, { k: 9, v: decUint16Array }, { k: 10, v: decUint32Array }, { k: 11, v: decUint64Array }, { k: 12, v: decUintptrArray }]); + decSliceHelper = $makeMap(reflect.Kind.keyFor, [{ k: 1, v: decBoolSlice }, { k: 15, v: decComplex64Slice }, { k: 16, v: decComplex128Slice }, { k: 13, v: decFloat32Slice }, { k: 14, v: decFloat64Slice }, { k: 2, v: decIntSlice }, { k: 4, v: decInt16Slice }, { k: 5, v: decInt32Slice }, { k: 6, v: decInt64Slice }, { k: 3, v: decInt8Slice }, { k: 24, v: decStringSlice }, { k: 7, v: decUintSlice }, { k: 9, v: decUint16Slice }, { k: 10, v: decUint32Slice }, { k: 11, v: decUint64Slice }, { k: 12, v: decUintptrSlice }]); + $r = init(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + init$1(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["go/token"] = (function() { + var $pkg = {}, $init, fmt, nosync, sort, strconv, atomic, unicode, utf8, Token, serializedFile, serializedFileSet, Position, Pos, File, lineInfo, FileSet, sliceType, ptrType, sliceType$1, sliceType$2, sliceType$3, sliceType$4, ptrType$1, ptrType$2, sliceType$5, funcType, funcType$1, ptrType$3, keywords, tokens, init, Lookup, IsExported, searchLineInfos, NewFileSet, searchFiles, searchInts; + fmt = $packages["fmt"]; + nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + atomic = $packages["sync/atomic"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + Token = $newType(4, $kindInt, "token.Token", true, "go/token", true, null); + serializedFile = $newType(0, $kindStruct, "token.serializedFile", true, "go/token", false, function(Name_, Base_, Size_, Lines_, Infos_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.Base = 0; + this.Size = 0; + this.Lines = sliceType$2.nil; + this.Infos = sliceType$3.nil; + return; + } + this.Name = Name_; + this.Base = Base_; + this.Size = Size_; + this.Lines = Lines_; + this.Infos = Infos_; + }); + serializedFileSet = $newType(0, $kindStruct, "token.serializedFileSet", true, "go/token", false, function(Base_, Files_) { + this.$val = this; + if (arguments.length === 0) { + this.Base = 0; + this.Files = sliceType.nil; + return; + } + this.Base = Base_; + this.Files = Files_; + }); + Position = $newType(0, $kindStruct, "token.Position", true, "go/token", true, function(Filename_, Offset_, Line_, Column_) { + this.$val = this; + if (arguments.length === 0) { + this.Filename = ""; + this.Offset = 0; + this.Line = 0; + this.Column = 0; + return; + } + this.Filename = Filename_; + this.Offset = Offset_; + this.Line = Line_; + this.Column = Column_; + }); + Pos = $newType(4, $kindInt, "token.Pos", true, "go/token", true, null); + File = $newType(0, $kindStruct, "token.File", true, "go/token", true, function(name_, base_, size_, mutex_, lines_, infos_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.base = 0; + this.size = 0; + this.mutex = new nosync.Mutex.ptr(false, false, false, false, 0); + this.lines = sliceType$2.nil; + this.infos = sliceType$3.nil; + return; + } + this.name = name_; + this.base = base_; + this.size = size_; + this.mutex = mutex_; + this.lines = lines_; + this.infos = infos_; + }); + lineInfo = $newType(0, $kindStruct, "token.lineInfo", true, "go/token", false, function(Offset_, Filename_, Line_, Column_) { + this.$val = this; + if (arguments.length === 0) { + this.Offset = 0; + this.Filename = ""; + this.Line = 0; + this.Column = 0; + return; + } + this.Offset = Offset_; + this.Filename = Filename_; + this.Line = Line_; + this.Column = Column_; + }); + FileSet = $newType(0, $kindStruct, "token.FileSet", true, "go/token", true, function(mutex_, base_, files_, last_) { + this.$val = this; + if (arguments.length === 0) { + this.mutex = new nosync.RWMutex.ptr(new nosync.Mutex.ptr(false, false, false, false, 0), false, false, false, false, 0, 0, 0); + this.base = 0; + this.files = sliceType$1.nil; + this.last = new atomic.Pointer[5 /* go/token.File */].ptr(ptrType.nil); + return; + } + this.mutex = mutex_; + this.base = base_; + this.files = files_; + this.last = last_; + }); + $pkg.Token = Token; + $pkg.serializedFile = serializedFile; + $pkg.serializedFileSet = serializedFileSet; + $pkg.Position = Position; + $pkg.Pos = Pos; + $pkg.File = File; + $pkg.lineInfo = lineInfo; + $pkg.FileSet = FileSet; + $pkg.$finishSetup = function() { + sliceType = $sliceType(serializedFile); + ptrType = $ptrType(File); + sliceType$1 = $sliceType(ptrType); + sliceType$2 = $sliceType($Int); + sliceType$3 = $sliceType(lineInfo); + sliceType$4 = $sliceType($emptyInterface); + ptrType$1 = $ptrType(ptrType); + ptrType$2 = $ptrType(Position); + sliceType$5 = $sliceType($Uint8); + funcType = $funcType([$emptyInterface], [$error], false); + funcType$1 = $funcType([ptrType], [$Bool], false); + ptrType$3 = $ptrType(FileSet); + Token.prototype.String = function String() { + var s, tok; + tok = this.$val; + s = ""; + if (0 <= tok && tok < 89) { + s = ((tok < 0 || tok >= tokens.length) ? ($throwRuntimeError("index out of range"), undefined) : tokens[tok]); + } + if (s === "") { + s = "token(" + strconv.Itoa(((tok >> 0))) + ")"; + } + return s; + }; + $ptrType(Token).prototype.String = function(...$args) { return new Token(this.$get()).String(...$args); }; + Token.prototype.Precedence = function Precedence() { + var _1, op; + op = this.$val; + _1 = op; + if (_1 === (35)) { + return 1; + } else if (_1 === (34)) { + return 2; + } else if ((_1 === (39)) || (_1 === (44)) || (_1 === (40)) || (_1 === (45)) || (_1 === (41)) || (_1 === (46))) { + return 3; + } else if ((_1 === (12)) || (_1 === (13)) || (_1 === (18)) || (_1 === (19))) { + return 4; + } else if ((_1 === (14)) || (_1 === (15)) || (_1 === (16)) || (_1 === (20)) || (_1 === (21)) || (_1 === (17)) || (_1 === (22))) { + return 5; + } + return 0; + }; + $ptrType(Token).prototype.Precedence = function(...$args) { return new Token(this.$get()).Precedence(...$args); }; + init = function init$1() { + var _key, i; + keywords = new $global.Map(); + i = 61; + while (true) { + if (!(i < 86)) { break; } + _key = ((i < 0 || i >= tokens.length) ? ($throwRuntimeError("index out of range"), undefined) : tokens[i]); (keywords || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: i }); + i = i + (1) >> 0; + } + }; + Lookup = function Lookup$1(ident) { + var _entry, _tuple, ident, is_keyword, tok; + _tuple = (_entry = $mapIndex(keywords,$String.keyFor(ident)), _entry !== undefined ? [_entry.v, true] : [0, false]); + tok = _tuple[0]; + is_keyword = _tuple[1]; + if (is_keyword) { + return tok; + } + return 4; + }; + $pkg.Lookup = Lookup; + Token.prototype.IsLiteral = function IsLiteral() { + var tok; + tok = this.$val; + return 3 < tok && tok < 10; + }; + $ptrType(Token).prototype.IsLiteral = function(...$args) { return new Token(this.$get()).IsLiteral(...$args); }; + Token.prototype.IsOperator = function IsOperator() { + var tok; + tok = this.$val; + return (11 < tok && tok < 59) || (tok === 88); + }; + $ptrType(Token).prototype.IsOperator = function(...$args) { return new Token(this.$get()).IsOperator(...$args); }; + Token.prototype.IsKeyword = function IsKeyword$1() { + var tok; + tok = this.$val; + return 60 < tok && tok < 86; + }; + $ptrType(Token).prototype.IsKeyword = function(...$args) { return new Token(this.$get()).IsKeyword(...$args); }; + IsExported = function IsExported$1(name) { + var _tuple, ch, name; + _tuple = utf8.DecodeRuneInString(name); + ch = _tuple[0]; + return unicode.IsUpper(ch); + }; + $pkg.IsExported = IsExported; + $ptrType(FileSet).prototype.Read = function Read(decode) { + var {_r, decode, err, f, files, i, s, ss, x, $s, $r, $c} = $restore(this, {decode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ss = [ss]; + s = this; + ss[0] = new serializedFileSet.ptr(0, sliceType.nil); + _r = decode(ss[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + s.mutex.Lock(); + s.base = ss[0].Base; + files = $makeSlice(sliceType$1, ss[0].Files.$length); + i = 0; + while (true) { + if (!(i < ss[0].Files.$length)) { break; } + f = (x = ss[0].Files, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + ((i < 0 || i >= files.$length) ? ($throwRuntimeError("index out of range"), undefined) : files.$array[files.$offset + i] = new File.ptr(f.Name, f.Base, f.Size, new nosync.Mutex.ptr(false, false, false, false, 0), f.Lines, f.Infos)); + i = i + (1) >> 0; + } + s.files = files; + s.last.Store(ptrType.nil); + s.mutex.Unlock(); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Read, $c: true, $r, _r, decode, err, f, files, i, s, ss, x, $s};return $f; + }; + $ptrType(FileSet).prototype.Write = function Write(encode) { + var {$24r, _i, _r, _ref, encode, f, files, i, s, ss, $s, $r, $c} = $restore(this, {encode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + ss = new serializedFileSet.ptr(0, sliceType.nil); + s.mutex.Lock(); + ss.Base = s.base; + files = $makeSlice(sliceType, s.files.$length); + _ref = s.files; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + f.mutex.Lock(); + serializedFile.copy(((i < 0 || i >= files.$length) ? ($throwRuntimeError("index out of range"), undefined) : files.$array[files.$offset + i]), new serializedFile.ptr(f.name, f.base, f.size, $appendSlice((sliceType$2.nil), f.lines), $appendSlice((sliceType$3.nil), f.infos))); + f.mutex.Unlock(); + _i++; + } + ss.Files = files; + s.mutex.Unlock(); + _r = encode(new ss.constructor.elem(ss)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Write, $c: true, $r, $24r, _i, _r, _ref, encode, f, files, i, s, ss, $s};return $f; + }; + $ptrType(Position).prototype.IsValid = function IsValid() { + var pos; + pos = this; + return pos.Line > 0; + }; + $ptrType(Position).prototype.String = function String$1() { + var {_r, _r$1, pos, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pos = this; + s = pos.Filename; + /* */ if (pos.IsValid()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (pos.IsValid()) { */ case 1: + if (!(s === "")) { + s = s + (":"); + } + _r = fmt.Sprintf("%d", new sliceType$4([new $Int(pos.Line)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s = s + (_r); + /* */ if (!((pos.Column === 0))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!((pos.Column === 0))) { */ case 4: + _r$1 = fmt.Sprintf(":%d", new sliceType$4([new $Int(pos.Column)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + s = s + (_r$1); + /* } */ case 5: + /* } */ case 2: + if (s === "") { + s = "-"; + } + $s = -1; return s; + /* */ } return; } var $f = {$blk: String$1, $c: true, $r, _r, _r$1, pos, s, $s};return $f; + }; + Position.prototype.String = function(...$args) { return this.$val.String(...$args); }; + Pos.prototype.IsValid = function IsValid$1() { + var p; + p = this.$val; + return !((p === 0)); + }; + $ptrType(Pos).prototype.IsValid = function(...$args) { return new Pos(this.$get()).IsValid(...$args); }; + $ptrType(File).prototype.Name = function Name() { + var f; + f = this; + return f.name; + }; + $ptrType(File).prototype.Base = function Base() { + var f; + f = this; + return f.base; + }; + $ptrType(File).prototype.Size = function Size() { + var f; + f = this; + return f.size; + }; + $ptrType(File).prototype.LineCount = function LineCount() { + var f, n; + f = this; + f.mutex.Lock(); + n = f.lines.$length; + f.mutex.Unlock(); + return n; + }; + $ptrType(File).prototype.AddLine = function AddLine(offset) { + var f, i, offset, x, x$1; + f = this; + f.mutex.Lock(); + i = f.lines.$length; + if (((i === 0) || (x = f.lines, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) < offset) && offset < f.size) { + f.lines = $append(f.lines, offset); + } + f.mutex.Unlock(); + }; + $ptrType(File).prototype.MergeLine = function MergeLine(line) { + var {_r, _r$1, f, line, $s, $deferred, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + f = this; + /* */ if (line < 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (line < 1) { */ case 1: + _r = fmt.Sprintf("invalid line number %d (should be >= 1)", new sliceType$4([new $Int(line)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(new $String(_r)); + /* } */ case 2: + f.mutex.Lock(); + $deferred.push([$methodVal(f.mutex, "Unlock"), []]); + /* */ if (line >= f.lines.$length) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (line >= f.lines.$length) { */ case 4: + _r$1 = fmt.Sprintf("invalid line number %d (should be < %d)", new sliceType$4([new $Int(line), new $Int(f.lines.$length)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 5: + $copySlice($subslice(f.lines, line), $subslice(f.lines, (line + 1 >> 0))); + f.lines = $subslice(f.lines, 0, (f.lines.$length - 1 >> 0)); + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: MergeLine, $c: true, $r, _r, _r$1, f, line, $s, $deferred};return $f; } } + }; + $ptrType(File).prototype.SetLines = function SetLines(lines) { + var _i, _ref, f, i, lines, offset, size, x; + f = this; + size = f.size; + _ref = lines; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + offset = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0 && offset <= (x = i - 1 >> 0, ((x < 0 || x >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x])) || size <= offset) { + return false; + } + _i++; + } + f.mutex.Lock(); + f.lines = lines; + f.mutex.Unlock(); + return true; + }; + $ptrType(File).prototype.SetLinesForContent = function SetLinesForContent(content) { + var _i, _ref, b, content, f, line, lines, offset; + f = this; + lines = sliceType$2.nil; + line = 0; + _ref = content; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + offset = _i; + b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (line >= 0) { + lines = $append(lines, line); + } + line = -1; + if (b === 10) { + line = offset + 1 >> 0; + } + _i++; + } + f.mutex.Lock(); + f.lines = lines; + f.mutex.Unlock(); + }; + $ptrType(File).prototype.LineStart = function LineStart(line) { + var {_r, _r$1, f, line, x, x$1, $s, $deferred, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + f = this; + /* */ if (line < 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (line < 1) { */ case 1: + _r = fmt.Sprintf("invalid line number %d (should be >= 1)", new sliceType$4([new $Int(line)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(new $String(_r)); + /* } */ case 2: + f.mutex.Lock(); + $deferred.push([$methodVal(f.mutex, "Unlock"), []]); + /* */ if (line > f.lines.$length) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (line > f.lines.$length) { */ case 4: + _r$1 = fmt.Sprintf("invalid line number %d (should be < %d)", new sliceType$4([new $Int(line), new $Int(f.lines.$length)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 5: + $s = -1; return (((f.base + (x = f.lines, x$1 = line - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) >> 0) >> 0)); + /* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: LineStart, $c: true, $r, _r, _r$1, f, line, x, x$1, $s, $deferred};return $f; } } + }; + $ptrType(File).prototype.AddLineInfo = function AddLineInfo(offset, filename, line) { + var f, filename, line, offset; + f = this; + f.AddLineColumnInfo(offset, filename, line, 1); + }; + $ptrType(File).prototype.AddLineColumnInfo = function AddLineColumnInfo(offset, filename, line, column) { + var column, f, filename, i, line, offset, x, x$1; + f = this; + f.mutex.Lock(); + i = f.infos.$length; + if (((i === 0) || (x = f.infos, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Offset < offset) && offset < f.size) { + f.infos = $append(f.infos, new lineInfo.ptr(offset, filename, line, column)); + } + f.mutex.Unlock(); + }; + $ptrType(File).prototype.Pos = function Pos$1(offset) { + var {_r, f, offset, $s, $r, $c} = $restore(this, {offset}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + /* */ if (offset > f.size) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (offset > f.size) { */ case 1: + _r = fmt.Sprintf("invalid file offset %d (should be <= %d)", new sliceType$4([new $Int(offset), new $Int(f.size)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(new $String(_r)); + /* } */ case 2: + $s = -1; return (((f.base + offset >> 0) >> 0)); + /* */ } return; } var $f = {$blk: Pos$1, $c: true, $r, _r, f, offset, $s};return $f; + }; + $ptrType(File).prototype.Offset = function Offset(p) { + var {_r, f, p, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + /* */ if (((p >> 0)) < f.base || ((p >> 0)) > (f.base + f.size >> 0)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (((p >> 0)) < f.base || ((p >> 0)) > (f.base + f.size >> 0)) { */ case 1: + _r = fmt.Sprintf("invalid Pos value %d (should be in [%d, %d])", new sliceType$4([new Pos(p), new $Int(f.base), new $Int((f.base + f.size >> 0))])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(new $String(_r)); + /* } */ case 2: + $s = -1; return ((p >> 0)) - f.base >> 0; + /* */ } return; } var $f = {$blk: Offset, $c: true, $r, _r, f, p, $s};return $f; + }; + $ptrType(File).prototype.Line = function Line(p) { + var {$24r, _r, f, p, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + _r = f.Position(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r.Line; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Line, $c: true, $r, $24r, _r, f, p, $s};return $f; + }; + searchLineInfos = function searchLineInfos$1(a, x) { + var {$24r, _r, a, x, $s, $r, $c} = $restore(this, {a, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = [a]; + x = [x]; + _r = sort.Search(a[0].$length, (function(a, x) { return function searchLineInfos·func1(i) { + var i; + return ((i < 0 || i >= a[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : a[0].$array[a[0].$offset + i]).Offset > x[0]; + }; })(a, x)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r - 1 >> 0; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: searchLineInfos$1, $c: true, $r, $24r, _r, a, x, $s};return $f; + }; + $ptrType(File).prototype.unpack = function unpack(offset, adjusted) { + var {_r, _tmp, _tmp$1, adjusted, alt, column, d, f, filename, i, i$1, i$2, line, offset, x, x$1, $s, $r, $c} = $restore(this, {offset, adjusted}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + filename = ""; + line = 0; + column = 0; + f = this; + f.mutex.Lock(); + filename = f.name; + i = searchInts(f.lines, offset); + if (i >= 0) { + _tmp = i + 1 >> 0; + _tmp$1 = (offset - (x = f.lines, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])) >> 0) + 1 >> 0; + line = _tmp; + column = _tmp$1; + } + /* */ if (adjusted && f.infos.$length > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (adjusted && f.infos.$length > 0) { */ case 1: + _r = searchLineInfos(f.infos, offset); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i$1 = _r; + if (i$1 >= 0) { + alt = (x$1 = f.infos, ((i$1 < 0 || i$1 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$1])); + filename = alt.Filename; + i$2 = searchInts(f.lines, alt.Offset); + if (i$2 >= 0) { + d = line - ((i$2 + 1 >> 0)) >> 0; + line = alt.Line + d >> 0; + if (alt.Column === 0) { + column = 0; + } else if (d === 0) { + column = alt.Column + ((offset - alt.Offset >> 0)) >> 0; + } + } + } + /* } */ case 2: + f.mutex.Unlock(); + $s = -1; return [filename, line, column]; + /* */ } return; } var $f = {$blk: unpack, $c: true, $r, _r, _tmp, _tmp$1, adjusted, alt, column, d, f, filename, i, i$1, i$2, line, offset, x, x$1, $s};return $f; + }; + $ptrType(File).prototype.position = function position(p, adjusted) { + var {_r, _tuple, adjusted, f, offset, p, pos, $s, $r, $c} = $restore(this, {p, adjusted}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pos = new Position.ptr("", 0, 0, 0); + f = this; + offset = ((p >> 0)) - f.base >> 0; + pos.Offset = offset; + _r = f.unpack(offset, adjusted); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + pos.Filename = _tuple[0]; + pos.Line = _tuple[1]; + pos.Column = _tuple[2]; + $s = -1; return pos; + /* */ } return; } var $f = {$blk: position, $c: true, $r, _r, _tuple, adjusted, f, offset, p, pos, $s};return $f; + }; + $ptrType(File).prototype.PositionFor = function PositionFor(p, adjusted) { + var {_r, _r$1, adjusted, f, p, pos, $s, $r, $c} = $restore(this, {p, adjusted}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pos = new Position.ptr("", 0, 0, 0); + f = this; + /* */ if (!((p === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((p === 0))) { */ case 1: + /* */ if (((p >> 0)) < f.base || ((p >> 0)) > (f.base + f.size >> 0)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (((p >> 0)) < f.base || ((p >> 0)) > (f.base + f.size >> 0)) { */ case 3: + _r = fmt.Sprintf("invalid Pos value %d (should be in [%d, %d])", new sliceType$4([new Pos(p), new $Int(f.base), new $Int((f.base + f.size >> 0))])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(new $String(_r)); + /* } */ case 4: + _r$1 = f.position(p, adjusted); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + Position.copy(pos, _r$1); + /* } */ case 2: + $s = -1; return pos; + /* */ } return; } var $f = {$blk: PositionFor, $c: true, $r, _r, _r$1, adjusted, f, p, pos, $s};return $f; + }; + $ptrType(File).prototype.Position = function Position$1(p) { + var {$24r, _r, f, p, pos, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pos = new Position.ptr("", 0, 0, 0); + f = this; + _r = f.PositionFor(p, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + Position.copy(pos, _r); + $24r = pos; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Position$1, $c: true, $r, $24r, _r, f, p, pos, $s};return $f; + }; + NewFileSet = function NewFileSet$1() { + return new FileSet.ptr(new nosync.RWMutex.ptr(new nosync.Mutex.ptr(false, false, false, false, 0), false, false, false, false, 0, 0, 0), 1, sliceType$1.nil, new atomic.Pointer[5 /* go/token.File */].ptr(ptrType.nil)); + }; + $pkg.NewFileSet = NewFileSet; + $ptrType(FileSet).prototype.Base = function Base$1() { + var b, s; + s = this; + s.mutex.RLock(); + b = s.base; + s.mutex.RUnlock(); + return b; + }; + $ptrType(FileSet).prototype.AddFile = function AddFile(filename, base, size) { + var {_r, _r$1, base, f, filename, s, size, $s, $deferred, $r, $c} = $restore(this, {filename, base, size}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + s = this; + f = new File.ptr(filename, 0, size, new nosync.Mutex.ptr(false, false, false, false, 0), new sliceType$2([0]), sliceType$3.nil); + s.mutex.Lock(); + $deferred.push([$methodVal(s.mutex, "Unlock"), []]); + if (base < 0) { + base = s.base; + } + /* */ if (base < s.base) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (base < s.base) { */ case 1: + _r = fmt.Sprintf("invalid base %d (should be >= %d)", new sliceType$4([new $Int(base), new $Int(s.base)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(new $String(_r)); + /* } */ case 2: + f.base = base; + /* */ if (size < 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (size < 0) { */ case 4: + _r$1 = fmt.Sprintf("invalid size %d (should be >= 0)", new sliceType$4([new $Int(size)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 5: + base = base + ((size + 1 >> 0)) >> 0; + if (base < 0) { + $panic(new $String("token.Pos offset overflow (> 2G of source code in file set)")); + } + s.base = base; + s.files = $append(s.files, f); + s.last.Store(f); + $s = -1; return f; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: AddFile, $c: true, $r, _r, _r$1, base, f, filename, s, size, $s, $deferred};return $f; } } + }; + $ptrType(FileSet).prototype.RemoveFile = function RemoveFile(file) { + var {_r, file, i, last, s, x, x$1, $s, $deferred, $r, $c} = $restore(this, {file}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + s = this; + s.last.CompareAndSwap(file, ptrType.nil); + s.mutex.Lock(); + $deferred.push([$methodVal(s.mutex, "Unlock"), []]); + _r = searchFiles(s.files, file.base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + if (i >= 0 && (x = s.files, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])) === file) { + last = (x$1 = s.files, $indexPtr(x$1.$array, x$1.$offset + (s.files.$length - 1 >> 0), ptrType$1)); + s.files = $appendSlice($subslice(s.files, 0, i), $subslice(s.files, (i + 1 >> 0))); + last.$set(ptrType.nil); + } + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: RemoveFile, $c: true, $r, _r, file, i, last, s, x, x$1, $s, $deferred};return $f; } } + }; + $ptrType(FileSet).prototype.Iterate = function Iterate(f) { + var {_r, _v, f, file, i, s, x, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + i = 0; + /* while (true) { */ case 1: + file = ptrType.nil; + s.mutex.RLock(); + if (i < s.files.$length) { + file = (x = s.files, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + } + s.mutex.RUnlock(); + if (file === ptrType.nil) { _v = true; $s = 5; continue s; } + _r = f(file); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = !_r; case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + /* break; */ $s = 2; continue; + /* } */ case 4: + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Iterate, $c: true, $r, _r, _v, f, file, i, s, x, $s};return $f; + }; + searchFiles = function searchFiles$1(a, x) { + var {$24r, _r, a, x, $s, $r, $c} = $restore(this, {a, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = [a]; + x = [x]; + _r = sort.Search(a[0].$length, (function(a, x) { return function searchFiles·func1(i) { + var i; + return ((i < 0 || i >= a[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : a[0].$array[a[0].$offset + i]).base > x[0]; + }; })(a, x)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r - 1 >> 0; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: searchFiles$1, $c: true, $r, $24r, _r, a, x, $s};return $f; + }; + $ptrType(FileSet).prototype.file = function file(p) { + var {_r, f, f$1, i, p, s, x, $s, $deferred, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + s = this; + f = s.last.Load(); + if (!(f === ptrType.nil) && f.base <= ((p >> 0)) && ((p >> 0)) <= (f.base + f.size >> 0)) { + $s = -1; return f; + } + s.mutex.RLock(); + $deferred.push([$methodVal(s.mutex, "RUnlock"), []]); + _r = searchFiles(s.files, ((p >> 0))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + if (i >= 0) { + f$1 = (x = s.files, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + if (((p >> 0)) <= (f$1.base + f$1.size >> 0)) { + s.last.Store(f$1); + $s = -1; return f$1; + } + } + $s = -1; return ptrType.nil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: file, $c: true, $r, _r, f, f$1, i, p, s, x, $s, $deferred};return $f; } } + }; + $ptrType(FileSet).prototype.File = function File$1(p) { + var {_r, f, p, s, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = ptrType.nil; + s = this; + /* */ if (!((p === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((p === 0))) { */ case 1: + _r = s.file(p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + f = _r; + /* } */ case 2: + $s = -1; return f; + /* */ } return; } var $f = {$blk: File$1, $c: true, $r, _r, f, p, s, $s};return $f; + }; + $ptrType(FileSet).prototype.PositionFor = function PositionFor$1(p, adjusted) { + var {$24r, _r, _r$1, adjusted, f, p, pos, s, $s, $r, $c} = $restore(this, {p, adjusted}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pos = new Position.ptr("", 0, 0, 0); + s = this; + /* */ if (!((p === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((p === 0))) { */ case 1: + _r = s.file(p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + f = _r; + /* */ if (!(f === ptrType.nil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(f === ptrType.nil)) { */ case 4: + _r$1 = f.position(p, adjusted); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + Position.copy(pos, _r$1); + $24r = pos; + $s = 7; case 7: return $24r; + /* } */ case 5: + /* } */ case 2: + $s = -1; return pos; + /* */ } return; } var $f = {$blk: PositionFor$1, $c: true, $r, $24r, _r, _r$1, adjusted, f, p, pos, s, $s};return $f; + }; + $ptrType(FileSet).prototype.Position = function Position$2(p) { + var {$24r, _r, p, pos, s, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pos = new Position.ptr("", 0, 0, 0); + s = this; + _r = s.PositionFor(p, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + Position.copy(pos, _r); + $24r = pos; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Position$2, $c: true, $r, $24r, _r, p, pos, s, $s};return $f; + }; + searchInts = function searchInts$1(a, x) { + var _tmp, _tmp$1, a, h, i, j, x; + _tmp = 0; + _tmp$1 = a.$length; + i = _tmp; + j = _tmp$1; + while (true) { + if (!(i < j)) { break; } + h = ((((((i + j >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + if (((h < 0 || h >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + h]) <= x) { + i = h + 1 >> 0; + } else { + j = h; + } + } + return i - 1 >> 0; + }; + Token.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Precedence", name: "Precedence", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "IsLiteral", name: "IsLiteral", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsOperator", name: "IsOperator", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsKeyword", name: "IsKeyword", pkg: "", typ: $funcType([], [$Bool], false)}]; + Position.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$2.methods = [{prop: "IsValid", name: "IsValid", pkg: "", typ: $funcType([], [$Bool], false)}]; + Pos.methods = [{prop: "IsValid", name: "IsValid", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType.methods = [{prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Base", name: "Base", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "LineCount", name: "LineCount", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "AddLine", name: "AddLine", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "MergeLine", name: "MergeLine", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "SetLines", name: "SetLines", pkg: "", typ: $funcType([sliceType$2], [$Bool], false)}, {prop: "SetLinesForContent", name: "SetLinesForContent", pkg: "", typ: $funcType([sliceType$5], [], false)}, {prop: "LineStart", name: "LineStart", pkg: "", typ: $funcType([$Int], [Pos], false)}, {prop: "AddLineInfo", name: "AddLineInfo", pkg: "", typ: $funcType([$Int, $String, $Int], [], false)}, {prop: "AddLineColumnInfo", name: "AddLineColumnInfo", pkg: "", typ: $funcType([$Int, $String, $Int, $Int], [], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([$Int], [Pos], false)}, {prop: "Offset", name: "Offset", pkg: "", typ: $funcType([Pos], [$Int], false)}, {prop: "Line", name: "Line", pkg: "", typ: $funcType([Pos], [$Int], false)}, {prop: "unpack", name: "unpack", pkg: "go/token", typ: $funcType([$Int, $Bool], [$String, $Int, $Int], false)}, {prop: "position", name: "position", pkg: "go/token", typ: $funcType([Pos, $Bool], [Position], false)}, {prop: "PositionFor", name: "PositionFor", pkg: "", typ: $funcType([Pos, $Bool], [Position], false)}, {prop: "Position", name: "Position", pkg: "", typ: $funcType([Pos], [Position], false)}]; + ptrType$3.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([funcType], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([funcType], [$error], false)}, {prop: "Base", name: "Base", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "AddFile", name: "AddFile", pkg: "", typ: $funcType([$String, $Int, $Int], [ptrType], false)}, {prop: "RemoveFile", name: "RemoveFile", pkg: "", typ: $funcType([ptrType], [], false)}, {prop: "Iterate", name: "Iterate", pkg: "", typ: $funcType([funcType$1], [], false)}, {prop: "file", name: "file", pkg: "go/token", typ: $funcType([Pos], [ptrType], false)}, {prop: "File", name: "File", pkg: "", typ: $funcType([Pos], [ptrType], false)}, {prop: "PositionFor", name: "PositionFor", pkg: "", typ: $funcType([Pos, $Bool], [Position], false)}, {prop: "Position", name: "Position", pkg: "", typ: $funcType([Pos], [Position], false)}]; + serializedFile.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Base", name: "Base", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Size", name: "Size", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Lines", name: "Lines", embedded: false, exported: true, typ: sliceType$2, tag: ""}, {prop: "Infos", name: "Infos", embedded: false, exported: true, typ: sliceType$3, tag: ""}]); + serializedFileSet.init("", [{prop: "Base", name: "Base", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Files", name: "Files", embedded: false, exported: true, typ: sliceType, tag: ""}]); + Position.init("", [{prop: "Filename", name: "Filename", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Offset", name: "Offset", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Line", name: "Line", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Column", name: "Column", embedded: false, exported: true, typ: $Int, tag: ""}]); + File.init("go/token", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "base", name: "base", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: nosync.Mutex, tag: ""}, {prop: "lines", name: "lines", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "infos", name: "infos", embedded: false, exported: false, typ: sliceType$3, tag: ""}]); + lineInfo.init("", [{prop: "Offset", name: "Offset", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Filename", name: "Filename", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Line", name: "Line", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Column", name: "Column", embedded: false, exported: true, typ: $Int, tag: ""}]); + FileSet.init("go/token", [{prop: "mutex", name: "mutex", embedded: false, exported: false, typ: nosync.RWMutex, tag: ""}, {prop: "base", name: "base", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "files", name: "files", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "last", name: "last", embedded: false, exported: false, typ: atomic.Pointer[5 /* go/token.File */], tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = nosync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + keywords = false; + tokens = $toNativeArray($kindString, ["ILLEGAL", "EOF", "COMMENT", "", "IDENT", "INT", "FLOAT", "IMAG", "CHAR", "STRING", "", "", "+", "-", "*", "/", "%", "&", "|", "^", "<<", ">>", "&^", "+=", "-=", "*=", "/=", "%=", "&=", "|=", "^=", "<<=", ">>=", "&^=", "&&", "||", "<-", "++", "--", "==", "<", ">", "=", "!", "!=", "<=", ">=", ":=", "...", "(", "[", "{", ",", ".", ")", "]", "}", ";", ":", "", "", "break", "case", "chan", "const", "continue", "default", "defer", "else", "fallthrough", "for", "func", "go", "goto", "if", "import", "interface", "map", "package", "range", "return", "select", "struct", "switch", "type", "var", "", "", "~"]); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["path/filepath"] = (function() { + var $pkg = {}, $init, errors, fs, os, runtime, sort, strings, syscall, utf8, lazybuf, sliceType, sliceType$1, ptrType, evalSymlinks, walkSymlinks, IsAbs, volumeNameLen, splitList, abs, join, postClean, Clean, ToSlash, FromSlash, SplitList, Split, Join, EvalSymlinks, Abs, unixAbs, Base, Dir, VolumeName; + errors = $packages["errors"]; + fs = $packages["io/fs"]; + os = $packages["os"]; + runtime = $packages["runtime"]; + sort = $packages["sort"]; + strings = $packages["strings"]; + syscall = $packages["syscall"]; + utf8 = $packages["unicode/utf8"]; + lazybuf = $newType(0, $kindStruct, "filepath.lazybuf", true, "path/filepath", false, function(path_, buf_, w_, volAndPath_, volLen_) { + this.$val = this; + if (arguments.length === 0) { + this.path = ""; + this.buf = sliceType$1.nil; + this.w = 0; + this.volAndPath = ""; + this.volLen = 0; + return; + } + this.path = path_; + this.buf = buf_; + this.w = w_; + this.volAndPath = volAndPath_; + this.volLen = volLen_; + }); + $pkg.lazybuf = lazybuf; + $pkg.$finishSetup = function() { + sliceType = $sliceType($String); + sliceType$1 = $sliceType($Uint8); + ptrType = $ptrType(lazybuf); + evalSymlinks = function evalSymlinks$1(path) { + var {$24r, _r, path, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = walkSymlinks(path); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: evalSymlinks$1, $c: true, $r, $24r, _r, path, $s};return $f; + }; + walkSymlinks = function walkSymlinks$1(path) { + var {_r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, dest, end, err, fi, isWindowsDot, link, linksWalked, path, pathSeparator, r, r$1, start, v, vol, volLen, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + volLen = volumeNameLen(path); + pathSeparator = "/"; + if (volLen < path.length && os.IsPathSeparator(path.charCodeAt(volLen))) { + volLen = volLen + (1) >> 0; + } + vol = $substring(path, 0, volLen); + dest = vol; + linksWalked = 0; + _tmp = volLen; + _tmp$1 = volLen; + start = _tmp; + end = _tmp$1; + /* while (true) { */ case 1: + /* if (!(start < path.length)) { break; } */ if(!(start < path.length)) { $s = 2; continue; } + while (true) { + if (!(start < path.length && os.IsPathSeparator(path.charCodeAt(start)))) { break; } + start = start + (1) >> 0; + } + end = start; + while (true) { + if (!(end < path.length && !os.IsPathSeparator(path.charCodeAt(end)))) { break; } + end = end + (1) >> 0; + } + isWindowsDot = false && $substring(path, volumeNameLen(path)) === "."; + if (end === start) { + /* break; */ $s = 2; continue; + } else if ($substring(path, start, end) === "." && !isWindowsDot) { + start = end; + /* continue; */ $s = 1; continue; + } else if ($substring(path, start, end) === "..") { + r = 0; + r = dest.length - 1 >> 0; + while (true) { + if (!(r >= volLen)) { break; } + if (os.IsPathSeparator(dest.charCodeAt(r))) { + break; + } + r = r - (1) >> 0; + } + if (r < volLen || $substring(dest, (r + 1 >> 0)) === "..") { + if (dest.length > volLen) { + dest = dest + (pathSeparator); + } + dest = dest + (".."); + } else { + dest = $substring(dest, 0, r); + } + start = end; + /* continue; */ $s = 1; continue; + } + if (dest.length > volumeNameLen(dest) && !os.IsPathSeparator(dest.charCodeAt((dest.length - 1 >> 0)))) { + dest = dest + (pathSeparator); + } + dest = dest + ($substring(path, start, end)); + _r = os.Lstat(dest); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + fi = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return ["", err]; + } + _r$1 = fi.Mode(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (((_r$1 & 134217728) >>> 0) === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (((_r$1 & 134217728) >>> 0) === 0) { */ case 4: + _r$2 = fi.Mode(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = new fs.FileMode(_r$2).IsDir(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3 && end < path.length) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!_r$3 && end < path.length) { */ case 7: + $s = -1; return ["", new syscall.Errno(20)]; + /* } */ case 8: + start = end; + /* continue; */ $s = 1; continue; + /* } */ case 5: + linksWalked = linksWalked + (1) >> 0; + if (linksWalked > 255) { + $s = -1; return ["", errors.New("EvalSymlinks: too many links")]; + } + _r$4 = os.Readlink(dest); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + link = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return ["", err]; + } + if (isWindowsDot && !IsAbs(link)) { + /* break; */ $s = 2; continue; + } + path = link + $substring(path, end); + v = volumeNameLen(link); + if (v > 0) { + if (v < link.length && os.IsPathSeparator(link.charCodeAt(v))) { + v = v + (1) >> 0; + } + vol = $substring(link, 0, v); + dest = vol; + end = vol.length; + } else if (link.length > 0 && os.IsPathSeparator(link.charCodeAt(0))) { + dest = $substring(link, 0, 1); + end = 1; + } else { + r$1 = 0; + r$1 = dest.length - 1 >> 0; + while (true) { + if (!(r$1 >= volLen)) { break; } + if (os.IsPathSeparator(dest.charCodeAt(r$1))) { + break; + } + r$1 = r$1 - (1) >> 0; + } + if (r$1 < volLen) { + dest = vol; + } else { + dest = $substring(dest, 0, r$1); + } + end = 0; + } + start = end; + $s = 1; continue; + case 2: + $s = -1; return [Clean(dest), $ifaceNil]; + /* */ } return; } var $f = {$blk: walkSymlinks$1, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, dest, end, err, fi, isWindowsDot, link, linksWalked, path, pathSeparator, r, r$1, start, v, vol, volLen, $s};return $f; + }; + IsAbs = function IsAbs$1(path) { + var path; + return strings.HasPrefix(path, "/"); + }; + $pkg.IsAbs = IsAbs; + volumeNameLen = function volumeNameLen$1(path) { + var path; + return 0; + }; + splitList = function splitList$1(path) { + var path; + if (path === "") { + return new sliceType([]); + } + return strings.Split(path, ":"); + }; + abs = function abs$1(path) { + var {$24r, _r, path, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = unixAbs(path); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: abs$1, $c: true, $r, $24r, _r, path, $s};return $f; + }; + join = function join$1(elem) { + var _i, _ref, e, elem, i; + _ref = elem; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(e === "")) { + return Clean(strings.Join($subslice(elem, i), "/")); + } + _i++; + } + return ""; + }; + postClean = function postClean$1(out) { + var out; + }; + $ptrType(lazybuf).prototype.index = function index(i) { + var b, i, x; + b = this; + if (!(b.buf === sliceType$1.nil)) { + return (x = b.buf, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + } + return b.path.charCodeAt(i); + }; + $ptrType(lazybuf).prototype.append = function append(c) { + var b, c, x, x$1; + b = this; + if (b.buf === sliceType$1.nil) { + if (b.w < b.path.length && (b.path.charCodeAt(b.w) === c)) { + b.w = b.w + (1) >> 0; + return; + } + b.buf = $makeSlice(sliceType$1, b.path.length); + $copyString(b.buf, $substring(b.path, 0, b.w)); + } + (x = b.buf, x$1 = b.w, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1] = c)); + b.w = b.w + (1) >> 0; + }; + $ptrType(lazybuf).prototype.string = function string() { + var b; + b = this; + if (b.buf === sliceType$1.nil) { + return $substring(b.volAndPath, 0, (b.volLen + b.w >> 0)); + } + return $substring(b.volAndPath, 0, b.volLen) + ($bytesToString($subslice(b.buf, 0, b.w))); + }; + Clean = function Clean$1(path) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, dotdot, n, originalPath, out, path, r, rooted, volLen; + originalPath = path; + volLen = volumeNameLen(path); + path = $substring(path, volLen); + if (path === "") { + if (volLen > 1 && os.IsPathSeparator(originalPath.charCodeAt(0)) && os.IsPathSeparator(originalPath.charCodeAt(1))) { + return FromSlash(originalPath); + } + return originalPath + "."; + } + rooted = os.IsPathSeparator(path.charCodeAt(0)); + n = path.length; + out = new lazybuf.ptr(path, sliceType$1.nil, 0, originalPath, volLen); + _tmp = 0; + _tmp$1 = 0; + r = _tmp; + dotdot = _tmp$1; + if (rooted) { + out.append(47); + _tmp$2 = 1; + _tmp$3 = 1; + r = _tmp$2; + dotdot = _tmp$3; + } + while (true) { + if (!(r < n)) { break; } + if (os.IsPathSeparator(path.charCodeAt(r))) { + r = r + (1) >> 0; + } else if ((path.charCodeAt(r) === 46) && (((r + 1 >> 0) === n) || os.IsPathSeparator(path.charCodeAt((r + 1 >> 0))))) { + r = r + (1) >> 0; + } else if ((path.charCodeAt(r) === 46) && (path.charCodeAt((r + 1 >> 0)) === 46) && (((r + 2 >> 0) === n) || os.IsPathSeparator(path.charCodeAt((r + 2 >> 0))))) { + r = r + (2) >> 0; + if (out.w > dotdot) { + out.w = out.w - (1) >> 0; + while (true) { + if (!(out.w > dotdot && !os.IsPathSeparator(out.index(out.w)))) { break; } + out.w = out.w - (1) >> 0; + } + } else if (!rooted) { + if (out.w > 0) { + out.append(47); + } + out.append(46); + out.append(46); + dotdot = out.w; + } + } else { + if (rooted && !((out.w === 1)) || !rooted && !((out.w === 0))) { + out.append(47); + } + while (true) { + if (!(r < n && !os.IsPathSeparator(path.charCodeAt(r)))) { break; } + out.append(path.charCodeAt(r)); + r = r + (1) >> 0; + } + } + } + if (out.w === 0) { + out.append(46); + } + postClean(out); + return FromSlash(out.string()); + }; + $pkg.Clean = Clean; + ToSlash = function ToSlash$1(path) { + var path; + if (true) { + return path; + } + return strings.ReplaceAll(path, "/", "/"); + }; + $pkg.ToSlash = ToSlash; + FromSlash = function FromSlash$1(path) { + var path; + if (true) { + return path; + } + return strings.ReplaceAll(path, "/", "/"); + }; + $pkg.FromSlash = FromSlash; + SplitList = function SplitList$1(path) { + var path; + return splitList(path); + }; + $pkg.SplitList = SplitList; + Split = function Split$1(path) { + var _tmp, _tmp$1, dir, file, i, path, vol; + dir = ""; + file = ""; + vol = VolumeName(path); + i = path.length - 1 >> 0; + while (true) { + if (!(i >= vol.length && !os.IsPathSeparator(path.charCodeAt(i)))) { break; } + i = i - (1) >> 0; + } + _tmp = $substring(path, 0, (i + 1 >> 0)); + _tmp$1 = $substring(path, (i + 1 >> 0)); + dir = _tmp; + file = _tmp$1; + return [dir, file]; + }; + $pkg.Split = Split; + Join = function Join$1(elem) { + var elem; + return join(elem); + }; + $pkg.Join = Join; + EvalSymlinks = function EvalSymlinks$1(path) { + var {$24r, _r, path, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = evalSymlinks(path); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: EvalSymlinks$1, $c: true, $r, $24r, _r, path, $s};return $f; + }; + $pkg.EvalSymlinks = EvalSymlinks; + Abs = function Abs$1(path) { + var {$24r, _r, path, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = abs(path); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Abs$1, $c: true, $r, $24r, _r, path, $s};return $f; + }; + $pkg.Abs = Abs; + unixAbs = function unixAbs$1(path) { + var {_r, _tuple, err, path, wd, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (IsAbs(path)) { + $s = -1; return [Clean(path), $ifaceNil]; + } + _r = os.Getwd(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + wd = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return ["", err]; + } + $s = -1; return [Join(new sliceType([wd, path])), $ifaceNil]; + /* */ } return; } var $f = {$blk: unixAbs$1, $c: true, $r, _r, _tuple, err, path, wd, $s};return $f; + }; + Base = function Base$1(path) { + var i, path; + if (path === "") { + return "."; + } + while (true) { + if (!(path.length > 0 && os.IsPathSeparator(path.charCodeAt((path.length - 1 >> 0))))) { break; } + path = $substring(path, 0, (path.length - 1 >> 0)); + } + path = $substring(path, VolumeName(path).length); + i = path.length - 1 >> 0; + while (true) { + if (!(i >= 0 && !os.IsPathSeparator(path.charCodeAt(i)))) { break; } + i = i - (1) >> 0; + } + if (i >= 0) { + path = $substring(path, (i + 1 >> 0)); + } + if (path === "") { + return "/"; + } + return path; + }; + $pkg.Base = Base; + Dir = function Dir$1(path) { + var dir, i, path, vol; + vol = VolumeName(path); + i = path.length - 1 >> 0; + while (true) { + if (!(i >= vol.length && !os.IsPathSeparator(path.charCodeAt(i)))) { break; } + i = i - (1) >> 0; + } + dir = Clean($substring(path, vol.length, (i + 1 >> 0))); + if (dir === "." && vol.length > 2) { + return vol; + } + return vol + dir; + }; + $pkg.Dir = Dir; + VolumeName = function VolumeName$1(path) { + var path; + return FromSlash($substring(path, 0, volumeNameLen(path))); + }; + $pkg.VolumeName = VolumeName; + ptrType.methods = [{prop: "index", name: "index", pkg: "path/filepath", typ: $funcType([$Int], [$Uint8], false)}, {prop: "append", name: "append", pkg: "path/filepath", typ: $funcType([$Uint8], [], false)}, {prop: "prepend", name: "prepend", pkg: "path/filepath", typ: $funcType([sliceType$1], [], true)}, {prop: "string", name: "string", pkg: "path/filepath", typ: $funcType([], [$String], false)}]; + lazybuf.init("path/filepath", [{prop: "path", name: "path", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "w", name: "w", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "volAndPath", name: "volAndPath", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "volLen", name: "volLen", embedded: false, exported: false, typ: $Int, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syscall.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ErrBadPattern = errors.New("syntax error in pattern"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["go/scanner"] = (function() { + var $pkg = {}, $init, bytes, fmt, token, io, filepath, sort, strconv, unicode, utf8, ErrorHandler, Scanner, Mode, Error, ErrorList, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, prefix, trailingDigits, isLetter, isDigit, digitVal, lower, isDecimal, isHex, litname, invalidSep, stripCR; + bytes = $packages["bytes"]; + fmt = $packages["fmt"]; + token = $packages["go/token"]; + io = $packages["io"]; + filepath = $packages["path/filepath"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + ErrorHandler = $newType(4, $kindFunc, "scanner.ErrorHandler", true, "go/scanner", true, null); + Scanner = $newType(0, $kindStruct, "scanner.Scanner", true, "go/scanner", true, function(file_, dir_, src_, err_, mode_, ch_, offset_, rdOffset_, lineOffset_, insertSemi_, nlPos_, ErrorCount_) { + this.$val = this; + if (arguments.length === 0) { + this.file = ptrType$1.nil; + this.dir = ""; + this.src = sliceType.nil; + this.err = $throwNilPointerError; + this.mode = 0; + this.ch = 0; + this.offset = 0; + this.rdOffset = 0; + this.lineOffset = 0; + this.insertSemi = false; + this.nlPos = 0; + this.ErrorCount = 0; + return; + } + this.file = file_; + this.dir = dir_; + this.src = src_; + this.err = err_; + this.mode = mode_; + this.ch = ch_; + this.offset = offset_; + this.rdOffset = rdOffset_; + this.lineOffset = lineOffset_; + this.insertSemi = insertSemi_; + this.nlPos = nlPos_; + this.ErrorCount = ErrorCount_; + }); + Mode = $newType(4, $kindUint, "scanner.Mode", true, "go/scanner", true, null); + Error = $newType(0, $kindStruct, "scanner.Error", true, "go/scanner", true, function(Pos_, Msg_) { + this.$val = this; + if (arguments.length === 0) { + this.Pos = new token.Position.ptr("", 0, 0, 0); + this.Msg = ""; + return; + } + this.Pos = Pos_; + this.Msg = Msg_; + }); + ErrorList = $newType(12, $kindSlice, "scanner.ErrorList", true, "go/scanner", true, null); + $pkg.ErrorHandler = ErrorHandler; + $pkg.Scanner = Scanner; + $pkg.Mode = Mode; + $pkg.Error = Error; + $pkg.ErrorList = ErrorList; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint8); + sliceType$1 = $sliceType($emptyInterface); + sliceType$2 = $sliceType($String); + ptrType = $ptrType($Int); + ptrType$1 = $ptrType(token.File); + ptrType$2 = $ptrType(Scanner); + ptrType$3 = $ptrType(ErrorList); + ptrType$4 = $ptrType(Error); + $ptrType(Scanner).prototype.next = function next() { + var {_tmp, _tmp$1, _tuple, r, s, w, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (s.rdOffset < s.src.$length) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (s.rdOffset < s.src.$length) { */ case 1: + s.offset = s.rdOffset; + if (s.ch === 10) { + s.lineOffset = s.offset; + s.file.AddLine(s.offset); + } + _tmp = (((x = s.src, x$1 = s.rdOffset, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) >> 0)); + _tmp$1 = 1; + r = _tmp; + w = _tmp$1; + /* */ if ((r === 0)) { $s = 5; continue; } + /* */ if (r >= 128) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((r === 0)) { */ case 5: + $r = s.error(s.offset, "illegal character NUL"); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + /* } else if (r >= 128) { */ case 6: + _tuple = utf8.DecodeRune($subslice(s.src, s.rdOffset)); + r = _tuple[0]; + w = _tuple[1]; + /* */ if ((r === 65533) && (w === 1)) { $s = 9; continue; } + /* */ if ((r === 65279) && s.offset > 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ((r === 65533) && (w === 1)) { */ case 9: + $r = s.error(s.offset, "illegal UTF-8 encoding"); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 11; continue; + /* } else if ((r === 65279) && s.offset > 0) { */ case 10: + $r = s.error(s.offset, "illegal byte order mark"); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + /* } */ case 7: + case 4: + s.rdOffset = s.rdOffset + (w) >> 0; + s.ch = r; + $s = 3; continue; + /* } else { */ case 2: + s.offset = s.src.$length; + if (s.ch === 10) { + s.lineOffset = s.offset; + s.file.AddLine(s.offset); + } + s.ch = -1; + /* } */ case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: next, $c: true, $r, _tmp, _tmp$1, _tuple, r, s, w, x, x$1, $s};return $f; + }; + $ptrType(Scanner).prototype.peek = function peek() { + var s, x, x$1; + s = this; + if (s.rdOffset < s.src.$length) { + return (x = s.src, x$1 = s.rdOffset, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + } + return 0; + }; + $ptrType(Scanner).prototype.Init = function Init(file, src, err, mode) { + var {_r, _tuple, err, file, mode, s, src, $s, $r, $c} = $restore(this, {file, src, err, mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (!((file.Size() === src.$length))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((file.Size() === src.$length))) { */ case 1: + _r = fmt.Sprintf("file size (%d) does not match src len (%d)", new sliceType$1([new $Int(file.Size()), new $Int(src.$length)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(new $String(_r)); + /* } */ case 2: + s.file = file; + _tuple = filepath.Split(file.Name()); + s.dir = _tuple[0]; + s.src = src; + s.err = err; + s.mode = mode; + s.ch = 32; + s.offset = 0; + s.rdOffset = 0; + s.lineOffset = 0; + s.insertSemi = false; + s.ErrorCount = 0; + $r = s.next(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (s.ch === 65279) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (s.ch === 65279) { */ case 5: + $r = s.next(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: Init, $c: true, $r, _r, _tuple, err, file, mode, s, src, $s};return $f; + }; + $ptrType(Scanner).prototype.error = function error(offs, msg) { + var {_r, _r$1, msg, offs, s, $s, $r, $c} = $restore(this, {offs, msg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (!(s.err === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(s.err === $throwNilPointerError)) { */ case 1: + _r = s.file.Pos(offs); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = s.file.Position(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = s.err($clone(_r$1, token.Position), msg); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + s.ErrorCount = s.ErrorCount + (1) >> 0; + $s = -1; return; + /* */ } return; } var $f = {$blk: error, $c: true, $r, _r, _r$1, msg, offs, s, $s};return $f; + }; + $ptrType(Scanner).prototype.errorf = function errorf(offs, format, args) { + var {_arg, _arg$1, _r, args, format, offs, s, $s, $r, $c} = $restore(this, {offs, format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _arg = offs; + _r = fmt.Sprintf(format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + $r = s.error(_arg, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: errorf, $c: true, $r, _arg, _arg$1, _r, args, format, offs, s, $s};return $f; + }; + $ptrType(Scanner).prototype.scanComment = function scanComment() { + var {ch, lit, next$1, nlOffset, numCR, offs, s, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + offs = s.offset - 1 >> 0; + next$1 = -1; + numCR = 0; + nlOffset = 0; + /* */ if (s.ch === 47) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (s.ch === 47) { */ case 1: + $r = s.next(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* while (true) { */ case 4: + /* if (!(!((s.ch === 10)) && s.ch >= 0)) { break; } */ if(!(!((s.ch === 10)) && s.ch >= 0)) { $s = 5; continue; } + if (s.ch === 13) { + numCR = numCR + (1) >> 0; + } + $r = s.next(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 4; continue; + case 5: + next$1 = s.offset; + if (s.ch === 10) { + next$1 = next$1 + (1) >> 0; + } + /* goto exit */ $s = 7; continue; + /* } */ case 2: + $r = s.next(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* while (true) { */ case 9: + /* if (!(s.ch >= 0)) { break; } */ if(!(s.ch >= 0)) { $s = 10; continue; } + ch = s.ch; + if (ch === 13) { + numCR = numCR + (1) >> 0; + } else if ((ch === 10) && (nlOffset === 0)) { + nlOffset = s.offset; + } + $r = s.next(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if ((ch === 42) && (s.ch === 47)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ((ch === 42) && (s.ch === 47)) { */ case 12: + $r = s.next(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + next$1 = s.offset; + /* goto exit */ $s = 7; continue; + /* } */ case 13: + $s = 9; continue; + case 10: + $r = s.error(offs, "comment not terminated"); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* exit: */ case 7: + lit = $subslice(s.src, offs, s.offset); + if (numCR > 0 && lit.$length >= 2 && ((1 >= lit.$length ? ($throwRuntimeError("index out of range"), undefined) : lit.$array[lit.$offset + 1]) === 47) && ((x = lit.$length - 1 >> 0, ((x < 0 || x >= lit.$length) ? ($throwRuntimeError("index out of range"), undefined) : lit.$array[lit.$offset + x])) === 13)) { + lit = $subslice(lit, 0, (lit.$length - 1 >> 0)); + numCR = numCR - (1) >> 0; + } + /* */ if (next$1 >= 0 && (((1 >= lit.$length ? ($throwRuntimeError("index out of range"), undefined) : lit.$array[lit.$offset + 1]) === 42) || (offs === s.lineOffset)) && bytes.HasPrefix($subslice(lit, 2), prefix)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (next$1 >= 0 && (((1 >= lit.$length ? ($throwRuntimeError("index out of range"), undefined) : lit.$array[lit.$offset + 1]) === 42) || (offs === s.lineOffset)) && bytes.HasPrefix($subslice(lit, 2), prefix)) { */ case 16: + $r = s.updateLineInfo(next$1, offs, lit); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 17: + if (numCR > 0) { + lit = stripCR(lit, (1 >= lit.$length ? ($throwRuntimeError("index out of range"), undefined) : lit.$array[lit.$offset + 1]) === 42); + } + $s = -1; return [($bytesToString(lit)), nlOffset]; + /* */ } return; } var $f = {$blk: scanComment, $c: true, $r, ch, lit, next$1, nlOffset, numCR, offs, s, x, $s};return $f; + }; + $ptrType(Scanner).prototype.updateLineInfo = function updateLineInfo(next$1, offs, text) { + var {_r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, col, filename, i, i2, line, n, n2, next$1, offs, ok, ok2, s, text, $s, $r, $c} = $restore(this, {next$1, offs, text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + if ((1 >= text.$length ? ($throwRuntimeError("index out of range"), undefined) : text.$array[text.$offset + 1]) === 42) { + text = $subslice(text, 0, (text.$length - 2 >> 0)); + } + text = $subslice(text, 7); + offs = offs + (7) >> 0; + _tuple = trailingDigits(text); + i = _tuple[0]; + n = _tuple[1]; + ok = _tuple[2]; + if (i === 0) { + $s = -1; return; + } + /* */ if (!ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!ok) { */ case 1: + $r = s.error(offs + i >> 0, "invalid line number: " + ($bytesToString($subslice(text, i)))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 2: + _tmp = 0; + _tmp$1 = 0; + line = _tmp; + col = _tmp$1; + _tuple$1 = trailingDigits($subslice(text, 0, (i - 1 >> 0))); + i2 = _tuple$1[0]; + n2 = _tuple$1[1]; + ok2 = _tuple$1[2]; + /* */ if (ok2) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (ok2) { */ case 4: + _tmp$2 = i2; + _tmp$3 = i; + i = _tmp$2; + i2 = _tmp$3; + _tmp$4 = n2; + _tmp$5 = n; + line = _tmp$4; + col = _tmp$5; + /* */ if ((col === 0) || col > 1073741823) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ((col === 0) || col > 1073741823) { */ case 7: + $r = s.error(offs + i2 >> 0, "invalid column number: " + ($bytesToString($subslice(text, i2)))); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 8: + text = $subslice(text, 0, (i2 - 1 >> 0)); + $s = 6; continue; + /* } else { */ case 5: + line = n; + /* } */ case 6: + /* */ if ((line === 0) || line > 1073741823) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ((line === 0) || line > 1073741823) { */ case 10: + $r = s.error(offs + i >> 0, "invalid line number: " + ($bytesToString($subslice(text, i)))); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 11: + filename = ($bytesToString($subslice(text, 0, (i - 1 >> 0)))); + /* */ if (filename === "" && ok2) { $s = 13; continue; } + /* */ if (!(filename === "")) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (filename === "" && ok2) { */ case 13: + _r = s.file.Pos(offs); /* */ $s = 16; case 16: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = s.file.Position(_r); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + filename = _r$1.Filename; + $s = 15; continue; + /* } else if (!(filename === "")) { */ case 14: + filename = filepath.Clean(filename); + if (!filepath.IsAbs(filename)) { + filename = filepath.Join(new sliceType$2([s.dir, filename])); + } + /* } */ case 15: + s.file.AddLineColumnInfo(next$1, filename, line, col); + $s = -1; return; + /* */ } return; } var $f = {$blk: updateLineInfo, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, col, filename, i, i2, line, n, n2, next$1, offs, ok, ok2, s, text, $s};return $f; + }; + trailingDigits = function trailingDigits$1(text) { + var _tuple, err, i, n, text; + i = bytes.LastIndexByte(text, 58); + if (i < 0) { + return [0, 0, false]; + } + _tuple = strconv.ParseUint(($bytesToString($subslice(text, (i + 1 >> 0)))), 10, 0); + n = _tuple[0]; + err = _tuple[1]; + return [i + 1 >> 0, ((n.$low >> 0)), $interfaceIsEqual(err, $ifaceNil)]; + }; + isLetter = function isLetter$1(ch) { + var ch; + return 97 <= lower(ch) && lower(ch) <= 122 || (ch === 95) || ch >= 128 && unicode.IsLetter(ch); + }; + isDigit = function isDigit$1(ch) { + var ch; + return isDecimal(ch) || ch >= 128 && unicode.IsDigit(ch); + }; + $ptrType(Scanner).prototype.scanIdentifier = function scanIdentifier() { + var {_i, _ref, b, offs, rdOffset, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + offs = s.offset; + _ref = $subslice(s.src, s.rdOffset); + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + rdOffset = _i; + b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (97 <= b && b <= 122 || 65 <= b && b <= 90 || (b === 95) || 48 <= b && b <= 57) { + _i++; + /* continue; */ $s = 1; continue; + } + s.rdOffset = s.rdOffset + (rdOffset) >> 0; + /* */ if (0 < b && b < 128) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (0 < b && b < 128) { */ case 3: + s.ch = ((b >> 0)); + s.offset = s.rdOffset; + s.rdOffset = s.rdOffset + (1) >> 0; + /* goto exit */ $s = 5; continue; + /* } */ case 4: + $r = s.next(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* while (true) { */ case 7: + /* if (!(isLetter(s.ch) || isDigit(s.ch))) { break; } */ if(!(isLetter(s.ch) || isDigit(s.ch))) { $s = 8; continue; } + $r = s.next(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + case 8: + /* goto exit */ $s = 5; continue; + case 2: + s.offset = s.src.$length; + s.rdOffset = s.src.$length; + s.ch = -1; + /* exit: */ case 5: + $s = -1; return ($bytesToString($subslice(s.src, offs, s.offset))); + /* */ } return; } var $f = {$blk: scanIdentifier, $c: true, $r, _i, _ref, b, offs, rdOffset, s, $s};return $f; + }; + digitVal = function digitVal$1(ch) { + var ch; + if (48 <= ch && ch <= 57) { + return (((ch - 48 >> 0) >> 0)); + } else if (97 <= lower(ch) && lower(ch) <= 102) { + return ((((lower(ch) - 97 >> 0) + 10 >> 0) >> 0)); + } + return 16; + }; + lower = function lower$1(ch) { + var ch; + return 32 | ch; + }; + isDecimal = function isDecimal$1(ch) { + var ch; + return 48 <= ch && ch <= 57; + }; + isHex = function isHex$1(ch) { + var ch; + return 48 <= ch && ch <= 57 || 97 <= lower(ch) && lower(ch) <= 102; + }; + $ptrType(Scanner).prototype.digits = function digits(base, invalid) { + var {base, digsep, ds, ds$1, invalid, max, s, $s, $r, $c} = $restore(this, {base, invalid}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + digsep = 0; + s = this; + /* */ if (base <= 10) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (base <= 10) { */ case 1: + max = (((48 + base >> 0) >> 0)); + /* while (true) { */ case 4: + /* if (!(isDecimal(s.ch) || (s.ch === 95))) { break; } */ if(!(isDecimal(s.ch) || (s.ch === 95))) { $s = 5; continue; } + ds = 1; + if (s.ch === 95) { + ds = 2; + } else if (s.ch >= max && invalid.$get() < 0) { + invalid.$set(s.offset); + } + digsep = digsep | (ds); + $r = s.next(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 4; continue; + case 5: + $s = 3; continue; + /* } else { */ case 2: + /* while (true) { */ case 7: + /* if (!(isHex(s.ch) || (s.ch === 95))) { break; } */ if(!(isHex(s.ch) || (s.ch === 95))) { $s = 8; continue; } + ds$1 = 1; + if (s.ch === 95) { + ds$1 = 2; + } + digsep = digsep | (ds$1); + $r = s.next(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + case 8: + /* } */ case 3: + $s = -1; return digsep; + /* */ } return; } var $f = {$blk: digits, $c: true, $r, base, digsep, ds, ds$1, invalid, max, s, $s};return $f; + }; + $ptrType(Scanner).prototype.scanNumber = function scanNumber() { + var {_1, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, base, digsep, ds, e, i, invalid, lit, offs, prefix$1, s, tok, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + invalid = [invalid]; + s = this; + offs = s.offset; + tok = 0; + base = 10; + prefix$1 = 0; + digsep = 0; + invalid[0] = -1; + /* */ if (!((s.ch === 46))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((s.ch === 46))) { */ case 1: + tok = 5; + /* */ if (s.ch === 48) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (s.ch === 48) { */ case 3: + $r = s.next(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _1 = lower(s.ch); + /* */ if (_1 === (120)) { $s = 7; continue; } + /* */ if (_1 === (111)) { $s = 8; continue; } + /* */ if (_1 === (98)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_1 === (120)) { */ case 7: + $r = s.next(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp = 16; + _tmp$1 = 120; + base = _tmp; + prefix$1 = _tmp$1; + $s = 11; continue; + /* } else if (_1 === (111)) { */ case 8: + $r = s.next(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$2 = 8; + _tmp$3 = 111; + base = _tmp$2; + prefix$1 = _tmp$3; + $s = 11; continue; + /* } else if (_1 === (98)) { */ case 9: + $r = s.next(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$4 = 2; + _tmp$5 = 98; + base = _tmp$4; + prefix$1 = _tmp$5; + $s = 11; continue; + /* } else { */ case 10: + _tmp$6 = 8; + _tmp$7 = 48; + base = _tmp$6; + prefix$1 = _tmp$7; + digsep = 1; + /* } */ case 11: + case 6: + /* } */ case 4: + _r = s.digits(base, (invalid.$ptr || (invalid.$ptr = new ptrType(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, invalid)))); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + digsep = digsep | (_r); + /* } */ case 2: + /* */ if (s.ch === 46) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (s.ch === 46) { */ case 16: + tok = 6; + /* */ if ((prefix$1 === 111) || (prefix$1 === 98)) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if ((prefix$1 === 111) || (prefix$1 === 98)) { */ case 18: + $r = s.error(s.offset, "invalid radix point in " + litname(prefix$1)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 19: + $r = s.next(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = s.digits(base, (invalid.$ptr || (invalid.$ptr = new ptrType(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, invalid)))); /* */ $s = 22; case 22: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + digsep = digsep | (_r$1); + /* } */ case 17: + /* */ if ((digsep & 1) === 0) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if ((digsep & 1) === 0) { */ case 23: + $r = s.error(s.offset, litname(prefix$1) + " has no digits"); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 24: + e = lower(s.ch); + /* */ if ((e === 101) || (e === 112)) { $s = 26; continue; } + /* */ if ((prefix$1 === 120) && (tok === 6)) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if ((e === 101) || (e === 112)) { */ case 26: + /* */ if ((e === 101) && !((prefix$1 === 0)) && !((prefix$1 === 48))) { $s = 30; continue; } + /* */ if ((e === 112) && !((prefix$1 === 120))) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if ((e === 101) && !((prefix$1 === 0)) && !((prefix$1 === 48))) { */ case 30: + $r = s.errorf(s.offset, "%q exponent requires decimal mantissa", new sliceType$1([new $Int32(s.ch)])); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 32; continue; + /* } else if ((e === 112) && !((prefix$1 === 120))) { */ case 31: + $r = s.errorf(s.offset, "%q exponent requires hexadecimal mantissa", new sliceType$1([new $Int32(s.ch)])); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 32: + case 29: + $r = s.next(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tok = 6; + /* */ if ((s.ch === 43) || (s.ch === 45)) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if ((s.ch === 43) || (s.ch === 45)) { */ case 36: + $r = s.next(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 37: + _r$2 = s.digits(10, ptrType.nil); /* */ $s = 39; case 39: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ds = _r$2; + digsep = digsep | (ds); + /* */ if ((ds & 1) === 0) { $s = 40; continue; } + /* */ $s = 41; continue; + /* if ((ds & 1) === 0) { */ case 40: + $r = s.error(s.offset, "exponent has no digits"); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 41: + $s = 28; continue; + /* } else if ((prefix$1 === 120) && (tok === 6)) { */ case 27: + $r = s.error(s.offset, "hexadecimal mantissa requires a 'p' exponent"); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 28: + /* */ if (s.ch === 105) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (s.ch === 105) { */ case 44: + tok = 7; + $r = s.next(); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 45: + lit = ($bytesToString($subslice(s.src, offs, s.offset))); + /* */ if ((tok === 5) && invalid[0] >= 0) { $s = 47; continue; } + /* */ $s = 48; continue; + /* if ((tok === 5) && invalid[0] >= 0) { */ case 47: + $r = s.errorf(invalid[0], "invalid digit %q in %s", new sliceType$1([new $Uint8(lit.charCodeAt((invalid[0] - offs >> 0))), new $String(litname(prefix$1))])); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 48: + /* */ if (!(((digsep & 2) === 0))) { $s = 50; continue; } + /* */ $s = 51; continue; + /* if (!(((digsep & 2) === 0))) { */ case 50: + i = invalidSep(lit); + /* */ if (i >= 0) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if (i >= 0) { */ case 52: + $r = s.error(offs + i >> 0, "'_' must separate successive digits"); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 53: + /* } */ case 51: + $s = -1; return [tok, lit]; + /* */ } return; } var $f = {$blk: scanNumber, $c: true, $r, _1, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, base, digsep, ds, e, i, invalid, lit, offs, prefix$1, s, tok, $s};return $f; + }; + litname = function litname$1(prefix$1) { + var _1, prefix$1; + _1 = prefix$1; + if (_1 === (120)) { + return "hexadecimal literal"; + } else if ((_1 === (111)) || (_1 === (48))) { + return "octal literal"; + } else if (_1 === (98)) { + return "binary literal"; + } + return "decimal literal"; + }; + invalidSep = function invalidSep$1(x) { + var d, i, p, x, x1; + x1 = 32; + d = 46; + i = 0; + if (x.length >= 2 && (x.charCodeAt(0) === 48)) { + x1 = lower(((x.charCodeAt(1) >> 0))); + if ((x1 === 120) || (x1 === 111) || (x1 === 98)) { + d = 48; + i = 2; + } + } + while (true) { + if (!(i < x.length)) { break; } + p = d; + d = ((x.charCodeAt(i) >> 0)); + if ((d === 95)) { + if (!((p === 48))) { + return i; + } + } else if (isDecimal(d) || (x1 === 120) && isHex(d)) { + d = 48; + } else { + if (p === 95) { + return i - 1 >> 0; + } + d = 46; + } + i = i + (1) >> 0; + } + if (d === 95) { + return x.length - 1 >> 0; + } + return -1; + }; + $ptrType(Scanner).prototype.scanEscape = function scanEscape(quote) { + var {_1, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, base, d, max, msg, msg$1, n, offs, quote, s, x, $s, $r, $c} = $restore(this, {quote}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + offs = s.offset; + n = 0; + _tmp = 0; + _tmp$1 = 0; + base = _tmp; + max = _tmp$1; + _1 = s.ch; + /* */ if ((_1 === (97)) || (_1 === (98)) || (_1 === (102)) || (_1 === (110)) || (_1 === (114)) || (_1 === (116)) || (_1 === (118)) || (_1 === (92)) || (_1 === (quote))) { $s = 2; continue; } + /* */ if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55))) { $s = 3; continue; } + /* */ if (_1 === (120)) { $s = 4; continue; } + /* */ if (_1 === (117)) { $s = 5; continue; } + /* */ if (_1 === (85)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((_1 === (97)) || (_1 === (98)) || (_1 === (102)) || (_1 === (110)) || (_1 === (114)) || (_1 === (116)) || (_1 === (118)) || (_1 === (92)) || (_1 === (quote))) { */ case 2: + $r = s.next(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return true; + /* } else if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55))) { */ case 3: + _tmp$2 = 3; + _tmp$3 = 8; + _tmp$4 = 255; + n = _tmp$2; + base = _tmp$3; + max = _tmp$4; + $s = 8; continue; + /* } else if (_1 === (120)) { */ case 4: + $r = s.next(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$5 = 2; + _tmp$6 = 16; + _tmp$7 = 255; + n = _tmp$5; + base = _tmp$6; + max = _tmp$7; + $s = 8; continue; + /* } else if (_1 === (117)) { */ case 5: + $r = s.next(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$8 = 4; + _tmp$9 = 16; + _tmp$10 = 1114111; + n = _tmp$8; + base = _tmp$9; + max = _tmp$10; + $s = 8; continue; + /* } else if (_1 === (85)) { */ case 6: + $r = s.next(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$11 = 8; + _tmp$12 = 16; + _tmp$13 = 1114111; + n = _tmp$11; + base = _tmp$12; + max = _tmp$13; + $s = 8; continue; + /* } else { */ case 7: + msg = "unknown escape sequence"; + if (s.ch < 0) { + msg = "escape sequence not terminated"; + } + $r = s.error(offs, msg); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 8: + case 1: + x = 0; + /* while (true) { */ case 14: + /* if (!(n > 0)) { break; } */ if(!(n > 0)) { $s = 15; continue; } + d = ((digitVal(s.ch) >>> 0)); + /* */ if (d >= base) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (d >= base) { */ case 16: + _r = fmt.Sprintf("illegal character %#U in escape sequence", new sliceType$1([new $Int32(s.ch)])); /* */ $s = 18; case 18: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + msg$1 = _r; + if (s.ch < 0) { + msg$1 = "escape sequence not terminated"; + } + $r = s.error(s.offset, msg$1); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 17: + x = ($imul(x, base) >>> 0) + d >>> 0; + $r = s.next(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + n = n - (1) >> 0; + $s = 14; continue; + case 15: + /* */ if (x > max || 55296 <= x && x < 57344) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (x > max || 55296 <= x && x < 57344) { */ case 21: + $r = s.error(offs, "escape sequence is invalid Unicode code point"); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 22: + $s = -1; return true; + /* */ } return; } var $f = {$blk: scanEscape, $c: true, $r, _1, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, base, d, max, msg, msg$1, n, offs, quote, s, x, $s};return $f; + }; + $ptrType(Scanner).prototype.scanRune = function scanRune() { + var {_r, ch, n, offs, s, valid, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + offs = s.offset - 1 >> 0; + valid = true; + n = 0; + /* while (true) { */ case 1: + ch = s.ch; + /* */ if ((ch === 10) || ch < 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((ch === 10) || ch < 0) { */ case 3: + /* */ if (valid) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (valid) { */ case 5: + $r = s.error(offs, "rune literal not terminated"); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + valid = false; + /* } */ case 6: + /* break; */ $s = 2; continue; + /* } */ case 4: + $r = s.next(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (ch === 39) { + /* break; */ $s = 2; continue; + } + n = n + (1) >> 0; + /* */ if (ch === 92) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (ch === 92) { */ case 9: + _r = s.scanEscape(39); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!_r) { */ case 11: + valid = false; + /* } */ case 12: + /* } */ case 10: + $s = 1; continue; + case 2: + /* */ if (valid && !((n === 1))) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (valid && !((n === 1))) { */ case 14: + $r = s.error(offs, "illegal rune literal"); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 15: + $s = -1; return ($bytesToString($subslice(s.src, offs, s.offset))); + /* */ } return; } var $f = {$blk: scanRune, $c: true, $r, _r, ch, n, offs, s, valid, $s};return $f; + }; + $ptrType(Scanner).prototype.scanString = function scanString() { + var {_r, ch, offs, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + offs = s.offset - 1 >> 0; + /* while (true) { */ case 1: + ch = s.ch; + /* */ if ((ch === 10) || ch < 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((ch === 10) || ch < 0) { */ case 3: + $r = s.error(offs, "string literal not terminated"); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 2; continue; + /* } */ case 4: + $r = s.next(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (ch === 34) { + /* break; */ $s = 2; continue; + } + /* */ if (ch === 92) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (ch === 92) { */ case 7: + _r = s.scanEscape(34); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* } */ case 8: + $s = 1; continue; + case 2: + $s = -1; return ($bytesToString($subslice(s.src, offs, s.offset))); + /* */ } return; } var $f = {$blk: scanString, $c: true, $r, _r, ch, offs, s, $s};return $f; + }; + stripCR = function stripCR$1(b, comment) { + var _i, _ref, b, c, ch, comment, i, j, x, x$1; + c = $makeSlice(sliceType, b.$length); + i = 0; + _ref = b; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + j = _i; + ch = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((ch === 13)) || comment && i > 2 && ((x = i - 1 >> 0, ((x < 0 || x >= c.$length) ? ($throwRuntimeError("index out of range"), undefined) : c.$array[c.$offset + x])) === 42) && (j + 1 >> 0) < b.$length && ((x$1 = j + 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + x$1])) === 47)) { + ((i < 0 || i >= c.$length) ? ($throwRuntimeError("index out of range"), undefined) : c.$array[c.$offset + i] = ch); + i = i + (1) >> 0; + } + _i++; + } + return $subslice(c, 0, i); + }; + $ptrType(Scanner).prototype.scanRawString = function scanRawString() { + var {ch, hasCR, lit, offs, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + offs = s.offset - 1 >> 0; + hasCR = false; + /* while (true) { */ case 1: + ch = s.ch; + /* */ if (ch < 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (ch < 0) { */ case 3: + $r = s.error(offs, "raw string literal not terminated"); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 2; continue; + /* } */ case 4: + $r = s.next(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (ch === 96) { + /* break; */ $s = 2; continue; + } + if (ch === 13) { + hasCR = true; + } + $s = 1; continue; + case 2: + lit = $subslice(s.src, offs, s.offset); + if (hasCR) { + lit = stripCR(lit, false); + } + $s = -1; return ($bytesToString(lit)); + /* */ } return; } var $f = {$blk: scanRawString, $c: true, $r, ch, hasCR, lit, offs, s, $s};return $f; + }; + $ptrType(Scanner).prototype.skipWhitespace = function skipWhitespace() { + var {s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* while (true) { */ case 1: + /* if (!((s.ch === 32) || (s.ch === 9) || (s.ch === 10) && !s.insertSemi || (s.ch === 13))) { break; } */ if(!((s.ch === 32) || (s.ch === 9) || (s.ch === 10) && !s.insertSemi || (s.ch === 13))) { $s = 2; continue; } + $r = s.next(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: skipWhitespace, $c: true, $r, s, $s};return $f; + }; + $ptrType(Scanner).prototype.switch2 = function switch2(tok0, tok1) { + var {s, tok0, tok1, $s, $r, $c} = $restore(this, {tok0, tok1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (s.ch === 61) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (s.ch === 61) { */ case 1: + $r = s.next(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return tok1; + /* } */ case 2: + $s = -1; return tok0; + /* */ } return; } var $f = {$blk: switch2, $c: true, $r, s, tok0, tok1, $s};return $f; + }; + $ptrType(Scanner).prototype.switch3 = function switch3(tok0, tok1, ch2, tok2) { + var {ch2, s, tok0, tok1, tok2, $s, $r, $c} = $restore(this, {tok0, tok1, ch2, tok2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (s.ch === 61) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (s.ch === 61) { */ case 1: + $r = s.next(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return tok1; + /* } */ case 2: + /* */ if (s.ch === ch2) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (s.ch === ch2) { */ case 4: + $r = s.next(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return tok2; + /* } */ case 5: + $s = -1; return tok0; + /* */ } return; } var $f = {$blk: switch3, $c: true, $r, ch2, s, tok0, tok1, tok2, $s};return $f; + }; + $ptrType(Scanner).prototype.switch4 = function switch4(tok0, tok1, ch2, tok2, tok3) { + var {ch2, s, tok0, tok1, tok2, tok3, $s, $r, $c} = $restore(this, {tok0, tok1, ch2, tok2, tok3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (s.ch === 61) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (s.ch === 61) { */ case 1: + $r = s.next(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return tok1; + /* } */ case 2: + /* */ if (s.ch === ch2) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (s.ch === ch2) { */ case 4: + $r = s.next(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (s.ch === 61) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (s.ch === 61) { */ case 7: + $r = s.next(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return tok3; + /* } */ case 8: + $s = -1; return tok2; + /* } */ case 5: + $s = -1; return tok0; + /* */ } return; } var $f = {$blk: switch4, $c: true, $r, ch2, s, tok0, tok1, tok2, tok3, $s};return $f; + }; + $ptrType(Scanner).prototype.Scan = function Scan() { + var {_1, _2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, _tuple$1, ch, comment, insertSemi, lit, nlOffset, pos, s, tok, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pos = 0; + tok = 0; + lit = ""; + s = this; + /* scanAgain: */ case 1: + if (new token.Pos(s.nlPos).IsValid()) { + _tmp = s.nlPos; + _tmp$1 = 57; + _tmp$2 = "\n"; + pos = _tmp; + tok = _tmp$1; + lit = _tmp$2; + s.nlPos = 0; + $s = -1; return [pos, tok, lit]; + } + $r = s.skipWhitespace(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = s.file.Pos(s.offset); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + pos = _r; + insertSemi = false; + ch = s.ch; + /* */ if (isLetter(ch)) { $s = 5; continue; } + /* */ if (isDecimal(ch) || (ch === 46) && isDecimal(((s.peek() >> 0)))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (isLetter(ch)) { */ case 5: + _r$1 = s.scanIdentifier(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + lit = _r$1; + if (lit.length > 1) { + tok = token.Lookup(lit); + _1 = tok; + if ((_1 === (4)) || (_1 === (61)) || (_1 === (65)) || (_1 === (69)) || (_1 === (80))) { + insertSemi = true; + } + } else { + insertSemi = true; + tok = 4; + } + $s = 8; continue; + /* } else if (isDecimal(ch) || (ch === 46) && isDecimal(((s.peek() >> 0)))) { */ case 6: + insertSemi = true; + _r$2 = s.scanNumber(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + tok = _tuple[0]; + lit = _tuple[1]; + $s = 8; continue; + /* } else { */ case 7: + $r = s.next(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _2 = ch; + /* */ if (_2 === (-1)) { $s = 13; continue; } + /* */ if (_2 === (10)) { $s = 14; continue; } + /* */ if (_2 === (34)) { $s = 15; continue; } + /* */ if (_2 === (39)) { $s = 16; continue; } + /* */ if (_2 === (96)) { $s = 17; continue; } + /* */ if (_2 === (58)) { $s = 18; continue; } + /* */ if (_2 === (46)) { $s = 19; continue; } + /* */ if (_2 === (44)) { $s = 20; continue; } + /* */ if (_2 === (59)) { $s = 21; continue; } + /* */ if (_2 === (40)) { $s = 22; continue; } + /* */ if (_2 === (41)) { $s = 23; continue; } + /* */ if (_2 === (91)) { $s = 24; continue; } + /* */ if (_2 === (93)) { $s = 25; continue; } + /* */ if (_2 === (123)) { $s = 26; continue; } + /* */ if (_2 === (125)) { $s = 27; continue; } + /* */ if (_2 === (43)) { $s = 28; continue; } + /* */ if (_2 === (45)) { $s = 29; continue; } + /* */ if (_2 === (42)) { $s = 30; continue; } + /* */ if (_2 === (47)) { $s = 31; continue; } + /* */ if (_2 === (37)) { $s = 32; continue; } + /* */ if (_2 === (94)) { $s = 33; continue; } + /* */ if (_2 === (60)) { $s = 34; continue; } + /* */ if (_2 === (62)) { $s = 35; continue; } + /* */ if (_2 === (61)) { $s = 36; continue; } + /* */ if (_2 === (33)) { $s = 37; continue; } + /* */ if (_2 === (38)) { $s = 38; continue; } + /* */ if (_2 === (124)) { $s = 39; continue; } + /* */ if (_2 === (126)) { $s = 40; continue; } + /* */ $s = 41; continue; + /* if (_2 === (-1)) { */ case 13: + if (s.insertSemi) { + s.insertSemi = false; + _tmp$3 = pos; + _tmp$4 = 57; + _tmp$5 = "\n"; + pos = _tmp$3; + tok = _tmp$4; + lit = _tmp$5; + $s = -1; return [pos, tok, lit]; + } + tok = 1; + $s = 42; continue; + /* } else if (_2 === (10)) { */ case 14: + s.insertSemi = false; + _tmp$6 = pos; + _tmp$7 = 57; + _tmp$8 = "\n"; + pos = _tmp$6; + tok = _tmp$7; + lit = _tmp$8; + $s = -1; return [pos, tok, lit]; + /* } else if (_2 === (34)) { */ case 15: + insertSemi = true; + tok = 9; + _r$3 = s.scanString(); /* */ $s = 43; case 43: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + lit = _r$3; + $s = 42; continue; + /* } else if (_2 === (39)) { */ case 16: + insertSemi = true; + tok = 8; + _r$4 = s.scanRune(); /* */ $s = 44; case 44: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + lit = _r$4; + $s = 42; continue; + /* } else if (_2 === (96)) { */ case 17: + insertSemi = true; + tok = 9; + _r$5 = s.scanRawString(); /* */ $s = 45; case 45: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + lit = _r$5; + $s = 42; continue; + /* } else if (_2 === (58)) { */ case 18: + _r$6 = s.switch2(58, 47); /* */ $s = 46; case 46: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + tok = _r$6; + $s = 42; continue; + /* } else if (_2 === (46)) { */ case 19: + tok = 53; + /* */ if ((s.ch === 46) && (s.peek() === 46)) { $s = 47; continue; } + /* */ $s = 48; continue; + /* if ((s.ch === 46) && (s.peek() === 46)) { */ case 47: + $r = s.next(); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = s.next(); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tok = 48; + /* } */ case 48: + $s = 42; continue; + /* } else if (_2 === (44)) { */ case 20: + tok = 52; + $s = 42; continue; + /* } else if (_2 === (59)) { */ case 21: + tok = 57; + lit = ";"; + $s = 42; continue; + /* } else if (_2 === (40)) { */ case 22: + tok = 49; + $s = 42; continue; + /* } else if (_2 === (41)) { */ case 23: + insertSemi = true; + tok = 54; + $s = 42; continue; + /* } else if (_2 === (91)) { */ case 24: + tok = 50; + $s = 42; continue; + /* } else if (_2 === (93)) { */ case 25: + insertSemi = true; + tok = 55; + $s = 42; continue; + /* } else if (_2 === (123)) { */ case 26: + tok = 51; + $s = 42; continue; + /* } else if (_2 === (125)) { */ case 27: + insertSemi = true; + tok = 56; + $s = 42; continue; + /* } else if (_2 === (43)) { */ case 28: + _r$7 = s.switch3(12, 23, 43, 37); /* */ $s = 51; case 51: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + tok = _r$7; + if (tok === 37) { + insertSemi = true; + } + $s = 42; continue; + /* } else if (_2 === (45)) { */ case 29: + _r$8 = s.switch3(13, 24, 45, 38); /* */ $s = 52; case 52: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + tok = _r$8; + if (tok === 38) { + insertSemi = true; + } + $s = 42; continue; + /* } else if (_2 === (42)) { */ case 30: + _r$9 = s.switch2(14, 25); /* */ $s = 53; case 53: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + tok = _r$9; + $s = 42; continue; + /* } else if (_2 === (47)) { */ case 31: + /* */ if ((s.ch === 47) || (s.ch === 42)) { $s = 54; continue; } + /* */ $s = 55; continue; + /* if ((s.ch === 47) || (s.ch === 42)) { */ case 54: + _r$10 = s.scanComment(); /* */ $s = 57; case 57: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$1 = _r$10; + comment = _tuple$1[0]; + nlOffset = _tuple$1[1]; + /* */ if (s.insertSemi && !((nlOffset === 0))) { $s = 58; continue; } + /* */ $s = 59; continue; + /* if (s.insertSemi && !((nlOffset === 0))) { */ case 58: + _r$11 = s.file.Pos(nlOffset); /* */ $s = 61; case 61: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + s.nlPos = _r$11; + s.insertSemi = false; + $s = 60; continue; + /* } else { */ case 59: + insertSemi = s.insertSemi; + /* } */ case 60: + /* */ if (((s.mode & 1) >>> 0) === 0) { $s = 62; continue; } + /* */ $s = 63; continue; + /* if (((s.mode & 1) >>> 0) === 0) { */ case 62: + /* goto scanAgain */ $s = 1; continue; + /* } */ case 63: + tok = 2; + lit = comment; + $s = 56; continue; + /* } else { */ case 55: + _r$12 = s.switch2(15, 26); /* */ $s = 64; case 64: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + tok = _r$12; + /* } */ case 56: + $s = 42; continue; + /* } else if (_2 === (37)) { */ case 32: + _r$13 = s.switch2(16, 27); /* */ $s = 65; case 65: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + tok = _r$13; + $s = 42; continue; + /* } else if (_2 === (94)) { */ case 33: + _r$14 = s.switch2(19, 30); /* */ $s = 66; case 66: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + tok = _r$14; + $s = 42; continue; + /* } else if (_2 === (60)) { */ case 34: + /* */ if (s.ch === 45) { $s = 67; continue; } + /* */ $s = 68; continue; + /* if (s.ch === 45) { */ case 67: + $r = s.next(); /* */ $s = 70; case 70: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tok = 36; + $s = 69; continue; + /* } else { */ case 68: + _r$15 = s.switch4(40, 45, 60, 20, 31); /* */ $s = 71; case 71: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + tok = _r$15; + /* } */ case 69: + $s = 42; continue; + /* } else if (_2 === (62)) { */ case 35: + _r$16 = s.switch4(41, 46, 62, 21, 32); /* */ $s = 72; case 72: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + tok = _r$16; + $s = 42; continue; + /* } else if (_2 === (61)) { */ case 36: + _r$17 = s.switch2(42, 39); /* */ $s = 73; case 73: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + tok = _r$17; + $s = 42; continue; + /* } else if (_2 === (33)) { */ case 37: + _r$18 = s.switch2(43, 44); /* */ $s = 74; case 74: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + tok = _r$18; + $s = 42; continue; + /* } else if (_2 === (38)) { */ case 38: + /* */ if (s.ch === 94) { $s = 75; continue; } + /* */ $s = 76; continue; + /* if (s.ch === 94) { */ case 75: + $r = s.next(); /* */ $s = 78; case 78: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$19 = s.switch2(22, 33); /* */ $s = 79; case 79: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + tok = _r$19; + $s = 77; continue; + /* } else { */ case 76: + _r$20 = s.switch3(17, 28, 38, 34); /* */ $s = 80; case 80: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + tok = _r$20; + /* } */ case 77: + $s = 42; continue; + /* } else if (_2 === (124)) { */ case 39: + _r$21 = s.switch3(18, 29, 124, 35); /* */ $s = 81; case 81: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + tok = _r$21; + $s = 42; continue; + /* } else if (_2 === (126)) { */ case 40: + tok = 88; + $s = 42; continue; + /* } else { */ case 41: + /* */ if (!((ch === 65279))) { $s = 82; continue; } + /* */ $s = 83; continue; + /* if (!((ch === 65279))) { */ case 82: + _r$22 = s.file.Offset(pos); /* */ $s = 84; case 84: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $r = s.errorf(_r$22, "illegal character %#U", new sliceType$1([new $Int32(ch)])); /* */ $s = 85; case 85: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 83: + insertSemi = s.insertSemi; + tok = 0; + lit = ($encodeRune(ch)); + /* } */ case 42: + case 12: + /* } */ case 8: + case 4: + if (((s.mode & 2) >>> 0) === 0) { + s.insertSemi = insertSemi; + } + $s = -1; return [pos, tok, lit]; + /* */ } return; } var $f = {$blk: Scan, $c: true, $r, _1, _2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, _tuple$1, ch, comment, insertSemi, lit, nlOffset, pos, s, tok, $s};return $f; + }; + $ptrType(Error).prototype.Error = function Error$1() { + var {$24r, _r, e, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + /* */ if (!(e.Pos.Filename === "") || e.Pos.IsValid()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(e.Pos.Filename === "") || e.Pos.IsValid()) { */ case 1: + _r = $clone(e.Pos, token.Position).String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r + ": " + e.Msg; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return e.Msg; + /* */ } return; } var $f = {$blk: Error$1, $c: true, $r, $24r, _r, e, $s};return $f; + }; + Error.prototype.Error = function(...$args) { return this.$val.Error(...$args); }; + $ptrType(ErrorList).prototype.Add = function Add(pos, msg) { + var msg, p, pos; + p = this; + p.$set($append(p.$get(), new Error.ptr($clone(pos, token.Position), msg))); + }; + $ptrType(ErrorList).prototype.Reset = function Reset() { + var p; + p = this; + p.$set($subslice((p.$get()), 0, 0)); + }; + ErrorList.prototype.Len = function Len() { + var p; + p = this; + return p.$length; + }; + $ptrType(ErrorList).prototype.Len = function(...$args) { return this.$get().Len(...$args); }; + ErrorList.prototype.Swap = function Swap(i, j) { + var _tmp, _tmp$1, i, j, p; + p = this; + _tmp = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); + _tmp$1 = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); + ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i] = _tmp); + ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j] = _tmp$1); + }; + $ptrType(ErrorList).prototype.Swap = function(...$args) { return this.$get().Swap(...$args); }; + ErrorList.prototype.Less = function Less(i, j) { + var e, f, i, j, p; + p = this; + e = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]).Pos; + f = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]).Pos; + if (!(e.Filename === f.Filename)) { + return e.Filename < f.Filename; + } + if (!((e.Line === f.Line))) { + return e.Line < f.Line; + } + if (!((e.Column === f.Column))) { + return e.Column < f.Column; + } + return ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]).Msg < ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]).Msg; + }; + $ptrType(ErrorList).prototype.Less = function(...$args) { return this.$get().Less(...$args); }; + ErrorList.prototype.Sort = function Sort() { + var {p, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + $r = sort.Sort(p); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Sort, $c: true, $r, p, $s};return $f; + }; + $ptrType(ErrorList).prototype.Sort = function(...$args) { return this.$get().Sort(...$args); }; + $ptrType(ErrorList).prototype.RemoveMultiples = function RemoveMultiples() { + var {_i, _ref, e, i, last, p, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + $r = sort.Sort(p); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + last = new token.Position.ptr("", 0, 0, 0); + i = 0; + _ref = p.$get(); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(e.Pos.Filename === last.Filename) || !((e.Pos.Line === last.Line))) { + token.Position.copy(last, e.Pos); + (x = p.$get(), ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = e)); + i = i + (1) >> 0; + } + _i++; + } + p.$set($subslice((p.$get()), 0, i)); + $s = -1; return; + /* */ } return; } var $f = {$blk: RemoveMultiples, $c: true, $r, _i, _ref, e, i, last, p, x, $s};return $f; + }; + ErrorList.prototype.Error = function Error$2() { + var {$24r, $24r$1, _1, _r, _r$1, p, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _1 = p.$length; + /* */ if (_1 === (0)) { $s = 2; continue; } + /* */ if (_1 === (1)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_1 === (0)) { */ case 2: + $s = -1; return "no errors"; + /* } else if (_1 === (1)) { */ case 3: + _r = $clone((0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]), Error).Error(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 6; case 6: return $24r; + /* } */ case 4: + case 1: + _r$1 = fmt.Sprintf("%s (and %d more errors)", new sliceType$1([(0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0]), new $Int((p.$length - 1 >> 0))])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 8; case 8: return $24r$1; + /* */ } return; } var $f = {$blk: Error$2, $c: true, $r, $24r, $24r$1, _1, _r, _r$1, p, $s};return $f; + }; + $ptrType(ErrorList).prototype.Error = function(...$args) { return this.$get().Error(...$args); }; + ErrorList.prototype.Err = function Err() { + var p; + p = this; + if (p.$length === 0) { + return $ifaceNil; + } + return p; + }; + $ptrType(ErrorList).prototype.Err = function(...$args) { return this.$get().Err(...$args); }; + ptrType$2.methods = [{prop: "next", name: "next", pkg: "go/scanner", typ: $funcType([], [], false)}, {prop: "peek", name: "peek", pkg: "go/scanner", typ: $funcType([], [$Uint8], false)}, {prop: "Init", name: "Init", pkg: "", typ: $funcType([ptrType$1, sliceType, ErrorHandler, Mode], [], false)}, {prop: "error", name: "error", pkg: "go/scanner", typ: $funcType([$Int, $String], [], false)}, {prop: "errorf", name: "errorf", pkg: "go/scanner", typ: $funcType([$Int, $String, sliceType$1], [], true)}, {prop: "scanComment", name: "scanComment", pkg: "go/scanner", typ: $funcType([], [$String, $Int], false)}, {prop: "updateLineInfo", name: "updateLineInfo", pkg: "go/scanner", typ: $funcType([$Int, $Int, sliceType], [], false)}, {prop: "scanIdentifier", name: "scanIdentifier", pkg: "go/scanner", typ: $funcType([], [$String], false)}, {prop: "digits", name: "digits", pkg: "go/scanner", typ: $funcType([$Int, ptrType], [$Int], false)}, {prop: "scanNumber", name: "scanNumber", pkg: "go/scanner", typ: $funcType([], [token.Token, $String], false)}, {prop: "scanEscape", name: "scanEscape", pkg: "go/scanner", typ: $funcType([$Int32], [$Bool], false)}, {prop: "scanRune", name: "scanRune", pkg: "go/scanner", typ: $funcType([], [$String], false)}, {prop: "scanString", name: "scanString", pkg: "go/scanner", typ: $funcType([], [$String], false)}, {prop: "scanRawString", name: "scanRawString", pkg: "go/scanner", typ: $funcType([], [$String], false)}, {prop: "skipWhitespace", name: "skipWhitespace", pkg: "go/scanner", typ: $funcType([], [], false)}, {prop: "switch2", name: "switch2", pkg: "go/scanner", typ: $funcType([token.Token, token.Token], [token.Token], false)}, {prop: "switch3", name: "switch3", pkg: "go/scanner", typ: $funcType([token.Token, token.Token, $Int32, token.Token], [token.Token], false)}, {prop: "switch4", name: "switch4", pkg: "go/scanner", typ: $funcType([token.Token, token.Token, $Int32, token.Token, token.Token], [token.Token], false)}, {prop: "Scan", name: "Scan", pkg: "", typ: $funcType([], [token.Pos, token.Token, $String], false)}]; + Error.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ErrorList.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Sort", name: "Sort", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}]; + ptrType$3.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([token.Position, $String], [], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "RemoveMultiples", name: "RemoveMultiples", pkg: "", typ: $funcType([], [], false)}]; + ErrorHandler.init([token.Position, $String], [], false); + Scanner.init("go/scanner", [{prop: "file", name: "file", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "dir", name: "dir", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "src", name: "src", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: ErrorHandler, tag: ""}, {prop: "mode", name: "mode", embedded: false, exported: false, typ: Mode, tag: ""}, {prop: "ch", name: "ch", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "rdOffset", name: "rdOffset", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "lineOffset", name: "lineOffset", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "insertSemi", name: "insertSemi", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "nlPos", name: "nlPos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "ErrorCount", name: "ErrorCount", embedded: false, exported: true, typ: $Int, tag: ""}]); + Error.init("", [{prop: "Pos", name: "Pos", embedded: false, exported: true, typ: token.Position, tag: ""}, {prop: "Msg", name: "Msg", embedded: false, exported: true, typ: $String, tag: ""}]); + ErrorList.init(ptrType$4); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = filepath.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + prefix = (new sliceType($stringToBytes("line "))); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["go/ast"] = (function() { + var $pkg = {}, $init, bytes, fmt, scanner, token, io, os, reflect, sort, strconv, strings, Visitor, inspector, Scope, Object, ObjKind, FieldFilter, printer, localError, Node, Expr, Stmt, Decl, Comment, CommentGroup, Field, FieldList, BadExpr, Ident, Ellipsis, BasicLit, FuncLit, CompositeLit, ParenExpr, SelectorExpr, IndexExpr, IndexListExpr, SliceExpr, TypeAssertExpr, CallExpr, StarExpr, UnaryExpr, BinaryExpr, KeyValueExpr, ChanDir, ArrayType, StructType, FuncType, InterfaceType, MapType, ChanType, BadStmt, DeclStmt, EmptyStmt, LabeledStmt, ExprStmt, SendStmt, IncDecStmt, AssignStmt, GoStmt, DeferStmt, ReturnStmt, BranchStmt, BlockStmt, IfStmt, CaseClause, SwitchStmt, TypeSwitchStmt, CommClause, SelectStmt, ForStmt, RangeStmt, Spec, ImportSpec, ValueSpec, TypeSpec, BadDecl, GenDecl, FuncDecl, File, Package, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, ptrType$16, ptrType$17, ptrType$18, ptrType$19, ptrType$20, ptrType$21, ptrType$22, ptrType$23, ptrType$24, ptrType$25, ptrType$26, ptrType$27, ptrType$28, ptrType$29, ptrType$30, ptrType$31, ptrType$32, ptrType$33, ptrType$34, ptrType$35, ptrType$36, ptrType$37, ptrType$38, ptrType$39, ptrType$40, ptrType$41, ptrType$42, ptrType$43, ptrType$44, ptrType$45, ptrType$46, ptrType$47, ptrType$48, ptrType$49, ptrType$50, ptrType$51, ptrType$52, ptrType$53, ptrType$54, ptrType$55, sliceType$1, ptrType$56, ptrType$57, ptrType$58, ptrType$60, sliceType$3, sliceType$5, sliceType$6, sliceType$7, sliceType$8, sliceType$9, mapType, ptrType$63, mapType$1, sliceType$11, sliceType$12, sliceType$13, sliceType$14, mapType$2, objKindStrings, indent, walkIdentList, walkExprList, walkStmtList, walkDeclList, Walk, Inspect, NewScope, NewObj, NotNilFilter, Fprint, fprint, isWhitespace, stripTrailingWhitespace, isDirective, NewIdent, IsExported; + bytes = $packages["bytes"]; + fmt = $packages["fmt"]; + scanner = $packages["go/scanner"]; + token = $packages["go/token"]; + io = $packages["io"]; + os = $packages["os"]; + reflect = $packages["reflect"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + Visitor = $newType(8, $kindInterface, "ast.Visitor", true, "go/ast", true, null); + inspector = $newType(4, $kindFunc, "ast.inspector", true, "go/ast", false, null); + Scope = $newType(0, $kindStruct, "ast.Scope", true, "go/ast", true, function(Outer_, Objects_) { + this.$val = this; + if (arguments.length === 0) { + this.Outer = ptrType$58.nil; + this.Objects = false; + return; + } + this.Outer = Outer_; + this.Objects = Objects_; + }); + Object = $newType(0, $kindStruct, "ast.Object", true, "go/ast", true, function(Kind_, Name_, Decl_, Data_, Type_) { + this.$val = this; + if (arguments.length === 0) { + this.Kind = 0; + this.Name = ""; + this.Decl = $ifaceNil; + this.Data = $ifaceNil; + this.Type = $ifaceNil; + return; + } + this.Kind = Kind_; + this.Name = Name_; + this.Decl = Decl_; + this.Data = Data_; + this.Type = Type_; + }); + ObjKind = $newType(4, $kindInt, "ast.ObjKind", true, "go/ast", true, null); + FieldFilter = $newType(4, $kindFunc, "ast.FieldFilter", true, "go/ast", true, null); + printer = $newType(0, $kindStruct, "ast.printer", true, "go/ast", false, function(output_, fset_, filter_, ptrmap_, indent_, last_, line_) { + this.$val = this; + if (arguments.length === 0) { + this.output = $ifaceNil; + this.fset = ptrType$60.nil; + this.filter = $throwNilPointerError; + this.ptrmap = false; + this.indent = 0; + this.last = 0; + this.line = 0; + return; + } + this.output = output_; + this.fset = fset_; + this.filter = filter_; + this.ptrmap = ptrmap_; + this.indent = indent_; + this.last = last_; + this.line = line_; + }); + localError = $newType(0, $kindStruct, "ast.localError", true, "go/ast", false, function(err_) { + this.$val = this; + if (arguments.length === 0) { + this.err = $ifaceNil; + return; + } + this.err = err_; + }); + Node = $newType(8, $kindInterface, "ast.Node", true, "go/ast", true, null); + Expr = $newType(8, $kindInterface, "ast.Expr", true, "go/ast", true, null); + Stmt = $newType(8, $kindInterface, "ast.Stmt", true, "go/ast", true, null); + Decl = $newType(8, $kindInterface, "ast.Decl", true, "go/ast", true, null); + Comment = $newType(0, $kindStruct, "ast.Comment", true, "go/ast", true, function(Slash_, Text_) { + this.$val = this; + if (arguments.length === 0) { + this.Slash = 0; + this.Text = ""; + return; + } + this.Slash = Slash_; + this.Text = Text_; + }); + CommentGroup = $newType(0, $kindStruct, "ast.CommentGroup", true, "go/ast", true, function(List_) { + this.$val = this; + if (arguments.length === 0) { + this.List = sliceType$6.nil; + return; + } + this.List = List_; + }); + Field = $newType(0, $kindStruct, "ast.Field", true, "go/ast", true, function(Doc_, Names_, Type_, Tag_, Comment_) { + this.$val = this; + if (arguments.length === 0) { + this.Doc = ptrType$1.nil; + this.Names = sliceType$9.nil; + this.Type = $ifaceNil; + this.Tag = ptrType$6.nil; + this.Comment = ptrType$1.nil; + return; + } + this.Doc = Doc_; + this.Names = Names_; + this.Type = Type_; + this.Tag = Tag_; + this.Comment = Comment_; + }); + FieldList = $newType(0, $kindStruct, "ast.FieldList", true, "go/ast", true, function(Opening_, List_, Closing_) { + this.$val = this; + if (arguments.length === 0) { + this.Opening = 0; + this.List = sliceType$11.nil; + this.Closing = 0; + return; + } + this.Opening = Opening_; + this.List = List_; + this.Closing = Closing_; + }); + BadExpr = $newType(0, $kindStruct, "ast.BadExpr", true, "go/ast", true, function(From_, To_) { + this.$val = this; + if (arguments.length === 0) { + this.From = 0; + this.To = 0; + return; + } + this.From = From_; + this.To = To_; + }); + Ident = $newType(0, $kindStruct, "ast.Ident", true, "go/ast", true, function(NamePos_, Name_, Obj_) { + this.$val = this; + if (arguments.length === 0) { + this.NamePos = 0; + this.Name = ""; + this.Obj = ptrType$56.nil; + return; + } + this.NamePos = NamePos_; + this.Name = Name_; + this.Obj = Obj_; + }); + Ellipsis = $newType(0, $kindStruct, "ast.Ellipsis", true, "go/ast", true, function(Ellipsis_, Elt_) { + this.$val = this; + if (arguments.length === 0) { + this.Ellipsis = 0; + this.Elt = $ifaceNil; + return; + } + this.Ellipsis = Ellipsis_; + this.Elt = Elt_; + }); + BasicLit = $newType(0, $kindStruct, "ast.BasicLit", true, "go/ast", true, function(ValuePos_, Kind_, Value_) { + this.$val = this; + if (arguments.length === 0) { + this.ValuePos = 0; + this.Kind = 0; + this.Value = ""; + return; + } + this.ValuePos = ValuePos_; + this.Kind = Kind_; + this.Value = Value_; + }); + FuncLit = $newType(0, $kindStruct, "ast.FuncLit", true, "go/ast", true, function(Type_, Body_) { + this.$val = this; + if (arguments.length === 0) { + this.Type = ptrType$23.nil; + this.Body = ptrType$39.nil; + return; + } + this.Type = Type_; + this.Body = Body_; + }); + CompositeLit = $newType(0, $kindStruct, "ast.CompositeLit", true, "go/ast", true, function(Type_, Lbrace_, Elts_, Rbrace_, Incomplete_) { + this.$val = this; + if (arguments.length === 0) { + this.Type = $ifaceNil; + this.Lbrace = 0; + this.Elts = sliceType$12.nil; + this.Rbrace = 0; + this.Incomplete = false; + return; + } + this.Type = Type_; + this.Lbrace = Lbrace_; + this.Elts = Elts_; + this.Rbrace = Rbrace_; + this.Incomplete = Incomplete_; + }); + ParenExpr = $newType(0, $kindStruct, "ast.ParenExpr", true, "go/ast", true, function(Lparen_, X_, Rparen_) { + this.$val = this; + if (arguments.length === 0) { + this.Lparen = 0; + this.X = $ifaceNil; + this.Rparen = 0; + return; + } + this.Lparen = Lparen_; + this.X = X_; + this.Rparen = Rparen_; + }); + SelectorExpr = $newType(0, $kindStruct, "ast.SelectorExpr", true, "go/ast", true, function(X_, Sel_) { + this.$val = this; + if (arguments.length === 0) { + this.X = $ifaceNil; + this.Sel = ptrType$5.nil; + return; + } + this.X = X_; + this.Sel = Sel_; + }); + IndexExpr = $newType(0, $kindStruct, "ast.IndexExpr", true, "go/ast", true, function(X_, Lbrack_, Index_, Rbrack_) { + this.$val = this; + if (arguments.length === 0) { + this.X = $ifaceNil; + this.Lbrack = 0; + this.Index = $ifaceNil; + this.Rbrack = 0; + return; + } + this.X = X_; + this.Lbrack = Lbrack_; + this.Index = Index_; + this.Rbrack = Rbrack_; + }); + IndexListExpr = $newType(0, $kindStruct, "ast.IndexListExpr", true, "go/ast", true, function(X_, Lbrack_, Indices_, Rbrack_) { + this.$val = this; + if (arguments.length === 0) { + this.X = $ifaceNil; + this.Lbrack = 0; + this.Indices = sliceType$12.nil; + this.Rbrack = 0; + return; + } + this.X = X_; + this.Lbrack = Lbrack_; + this.Indices = Indices_; + this.Rbrack = Rbrack_; + }); + SliceExpr = $newType(0, $kindStruct, "ast.SliceExpr", true, "go/ast", true, function(X_, Lbrack_, Low_, High_, Max_, Slice3_, Rbrack_) { + this.$val = this; + if (arguments.length === 0) { + this.X = $ifaceNil; + this.Lbrack = 0; + this.Low = $ifaceNil; + this.High = $ifaceNil; + this.Max = $ifaceNil; + this.Slice3 = false; + this.Rbrack = 0; + return; + } + this.X = X_; + this.Lbrack = Lbrack_; + this.Low = Low_; + this.High = High_; + this.Max = Max_; + this.Slice3 = Slice3_; + this.Rbrack = Rbrack_; + }); + TypeAssertExpr = $newType(0, $kindStruct, "ast.TypeAssertExpr", true, "go/ast", true, function(X_, Lparen_, Type_, Rparen_) { + this.$val = this; + if (arguments.length === 0) { + this.X = $ifaceNil; + this.Lparen = 0; + this.Type = $ifaceNil; + this.Rparen = 0; + return; + } + this.X = X_; + this.Lparen = Lparen_; + this.Type = Type_; + this.Rparen = Rparen_; + }); + CallExpr = $newType(0, $kindStruct, "ast.CallExpr", true, "go/ast", true, function(Fun_, Lparen_, Args_, Ellipsis_, Rparen_) { + this.$val = this; + if (arguments.length === 0) { + this.Fun = $ifaceNil; + this.Lparen = 0; + this.Args = sliceType$12.nil; + this.Ellipsis = 0; + this.Rparen = 0; + return; + } + this.Fun = Fun_; + this.Lparen = Lparen_; + this.Args = Args_; + this.Ellipsis = Ellipsis_; + this.Rparen = Rparen_; + }); + StarExpr = $newType(0, $kindStruct, "ast.StarExpr", true, "go/ast", true, function(Star_, X_) { + this.$val = this; + if (arguments.length === 0) { + this.Star = 0; + this.X = $ifaceNil; + return; + } + this.Star = Star_; + this.X = X_; + }); + UnaryExpr = $newType(0, $kindStruct, "ast.UnaryExpr", true, "go/ast", true, function(OpPos_, Op_, X_) { + this.$val = this; + if (arguments.length === 0) { + this.OpPos = 0; + this.Op = 0; + this.X = $ifaceNil; + return; + } + this.OpPos = OpPos_; + this.Op = Op_; + this.X = X_; + }); + BinaryExpr = $newType(0, $kindStruct, "ast.BinaryExpr", true, "go/ast", true, function(X_, OpPos_, Op_, Y_) { + this.$val = this; + if (arguments.length === 0) { + this.X = $ifaceNil; + this.OpPos = 0; + this.Op = 0; + this.Y = $ifaceNil; + return; + } + this.X = X_; + this.OpPos = OpPos_; + this.Op = Op_; + this.Y = Y_; + }); + KeyValueExpr = $newType(0, $kindStruct, "ast.KeyValueExpr", true, "go/ast", true, function(Key_, Colon_, Value_) { + this.$val = this; + if (arguments.length === 0) { + this.Key = $ifaceNil; + this.Colon = 0; + this.Value = $ifaceNil; + return; + } + this.Key = Key_; + this.Colon = Colon_; + this.Value = Value_; + }); + ChanDir = $newType(4, $kindInt, "ast.ChanDir", true, "go/ast", true, null); + ArrayType = $newType(0, $kindStruct, "ast.ArrayType", true, "go/ast", true, function(Lbrack_, Len_, Elt_) { + this.$val = this; + if (arguments.length === 0) { + this.Lbrack = 0; + this.Len = $ifaceNil; + this.Elt = $ifaceNil; + return; + } + this.Lbrack = Lbrack_; + this.Len = Len_; + this.Elt = Elt_; + }); + StructType = $newType(0, $kindStruct, "ast.StructType", true, "go/ast", true, function(Struct_, Fields_, Incomplete_) { + this.$val = this; + if (arguments.length === 0) { + this.Struct = 0; + this.Fields = ptrType$3.nil; + this.Incomplete = false; + return; + } + this.Struct = Struct_; + this.Fields = Fields_; + this.Incomplete = Incomplete_; + }); + FuncType = $newType(0, $kindStruct, "ast.FuncType", true, "go/ast", true, function(Func_, TypeParams_, Params_, Results_) { + this.$val = this; + if (arguments.length === 0) { + this.Func = 0; + this.TypeParams = ptrType$3.nil; + this.Params = ptrType$3.nil; + this.Results = ptrType$3.nil; + return; + } + this.Func = Func_; + this.TypeParams = TypeParams_; + this.Params = Params_; + this.Results = Results_; + }); + InterfaceType = $newType(0, $kindStruct, "ast.InterfaceType", true, "go/ast", true, function(Interface_, Methods_, Incomplete_) { + this.$val = this; + if (arguments.length === 0) { + this.Interface = 0; + this.Methods = ptrType$3.nil; + this.Incomplete = false; + return; + } + this.Interface = Interface_; + this.Methods = Methods_; + this.Incomplete = Incomplete_; + }); + MapType = $newType(0, $kindStruct, "ast.MapType", true, "go/ast", true, function(Map_, Key_, Value_) { + this.$val = this; + if (arguments.length === 0) { + this.Map = 0; + this.Key = $ifaceNil; + this.Value = $ifaceNil; + return; + } + this.Map = Map_; + this.Key = Key_; + this.Value = Value_; + }); + ChanType = $newType(0, $kindStruct, "ast.ChanType", true, "go/ast", true, function(Begin_, Arrow_, Dir_, Value_) { + this.$val = this; + if (arguments.length === 0) { + this.Begin = 0; + this.Arrow = 0; + this.Dir = 0; + this.Value = $ifaceNil; + return; + } + this.Begin = Begin_; + this.Arrow = Arrow_; + this.Dir = Dir_; + this.Value = Value_; + }); + BadStmt = $newType(0, $kindStruct, "ast.BadStmt", true, "go/ast", true, function(From_, To_) { + this.$val = this; + if (arguments.length === 0) { + this.From = 0; + this.To = 0; + return; + } + this.From = From_; + this.To = To_; + }); + DeclStmt = $newType(0, $kindStruct, "ast.DeclStmt", true, "go/ast", true, function(Decl_) { + this.$val = this; + if (arguments.length === 0) { + this.Decl = $ifaceNil; + return; + } + this.Decl = Decl_; + }); + EmptyStmt = $newType(0, $kindStruct, "ast.EmptyStmt", true, "go/ast", true, function(Semicolon_, Implicit_) { + this.$val = this; + if (arguments.length === 0) { + this.Semicolon = 0; + this.Implicit = false; + return; + } + this.Semicolon = Semicolon_; + this.Implicit = Implicit_; + }); + LabeledStmt = $newType(0, $kindStruct, "ast.LabeledStmt", true, "go/ast", true, function(Label_, Colon_, Stmt_) { + this.$val = this; + if (arguments.length === 0) { + this.Label = ptrType$5.nil; + this.Colon = 0; + this.Stmt = $ifaceNil; + return; + } + this.Label = Label_; + this.Colon = Colon_; + this.Stmt = Stmt_; + }); + ExprStmt = $newType(0, $kindStruct, "ast.ExprStmt", true, "go/ast", true, function(X_) { + this.$val = this; + if (arguments.length === 0) { + this.X = $ifaceNil; + return; + } + this.X = X_; + }); + SendStmt = $newType(0, $kindStruct, "ast.SendStmt", true, "go/ast", true, function(Chan_, Arrow_, Value_) { + this.$val = this; + if (arguments.length === 0) { + this.Chan = $ifaceNil; + this.Arrow = 0; + this.Value = $ifaceNil; + return; + } + this.Chan = Chan_; + this.Arrow = Arrow_; + this.Value = Value_; + }); + IncDecStmt = $newType(0, $kindStruct, "ast.IncDecStmt", true, "go/ast", true, function(X_, TokPos_, Tok_) { + this.$val = this; + if (arguments.length === 0) { + this.X = $ifaceNil; + this.TokPos = 0; + this.Tok = 0; + return; + } + this.X = X_; + this.TokPos = TokPos_; + this.Tok = Tok_; + }); + AssignStmt = $newType(0, $kindStruct, "ast.AssignStmt", true, "go/ast", true, function(Lhs_, TokPos_, Tok_, Rhs_) { + this.$val = this; + if (arguments.length === 0) { + this.Lhs = sliceType$12.nil; + this.TokPos = 0; + this.Tok = 0; + this.Rhs = sliceType$12.nil; + return; + } + this.Lhs = Lhs_; + this.TokPos = TokPos_; + this.Tok = Tok_; + this.Rhs = Rhs_; + }); + GoStmt = $newType(0, $kindStruct, "ast.GoStmt", true, "go/ast", true, function(Go_, Call_) { + this.$val = this; + if (arguments.length === 0) { + this.Go = 0; + this.Call = ptrType$16.nil; + return; + } + this.Go = Go_; + this.Call = Call_; + }); + DeferStmt = $newType(0, $kindStruct, "ast.DeferStmt", true, "go/ast", true, function(Defer_, Call_) { + this.$val = this; + if (arguments.length === 0) { + this.Defer = 0; + this.Call = ptrType$16.nil; + return; + } + this.Defer = Defer_; + this.Call = Call_; + }); + ReturnStmt = $newType(0, $kindStruct, "ast.ReturnStmt", true, "go/ast", true, function(Return_, Results_) { + this.$val = this; + if (arguments.length === 0) { + this.Return = 0; + this.Results = sliceType$12.nil; + return; + } + this.Return = Return_; + this.Results = Results_; + }); + BranchStmt = $newType(0, $kindStruct, "ast.BranchStmt", true, "go/ast", true, function(TokPos_, Tok_, Label_) { + this.$val = this; + if (arguments.length === 0) { + this.TokPos = 0; + this.Tok = 0; + this.Label = ptrType$5.nil; + return; + } + this.TokPos = TokPos_; + this.Tok = Tok_; + this.Label = Label_; + }); + BlockStmt = $newType(0, $kindStruct, "ast.BlockStmt", true, "go/ast", true, function(Lbrace_, List_, Rbrace_) { + this.$val = this; + if (arguments.length === 0) { + this.Lbrace = 0; + this.List = sliceType$13.nil; + this.Rbrace = 0; + return; + } + this.Lbrace = Lbrace_; + this.List = List_; + this.Rbrace = Rbrace_; + }); + IfStmt = $newType(0, $kindStruct, "ast.IfStmt", true, "go/ast", true, function(If_, Init_, Cond_, Body_, Else_) { + this.$val = this; + if (arguments.length === 0) { + this.If = 0; + this.Init = $ifaceNil; + this.Cond = $ifaceNil; + this.Body = ptrType$39.nil; + this.Else = $ifaceNil; + return; + } + this.If = If_; + this.Init = Init_; + this.Cond = Cond_; + this.Body = Body_; + this.Else = Else_; + }); + CaseClause = $newType(0, $kindStruct, "ast.CaseClause", true, "go/ast", true, function(Case_, List_, Colon_, Body_) { + this.$val = this; + if (arguments.length === 0) { + this.Case = 0; + this.List = sliceType$12.nil; + this.Colon = 0; + this.Body = sliceType$13.nil; + return; + } + this.Case = Case_; + this.List = List_; + this.Colon = Colon_; + this.Body = Body_; + }); + SwitchStmt = $newType(0, $kindStruct, "ast.SwitchStmt", true, "go/ast", true, function(Switch_, Init_, Tag_, Body_) { + this.$val = this; + if (arguments.length === 0) { + this.Switch = 0; + this.Init = $ifaceNil; + this.Tag = $ifaceNil; + this.Body = ptrType$39.nil; + return; + } + this.Switch = Switch_; + this.Init = Init_; + this.Tag = Tag_; + this.Body = Body_; + }); + TypeSwitchStmt = $newType(0, $kindStruct, "ast.TypeSwitchStmt", true, "go/ast", true, function(Switch_, Init_, Assign_, Body_) { + this.$val = this; + if (arguments.length === 0) { + this.Switch = 0; + this.Init = $ifaceNil; + this.Assign = $ifaceNil; + this.Body = ptrType$39.nil; + return; + } + this.Switch = Switch_; + this.Init = Init_; + this.Assign = Assign_; + this.Body = Body_; + }); + CommClause = $newType(0, $kindStruct, "ast.CommClause", true, "go/ast", true, function(Case_, Comm_, Colon_, Body_) { + this.$val = this; + if (arguments.length === 0) { + this.Case = 0; + this.Comm = $ifaceNil; + this.Colon = 0; + this.Body = sliceType$13.nil; + return; + } + this.Case = Case_; + this.Comm = Comm_; + this.Colon = Colon_; + this.Body = Body_; + }); + SelectStmt = $newType(0, $kindStruct, "ast.SelectStmt", true, "go/ast", true, function(Select_, Body_) { + this.$val = this; + if (arguments.length === 0) { + this.Select = 0; + this.Body = ptrType$39.nil; + return; + } + this.Select = Select_; + this.Body = Body_; + }); + ForStmt = $newType(0, $kindStruct, "ast.ForStmt", true, "go/ast", true, function(For_, Init_, Cond_, Post_, Body_) { + this.$val = this; + if (arguments.length === 0) { + this.For = 0; + this.Init = $ifaceNil; + this.Cond = $ifaceNil; + this.Post = $ifaceNil; + this.Body = ptrType$39.nil; + return; + } + this.For = For_; + this.Init = Init_; + this.Cond = Cond_; + this.Post = Post_; + this.Body = Body_; + }); + RangeStmt = $newType(0, $kindStruct, "ast.RangeStmt", true, "go/ast", true, function(For_, Key_, Value_, TokPos_, Tok_, Range_, X_, Body_) { + this.$val = this; + if (arguments.length === 0) { + this.For = 0; + this.Key = $ifaceNil; + this.Value = $ifaceNil; + this.TokPos = 0; + this.Tok = 0; + this.Range = 0; + this.X = $ifaceNil; + this.Body = ptrType$39.nil; + return; + } + this.For = For_; + this.Key = Key_; + this.Value = Value_; + this.TokPos = TokPos_; + this.Tok = Tok_; + this.Range = Range_; + this.X = X_; + this.Body = Body_; + }); + Spec = $newType(8, $kindInterface, "ast.Spec", true, "go/ast", true, null); + ImportSpec = $newType(0, $kindStruct, "ast.ImportSpec", true, "go/ast", true, function(Doc_, Name_, Path_, Comment_, EndPos_) { + this.$val = this; + if (arguments.length === 0) { + this.Doc = ptrType$1.nil; + this.Name = ptrType$5.nil; + this.Path = ptrType$6.nil; + this.Comment = ptrType$1.nil; + this.EndPos = 0; + return; + } + this.Doc = Doc_; + this.Name = Name_; + this.Path = Path_; + this.Comment = Comment_; + this.EndPos = EndPos_; + }); + ValueSpec = $newType(0, $kindStruct, "ast.ValueSpec", true, "go/ast", true, function(Doc_, Names_, Type_, Values_, Comment_) { + this.$val = this; + if (arguments.length === 0) { + this.Doc = ptrType$1.nil; + this.Names = sliceType$9.nil; + this.Type = $ifaceNil; + this.Values = sliceType$12.nil; + this.Comment = ptrType$1.nil; + return; + } + this.Doc = Doc_; + this.Names = Names_; + this.Type = Type_; + this.Values = Values_; + this.Comment = Comment_; + }); + TypeSpec = $newType(0, $kindStruct, "ast.TypeSpec", true, "go/ast", true, function(Doc_, Name_, TypeParams_, Assign_, Type_, Comment_) { + this.$val = this; + if (arguments.length === 0) { + this.Doc = ptrType$1.nil; + this.Name = ptrType$5.nil; + this.TypeParams = ptrType$3.nil; + this.Assign = 0; + this.Type = $ifaceNil; + this.Comment = ptrType$1.nil; + return; + } + this.Doc = Doc_; + this.Name = Name_; + this.TypeParams = TypeParams_; + this.Assign = Assign_; + this.Type = Type_; + this.Comment = Comment_; + }); + BadDecl = $newType(0, $kindStruct, "ast.BadDecl", true, "go/ast", true, function(From_, To_) { + this.$val = this; + if (arguments.length === 0) { + this.From = 0; + this.To = 0; + return; + } + this.From = From_; + this.To = To_; + }); + GenDecl = $newType(0, $kindStruct, "ast.GenDecl", true, "go/ast", true, function(Doc_, TokPos_, Tok_, Lparen_, Specs_, Rparen_) { + this.$val = this; + if (arguments.length === 0) { + this.Doc = ptrType$1.nil; + this.TokPos = 0; + this.Tok = 0; + this.Lparen = 0; + this.Specs = sliceType$14.nil; + this.Rparen = 0; + return; + } + this.Doc = Doc_; + this.TokPos = TokPos_; + this.Tok = Tok_; + this.Lparen = Lparen_; + this.Specs = Specs_; + this.Rparen = Rparen_; + }); + FuncDecl = $newType(0, $kindStruct, "ast.FuncDecl", true, "go/ast", true, function(Doc_, Recv_, Name_, Type_, Body_) { + this.$val = this; + if (arguments.length === 0) { + this.Doc = ptrType$1.nil; + this.Recv = ptrType$3.nil; + this.Name = ptrType$5.nil; + this.Type = ptrType$23.nil; + this.Body = ptrType$39.nil; + return; + } + this.Doc = Doc_; + this.Recv = Recv_; + this.Name = Name_; + this.Type = Type_; + this.Body = Body_; + }); + File = $newType(0, $kindStruct, "ast.File", true, "go/ast", true, function(Doc_, Package_, Name_, Decls_, FileStart_, FileEnd_, Scope_, Imports_, Unresolved_, Comments_) { + this.$val = this; + if (arguments.length === 0) { + this.Doc = ptrType$1.nil; + this.Package = 0; + this.Name = ptrType$5.nil; + this.Decls = sliceType$7.nil; + this.FileStart = 0; + this.FileEnd = 0; + this.Scope = ptrType$58.nil; + this.Imports = sliceType$8.nil; + this.Unresolved = sliceType$9.nil; + this.Comments = sliceType$3.nil; + return; + } + this.Doc = Doc_; + this.Package = Package_; + this.Name = Name_; + this.Decls = Decls_; + this.FileStart = FileStart_; + this.FileEnd = FileEnd_; + this.Scope = Scope_; + this.Imports = Imports_; + this.Unresolved = Unresolved_; + this.Comments = Comments_; + }); + Package = $newType(0, $kindStruct, "ast.Package", true, "go/ast", true, function(Name_, Scope_, Imports_, Files_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.Scope = ptrType$58.nil; + this.Imports = false; + this.Files = false; + return; + } + this.Name = Name_; + this.Scope = Scope_; + this.Imports = Imports_; + this.Files = Files_; + }); + $pkg.Visitor = Visitor; + $pkg.inspector = inspector; + $pkg.Scope = Scope; + $pkg.Object = Object; + $pkg.ObjKind = ObjKind; + $pkg.FieldFilter = FieldFilter; + $pkg.printer = printer; + $pkg.localError = localError; + $pkg.Node = Node; + $pkg.Expr = Expr; + $pkg.Stmt = Stmt; + $pkg.Decl = Decl; + $pkg.Comment = Comment; + $pkg.CommentGroup = CommentGroup; + $pkg.Field = Field; + $pkg.FieldList = FieldList; + $pkg.BadExpr = BadExpr; + $pkg.Ident = Ident; + $pkg.Ellipsis = Ellipsis; + $pkg.BasicLit = BasicLit; + $pkg.FuncLit = FuncLit; + $pkg.CompositeLit = CompositeLit; + $pkg.ParenExpr = ParenExpr; + $pkg.SelectorExpr = SelectorExpr; + $pkg.IndexExpr = IndexExpr; + $pkg.IndexListExpr = IndexListExpr; + $pkg.SliceExpr = SliceExpr; + $pkg.TypeAssertExpr = TypeAssertExpr; + $pkg.CallExpr = CallExpr; + $pkg.StarExpr = StarExpr; + $pkg.UnaryExpr = UnaryExpr; + $pkg.BinaryExpr = BinaryExpr; + $pkg.KeyValueExpr = KeyValueExpr; + $pkg.ChanDir = ChanDir; + $pkg.ArrayType = ArrayType; + $pkg.StructType = StructType; + $pkg.FuncType = FuncType; + $pkg.InterfaceType = InterfaceType; + $pkg.MapType = MapType; + $pkg.ChanType = ChanType; + $pkg.BadStmt = BadStmt; + $pkg.DeclStmt = DeclStmt; + $pkg.EmptyStmt = EmptyStmt; + $pkg.LabeledStmt = LabeledStmt; + $pkg.ExprStmt = ExprStmt; + $pkg.SendStmt = SendStmt; + $pkg.IncDecStmt = IncDecStmt; + $pkg.AssignStmt = AssignStmt; + $pkg.GoStmt = GoStmt; + $pkg.DeferStmt = DeferStmt; + $pkg.ReturnStmt = ReturnStmt; + $pkg.BranchStmt = BranchStmt; + $pkg.BlockStmt = BlockStmt; + $pkg.IfStmt = IfStmt; + $pkg.CaseClause = CaseClause; + $pkg.SwitchStmt = SwitchStmt; + $pkg.TypeSwitchStmt = TypeSwitchStmt; + $pkg.CommClause = CommClause; + $pkg.SelectStmt = SelectStmt; + $pkg.ForStmt = ForStmt; + $pkg.RangeStmt = RangeStmt; + $pkg.Spec = Spec; + $pkg.ImportSpec = ImportSpec; + $pkg.ValueSpec = ValueSpec; + $pkg.TypeSpec = TypeSpec; + $pkg.BadDecl = BadDecl; + $pkg.GenDecl = GenDecl; + $pkg.FuncDecl = FuncDecl; + $pkg.File = File; + $pkg.Package = Package; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint8); + ptrType = $ptrType(Comment); + ptrType$1 = $ptrType(CommentGroup); + ptrType$2 = $ptrType(Field); + ptrType$3 = $ptrType(FieldList); + ptrType$4 = $ptrType(BadExpr); + ptrType$5 = $ptrType(Ident); + ptrType$6 = $ptrType(BasicLit); + ptrType$7 = $ptrType(Ellipsis); + ptrType$8 = $ptrType(FuncLit); + ptrType$9 = $ptrType(CompositeLit); + ptrType$10 = $ptrType(ParenExpr); + ptrType$11 = $ptrType(SelectorExpr); + ptrType$12 = $ptrType(IndexExpr); + ptrType$13 = $ptrType(IndexListExpr); + ptrType$14 = $ptrType(SliceExpr); + ptrType$15 = $ptrType(TypeAssertExpr); + ptrType$16 = $ptrType(CallExpr); + ptrType$17 = $ptrType(StarExpr); + ptrType$18 = $ptrType(UnaryExpr); + ptrType$19 = $ptrType(BinaryExpr); + ptrType$20 = $ptrType(KeyValueExpr); + ptrType$21 = $ptrType(ArrayType); + ptrType$22 = $ptrType(StructType); + ptrType$23 = $ptrType(FuncType); + ptrType$24 = $ptrType(InterfaceType); + ptrType$25 = $ptrType(MapType); + ptrType$26 = $ptrType(ChanType); + ptrType$27 = $ptrType(BadStmt); + ptrType$28 = $ptrType(DeclStmt); + ptrType$29 = $ptrType(EmptyStmt); + ptrType$30 = $ptrType(LabeledStmt); + ptrType$31 = $ptrType(ExprStmt); + ptrType$32 = $ptrType(SendStmt); + ptrType$33 = $ptrType(IncDecStmt); + ptrType$34 = $ptrType(AssignStmt); + ptrType$35 = $ptrType(GoStmt); + ptrType$36 = $ptrType(DeferStmt); + ptrType$37 = $ptrType(ReturnStmt); + ptrType$38 = $ptrType(BranchStmt); + ptrType$39 = $ptrType(BlockStmt); + ptrType$40 = $ptrType(IfStmt); + ptrType$41 = $ptrType(CaseClause); + ptrType$42 = $ptrType(SwitchStmt); + ptrType$43 = $ptrType(TypeSwitchStmt); + ptrType$44 = $ptrType(CommClause); + ptrType$45 = $ptrType(SelectStmt); + ptrType$46 = $ptrType(ForStmt); + ptrType$47 = $ptrType(RangeStmt); + ptrType$48 = $ptrType(ImportSpec); + ptrType$49 = $ptrType(ValueSpec); + ptrType$50 = $ptrType(TypeSpec); + ptrType$51 = $ptrType(BadDecl); + ptrType$52 = $ptrType(GenDecl); + ptrType$53 = $ptrType(FuncDecl); + ptrType$54 = $ptrType(File); + ptrType$55 = $ptrType(Package); + sliceType$1 = $sliceType($emptyInterface); + ptrType$56 = $ptrType(Object); + ptrType$57 = $ptrType(strings.Builder); + ptrType$58 = $ptrType(Scope); + ptrType$60 = $ptrType(token.FileSet); + sliceType$3 = $sliceType(ptrType$1); + sliceType$5 = $sliceType($String); + sliceType$6 = $sliceType(ptrType); + sliceType$7 = $sliceType(Decl); + sliceType$8 = $sliceType(ptrType$48); + sliceType$9 = $sliceType(ptrType$5); + mapType = $mapType($String, ptrType$56); + ptrType$63 = $ptrType(printer); + mapType$1 = $mapType($emptyInterface, $Int); + sliceType$11 = $sliceType(ptrType$2); + sliceType$12 = $sliceType(Expr); + sliceType$13 = $sliceType(Stmt); + sliceType$14 = $sliceType(Spec); + mapType$2 = $mapType($String, ptrType$54); + walkIdentList = function walkIdentList$1(v, list) { + var {_i, _ref, list, v, x, $s, $r, $c} = $restore(this, {v, list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = list; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = Walk(v, x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: walkIdentList$1, $c: true, $r, _i, _ref, list, v, x, $s};return $f; + }; + walkExprList = function walkExprList$1(v, list) { + var {_i, _ref, list, v, x, $s, $r, $c} = $restore(this, {v, list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = list; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = Walk(v, x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: walkExprList$1, $c: true, $r, _i, _ref, list, v, x, $s};return $f; + }; + walkStmtList = function walkStmtList$1(v, list) { + var {_i, _ref, list, v, x, $s, $r, $c} = $restore(this, {v, list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = list; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = Walk(v, x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: walkStmtList$1, $c: true, $r, _i, _ref, list, v, x, $s};return $f; + }; + walkDeclList = function walkDeclList$1(v, list) { + var {_i, _ref, list, v, x, $s, $r, $c} = $restore(this, {v, list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = list; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = Walk(v, x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: walkDeclList$1, $c: true, $r, _i, _ref, list, v, x, $s};return $f; + }; + Walk = function Walk$1(v, node) { + var {_entry, _i, _i$1, _i$2, _i$3, _i$4, _key, _keys, _r, _r$1, _r$2, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _size, c, f, f$1, index, n, n$1, n$10, n$11, n$12, n$13, n$14, n$15, n$16, n$17, n$18, n$19, n$2, n$20, n$21, n$22, n$23, n$24, n$25, n$26, n$27, n$28, n$29, n$3, n$30, n$31, n$32, n$33, n$34, n$35, n$36, n$37, n$38, n$39, n$4, n$40, n$41, n$42, n$43, n$44, n$45, n$46, n$47, n$48, n$49, n$5, n$50, n$51, n$52, n$53, n$54, n$6, n$7, n$8, n$9, node, s, v, $s, $r, $c} = $restore(this, {v, node}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = v.Visit(node); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + if ($interfaceIsEqual(v, $ifaceNil)) { + $s = -1; return; + } + _ref = node; + /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$4, true)[1] || $assertType(_ref, ptrType$5, true)[1] || $assertType(_ref, ptrType$6, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, ptrType$17, true)[1]) { $s = 17; continue; } + /* */ if ($assertType(_ref, ptrType$18, true)[1]) { $s = 18; continue; } + /* */ if ($assertType(_ref, ptrType$19, true)[1]) { $s = 19; continue; } + /* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 20; continue; } + /* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 21; continue; } + /* */ if ($assertType(_ref, ptrType$22, true)[1]) { $s = 22; continue; } + /* */ if ($assertType(_ref, ptrType$23, true)[1]) { $s = 23; continue; } + /* */ if ($assertType(_ref, ptrType$24, true)[1]) { $s = 24; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 25; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 26; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 27; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 28; continue; } + /* */ if ($assertType(_ref, ptrType$29, true)[1]) { $s = 29; continue; } + /* */ if ($assertType(_ref, ptrType$30, true)[1]) { $s = 30; continue; } + /* */ if ($assertType(_ref, ptrType$31, true)[1]) { $s = 31; continue; } + /* */ if ($assertType(_ref, ptrType$32, true)[1]) { $s = 32; continue; } + /* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 33; continue; } + /* */ if ($assertType(_ref, ptrType$34, true)[1]) { $s = 34; continue; } + /* */ if ($assertType(_ref, ptrType$35, true)[1]) { $s = 35; continue; } + /* */ if ($assertType(_ref, ptrType$36, true)[1]) { $s = 36; continue; } + /* */ if ($assertType(_ref, ptrType$37, true)[1]) { $s = 37; continue; } + /* */ if ($assertType(_ref, ptrType$38, true)[1]) { $s = 38; continue; } + /* */ if ($assertType(_ref, ptrType$39, true)[1]) { $s = 39; continue; } + /* */ if ($assertType(_ref, ptrType$40, true)[1]) { $s = 40; continue; } + /* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 41; continue; } + /* */ if ($assertType(_ref, ptrType$42, true)[1]) { $s = 42; continue; } + /* */ if ($assertType(_ref, ptrType$43, true)[1]) { $s = 43; continue; } + /* */ if ($assertType(_ref, ptrType$44, true)[1]) { $s = 44; continue; } + /* */ if ($assertType(_ref, ptrType$45, true)[1]) { $s = 45; continue; } + /* */ if ($assertType(_ref, ptrType$46, true)[1]) { $s = 46; continue; } + /* */ if ($assertType(_ref, ptrType$47, true)[1]) { $s = 47; continue; } + /* */ if ($assertType(_ref, ptrType$48, true)[1]) { $s = 48; continue; } + /* */ if ($assertType(_ref, ptrType$49, true)[1]) { $s = 49; continue; } + /* */ if ($assertType(_ref, ptrType$50, true)[1]) { $s = 50; continue; } + /* */ if ($assertType(_ref, ptrType$51, true)[1]) { $s = 51; continue; } + /* */ if ($assertType(_ref, ptrType$52, true)[1]) { $s = 52; continue; } + /* */ if ($assertType(_ref, ptrType$53, true)[1]) { $s = 53; continue; } + /* */ if ($assertType(_ref, ptrType$54, true)[1]) { $s = 54; continue; } + /* */ if ($assertType(_ref, ptrType$55, true)[1]) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if ($assertType(_ref, ptrType, true)[1]) { */ case 2: + n = _ref.$val; + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$1, true)[1]) { */ case 3: + n$1 = _ref.$val; + _ref$1 = n$1.List; + _i = 0; + /* while (true) { */ case 58: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 59; continue; } + c = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + $r = Walk(v, c); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 58; continue; + case 59: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 4: + n$2 = _ref.$val; + /* */ if (!(n$2.Doc === ptrType$1.nil)) { $s = 61; continue; } + /* */ $s = 62; continue; + /* if (!(n$2.Doc === ptrType$1.nil)) { */ case 61: + $r = Walk(v, n$2.Doc); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 62: + $r = walkIdentList(v, n$2.Names); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(n$2.Type, $ifaceNil))) { $s = 65; continue; } + /* */ $s = 66; continue; + /* if (!($interfaceIsEqual(n$2.Type, $ifaceNil))) { */ case 65: + $r = Walk(v, n$2.Type); /* */ $s = 67; case 67: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 66: + /* */ if (!(n$2.Tag === ptrType$6.nil)) { $s = 68; continue; } + /* */ $s = 69; continue; + /* if (!(n$2.Tag === ptrType$6.nil)) { */ case 68: + $r = Walk(v, n$2.Tag); /* */ $s = 70; case 70: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 69: + /* */ if (!(n$2.Comment === ptrType$1.nil)) { $s = 71; continue; } + /* */ $s = 72; continue; + /* if (!(n$2.Comment === ptrType$1.nil)) { */ case 71: + $r = Walk(v, n$2.Comment); /* */ $s = 73; case 73: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 72: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 5: + n$3 = _ref.$val; + _ref$2 = n$3.List; + _i$1 = 0; + /* while (true) { */ case 74: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 75; continue; } + f = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + $r = Walk(v, f); /* */ $s = 76; case 76: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 74; continue; + case 75: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$4, true)[1] || $assertType(_ref, ptrType$5, true)[1] || $assertType(_ref, ptrType$6, true)[1]) { */ case 6: + n$4 = _ref; + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 7: + n$5 = _ref.$val; + /* */ if (!($interfaceIsEqual(n$5.Elt, $ifaceNil))) { $s = 77; continue; } + /* */ $s = 78; continue; + /* if (!($interfaceIsEqual(n$5.Elt, $ifaceNil))) { */ case 77: + $r = Walk(v, n$5.Elt); /* */ $s = 79; case 79: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 78: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 8: + n$6 = _ref.$val; + $r = Walk(v, n$6.Type); /* */ $s = 80; case 80: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$6.Body); /* */ $s = 81; case 81: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 9: + n$7 = _ref.$val; + /* */ if (!($interfaceIsEqual(n$7.Type, $ifaceNil))) { $s = 82; continue; } + /* */ $s = 83; continue; + /* if (!($interfaceIsEqual(n$7.Type, $ifaceNil))) { */ case 82: + $r = Walk(v, n$7.Type); /* */ $s = 84; case 84: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 83: + $r = walkExprList(v, n$7.Elts); /* */ $s = 85; case 85: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 10: + n$8 = _ref.$val; + $r = Walk(v, n$8.X); /* */ $s = 86; case 86: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 11: + n$9 = _ref.$val; + $r = Walk(v, n$9.X); /* */ $s = 87; case 87: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$9.Sel); /* */ $s = 88; case 88: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 12: + n$10 = _ref.$val; + $r = Walk(v, n$10.X); /* */ $s = 89; case 89: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$10.Index); /* */ $s = 90; case 90: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 13: + n$11 = _ref.$val; + $r = Walk(v, n$11.X); /* */ $s = 91; case 91: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$3 = n$11.Indices; + _i$2 = 0; + /* while (true) { */ case 92: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 93; continue; } + index = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + $r = Walk(v, index); /* */ $s = 94; case 94: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + $s = 92; continue; + case 93: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 14: + n$12 = _ref.$val; + $r = Walk(v, n$12.X); /* */ $s = 95; case 95: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(n$12.Low, $ifaceNil))) { $s = 96; continue; } + /* */ $s = 97; continue; + /* if (!($interfaceIsEqual(n$12.Low, $ifaceNil))) { */ case 96: + $r = Walk(v, n$12.Low); /* */ $s = 98; case 98: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 97: + /* */ if (!($interfaceIsEqual(n$12.High, $ifaceNil))) { $s = 99; continue; } + /* */ $s = 100; continue; + /* if (!($interfaceIsEqual(n$12.High, $ifaceNil))) { */ case 99: + $r = Walk(v, n$12.High); /* */ $s = 101; case 101: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 100: + /* */ if (!($interfaceIsEqual(n$12.Max, $ifaceNil))) { $s = 102; continue; } + /* */ $s = 103; continue; + /* if (!($interfaceIsEqual(n$12.Max, $ifaceNil))) { */ case 102: + $r = Walk(v, n$12.Max); /* */ $s = 104; case 104: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 103: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 15: + n$13 = _ref.$val; + $r = Walk(v, n$13.X); /* */ $s = 105; case 105: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(n$13.Type, $ifaceNil))) { $s = 106; continue; } + /* */ $s = 107; continue; + /* if (!($interfaceIsEqual(n$13.Type, $ifaceNil))) { */ case 106: + $r = Walk(v, n$13.Type); /* */ $s = 108; case 108: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 107: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 16: + n$14 = _ref.$val; + $r = Walk(v, n$14.Fun); /* */ $s = 109; case 109: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = walkExprList(v, n$14.Args); /* */ $s = 110; case 110: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$17, true)[1]) { */ case 17: + n$15 = _ref.$val; + $r = Walk(v, n$15.X); /* */ $s = 111; case 111: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$18, true)[1]) { */ case 18: + n$16 = _ref.$val; + $r = Walk(v, n$16.X); /* */ $s = 112; case 112: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$19, true)[1]) { */ case 19: + n$17 = _ref.$val; + $r = Walk(v, n$17.X); /* */ $s = 113; case 113: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$17.Y); /* */ $s = 114; case 114: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$20, true)[1]) { */ case 20: + n$18 = _ref.$val; + $r = Walk(v, n$18.Key); /* */ $s = 115; case 115: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$18.Value); /* */ $s = 116; case 116: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 21: + n$19 = _ref.$val; + /* */ if (!($interfaceIsEqual(n$19.Len, $ifaceNil))) { $s = 117; continue; } + /* */ $s = 118; continue; + /* if (!($interfaceIsEqual(n$19.Len, $ifaceNil))) { */ case 117: + $r = Walk(v, n$19.Len); /* */ $s = 119; case 119: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 118: + $r = Walk(v, n$19.Elt); /* */ $s = 120; case 120: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$22, true)[1]) { */ case 22: + n$20 = _ref.$val; + $r = Walk(v, n$20.Fields); /* */ $s = 121; case 121: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$23, true)[1]) { */ case 23: + n$21 = _ref.$val; + /* */ if (!(n$21.TypeParams === ptrType$3.nil)) { $s = 122; continue; } + /* */ $s = 123; continue; + /* if (!(n$21.TypeParams === ptrType$3.nil)) { */ case 122: + $r = Walk(v, n$21.TypeParams); /* */ $s = 124; case 124: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 123: + /* */ if (!(n$21.Params === ptrType$3.nil)) { $s = 125; continue; } + /* */ $s = 126; continue; + /* if (!(n$21.Params === ptrType$3.nil)) { */ case 125: + $r = Walk(v, n$21.Params); /* */ $s = 127; case 127: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 126: + /* */ if (!(n$21.Results === ptrType$3.nil)) { $s = 128; continue; } + /* */ $s = 129; continue; + /* if (!(n$21.Results === ptrType$3.nil)) { */ case 128: + $r = Walk(v, n$21.Results); /* */ $s = 130; case 130: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 129: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$24, true)[1]) { */ case 24: + n$22 = _ref.$val; + $r = Walk(v, n$22.Methods); /* */ $s = 131; case 131: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 25: + n$23 = _ref.$val; + $r = Walk(v, n$23.Key); /* */ $s = 132; case 132: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$23.Value); /* */ $s = 133; case 133: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 26: + n$24 = _ref.$val; + $r = Walk(v, n$24.Value); /* */ $s = 134; case 134: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 27: + n$25 = _ref.$val; + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 28: + n$26 = _ref.$val; + $r = Walk(v, n$26.Decl); /* */ $s = 135; case 135: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$29, true)[1]) { */ case 29: + n$27 = _ref.$val; + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$30, true)[1]) { */ case 30: + n$28 = _ref.$val; + $r = Walk(v, n$28.Label); /* */ $s = 136; case 136: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$28.Stmt); /* */ $s = 137; case 137: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$31, true)[1]) { */ case 31: + n$29 = _ref.$val; + $r = Walk(v, n$29.X); /* */ $s = 138; case 138: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$32, true)[1]) { */ case 32: + n$30 = _ref.$val; + $r = Walk(v, n$30.Chan); /* */ $s = 139; case 139: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$30.Value); /* */ $s = 140; case 140: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$33, true)[1]) { */ case 33: + n$31 = _ref.$val; + $r = Walk(v, n$31.X); /* */ $s = 141; case 141: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$34, true)[1]) { */ case 34: + n$32 = _ref.$val; + $r = walkExprList(v, n$32.Lhs); /* */ $s = 142; case 142: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = walkExprList(v, n$32.Rhs); /* */ $s = 143; case 143: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$35, true)[1]) { */ case 35: + n$33 = _ref.$val; + $r = Walk(v, n$33.Call); /* */ $s = 144; case 144: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$36, true)[1]) { */ case 36: + n$34 = _ref.$val; + $r = Walk(v, n$34.Call); /* */ $s = 145; case 145: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$37, true)[1]) { */ case 37: + n$35 = _ref.$val; + $r = walkExprList(v, n$35.Results); /* */ $s = 146; case 146: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$38, true)[1]) { */ case 38: + n$36 = _ref.$val; + /* */ if (!(n$36.Label === ptrType$5.nil)) { $s = 147; continue; } + /* */ $s = 148; continue; + /* if (!(n$36.Label === ptrType$5.nil)) { */ case 147: + $r = Walk(v, n$36.Label); /* */ $s = 149; case 149: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 148: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$39, true)[1]) { */ case 39: + n$37 = _ref.$val; + $r = walkStmtList(v, n$37.List); /* */ $s = 150; case 150: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$40, true)[1]) { */ case 40: + n$38 = _ref.$val; + /* */ if (!($interfaceIsEqual(n$38.Init, $ifaceNil))) { $s = 151; continue; } + /* */ $s = 152; continue; + /* if (!($interfaceIsEqual(n$38.Init, $ifaceNil))) { */ case 151: + $r = Walk(v, n$38.Init); /* */ $s = 153; case 153: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 152: + $r = Walk(v, n$38.Cond); /* */ $s = 154; case 154: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$38.Body); /* */ $s = 155; case 155: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(n$38.Else, $ifaceNil))) { $s = 156; continue; } + /* */ $s = 157; continue; + /* if (!($interfaceIsEqual(n$38.Else, $ifaceNil))) { */ case 156: + $r = Walk(v, n$38.Else); /* */ $s = 158; case 158: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 157: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$41, true)[1]) { */ case 41: + n$39 = _ref.$val; + $r = walkExprList(v, n$39.List); /* */ $s = 159; case 159: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = walkStmtList(v, n$39.Body); /* */ $s = 160; case 160: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$42, true)[1]) { */ case 42: + n$40 = _ref.$val; + /* */ if (!($interfaceIsEqual(n$40.Init, $ifaceNil))) { $s = 161; continue; } + /* */ $s = 162; continue; + /* if (!($interfaceIsEqual(n$40.Init, $ifaceNil))) { */ case 161: + $r = Walk(v, n$40.Init); /* */ $s = 163; case 163: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 162: + /* */ if (!($interfaceIsEqual(n$40.Tag, $ifaceNil))) { $s = 164; continue; } + /* */ $s = 165; continue; + /* if (!($interfaceIsEqual(n$40.Tag, $ifaceNil))) { */ case 164: + $r = Walk(v, n$40.Tag); /* */ $s = 166; case 166: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 165: + $r = Walk(v, n$40.Body); /* */ $s = 167; case 167: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$43, true)[1]) { */ case 43: + n$41 = _ref.$val; + /* */ if (!($interfaceIsEqual(n$41.Init, $ifaceNil))) { $s = 168; continue; } + /* */ $s = 169; continue; + /* if (!($interfaceIsEqual(n$41.Init, $ifaceNil))) { */ case 168: + $r = Walk(v, n$41.Init); /* */ $s = 170; case 170: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 169: + $r = Walk(v, n$41.Assign); /* */ $s = 171; case 171: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$41.Body); /* */ $s = 172; case 172: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$44, true)[1]) { */ case 44: + n$42 = _ref.$val; + /* */ if (!($interfaceIsEqual(n$42.Comm, $ifaceNil))) { $s = 173; continue; } + /* */ $s = 174; continue; + /* if (!($interfaceIsEqual(n$42.Comm, $ifaceNil))) { */ case 173: + $r = Walk(v, n$42.Comm); /* */ $s = 175; case 175: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 174: + $r = walkStmtList(v, n$42.Body); /* */ $s = 176; case 176: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$45, true)[1]) { */ case 45: + n$43 = _ref.$val; + $r = Walk(v, n$43.Body); /* */ $s = 177; case 177: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$46, true)[1]) { */ case 46: + n$44 = _ref.$val; + /* */ if (!($interfaceIsEqual(n$44.Init, $ifaceNil))) { $s = 178; continue; } + /* */ $s = 179; continue; + /* if (!($interfaceIsEqual(n$44.Init, $ifaceNil))) { */ case 178: + $r = Walk(v, n$44.Init); /* */ $s = 180; case 180: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 179: + /* */ if (!($interfaceIsEqual(n$44.Cond, $ifaceNil))) { $s = 181; continue; } + /* */ $s = 182; continue; + /* if (!($interfaceIsEqual(n$44.Cond, $ifaceNil))) { */ case 181: + $r = Walk(v, n$44.Cond); /* */ $s = 183; case 183: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 182: + /* */ if (!($interfaceIsEqual(n$44.Post, $ifaceNil))) { $s = 184; continue; } + /* */ $s = 185; continue; + /* if (!($interfaceIsEqual(n$44.Post, $ifaceNil))) { */ case 184: + $r = Walk(v, n$44.Post); /* */ $s = 186; case 186: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 185: + $r = Walk(v, n$44.Body); /* */ $s = 187; case 187: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$47, true)[1]) { */ case 47: + n$45 = _ref.$val; + /* */ if (!($interfaceIsEqual(n$45.Key, $ifaceNil))) { $s = 188; continue; } + /* */ $s = 189; continue; + /* if (!($interfaceIsEqual(n$45.Key, $ifaceNil))) { */ case 188: + $r = Walk(v, n$45.Key); /* */ $s = 190; case 190: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 189: + /* */ if (!($interfaceIsEqual(n$45.Value, $ifaceNil))) { $s = 191; continue; } + /* */ $s = 192; continue; + /* if (!($interfaceIsEqual(n$45.Value, $ifaceNil))) { */ case 191: + $r = Walk(v, n$45.Value); /* */ $s = 193; case 193: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 192: + $r = Walk(v, n$45.X); /* */ $s = 194; case 194: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$45.Body); /* */ $s = 195; case 195: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$48, true)[1]) { */ case 48: + n$46 = _ref.$val; + /* */ if (!(n$46.Doc === ptrType$1.nil)) { $s = 196; continue; } + /* */ $s = 197; continue; + /* if (!(n$46.Doc === ptrType$1.nil)) { */ case 196: + $r = Walk(v, n$46.Doc); /* */ $s = 198; case 198: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 197: + /* */ if (!(n$46.Name === ptrType$5.nil)) { $s = 199; continue; } + /* */ $s = 200; continue; + /* if (!(n$46.Name === ptrType$5.nil)) { */ case 199: + $r = Walk(v, n$46.Name); /* */ $s = 201; case 201: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 200: + $r = Walk(v, n$46.Path); /* */ $s = 202; case 202: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(n$46.Comment === ptrType$1.nil)) { $s = 203; continue; } + /* */ $s = 204; continue; + /* if (!(n$46.Comment === ptrType$1.nil)) { */ case 203: + $r = Walk(v, n$46.Comment); /* */ $s = 205; case 205: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 204: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$49, true)[1]) { */ case 49: + n$47 = _ref.$val; + /* */ if (!(n$47.Doc === ptrType$1.nil)) { $s = 206; continue; } + /* */ $s = 207; continue; + /* if (!(n$47.Doc === ptrType$1.nil)) { */ case 206: + $r = Walk(v, n$47.Doc); /* */ $s = 208; case 208: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 207: + $r = walkIdentList(v, n$47.Names); /* */ $s = 209; case 209: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(n$47.Type, $ifaceNil))) { $s = 210; continue; } + /* */ $s = 211; continue; + /* if (!($interfaceIsEqual(n$47.Type, $ifaceNil))) { */ case 210: + $r = Walk(v, n$47.Type); /* */ $s = 212; case 212: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 211: + $r = walkExprList(v, n$47.Values); /* */ $s = 213; case 213: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(n$47.Comment === ptrType$1.nil)) { $s = 214; continue; } + /* */ $s = 215; continue; + /* if (!(n$47.Comment === ptrType$1.nil)) { */ case 214: + $r = Walk(v, n$47.Comment); /* */ $s = 216; case 216: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 215: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$50, true)[1]) { */ case 50: + n$48 = _ref.$val; + /* */ if (!(n$48.Doc === ptrType$1.nil)) { $s = 217; continue; } + /* */ $s = 218; continue; + /* if (!(n$48.Doc === ptrType$1.nil)) { */ case 217: + $r = Walk(v, n$48.Doc); /* */ $s = 219; case 219: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 218: + $r = Walk(v, n$48.Name); /* */ $s = 220; case 220: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(n$48.TypeParams === ptrType$3.nil)) { $s = 221; continue; } + /* */ $s = 222; continue; + /* if (!(n$48.TypeParams === ptrType$3.nil)) { */ case 221: + $r = Walk(v, n$48.TypeParams); /* */ $s = 223; case 223: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 222: + $r = Walk(v, n$48.Type); /* */ $s = 224; case 224: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(n$48.Comment === ptrType$1.nil)) { $s = 225; continue; } + /* */ $s = 226; continue; + /* if (!(n$48.Comment === ptrType$1.nil)) { */ case 225: + $r = Walk(v, n$48.Comment); /* */ $s = 227; case 227: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 226: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$51, true)[1]) { */ case 51: + n$49 = _ref.$val; + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$52, true)[1]) { */ case 52: + n$50 = _ref.$val; + /* */ if (!(n$50.Doc === ptrType$1.nil)) { $s = 228; continue; } + /* */ $s = 229; continue; + /* if (!(n$50.Doc === ptrType$1.nil)) { */ case 228: + $r = Walk(v, n$50.Doc); /* */ $s = 230; case 230: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 229: + _ref$4 = n$50.Specs; + _i$3 = 0; + /* while (true) { */ case 231: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 232; continue; } + s = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); + $r = Walk(v, s); /* */ $s = 233; case 233: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$3++; + $s = 231; continue; + case 232: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$53, true)[1]) { */ case 53: + n$51 = _ref.$val; + /* */ if (!(n$51.Doc === ptrType$1.nil)) { $s = 234; continue; } + /* */ $s = 235; continue; + /* if (!(n$51.Doc === ptrType$1.nil)) { */ case 234: + $r = Walk(v, n$51.Doc); /* */ $s = 236; case 236: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 235: + /* */ if (!(n$51.Recv === ptrType$3.nil)) { $s = 237; continue; } + /* */ $s = 238; continue; + /* if (!(n$51.Recv === ptrType$3.nil)) { */ case 237: + $r = Walk(v, n$51.Recv); /* */ $s = 239; case 239: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 238: + $r = Walk(v, n$51.Name); /* */ $s = 240; case 240: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = Walk(v, n$51.Type); /* */ $s = 241; case 241: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(n$51.Body === ptrType$39.nil)) { $s = 242; continue; } + /* */ $s = 243; continue; + /* if (!(n$51.Body === ptrType$39.nil)) { */ case 242: + $r = Walk(v, n$51.Body); /* */ $s = 244; case 244: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 243: + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$54, true)[1]) { */ case 54: + n$52 = _ref.$val; + /* */ if (!(n$52.Doc === ptrType$1.nil)) { $s = 245; continue; } + /* */ $s = 246; continue; + /* if (!(n$52.Doc === ptrType$1.nil)) { */ case 245: + $r = Walk(v, n$52.Doc); /* */ $s = 247; case 247: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 246: + $r = Walk(v, n$52.Name); /* */ $s = 248; case 248: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = walkDeclList(v, n$52.Decls); /* */ $s = 249; case 249: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 57; continue; + /* } else if ($assertType(_ref, ptrType$55, true)[1]) { */ case 55: + n$53 = _ref.$val; + _ref$5 = n$53.Files; + _i$4 = 0; + _keys = _ref$5 ? _ref$5.keys() : undefined; + _size = _ref$5 ? _ref$5.size : 0; + /* while (true) { */ case 250: + /* if (!(_i$4 < _size)) { break; } */ if(!(_i$4 < _size)) { $s = 251; continue; } + _key = _keys.next().value; + _entry = _ref$5.get(_key); + if (_entry === undefined) { + _i$4++; + /* continue; */ $s = 250; continue; + } + f$1 = _entry.v; + $r = Walk(v, f$1); /* */ $s = 252; case 252: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$4++; + $s = 250; continue; + case 251: + $s = 57; continue; + /* } else { */ case 56: + n$54 = _ref; + _r$1 = fmt.Sprintf("ast.Walk: unexpected node type %T", new sliceType$1([n$54])); /* */ $s = 253; case 253: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 57: + _r$2 = v.Visit($ifaceNil); /* */ $s = 254; case 254: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = -1; return; + /* */ } return; } var $f = {$blk: Walk$1, $c: true, $r, _entry, _i, _i$1, _i$2, _i$3, _i$4, _key, _keys, _r, _r$1, _r$2, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _size, c, f, f$1, index, n, n$1, n$10, n$11, n$12, n$13, n$14, n$15, n$16, n$17, n$18, n$19, n$2, n$20, n$21, n$22, n$23, n$24, n$25, n$26, n$27, n$28, n$29, n$3, n$30, n$31, n$32, n$33, n$34, n$35, n$36, n$37, n$38, n$39, n$4, n$40, n$41, n$42, n$43, n$44, n$45, n$46, n$47, n$48, n$49, n$5, n$50, n$51, n$52, n$53, n$54, n$6, n$7, n$8, n$9, node, s, v, $s};return $f; + }; + $pkg.Walk = Walk; + inspector.prototype.Visit = function Visit(node) { + var {_r, f, node, $s, $r, $c} = $restore(this, {node}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this.$val; + _r = f(node); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + $s = -1; return new inspector(f); + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Visit, $c: true, $r, _r, f, node, $s};return $f; + }; + $ptrType(inspector).prototype.Visit = function(...$args) { return new inspector(this.$get()).Visit(...$args); }; + Inspect = function Inspect$1(node, f) { + var {f, node, $s, $r, $c} = $restore(this, {node, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = Walk(new inspector((f)), node); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Inspect$1, $c: true, $r, f, node, $s};return $f; + }; + $pkg.Inspect = Inspect; + NewScope = function NewScope$1(outer) { + var outer; + return new Scope.ptr(outer, new $global.Map()); + }; + $pkg.NewScope = NewScope; + $ptrType(Scope).prototype.Lookup = function Lookup(name) { + var _entry, name, s; + s = this; + return (_entry = $mapIndex(s.Objects,$String.keyFor(name)), _entry !== undefined ? _entry.v : ptrType$56.nil); + }; + $ptrType(Scope).prototype.Insert = function Insert(obj) { + var _entry, _key, alt, obj, s; + alt = ptrType$56.nil; + s = this; + alt = (_entry = $mapIndex(s.Objects,$String.keyFor(obj.Name)), _entry !== undefined ? _entry.v : ptrType$56.nil); + if (alt === ptrType$56.nil) { + _key = obj.Name; (s.Objects || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: obj }); + } + return alt; + }; + $ptrType(Scope).prototype.String = function String() { + var {_entry, _i, _key, _keys, _r, _r$1, _r$2, _r$3, _ref, _size, buf, obj, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + s = this; + buf[0] = new strings.Builder.ptr(ptrType$57.nil, sliceType.nil); + _r = fmt.Fprintf(buf[0], "scope %p {", new sliceType$1([s])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* */ if (!(s === ptrType$58.nil) && (s.Objects ? s.Objects.size : 0) > 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(s === ptrType$58.nil) && (s.Objects ? s.Objects.size : 0) > 0) { */ case 2: + _r$1 = fmt.Fprintln(buf[0], sliceType$1.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _ref = s.Objects; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 5: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 6; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 5; continue; + } + obj = _entry.v; + _r$2 = fmt.Fprintf(buf[0], "\t%s %s\n", new sliceType$1([new ObjKind(obj.Kind), new $String(obj.Name)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _i++; + $s = 5; continue; + case 6: + /* } */ case 3: + _r$3 = fmt.Fprintf(buf[0], "}\n", sliceType$1.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: String, $c: true, $r, _entry, _i, _key, _keys, _r, _r$1, _r$2, _r$3, _ref, _size, buf, obj, s, $s};return $f; + }; + NewObj = function NewObj$1(kind, name) { + var kind, name; + return new Object.ptr(kind, name, $ifaceNil, $ifaceNil, $ifaceNil); + }; + $pkg.NewObj = NewObj; + $ptrType(Object).prototype.Pos = function Pos() { + var _i, _i$1, _i$2, _ref, _ref$1, _ref$2, _ref$3, _tuple, d, d$1, d$2, d$3, d$4, d$5, d$6, d$7, ident, isIdent, n, n$1, name, obj, x; + obj = this; + name = obj.Name; + _ref = obj.Decl; + if ($assertType(_ref, ptrType$2, true)[1]) { + d = _ref.$val; + _ref$1 = d.Names; + _i = 0; + while (true) { + if (!(_i < _ref$1.$length)) { break; } + n = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + if (n.Name === name) { + return n.Pos(); + } + _i++; + } + } else if ($assertType(_ref, ptrType$48, true)[1]) { + d$1 = _ref.$val; + if (!(d$1.Name === ptrType$5.nil) && d$1.Name.Name === name) { + return d$1.Name.Pos(); + } + return d$1.Path.Pos(); + } else if ($assertType(_ref, ptrType$49, true)[1]) { + d$2 = _ref.$val; + _ref$2 = d$2.Names; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$2.$length)) { break; } + n$1 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + if (n$1.Name === name) { + return n$1.Pos(); + } + _i$1++; + } + } else if ($assertType(_ref, ptrType$50, true)[1]) { + d$3 = _ref.$val; + if (d$3.Name.Name === name) { + return d$3.Name.Pos(); + } + } else if ($assertType(_ref, ptrType$53, true)[1]) { + d$4 = _ref.$val; + if (d$4.Name.Name === name) { + return d$4.Name.Pos(); + } + } else if ($assertType(_ref, ptrType$30, true)[1]) { + d$5 = _ref.$val; + if (d$5.Label.Name === name) { + return d$5.Label.Pos(); + } + } else if ($assertType(_ref, ptrType$34, true)[1]) { + d$6 = _ref.$val; + _ref$3 = d$6.Lhs; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$3.$length)) { break; } + x = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + _tuple = $assertType(x, ptrType$5, true); + ident = _tuple[0]; + isIdent = _tuple[1]; + if (isIdent && ident.Name === name) { + return ident.Pos(); + } + _i$2++; + } + } else if ($assertType(_ref, ptrType$58, true)[1]) { + d$7 = _ref.$val; + } + return 0; + }; + ObjKind.prototype.String = function String$1() { + var kind; + kind = this.$val; + return ((kind < 0 || kind >= objKindStrings.length) ? ($throwRuntimeError("index out of range"), undefined) : objKindStrings[kind]); + }; + $ptrType(ObjKind).prototype.String = function(...$args) { return new ObjKind(this.$get()).String(...$args); }; + NotNilFilter = function NotNilFilter$1(param, v) { + var _1, param, v; + _1 = $clone(v, reflect.Value).Kind(); + if ((_1 === (18)) || (_1 === (19)) || (_1 === (20)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23))) { + return !$clone(v, reflect.Value).IsNil(); + } + return true; + }; + $pkg.NotNilFilter = NotNilFilter; + Fprint = function Fprint$1(w, fset, x, f) { + var {$24r, _r, f, fset, w, x, $s, $r, $c} = $restore(this, {w, fset, x, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fprint(w, fset, x, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Fprint$1, $c: true, $r, $24r, _r, f, fset, w, x, $s};return $f; + }; + $pkg.Fprint = Fprint; + fprint = function fprint$1(w, fset, x, f) { + var {_r, err, f, fset, p, w, x, $s, $deferred, $r, $c} = $restore(this, {w, fset, x, f}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + err = [err]; + err[0] = $ifaceNil; + p = new printer.ptr(w, fset, f, new $global.Map(), 0, 10, 0); + $deferred.push([(function(err) { return function fprint·func1() { + var e; + e = $recover(); + if (!($interfaceIsEqual(e, $ifaceNil))) { + err[0] = $assertType(e, localError).err; + } + }; })(err), []]); + /* */ if ($interfaceIsEqual(x, $ifaceNil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($interfaceIsEqual(x, $ifaceNil)) { */ case 1: + $r = p.printf("nil\n", sliceType$1.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return err[0]; + /* } */ case 2: + _r = reflect.ValueOf(x); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = p.print($clone(_r, reflect.Value)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.printf("\n", sliceType$1.nil); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return err[0]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err[0]; } if($curGoroutine.asleep) { var $f = {$blk: fprint$1, $c: true, $r, _r, err, f, fset, p, w, x, $s, $deferred};return $f; } } + }; + $ptrType(printer).prototype.Write = function Write(data) { + var {_i, _r, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, b, data, err, i, j, m, n, p, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + p = this; + m = 0; + _ref = data; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (b === 10) { $s = 3; continue; } + /* */ if (p.last === 10) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (b === 10) { */ case 3: + _r = p.output.Write($subslice(data, n, (i + 1 >> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + m = _tuple[0]; + err = _tuple[1]; + n = n + (m) >> 0; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [n, err]; + } + p.line = p.line + (1) >> 0; + $s = 5; continue; + /* } else if (p.last === 10) { */ case 4: + _r$1 = fmt.Fprintf(p.output, "%6d ", new sliceType$1([new $Int(p.line)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [n, err]; + } + j = p.indent; + /* while (true) { */ case 8: + /* if (!(j > 0)) { break; } */ if(!(j > 0)) { $s = 9; continue; } + _r$2 = p.output.Write(indent); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [n, err]; + } + j = j - (1) >> 0; + $s = 8; continue; + case 9: + /* } */ case 5: + p.last = b; + _i++; + $s = 1; continue; + case 2: + /* */ if (data.$length > n) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (data.$length > n) { */ case 11: + _r$3 = p.output.Write($subslice(data, n)); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$3 = _r$3; + m = _tuple$3[0]; + err = _tuple$3[1]; + n = n + (m) >> 0; + /* } */ case 12: + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Write, $c: true, $r, _i, _r, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, b, data, err, i, j, m, n, p, $s};return $f; + }; + $ptrType(printer).prototype.printf = function printf(format, args) { + var {_r, _tuple, args, err, format, p, x, $s, $r, $c} = $restore(this, {format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r = fmt.Fprintf(p, format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $panic((x = new localError.ptr(err), new x.constructor.elem(x))); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: printf, $c: true, $r, _r, _tuple, args, err, format, p, x, $s};return $f; + }; + $ptrType(printer).prototype.print = function print(x) { + var {_1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _entry, _i, _key, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _v, exists, first, i, i$1, i$2, key, line, n, n$1, n$2, name, ok, p, ptr, s, t, v, v$1, v$2, value, x, x$1, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (!NotNilFilter("", $clone(x, reflect.Value))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!NotNilFilter("", $clone(x, reflect.Value))) { */ case 1: + $r = p.printf("nil", sliceType$1.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 2: + _1 = $clone(x, reflect.Value).Kind(); + /* */ if (_1 === (20)) { $s = 5; continue; } + /* */ if (_1 === (21)) { $s = 6; continue; } + /* */ if (_1 === (22)) { $s = 7; continue; } + /* */ if (_1 === (17)) { $s = 8; continue; } + /* */ if (_1 === (23)) { $s = 9; continue; } + /* */ if (_1 === (25)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_1 === (20)) { */ case 5: + _r = $clone(x, reflect.Value).Elem(); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = p.print($clone(_r, reflect.Value)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 12; continue; + /* } else if (_1 === (21)) { */ case 6: + _arg = $clone(x, reflect.Value).Type(); + _r$1 = $clone(x, reflect.Value).Len(); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = new $Int(_r$1); + $r = p.printf("%s (len = %d) {", new sliceType$1([_arg, _arg$1])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = $clone(x, reflect.Value).Len(); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2 > 0) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_r$2 > 0) { */ case 17: + p.indent = p.indent + (1) >> 0; + $r = p.printf("\n", sliceType$1.nil); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = $clone(x, reflect.Value).MapKeys(); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _ref = _r$3; + _i = 0; + /* while (true) { */ case 22: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 23; continue; } + key = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = p.print($clone(key, reflect.Value)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.printf(": ", sliceType$1.nil); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$4 = $clone(x, reflect.Value).MapIndex($clone(key, reflect.Value)); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $r = p.print($clone(_r$4, reflect.Value)); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.printf("\n", sliceType$1.nil); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 22; continue; + case 23: + p.indent = p.indent - (1) >> 0; + /* } */ case 18: + $r = p.printf("}", sliceType$1.nil); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 12; continue; + /* } else if (_1 === (22)) { */ case 7: + $r = p.printf("*", sliceType$1.nil); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$5 = $clone(x, reflect.Value).Interface(); /* */ $s = 31; case 31: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + ptr = _r$5; + _tuple = (_entry = $mapIndex(p.ptrmap,$emptyInterface.keyFor(ptr)), _entry !== undefined ? [_entry.v, true] : [0, false]); + line = _tuple[0]; + exists = _tuple[1]; + /* */ if (exists) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (exists) { */ case 32: + $r = p.printf("(obj @ %d)", new sliceType$1([new $Int(line)])); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 34; continue; + /* } else { */ case 33: + _key = ptr; (p.ptrmap || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key), { k: _key, v: p.line }); + _r$6 = $clone(x, reflect.Value).Elem(); /* */ $s = 36; case 36: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $r = p.print($clone(_r$6, reflect.Value)); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 34: + $s = 12; continue; + /* } else if (_1 === (17)) { */ case 8: + $r = p.printf("%s {", new sliceType$1([$clone(x, reflect.Value).Type()])); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$7 = $clone(x, reflect.Value).Len(); /* */ $s = 41; case 41: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (_r$7 > 0) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (_r$7 > 0) { */ case 39: + p.indent = p.indent + (1) >> 0; + $r = p.printf("\n", sliceType$1.nil); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp = 0; + _r$8 = $clone(x, reflect.Value).Len(); /* */ $s = 43; case 43: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tmp$1 = _r$8; + i = _tmp; + n = _tmp$1; + /* while (true) { */ case 44: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 45; continue; } + $r = p.printf("%d: ", new sliceType$1([new $Int(i)])); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$9 = $clone(x, reflect.Value).Index(i); /* */ $s = 47; case 47: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $r = p.print($clone(_r$9, reflect.Value)); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.printf("\n", sliceType$1.nil); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 44; continue; + case 45: + p.indent = p.indent - (1) >> 0; + /* } */ case 40: + $r = p.printf("}", sliceType$1.nil); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 12; continue; + /* } else if (_1 === (23)) { */ case 9: + _r$10 = $clone(x, reflect.Value).Interface(); /* */ $s = 51; case 51: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$10, sliceType, true); + s = _tuple$1[0]; + ok = _tuple$1[1]; + /* */ if (ok) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if (ok) { */ case 52: + $r = p.printf("%#q", new sliceType$1([s])); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 53: + _arg$2 = $clone(x, reflect.Value).Type(); + _r$11 = $clone(x, reflect.Value).Len(); /* */ $s = 55; case 55: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _arg$3 = new $Int(_r$11); + $r = p.printf("%s (len = %d) {", new sliceType$1([_arg$2, _arg$3])); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$12 = $clone(x, reflect.Value).Len(); /* */ $s = 59; case 59: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + /* */ if (_r$12 > 0) { $s = 57; continue; } + /* */ $s = 58; continue; + /* if (_r$12 > 0) { */ case 57: + p.indent = p.indent + (1) >> 0; + $r = p.printf("\n", sliceType$1.nil); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$2 = 0; + _r$13 = $clone(x, reflect.Value).Len(); /* */ $s = 61; case 61: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _tmp$3 = _r$13; + i$1 = _tmp$2; + n$1 = _tmp$3; + /* while (true) { */ case 62: + /* if (!(i$1 < n$1)) { break; } */ if(!(i$1 < n$1)) { $s = 63; continue; } + $r = p.printf("%d: ", new sliceType$1([new $Int(i$1)])); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$14 = $clone(x, reflect.Value).Index(i$1); /* */ $s = 65; case 65: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + $r = p.print($clone(_r$14, reflect.Value)); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.printf("\n", sliceType$1.nil); /* */ $s = 67; case 67: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 + (1) >> 0; + $s = 62; continue; + case 63: + p.indent = p.indent - (1) >> 0; + /* } */ case 58: + $r = p.printf("}", sliceType$1.nil); /* */ $s = 68; case 68: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 12; continue; + /* } else if (_1 === (25)) { */ case 10: + t = $clone(x, reflect.Value).Type(); + $r = p.printf("%s {", new sliceType$1([t])); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + p.indent = p.indent + (1) >> 0; + first = true; + _tmp$4 = 0; + _r$15 = t.NumField(); /* */ $s = 70; case 70: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _tmp$5 = _r$15; + i$2 = _tmp$4; + n$2 = _tmp$5; + /* while (true) { */ case 71: + /* if (!(i$2 < n$2)) { break; } */ if(!(i$2 < n$2)) { $s = 72; continue; } + _r$16 = t.Field(i$2); /* */ $s = 73; case 73: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + name = _r$16.Name; + /* */ if (IsExported(name)) { $s = 74; continue; } + /* */ $s = 75; continue; + /* if (IsExported(name)) { */ case 74: + _r$17 = $clone(x, reflect.Value).Field(i$2); /* */ $s = 76; case 76: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + value = _r$17; + if (p.filter === $throwNilPointerError) { _v = true; $s = 79; continue s; } + _r$18 = p.filter(name, $clone(value, reflect.Value)); /* */ $s = 80; case 80: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _v = _r$18; case 79: + /* */ if (_v) { $s = 77; continue; } + /* */ $s = 78; continue; + /* if (_v) { */ case 77: + /* */ if (first) { $s = 81; continue; } + /* */ $s = 82; continue; + /* if (first) { */ case 81: + $r = p.printf("\n", sliceType$1.nil); /* */ $s = 83; case 83: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + first = false; + /* } */ case 82: + $r = p.printf("%s: ", new sliceType$1([new $String(name)])); /* */ $s = 84; case 84: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.print($clone(value, reflect.Value)); /* */ $s = 85; case 85: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.printf("\n", sliceType$1.nil); /* */ $s = 86; case 86: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 78: + /* } */ case 75: + i$2 = i$2 + (1) >> 0; + $s = 71; continue; + case 72: + p.indent = p.indent - (1) >> 0; + $r = p.printf("}", sliceType$1.nil); /* */ $s = 87; case 87: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 12; continue; + /* } else { */ case 11: + _r$19 = $clone(x, reflect.Value).Interface(); /* */ $s = 88; case 88: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + v = _r$19; + _ref$1 = v; + /* */ if ($assertType(_ref$1, $String, true)[1]) { $s = 89; continue; } + /* */ if ($assertType(_ref$1, token.Pos, true)[1]) { $s = 90; continue; } + /* */ $s = 91; continue; + /* if ($assertType(_ref$1, $String, true)[1]) { */ case 89: + v$1 = _ref$1.$val; + $r = p.printf("%q", new sliceType$1([new $String(v$1)])); /* */ $s = 92; case 92: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } else if ($assertType(_ref$1, token.Pos, true)[1]) { */ case 90: + v$2 = _ref$1.$val; + /* */ if (!(p.fset === ptrType$60.nil)) { $s = 93; continue; } + /* */ $s = 94; continue; + /* if (!(p.fset === ptrType$60.nil)) { */ case 93: + _r$20 = p.fset.Position(v$2); /* */ $s = 95; case 95: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _arg$4 = (x$1 = _r$20, new x$1.constructor.elem(x$1)); + $r = p.printf("%s", new sliceType$1([_arg$4])); /* */ $s = 96; case 96: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 94: + /* } */ case 91: + $r = p.printf("%v", new sliceType$1([v])); /* */ $s = 97; case 97: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + case 4: + $s = -1; return; + /* */ } return; } var $f = {$blk: print, $c: true, $r, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _entry, _i, _key, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _v, exists, first, i, i$1, i$2, key, line, n, n$1, n$2, name, ok, p, ptr, s, t, v, v$1, v$2, value, x, x$1, $s};return $f; + }; + $ptrType(Comment).prototype.Pos = function Pos$1() { + var c; + c = this; + return c.Slash; + }; + $ptrType(Comment).prototype.End = function End() { + var c; + c = this; + return (((((c.Slash >> 0)) + c.Text.length >> 0) >> 0)); + }; + $ptrType(CommentGroup).prototype.Pos = function Pos$2() { + var g, x; + g = this; + return (x = g.List, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Pos(); + }; + $ptrType(CommentGroup).prototype.End = function End$1() { + var g, x, x$1; + g = this; + return (x = g.List, x$1 = g.List.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).End(); + }; + isWhitespace = function isWhitespace$1(ch) { + var ch; + return (ch === 32) || (ch === 9) || (ch === 10) || (ch === 13); + }; + stripTrailingWhitespace = function stripTrailingWhitespace$1(s) { + var i, s; + i = s.length; + while (true) { + if (!(i > 0 && isWhitespace(s.charCodeAt((i - 1 >> 0))))) { break; } + i = i - (1) >> 0; + } + return $substring(s, 0, i); + }; + $ptrType(CommentGroup).prototype.Text = function Text() { + var _1, _i, _i$1, _i$2, _i$3, _ref, _ref$1, _ref$2, _ref$3, c, c$1, cl, comments, g, i, l, line, lines, n, x, x$1; + g = this; + if (g === ptrType$1.nil) { + return ""; + } + comments = $makeSlice(sliceType$5, g.List.$length); + _ref = g.List; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ((i < 0 || i >= comments.$length) ? ($throwRuntimeError("index out of range"), undefined) : comments.$array[comments.$offset + i] = c.Text); + _i++; + } + lines = $makeSlice(sliceType$5, 0, 10); + _ref$1 = comments; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + switch (0) { default: + _1 = c$1.charCodeAt(1); + if (_1 === (47)) { + c$1 = $substring(c$1, 2); + if (c$1.length === 0) { + break; + } + if (c$1.charCodeAt(0) === 32) { + c$1 = $substring(c$1, 1); + break; + } + if (isDirective(c$1)) { + _i$1++; + continue; + } + } else if (_1 === (42)) { + c$1 = $substring(c$1, 2, (c$1.length - 2 >> 0)); + } + } + cl = strings.Split(c$1, "\n"); + _ref$2 = cl; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + l = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + lines = $append(lines, stripTrailingWhitespace(l)); + _i$2++; + } + _i$1++; + } + n = 0; + _ref$3 = lines; + _i$3 = 0; + while (true) { + if (!(_i$3 < _ref$3.$length)) { break; } + line = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]); + if (!(line === "") || n > 0 && !((x = n - 1 >> 0, ((x < 0 || x >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x])) === "")) { + ((n < 0 || n >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + n] = line); + n = n + (1) >> 0; + } + _i$3++; + } + lines = $subslice(lines, 0, n); + if (n > 0 && !((x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x$1])) === "")) { + lines = $append(lines, ""); + } + return strings.Join(lines, "\n"); + }; + isDirective = function isDirective$1(c) { + var b, c, colon, i; + if (strings.HasPrefix(c, "line ") || strings.HasPrefix(c, "extern ") || strings.HasPrefix(c, "export ")) { + return true; + } + colon = strings.Index(c, ":"); + if (colon <= 0 || (colon + 1 >> 0) >= c.length) { + return false; + } + i = 0; + while (true) { + if (!(i <= (colon + 1 >> 0))) { break; } + if (i === colon) { + i = i + (1) >> 0; + continue; + } + b = c.charCodeAt(i); + if (!(97 <= b && b <= 122 || 48 <= b && b <= 57)) { + return false; + } + i = i + (1) >> 0; + } + return true; + }; + $ptrType(Field).prototype.Pos = function Pos$3() { + var {$24r, _r, f, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + if (f.Names.$length > 0) { + $s = -1; return (x = f.Names, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Pos(); + } + /* */ if (!($interfaceIsEqual(f.Type, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(f.Type, $ifaceNil))) { */ case 1: + _r = f.Type.Pos(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: Pos$3, $c: true, $r, $24r, _r, f, x, $s};return $f; + }; + $ptrType(Field).prototype.End = function End$2() { + var {$24r, _r, f, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + if (!(f.Tag === ptrType$6.nil)) { + $s = -1; return f.Tag.End(); + } + /* */ if (!($interfaceIsEqual(f.Type, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(f.Type, $ifaceNil))) { */ case 1: + _r = f.Type.End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + if (f.Names.$length > 0) { + $s = -1; return (x = f.Names, x$1 = f.Names.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).End(); + } + $s = -1; return 0; + /* */ } return; } var $f = {$blk: End$2, $c: true, $r, $24r, _r, f, x, x$1, $s};return $f; + }; + $ptrType(FieldList).prototype.Pos = function Pos$4() { + var {$24r, _r, f, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + if (new token.Pos(f.Opening).IsValid()) { + $s = -1; return f.Opening; + } + /* */ if (f.List.$length > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (f.List.$length > 0) { */ case 1: + _r = (x = f.List, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Pos(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: Pos$4, $c: true, $r, $24r, _r, f, x, $s};return $f; + }; + $ptrType(FieldList).prototype.End = function End$3() { + var {$24r, _r, f, n, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + if (new token.Pos(f.Closing).IsValid()) { + $s = -1; return f.Closing + 1 >> 0; + } + n = f.List.$length; + /* */ if (n > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n > 0) { */ case 1: + _r = (x = f.List, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: End$3, $c: true, $r, $24r, _r, f, n, x, x$1, $s};return $f; + }; + $ptrType(FieldList).prototype.NumFields = function NumFields() { + var _i, _ref, f, g, m, n; + f = this; + n = 0; + if (!(f === ptrType$3.nil)) { + _ref = f.List; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + g = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + m = g.Names.$length; + if (m === 0) { + m = 1; + } + n = n + (m) >> 0; + _i++; + } + } + return n; + }; + $ptrType(BadExpr).prototype.Pos = function Pos$5() { + var x; + x = this; + return x.From; + }; + $ptrType(Ident).prototype.Pos = function Pos$6() { + var x; + x = this; + return x.NamePos; + }; + $ptrType(Ellipsis).prototype.Pos = function Pos$7() { + var x; + x = this; + return x.Ellipsis; + }; + $ptrType(BasicLit).prototype.Pos = function Pos$8() { + var x; + x = this; + return x.ValuePos; + }; + $ptrType(FuncLit).prototype.Pos = function Pos$9() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Type.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$9, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(CompositeLit).prototype.Pos = function Pos$10() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (!($interfaceIsEqual(x.Type, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(x.Type, $ifaceNil))) { */ case 1: + _r = x.Type.Pos(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return x.Lbrace; + /* */ } return; } var $f = {$blk: Pos$10, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(ParenExpr).prototype.Pos = function Pos$11() { + var x; + x = this; + return x.Lparen; + }; + $ptrType(SelectorExpr).prototype.Pos = function Pos$12() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$12, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(IndexExpr).prototype.Pos = function Pos$13() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$13, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(IndexListExpr).prototype.Pos = function Pos$14() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$14, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(SliceExpr).prototype.Pos = function Pos$15() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$15, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(TypeAssertExpr).prototype.Pos = function Pos$16() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$16, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(CallExpr).prototype.Pos = function Pos$17() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Fun.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$17, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(StarExpr).prototype.Pos = function Pos$18() { + var x; + x = this; + return x.Star; + }; + $ptrType(UnaryExpr).prototype.Pos = function Pos$19() { + var x; + x = this; + return x.OpPos; + }; + $ptrType(BinaryExpr).prototype.Pos = function Pos$20() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$20, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(KeyValueExpr).prototype.Pos = function Pos$21() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Key.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$21, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(ArrayType).prototype.Pos = function Pos$22() { + var x; + x = this; + return x.Lbrack; + }; + $ptrType(StructType).prototype.Pos = function Pos$23() { + var x; + x = this; + return x.Struct; + }; + $ptrType(FuncType).prototype.Pos = function Pos$24() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (new token.Pos(x.Func).IsValid() || x.Params === ptrType$3.nil) { + $s = -1; return x.Func; + } + _r = x.Params.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$24, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(InterfaceType).prototype.Pos = function Pos$25() { + var x; + x = this; + return x.Interface; + }; + $ptrType(MapType).prototype.Pos = function Pos$26() { + var x; + x = this; + return x.Map; + }; + $ptrType(ChanType).prototype.Pos = function Pos$27() { + var x; + x = this; + return x.Begin; + }; + $ptrType(BadExpr).prototype.End = function End$4() { + var x; + x = this; + return x.To; + }; + $ptrType(Ident).prototype.End = function End$5() { + var x; + x = this; + return (((((x.NamePos >> 0)) + x.Name.length >> 0) >> 0)); + }; + $ptrType(Ellipsis).prototype.End = function End$6() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (!($interfaceIsEqual(x.Elt, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(x.Elt, $ifaceNil))) { */ case 1: + _r = x.Elt.End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return x.Ellipsis + 3 >> 0; + /* */ } return; } var $f = {$blk: End$6, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(BasicLit).prototype.End = function End$7() { + var x; + x = this; + return (((((x.ValuePos >> 0)) + x.Value.length >> 0) >> 0)); + }; + $ptrType(FuncLit).prototype.End = function End$8() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Body.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$8, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(CompositeLit).prototype.End = function End$9() { + var x; + x = this; + return x.Rbrace + 1 >> 0; + }; + $ptrType(ParenExpr).prototype.End = function End$10() { + var x; + x = this; + return x.Rparen + 1 >> 0; + }; + $ptrType(SelectorExpr).prototype.End = function End$11() { + var x; + x = this; + return x.Sel.End(); + }; + $ptrType(IndexExpr).prototype.End = function End$12() { + var x; + x = this; + return x.Rbrack + 1 >> 0; + }; + $ptrType(IndexListExpr).prototype.End = function End$13() { + var x; + x = this; + return x.Rbrack + 1 >> 0; + }; + $ptrType(SliceExpr).prototype.End = function End$14() { + var x; + x = this; + return x.Rbrack + 1 >> 0; + }; + $ptrType(TypeAssertExpr).prototype.End = function End$15() { + var x; + x = this; + return x.Rparen + 1 >> 0; + }; + $ptrType(CallExpr).prototype.End = function End$16() { + var x; + x = this; + return x.Rparen + 1 >> 0; + }; + $ptrType(StarExpr).prototype.End = function End$17() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$17, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(UnaryExpr).prototype.End = function End$18() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$18, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(BinaryExpr).prototype.End = function End$19() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Y.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$19, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(KeyValueExpr).prototype.End = function End$20() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Value.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$20, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(ArrayType).prototype.End = function End$21() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Elt.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$21, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(StructType).prototype.End = function End$22() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Fields.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$22, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(FuncType).prototype.End = function End$23() { + var {$24r, $24r$1, _r, _r$1, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (!(x.Results === ptrType$3.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(x.Results === ptrType$3.nil)) { */ case 1: + _r = x.Results.End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = x.Params.End(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: End$23, $c: true, $r, $24r, $24r$1, _r, _r$1, x, $s};return $f; + }; + $ptrType(InterfaceType).prototype.End = function End$24() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Methods.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$24, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(MapType).prototype.End = function End$25() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Value.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$25, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(ChanType).prototype.End = function End$26() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Value.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$26, $c: true, $r, $24r, _r, x, $s};return $f; + }; + NewIdent = function NewIdent$1(name) { + var name; + return new Ident.ptr(0, name, ptrType$56.nil); + }; + $pkg.NewIdent = NewIdent; + IsExported = function IsExported$1(name) { + var name; + return token.IsExported(name); + }; + $pkg.IsExported = IsExported; + $ptrType(Ident).prototype.IsExported = function IsExported$2() { + var id; + id = this; + return token.IsExported(id.Name); + }; + $ptrType(Ident).prototype.String = function String$3() { + var id; + id = this; + if (!(id === ptrType$5.nil)) { + return id.Name; + } + return ""; + }; + $ptrType(BadStmt).prototype.Pos = function Pos$28() { + var s; + s = this; + return s.From; + }; + $ptrType(DeclStmt).prototype.Pos = function Pos$29() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Decl.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$29, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(EmptyStmt).prototype.Pos = function Pos$30() { + var s; + s = this; + return s.Semicolon; + }; + $ptrType(LabeledStmt).prototype.Pos = function Pos$31() { + var s; + s = this; + return s.Label.Pos(); + }; + $ptrType(ExprStmt).prototype.Pos = function Pos$32() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.X.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$32, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(SendStmt).prototype.Pos = function Pos$33() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Chan.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$33, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(IncDecStmt).prototype.Pos = function Pos$34() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.X.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$34, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(AssignStmt).prototype.Pos = function Pos$35() { + var {$24r, _r, s, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = (x = s.Lhs, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$35, $c: true, $r, $24r, _r, s, x, $s};return $f; + }; + $ptrType(GoStmt).prototype.Pos = function Pos$36() { + var s; + s = this; + return s.Go; + }; + $ptrType(DeferStmt).prototype.Pos = function Pos$37() { + var s; + s = this; + return s.Defer; + }; + $ptrType(ReturnStmt).prototype.Pos = function Pos$38() { + var s; + s = this; + return s.Return; + }; + $ptrType(BranchStmt).prototype.Pos = function Pos$39() { + var s; + s = this; + return s.TokPos; + }; + $ptrType(BlockStmt).prototype.Pos = function Pos$40() { + var s; + s = this; + return s.Lbrace; + }; + $ptrType(IfStmt).prototype.Pos = function Pos$41() { + var s; + s = this; + return s.If; + }; + $ptrType(CaseClause).prototype.Pos = function Pos$42() { + var s; + s = this; + return s.Case; + }; + $ptrType(SwitchStmt).prototype.Pos = function Pos$43() { + var s; + s = this; + return s.Switch; + }; + $ptrType(TypeSwitchStmt).prototype.Pos = function Pos$44() { + var s; + s = this; + return s.Switch; + }; + $ptrType(CommClause).prototype.Pos = function Pos$45() { + var s; + s = this; + return s.Case; + }; + $ptrType(SelectStmt).prototype.Pos = function Pos$46() { + var s; + s = this; + return s.Select; + }; + $ptrType(ForStmt).prototype.Pos = function Pos$47() { + var s; + s = this; + return s.For; + }; + $ptrType(RangeStmt).prototype.Pos = function Pos$48() { + var s; + s = this; + return s.For; + }; + $ptrType(BadStmt).prototype.End = function End$27() { + var s; + s = this; + return s.To; + }; + $ptrType(DeclStmt).prototype.End = function End$28() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Decl.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$28, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(EmptyStmt).prototype.End = function End$29() { + var s; + s = this; + if (s.Implicit) { + return s.Semicolon; + } + return s.Semicolon + 1 >> 0; + }; + $ptrType(LabeledStmt).prototype.End = function End$30() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Stmt.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$30, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(ExprStmt).prototype.End = function End$31() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.X.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$31, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(SendStmt).prototype.End = function End$32() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Value.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$32, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(IncDecStmt).prototype.End = function End$33() { + var s; + s = this; + return s.TokPos + 2 >> 0; + }; + $ptrType(AssignStmt).prototype.End = function End$34() { + var {$24r, _r, s, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = (x = s.Rhs, x$1 = s.Rhs.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$34, $c: true, $r, $24r, _r, s, x, x$1, $s};return $f; + }; + $ptrType(GoStmt).prototype.End = function End$35() { + var s; + s = this; + return s.Call.End(); + }; + $ptrType(DeferStmt).prototype.End = function End$36() { + var s; + s = this; + return s.Call.End(); + }; + $ptrType(ReturnStmt).prototype.End = function End$37() { + var {$24r, _r, n, s, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + n = s.Results.$length; + /* */ if (n > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n > 0) { */ case 1: + _r = (x = s.Results, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return s.Return + 6 >> 0; + /* */ } return; } var $f = {$blk: End$37, $c: true, $r, $24r, _r, n, s, x, x$1, $s};return $f; + }; + $ptrType(BranchStmt).prototype.End = function End$38() { + var s; + s = this; + if (!(s.Label === ptrType$5.nil)) { + return s.Label.End(); + } + return (((((s.TokPos >> 0)) + new token.Token(s.Tok).String().length >> 0) >> 0)); + }; + $ptrType(BlockStmt).prototype.End = function End$39() { + var {$24r, _r, n, s, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + if (new token.Pos(s.Rbrace).IsValid()) { + $s = -1; return s.Rbrace + 1 >> 0; + } + n = s.List.$length; + /* */ if (n > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n > 0) { */ case 1: + _r = (x = s.List, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return s.Lbrace + 1 >> 0; + /* */ } return; } var $f = {$blk: End$39, $c: true, $r, $24r, _r, n, s, x, x$1, $s};return $f; + }; + $ptrType(IfStmt).prototype.End = function End$40() { + var {$24r, $24r$1, _r, _r$1, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (!($interfaceIsEqual(s.Else, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(s.Else, $ifaceNil))) { */ case 1: + _r = s.Else.End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = s.Body.End(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: End$40, $c: true, $r, $24r, $24r$1, _r, _r$1, s, $s};return $f; + }; + $ptrType(CaseClause).prototype.End = function End$41() { + var {$24r, _r, n, s, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + n = s.Body.$length; + /* */ if (n > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n > 0) { */ case 1: + _r = (x = s.Body, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return s.Colon + 1 >> 0; + /* */ } return; } var $f = {$blk: End$41, $c: true, $r, $24r, _r, n, s, x, x$1, $s};return $f; + }; + $ptrType(SwitchStmt).prototype.End = function End$42() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Body.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$42, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(TypeSwitchStmt).prototype.End = function End$43() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Body.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$43, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(CommClause).prototype.End = function End$44() { + var {$24r, _r, n, s, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + n = s.Body.$length; + /* */ if (n > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n > 0) { */ case 1: + _r = (x = s.Body, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return s.Colon + 1 >> 0; + /* */ } return; } var $f = {$blk: End$44, $c: true, $r, $24r, _r, n, s, x, x$1, $s};return $f; + }; + $ptrType(SelectStmt).prototype.End = function End$45() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Body.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$45, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(ForStmt).prototype.End = function End$46() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Body.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$46, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(RangeStmt).prototype.End = function End$47() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Body.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$47, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(ImportSpec).prototype.Pos = function Pos$49() { + var s; + s = this; + if (!(s.Name === ptrType$5.nil)) { + return s.Name.Pos(); + } + return s.Path.Pos(); + }; + $ptrType(ValueSpec).prototype.Pos = function Pos$50() { + var s, x; + s = this; + return (x = s.Names, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Pos(); + }; + $ptrType(TypeSpec).prototype.Pos = function Pos$51() { + var s; + s = this; + return s.Name.Pos(); + }; + $ptrType(ImportSpec).prototype.End = function End$48() { + var s; + s = this; + if (!((s.EndPos === 0))) { + return s.EndPos; + } + return s.Path.End(); + }; + $ptrType(ValueSpec).prototype.End = function End$49() { + var {$24r, $24r$1, _r, _r$1, n, s, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + n = s.Values.$length; + /* */ if (n > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n > 0) { */ case 1: + _r = (x = s.Values, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + /* */ if (!($interfaceIsEqual(s.Type, $ifaceNil))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!($interfaceIsEqual(s.Type, $ifaceNil))) { */ case 5: + _r$1 = s.Type.End(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 8; case 8: return $24r$1; + /* } */ case 6: + $s = -1; return (x$2 = s.Names, x$3 = s.Names.$length - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])).End(); + /* */ } return; } var $f = {$blk: End$49, $c: true, $r, $24r, $24r$1, _r, _r$1, n, s, x, x$1, x$2, x$3, $s};return $f; + }; + $ptrType(TypeSpec).prototype.End = function End$50() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Type.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$50, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(BadDecl).prototype.Pos = function Pos$52() { + var d; + d = this; + return d.From; + }; + $ptrType(GenDecl).prototype.Pos = function Pos$53() { + var d; + d = this; + return d.TokPos; + }; + $ptrType(FuncDecl).prototype.Pos = function Pos$54() { + var {$24r, _r, d, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + _r = d.Type.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$54, $c: true, $r, $24r, _r, d, $s};return $f; + }; + $ptrType(BadDecl).prototype.End = function End$51() { + var d; + d = this; + return d.To; + }; + $ptrType(GenDecl).prototype.End = function End$52() { + var {$24r, _r, d, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + if (new token.Pos(d.Rparen).IsValid()) { + $s = -1; return d.Rparen + 1 >> 0; + } + _r = (x = d.Specs, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).End(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: End$52, $c: true, $r, $24r, _r, d, x, $s};return $f; + }; + $ptrType(FuncDecl).prototype.End = function End$53() { + var {$24r, $24r$1, _r, _r$1, d, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + /* */ if (!(d.Body === ptrType$39.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(d.Body === ptrType$39.nil)) { */ case 1: + _r = d.Body.End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = d.Type.End(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: End$53, $c: true, $r, $24r, $24r$1, _r, _r$1, d, $s};return $f; + }; + $ptrType(File).prototype.Pos = function Pos$55() { + var f; + f = this; + return f.Package; + }; + $ptrType(File).prototype.End = function End$54() { + var {$24r, _r, f, n, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + n = f.Decls.$length; + /* */ if (n > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n > 0) { */ case 1: + _r = (x = f.Decls, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).End(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return f.Name.End(); + /* */ } return; } var $f = {$blk: End$54, $c: true, $r, $24r, _r, f, n, x, x$1, $s};return $f; + }; + $ptrType(Package).prototype.Pos = function Pos$56() { + var p; + p = this; + return 0; + }; + $ptrType(Package).prototype.End = function End$55() { + var p; + p = this; + return 0; + }; + inspector.methods = [{prop: "Visit", name: "Visit", pkg: "", typ: $funcType([Node], [Visitor], false)}]; + ptrType$58.methods = [{prop: "Lookup", name: "Lookup", pkg: "", typ: $funcType([$String], [ptrType$56], false)}, {prop: "Insert", name: "Insert", pkg: "", typ: $funcType([ptrType$56], [ptrType$56], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$56.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}]; + ObjKind.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$63.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "printf", name: "printf", pkg: "go/ast", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "print", name: "print", pkg: "go/ast", typ: $funcType([reflect.Value], [], false)}]; + ptrType.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}]; + ptrType$1.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "Text", name: "Text", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$2.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}]; + ptrType$3.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "NumFields", name: "NumFields", pkg: "", typ: $funcType([], [$Int], false)}]; + ptrType$4.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$5.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}, {prop: "IsExported", name: "IsExported", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$7.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$6.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$8.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$9.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$10.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$11.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$12.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$13.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$14.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$15.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$16.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$17.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$18.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$19.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$20.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$21.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$22.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$23.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$24.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$25.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$26.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$27.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$28.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$29.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$30.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$31.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$32.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$33.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$34.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$35.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$36.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$37.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$38.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$39.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$40.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$41.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$42.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$43.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$44.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$45.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$46.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$47.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$48.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "specNode", name: "specNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$49.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "specNode", name: "specNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$50.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "specNode", name: "specNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$51.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "declNode", name: "declNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$52.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "declNode", name: "declNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$53.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "declNode", name: "declNode", pkg: "go/ast", typ: $funcType([], [], false)}]; + ptrType$54.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}]; + ptrType$55.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}]; + Visitor.init([{prop: "Visit", name: "Visit", pkg: "", typ: $funcType([Node], [Visitor], false)}]); + inspector.init([Node], [$Bool], false); + Scope.init("", [{prop: "Outer", name: "Outer", embedded: false, exported: true, typ: ptrType$58, tag: ""}, {prop: "Objects", name: "Objects", embedded: false, exported: true, typ: mapType, tag: ""}]); + Object.init("", [{prop: "Kind", name: "Kind", embedded: false, exported: true, typ: ObjKind, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Decl", name: "Decl", embedded: false, exported: true, typ: $emptyInterface, tag: ""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: $emptyInterface, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: $emptyInterface, tag: ""}]); + FieldFilter.init([$String, reflect.Value], [$Bool], false); + printer.init("go/ast", [{prop: "output", name: "output", embedded: false, exported: false, typ: io.Writer, tag: ""}, {prop: "fset", name: "fset", embedded: false, exported: false, typ: ptrType$60, tag: ""}, {prop: "filter", name: "filter", embedded: false, exported: false, typ: FieldFilter, tag: ""}, {prop: "ptrmap", name: "ptrmap", embedded: false, exported: false, typ: mapType$1, tag: ""}, {prop: "indent", name: "indent", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "last", name: "last", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "line", name: "line", embedded: false, exported: false, typ: $Int, tag: ""}]); + localError.init("go/ast", [{prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + Node.init([{prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}]); + Expr.init([{prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "exprNode", name: "exprNode", pkg: "go/ast", typ: $funcType([], [], false)}]); + Stmt.init([{prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "stmtNode", name: "stmtNode", pkg: "go/ast", typ: $funcType([], [], false)}]); + Decl.init([{prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "declNode", name: "declNode", pkg: "go/ast", typ: $funcType([], [], false)}]); + Comment.init("", [{prop: "Slash", name: "Slash", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Text", name: "Text", embedded: false, exported: true, typ: $String, tag: ""}]); + CommentGroup.init("", [{prop: "List", name: "List", embedded: false, exported: true, typ: sliceType$6, tag: ""}]); + Field.init("", [{prop: "Doc", name: "Doc", embedded: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Names", name: "Names", embedded: false, exported: true, typ: sliceType$9, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Tag", name: "Tag", embedded: false, exported: true, typ: ptrType$6, tag: ""}, {prop: "Comment", name: "Comment", embedded: false, exported: true, typ: ptrType$1, tag: ""}]); + FieldList.init("", [{prop: "Opening", name: "Opening", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "List", name: "List", embedded: false, exported: true, typ: sliceType$11, tag: ""}, {prop: "Closing", name: "Closing", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + BadExpr.init("", [{prop: "From", name: "From", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "To", name: "To", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + Ident.init("", [{prop: "NamePos", name: "NamePos", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Obj", name: "Obj", embedded: false, exported: true, typ: ptrType$56, tag: ""}]); + Ellipsis.init("", [{prop: "Ellipsis", name: "Ellipsis", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Elt", name: "Elt", embedded: false, exported: true, typ: Expr, tag: ""}]); + BasicLit.init("", [{prop: "ValuePos", name: "ValuePos", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Kind", name: "Kind", embedded: false, exported: true, typ: token.Token, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: $String, tag: ""}]); + FuncLit.init("", [{prop: "Type", name: "Type", embedded: false, exported: true, typ: ptrType$23, tag: ""}, {prop: "Body", name: "Body", embedded: false, exported: true, typ: ptrType$39, tag: ""}]); + CompositeLit.init("", [{prop: "Type", name: "Type", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Lbrace", name: "Lbrace", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Elts", name: "Elts", embedded: false, exported: true, typ: sliceType$12, tag: ""}, {prop: "Rbrace", name: "Rbrace", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Incomplete", name: "Incomplete", embedded: false, exported: true, typ: $Bool, tag: ""}]); + ParenExpr.init("", [{prop: "Lparen", name: "Lparen", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Rparen", name: "Rparen", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + SelectorExpr.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Sel", name: "Sel", embedded: false, exported: true, typ: ptrType$5, tag: ""}]); + IndexExpr.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Lbrack", name: "Lbrack", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Rbrack", name: "Rbrack", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + IndexListExpr.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Lbrack", name: "Lbrack", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Indices", name: "Indices", embedded: false, exported: true, typ: sliceType$12, tag: ""}, {prop: "Rbrack", name: "Rbrack", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + SliceExpr.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Lbrack", name: "Lbrack", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Low", name: "Low", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "High", name: "High", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Max", name: "Max", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Slice3", name: "Slice3", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Rbrack", name: "Rbrack", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + TypeAssertExpr.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Lparen", name: "Lparen", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Rparen", name: "Rparen", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + CallExpr.init("", [{prop: "Fun", name: "Fun", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Lparen", name: "Lparen", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Args", name: "Args", embedded: false, exported: true, typ: sliceType$12, tag: ""}, {prop: "Ellipsis", name: "Ellipsis", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Rparen", name: "Rparen", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + StarExpr.init("", [{prop: "Star", name: "Star", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}]); + UnaryExpr.init("", [{prop: "OpPos", name: "OpPos", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Op", name: "Op", embedded: false, exported: true, typ: token.Token, tag: ""}, {prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}]); + BinaryExpr.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "OpPos", name: "OpPos", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Op", name: "Op", embedded: false, exported: true, typ: token.Token, tag: ""}, {prop: "Y", name: "Y", embedded: false, exported: true, typ: Expr, tag: ""}]); + KeyValueExpr.init("", [{prop: "Key", name: "Key", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Colon", name: "Colon", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: Expr, tag: ""}]); + ArrayType.init("", [{prop: "Lbrack", name: "Lbrack", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Len", name: "Len", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Elt", name: "Elt", embedded: false, exported: true, typ: Expr, tag: ""}]); + StructType.init("", [{prop: "Struct", name: "Struct", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Fields", name: "Fields", embedded: false, exported: true, typ: ptrType$3, tag: ""}, {prop: "Incomplete", name: "Incomplete", embedded: false, exported: true, typ: $Bool, tag: ""}]); + FuncType.init("", [{prop: "Func", name: "Func", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "TypeParams", name: "TypeParams", embedded: false, exported: true, typ: ptrType$3, tag: ""}, {prop: "Params", name: "Params", embedded: false, exported: true, typ: ptrType$3, tag: ""}, {prop: "Results", name: "Results", embedded: false, exported: true, typ: ptrType$3, tag: ""}]); + InterfaceType.init("", [{prop: "Interface", name: "Interface", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Methods", name: "Methods", embedded: false, exported: true, typ: ptrType$3, tag: ""}, {prop: "Incomplete", name: "Incomplete", embedded: false, exported: true, typ: $Bool, tag: ""}]); + MapType.init("", [{prop: "Map", name: "Map", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Key", name: "Key", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: Expr, tag: ""}]); + ChanType.init("", [{prop: "Begin", name: "Begin", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Arrow", name: "Arrow", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Dir", name: "Dir", embedded: false, exported: true, typ: ChanDir, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: Expr, tag: ""}]); + BadStmt.init("", [{prop: "From", name: "From", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "To", name: "To", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + DeclStmt.init("", [{prop: "Decl", name: "Decl", embedded: false, exported: true, typ: Decl, tag: ""}]); + EmptyStmt.init("", [{prop: "Semicolon", name: "Semicolon", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Implicit", name: "Implicit", embedded: false, exported: true, typ: $Bool, tag: ""}]); + LabeledStmt.init("", [{prop: "Label", name: "Label", embedded: false, exported: true, typ: ptrType$5, tag: ""}, {prop: "Colon", name: "Colon", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Stmt", name: "Stmt", embedded: false, exported: true, typ: Stmt, tag: ""}]); + ExprStmt.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}]); + SendStmt.init("", [{prop: "Chan", name: "Chan", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Arrow", name: "Arrow", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: Expr, tag: ""}]); + IncDecStmt.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "TokPos", name: "TokPos", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Tok", name: "Tok", embedded: false, exported: true, typ: token.Token, tag: ""}]); + AssignStmt.init("", [{prop: "Lhs", name: "Lhs", embedded: false, exported: true, typ: sliceType$12, tag: ""}, {prop: "TokPos", name: "TokPos", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Tok", name: "Tok", embedded: false, exported: true, typ: token.Token, tag: ""}, {prop: "Rhs", name: "Rhs", embedded: false, exported: true, typ: sliceType$12, tag: ""}]); + GoStmt.init("", [{prop: "Go", name: "Go", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Call", name: "Call", embedded: false, exported: true, typ: ptrType$16, tag: ""}]); + DeferStmt.init("", [{prop: "Defer", name: "Defer", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Call", name: "Call", embedded: false, exported: true, typ: ptrType$16, tag: ""}]); + ReturnStmt.init("", [{prop: "Return", name: "Return", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Results", name: "Results", embedded: false, exported: true, typ: sliceType$12, tag: ""}]); + BranchStmt.init("", [{prop: "TokPos", name: "TokPos", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Tok", name: "Tok", embedded: false, exported: true, typ: token.Token, tag: ""}, {prop: "Label", name: "Label", embedded: false, exported: true, typ: ptrType$5, tag: ""}]); + BlockStmt.init("", [{prop: "Lbrace", name: "Lbrace", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "List", name: "List", embedded: false, exported: true, typ: sliceType$13, tag: ""}, {prop: "Rbrace", name: "Rbrace", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + IfStmt.init("", [{prop: "If", name: "If", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Init", name: "Init", embedded: false, exported: true, typ: Stmt, tag: ""}, {prop: "Cond", name: "Cond", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Body", name: "Body", embedded: false, exported: true, typ: ptrType$39, tag: ""}, {prop: "Else", name: "Else", embedded: false, exported: true, typ: Stmt, tag: ""}]); + CaseClause.init("", [{prop: "Case", name: "Case", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "List", name: "List", embedded: false, exported: true, typ: sliceType$12, tag: ""}, {prop: "Colon", name: "Colon", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Body", name: "Body", embedded: false, exported: true, typ: sliceType$13, tag: ""}]); + SwitchStmt.init("", [{prop: "Switch", name: "Switch", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Init", name: "Init", embedded: false, exported: true, typ: Stmt, tag: ""}, {prop: "Tag", name: "Tag", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Body", name: "Body", embedded: false, exported: true, typ: ptrType$39, tag: ""}]); + TypeSwitchStmt.init("", [{prop: "Switch", name: "Switch", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Init", name: "Init", embedded: false, exported: true, typ: Stmt, tag: ""}, {prop: "Assign", name: "Assign", embedded: false, exported: true, typ: Stmt, tag: ""}, {prop: "Body", name: "Body", embedded: false, exported: true, typ: ptrType$39, tag: ""}]); + CommClause.init("", [{prop: "Case", name: "Case", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Comm", name: "Comm", embedded: false, exported: true, typ: Stmt, tag: ""}, {prop: "Colon", name: "Colon", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Body", name: "Body", embedded: false, exported: true, typ: sliceType$13, tag: ""}]); + SelectStmt.init("", [{prop: "Select", name: "Select", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Body", name: "Body", embedded: false, exported: true, typ: ptrType$39, tag: ""}]); + ForStmt.init("", [{prop: "For", name: "For", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Init", name: "Init", embedded: false, exported: true, typ: Stmt, tag: ""}, {prop: "Cond", name: "Cond", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Post", name: "Post", embedded: false, exported: true, typ: Stmt, tag: ""}, {prop: "Body", name: "Body", embedded: false, exported: true, typ: ptrType$39, tag: ""}]); + RangeStmt.init("", [{prop: "For", name: "For", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Key", name: "Key", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "TokPos", name: "TokPos", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Tok", name: "Tok", embedded: false, exported: true, typ: token.Token, tag: ""}, {prop: "Range", name: "Range", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Body", name: "Body", embedded: false, exported: true, typ: ptrType$39, tag: ""}]); + Spec.init([{prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "specNode", name: "specNode", pkg: "go/ast", typ: $funcType([], [], false)}]); + ImportSpec.init("", [{prop: "Doc", name: "Doc", embedded: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: ptrType$5, tag: ""}, {prop: "Path", name: "Path", embedded: false, exported: true, typ: ptrType$6, tag: ""}, {prop: "Comment", name: "Comment", embedded: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "EndPos", name: "EndPos", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + ValueSpec.init("", [{prop: "Doc", name: "Doc", embedded: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Names", name: "Names", embedded: false, exported: true, typ: sliceType$9, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Values", name: "Values", embedded: false, exported: true, typ: sliceType$12, tag: ""}, {prop: "Comment", name: "Comment", embedded: false, exported: true, typ: ptrType$1, tag: ""}]); + TypeSpec.init("", [{prop: "Doc", name: "Doc", embedded: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: ptrType$5, tag: ""}, {prop: "TypeParams", name: "TypeParams", embedded: false, exported: true, typ: ptrType$3, tag: ""}, {prop: "Assign", name: "Assign", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Comment", name: "Comment", embedded: false, exported: true, typ: ptrType$1, tag: ""}]); + BadDecl.init("", [{prop: "From", name: "From", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "To", name: "To", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + GenDecl.init("", [{prop: "Doc", name: "Doc", embedded: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "TokPos", name: "TokPos", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Tok", name: "Tok", embedded: false, exported: true, typ: token.Token, tag: ""}, {prop: "Lparen", name: "Lparen", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Specs", name: "Specs", embedded: false, exported: true, typ: sliceType$14, tag: ""}, {prop: "Rparen", name: "Rparen", embedded: false, exported: true, typ: token.Pos, tag: ""}]); + FuncDecl.init("", [{prop: "Doc", name: "Doc", embedded: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Recv", name: "Recv", embedded: false, exported: true, typ: ptrType$3, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: ptrType$5, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: ptrType$23, tag: ""}, {prop: "Body", name: "Body", embedded: false, exported: true, typ: ptrType$39, tag: ""}]); + File.init("", [{prop: "Doc", name: "Doc", embedded: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Package", name: "Package", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: ptrType$5, tag: ""}, {prop: "Decls", name: "Decls", embedded: false, exported: true, typ: sliceType$7, tag: ""}, {prop: "FileStart", name: "FileStart", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "FileEnd", name: "FileEnd", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Scope", name: "Scope", embedded: false, exported: true, typ: ptrType$58, tag: ""}, {prop: "Imports", name: "Imports", embedded: false, exported: true, typ: sliceType$8, tag: ""}, {prop: "Unresolved", name: "Unresolved", embedded: false, exported: true, typ: sliceType$9, tag: ""}, {prop: "Comments", name: "Comments", embedded: false, exported: true, typ: sliceType$3, tag: ""}]); + Package.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Scope", name: "Scope", embedded: false, exported: true, typ: ptrType$58, tag: ""}, {prop: "Imports", name: "Imports", embedded: false, exported: true, typ: mapType, tag: ""}, {prop: "Files", name: "Files", embedded: false, exported: true, typ: mapType$2, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = scanner.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + objKindStrings = $toNativeArray($kindString, ["bad", "package", "const", "type", "var", "func", "label"]); + indent = (new sliceType($stringToBytes(". "))); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["container/heap"] = (function() { + var $pkg = {}, $init, sort, Init, Pop, Fix, up, down; + sort = $packages["sort"]; + $pkg.$finishSetup = function() { + Init = function Init$1(h) { + var {_q, _r, _r$1, h, i, n, $s, $r, $c} = $restore(this, {h}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = h.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r; + i = (_q = n / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) - 1 >> 0; + /* while (true) { */ case 2: + /* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 3; continue; } + _r$1 = down(h, i, n); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + i = i - (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: Init$1, $c: true, $r, _q, _r, _r$1, h, i, n, $s};return $f; + }; + $pkg.Init = Init; + Pop = function Pop$1(h) { + var {$24r, _r, _r$1, _r$2, h, n, $s, $r, $c} = $restore(this, {h}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = h.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + n = _r - 1 >> 0; + $r = h.Swap(0, n); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = down(h, 0, n); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = h.Pop(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: Pop$1, $c: true, $r, $24r, _r, _r$1, _r$2, h, n, $s};return $f; + }; + $pkg.Pop = Pop; + Fix = function Fix$1(h, i) { + var {_arg, _arg$1, _arg$2, _r, _r$1, h, i, $s, $r, $c} = $restore(this, {h, i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = h; + _arg$1 = i; + _r = h.Len(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$2 = _r; + _r$1 = down(_arg, _arg$1, _arg$2); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r$1) { */ case 1: + $r = up(h, i); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Fix$1, $c: true, $r, _arg, _arg$1, _arg$2, _r, _r$1, h, i, $s};return $f; + }; + $pkg.Fix = Fix; + up = function up$1(h, j) { + var {_q, _r, _v, h, i, j, $s, $r, $c} = $restore(this, {h, j}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* while (true) { */ case 1: + i = (_q = ((j - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + if (i === j) { _v = true; $s = 5; continue s; } + _r = h.Less(j, i); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = !_r; case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + /* break; */ $s = 2; continue; + /* } */ case 4: + $r = h.Swap(i, j); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j = i; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: up$1, $c: true, $r, _q, _r, _v, h, i, j, $s};return $f; + }; + down = function down$1(h, i0, n) { + var {_r, _r$1, _v, h, i, i0, j, j1, j2, n, $s, $r, $c} = $restore(this, {h, i0, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = i0; + /* while (true) { */ case 1: + j1 = ($imul(2, i)) + 1 >> 0; + if (j1 >= n || j1 < 0) { + /* break; */ $s = 2; continue; + } + j = j1; + j2 = j1 + 1 >> 0; + if (!(j2 < n)) { _v = false; $s = 5; continue s; } + _r = h.Less(j2, j1); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + j = j2; + /* } */ case 4: + _r$1 = h.Less(j, i); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!_r$1) { */ case 7: + /* break; */ $s = 2; continue; + /* } */ case 8: + $r = h.Swap(i, j); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = j; + $s = 1; continue; + case 2: + $s = -1; return i > i0; + /* */ } return; } var $f = {$blk: down$1, $c: true, $r, _r, _r$1, _v, h, i, i0, j, j1, j2, n, $s};return $f; + }; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = sort.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/godebug"] = (function() { + var $pkg = {}, $init, sync, atomic, Setting, ptrType, ptrType$1, ptrType$2, ptrType$3, cache, empty, empty$24ptr, updateMu, setUpdate, New, init, update, parse; + sync = $packages["sync"]; + atomic = $packages["sync/atomic"]; + Setting = $newType(0, $kindStruct, "godebug.Setting", true, "internal/godebug", true, function(name_, once_, value_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.once = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)); + this.value = ptrType$1.nil; + return; + } + this.name = name_; + this.once = once_; + this.value = value_; + }); + $pkg.Setting = Setting; + $pkg.$finishSetup = function() { + ptrType = $ptrType(sync.readOnly); + ptrType$1 = $ptrType(atomic.Pointer[10 /* string */]); + ptrType$2 = $ptrType($String); + ptrType$3 = $ptrType(Setting); + setUpdate = function() { + $throwRuntimeError("native function not implemented: internal/godebug.setUpdate"); + }; + New = function New$1(name) { + var name; + return new Setting.ptr(name, new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), ptrType$1.nil); + }; + $pkg.New = New; + $ptrType(Setting).prototype.Name = function Name() { + var s; + s = this; + return s.name; + }; + $ptrType(Setting).prototype.String = function String() { + var {$24r, _r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.Value(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = s.name + "=" + _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String, $c: true, $r, $24r, _r, s, $s};return $f; + }; + $ptrType(Setting).prototype.Value = function Value() { + var {s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = [s]; + s[0] = this; + $r = s[0].once.Do((function(s) { return function Setting·Value·func1() { + var {_r, _r$1, _tuple, _tuple$1, ok, p, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = cache.Load(new $String(s[0].name)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + v = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + p = new atomic.Pointer[10 /* string */].ptr(ptrType$2.nil); + p.Store((empty$24ptr || (empty$24ptr = new ptrType$2(function() { return empty; }, function($v) { empty = $v; })))); + _r$1 = cache.LoadOrStore(new $String(s[0].name), p); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + v = _tuple$1[0]; + /* } */ case 3: + s[0].value = $assertType(v, ptrType$1); + $s = -1; return; + /* */ } return; } var $f = {$blk: Setting·Value·func1, $c: true, $r, _r, _r$1, _tuple, _tuple$1, ok, p, v, $s};return $f; + }; })(s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return s[0].value.Load().$get(); + /* */ } return; } var $f = {$blk: Value, $c: true, $r, s, $s};return $f; + }; + init = function init$1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = setUpdate(update); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: init$1, $c: true, $r, $s};return $f; + }; + update = function update$1(def, env) { + var {def, did, env, $s, $deferred, $r, $c} = $restore(this, {def, env}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + did = [did]; + $r = updateMu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(updateMu, "Unlock"), []]); + did[0] = new $global.Map(); + $r = parse(did[0], env); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = parse(did[0], def); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = cache.Range((function(did) { return function update·func1(name, v) { + var _entry, name, v; + if (!(_entry = $mapIndex(did[0],$String.keyFor($assertType(name, $String))), _entry !== undefined ? _entry.v : false)) { + $assertType(v, ptrType$1).Store((empty$24ptr || (empty$24ptr = new ptrType$2(function() { return empty; }, function($v) { empty = $v; })))); + } + return true; + }; })(did)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: update$1, $c: true, $r, def, did, env, $s, $deferred};return $f; } } + }; + parse = function parse$1(did, s) { + var {_entry, _key, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, did, end, eq, i, name, ok, p, s, v, value, $s, $r, $c} = $restore(this, {did, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + end = s.length; + eq = -1; + i = end - 1 >> 0; + /* while (true) { */ case 1: + /* if (!(i >= -1)) { break; } */ if(!(i >= -1)) { $s = 2; continue; } + value = [value]; + /* */ if ((i === -1) || (s.charCodeAt(i) === 44)) { $s = 3; continue; } + /* */ if (s.charCodeAt(i) === 61) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((i === -1) || (s.charCodeAt(i) === 44)) { */ case 3: + /* */ if (eq >= 0) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (eq >= 0) { */ case 6: + _tmp = $substring(s, (i + 1 >> 0), eq); + _tmp$1 = $substring(s, (eq + 1 >> 0), end); + name = _tmp; + value[0] = _tmp$1; + /* */ if (!(_entry = $mapIndex(did,$String.keyFor(name)), _entry !== undefined ? _entry.v : false)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!(_entry = $mapIndex(did,$String.keyFor(name)), _entry !== undefined ? _entry.v : false)) { */ case 8: + _key = name; (did || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: true }); + _r = cache.Load(new $String(name)); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + v = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!ok) { */ case 11: + p = new atomic.Pointer[10 /* string */].ptr(ptrType$2.nil); + p.Store((empty$24ptr || (empty$24ptr = new ptrType$2(function() { return empty; }, function($v) { empty = $v; })))); + _r$1 = cache.LoadOrStore(new $String(name), p); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + v = _tuple$1[0]; + /* } */ case 12: + $assertType(v, ptrType$1).Store((value.$ptr || (value.$ptr = new ptrType$2(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, value)))); + /* } */ case 9: + /* } */ case 7: + eq = -1; + end = i; + $s = 5; continue; + /* } else if (s.charCodeAt(i) === 61) { */ case 4: + eq = i; + /* } */ case 5: + i = i - (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: parse$1, $c: true, $r, _entry, _key, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, did, end, eq, i, name, ok, p, s, v, value, $s};return $f; + }; + ptrType$3.methods = [{prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([], [$String], false)}]; + Setting.init("internal/godebug", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "once", name: "once", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "value", name: "value", embedded: false, exported: false, typ: ptrType$1, tag: ""}]); + $pkg.$initLinknames = function() { + setUpdate = $linknames["runtime.godebug_setUpdate"]; + }; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = sync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + cache = new sync.Map.ptr(new sync.Mutex.ptr(0, 0), new atomic.Pointer[20 /* sync.readOnly */].ptr(ptrType.nil), false, 0); + empty = ""; + updateMu = new sync.Mutex.ptr(0, 0); + $r = init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["math/rand"] = (function() { + var $pkg = {}, $init, nosync, godebug, math, rngSource, Source, Source64, Rand, lockedSource, ptrType, ptrType$1, arrayType, ptrType$3, ptrType$4, sliceType, ptrType$5, funcType, sliceType$1, rngCooked, globalRand, randautoseed, kn, wn, fn, ke, we, fe, seedrand, NewSource, newSource, New, read, Seed, Intn, Float64, Read, absInt32, fastrand64; + nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; + godebug = $packages["internal/godebug"]; + math = $packages["math"]; + rngSource = $newType(0, $kindStruct, "rand.rngSource", true, "math/rand", false, function(tap_, feed_, vec_) { + this.$val = this; + if (arguments.length === 0) { + this.tap = 0; + this.feed = 0; + this.vec = arrayType.zero(); + return; + } + this.tap = tap_; + this.feed = feed_; + this.vec = vec_; + }); + Source = $newType(8, $kindInterface, "rand.Source", true, "math/rand", true, null); + Source64 = $newType(8, $kindInterface, "rand.Source64", true, "math/rand", true, null); + Rand = $newType(0, $kindStruct, "rand.Rand", true, "math/rand", true, function(src_, s64_, readVal_, readPos_) { + this.$val = this; + if (arguments.length === 0) { + this.src = $ifaceNil; + this.s64 = $ifaceNil; + this.readVal = new $Int64(0, 0); + this.readPos = 0; + return; + } + this.src = src_; + this.s64 = s64_; + this.readVal = readVal_; + this.readPos = readPos_; + }); + lockedSource = $newType(0, $kindStruct, "rand.lockedSource", true, "math/rand", false, function(lk_, s_) { + this.$val = this; + if (arguments.length === 0) { + this.lk = new nosync.Mutex.ptr(false, false, false, false, 0); + this.s = ptrType.nil; + return; + } + this.lk = lk_; + this.s = s_; + }); + $pkg.rngSource = rngSource; + $pkg.Source = Source; + $pkg.Source64 = Source64; + $pkg.Rand = Rand; + $pkg.lockedSource = lockedSource; + $pkg.$finishSetup = function() { + ptrType = $ptrType(rngSource); + ptrType$1 = $ptrType(Rand); + arrayType = $arrayType($Int64, 607); + ptrType$3 = $ptrType(lockedSource); + ptrType$4 = $ptrType($Int8); + sliceType = $sliceType($Int); + ptrType$5 = $ptrType($Int64); + funcType = $funcType([$Int, $Int], [], false); + sliceType$1 = $sliceType($Uint8); + seedrand = function seedrand$1(x) { + var _q, _r, hi, lo, x; + hi = (_q = x / 44488, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + lo = (_r = x % 44488, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); + x = ($imul(48271, lo)) - ($imul(3399, hi)) >> 0; + if (x < 0) { + x = x + (2147483647) >> 0; + } + return x; + }; + $ptrType(rngSource).prototype.Seed = function Seed$1(seed) { + var i, rng, seed, u, x, x$1, x$2, x$3, x$4, x$5; + rng = this; + rng.tap = 0; + rng.feed = 334; + seed = $div64(seed, new $Int64(0, 2147483647), true); + if ((seed.$high < 0 || (seed.$high === 0 && seed.$low < 0))) { + seed = (x = new $Int64(0, 2147483647), new $Int64(seed.$high + x.$high, seed.$low + x.$low)); + } + if ((seed.$high === 0 && seed.$low === 0)) { + seed = new $Int64(0, 89482311); + } + x$1 = (((seed.$low + ((seed.$high >> 31) * 4294967296)) >> 0)); + i = -20; + while (true) { + if (!(i < 607)) { break; } + x$1 = seedrand(x$1); + if (i >= 0) { + u = new $Int64(0, 0); + u = $shiftLeft64((new $Int64(0, x$1)), 40); + x$1 = seedrand(x$1); + u = (x$2 = $shiftLeft64((new $Int64(0, x$1)), 20), new $Int64(u.$high ^ x$2.$high, (u.$low ^ x$2.$low) >>> 0)); + x$1 = seedrand(x$1); + u = (x$3 = (new $Int64(0, x$1)), new $Int64(u.$high ^ x$3.$high, (u.$low ^ x$3.$low) >>> 0)); + u = (x$4 = ((i < 0 || i >= rngCooked.length) ? ($throwRuntimeError("index out of range"), undefined) : rngCooked[i]), new $Int64(u.$high ^ x$4.$high, (u.$low ^ x$4.$low) >>> 0)); + (x$5 = rng.vec, ((i < 0 || i >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[i] = u)); + } + i = i + (1) >> 0; + } + }; + $ptrType(rngSource).prototype.Int63 = function Int63$1() { + var rng, x, x$1; + rng = this; + return ((x = (x$1 = rng.Uint64(), new $Uint64(x$1.$high & 2147483647, (x$1.$low & 4294967295) >>> 0)), new $Int64(x.$high, x.$low))); + }; + $ptrType(rngSource).prototype.Uint64 = function Uint64$2() { + var rng, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; + rng = this; + rng.tap = rng.tap - (1) >> 0; + if (rng.tap < 0) { + rng.tap = rng.tap + (607) >> 0; + } + rng.feed = rng.feed - (1) >> 0; + if (rng.feed < 0) { + rng.feed = rng.feed + (607) >> 0; + } + x$6 = (x = (x$1 = rng.vec, x$2 = rng.feed, ((x$2 < 0 || x$2 >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[x$2])), x$3 = (x$4 = rng.vec, x$5 = rng.tap, ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5])), new $Int64(x.$high + x$3.$high, x.$low + x$3.$low)); + (x$7 = rng.vec, x$8 = rng.feed, ((x$8 < 0 || x$8 >= x$7.length) ? ($throwRuntimeError("index out of range"), undefined) : x$7[x$8] = x$6)); + return (new $Uint64(x$6.$high, x$6.$low)); + }; + NewSource = function NewSource$1(seed) { + var seed; + return newSource(seed); + }; + $pkg.NewSource = NewSource; + newSource = function newSource$1(seed) { + var rng, seed; + rng = new rngSource.ptr(0, 0, arrayType.zero()); + rng.Seed(seed); + return rng; + }; + New = function New$1(src) { + var _tuple, s64, src; + _tuple = $assertType(src, Source64, true); + s64 = _tuple[0]; + return new Rand.ptr(src, s64, new $Int64(0, 0), 0); + }; + $pkg.New = New; + $ptrType(Rand).prototype.Seed = function Seed$2(seed) { + var {_tuple, lk, ok, r, seed, $s, $r, $c} = $restore(this, {seed}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _tuple = $assertType(r.src, ptrType$3, true); + lk = _tuple[0]; + ok = _tuple[1]; + if (ok) { + lk.seedPos(seed, (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$4(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); + $s = -1; return; + } + $r = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + r.readPos = 0; + $s = -1; return; + /* */ } return; } var $f = {$blk: Seed$2, $c: true, $r, _tuple, lk, ok, r, seed, $s};return $f; + }; + $ptrType(Rand).prototype.Int63 = function Int63$2() { + var {$24r, _r, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.src.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Int63$2, $c: true, $r, $24r, _r, r, $s};return $f; + }; + $ptrType(Rand).prototype.Uint32 = function Uint32$1() { + var {$24r, _r, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = (($shiftRightInt64(_r, 31).$low >>> 0)); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Uint32$1, $c: true, $r, $24r, _r, r, $s};return $f; + }; + $ptrType(Rand).prototype.Uint64 = function Uint64$3() { + var {$24r, $24r$1, _r, _r$1, _r$2, r, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + /* */ if (!($interfaceIsEqual(r.s64, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(r.s64, $ifaceNil))) { */ case 1: + _r = r.s64.Uint64(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = r.Int63(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = r.Int63(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = (x = $shiftRightUint64(((x$1 = _r$1, new $Uint64(x$1.$high, x$1.$low))), 31), x$2 = $shiftLeft64(((x$3 = _r$2, new $Uint64(x$3.$high, x$3.$low))), 32), new $Uint64(x.$high | x$2.$high, (x.$low | x$2.$low) >>> 0)); + $s = 7; case 7: return $24r$1; + /* */ } return; } var $f = {$blk: Uint64$3, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, r, x, x$1, x$2, x$3, $s};return $f; + }; + $ptrType(Rand).prototype.Int31 = function Int31$1() { + var {$24r, _r, r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = (((x = $shiftRightInt64(_r, 32), x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Int31$1, $c: true, $r, $24r, _r, r, x, $s};return $f; + }; + $ptrType(Rand).prototype.Int = function Int$1() { + var {_r, r, u, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + u = ((_r.$low >>> 0)); + $s = -1; return ((((u << 1 >>> 0) >>> 1 >>> 0) >> 0)); + /* */ } return; } var $f = {$blk: Int$1, $c: true, $r, _r, r, u, $s};return $f; + }; + $ptrType(Rand).prototype.Int63n = function Int63n$1(n) { + var {$24r, _r, _r$1, _r$2, max, n, r, v, x, x$1, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if ((n.$high < 0 || (n.$high === 0 && n.$low <= 0))) { + $panic(new $String("invalid argument to Int63n")); + } + /* */ if ((x = (x$1 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(n.$high & x$1.$high, (n.$low & x$1.$low) >>> 0)), (x.$high === 0 && x.$low === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((x = (x$1 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(n.$high & x$1.$high, (n.$low & x$1.$low) >>> 0)), (x.$high === 0 && x.$low === 0))) { */ case 1: + _r = r.Int63(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = (x$2 = _r, x$3 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0)); + $s = 4; case 4: return $24r; + /* } */ case 2: + max = ((x$4 = (x$5 = $div64(new $Uint64(2147483648, 0), (new $Uint64(n.$high, n.$low)), true), new $Uint64(2147483647 - x$5.$high, 4294967295 - x$5.$low)), new $Int64(x$4.$high, x$4.$low))); + _r$1 = r.Int63(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v = _r$1; + /* while (true) { */ case 6: + /* if (!((v.$high > max.$high || (v.$high === max.$high && v.$low > max.$low)))) { break; } */ if(!((v.$high > max.$high || (v.$high === max.$high && v.$low > max.$low)))) { $s = 7; continue; } + _r$2 = r.Int63(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v = _r$2; + $s = 6; continue; + case 7: + $s = -1; return $div64(v, n, true); + /* */ } return; } var $f = {$blk: Int63n$1, $c: true, $r, $24r, _r, _r$1, _r$2, max, n, r, v, x, x$1, x$2, x$3, x$4, x$5, $s};return $f; + }; + $ptrType(Rand).prototype.Int31n = function Int31n$1(n) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, max, n, r, v, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if (n <= 0) { + $panic(new $String("invalid argument to Int31n")); + } + /* */ if ((n & ((n - 1 >> 0))) === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((n & ((n - 1 >> 0))) === 0) { */ case 1: + _r = r.Int31(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r & ((n - 1 >> 0)); + $s = 4; case 4: return $24r; + /* } */ case 2: + max = (((2147483647 - (_r$1 = 2147483648 % ((n >>> 0)), _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >>> 0) >> 0)); + _r$2 = r.Int31(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v = _r$2; + /* while (true) { */ case 6: + /* if (!(v > max)) { break; } */ if(!(v > max)) { $s = 7; continue; } + _r$3 = r.Int31(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + v = _r$3; + $s = 6; continue; + case 7: + $s = -1; return (_r$4 = v % n, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")); + /* */ } return; } var $f = {$blk: Int31n$1, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, max, n, r, v, $s};return $f; + }; + $ptrType(Rand).prototype.int31n = function int31n(n) { + var {_r, _r$1, _r$2, low, n, prod, r, thresh, v, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.Uint32(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + prod = $mul64((new $Uint64(0, v)), (new $Uint64(0, n))); + low = ((prod.$low >>> 0)); + /* */ if (low < ((n >>> 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (low < ((n >>> 0))) { */ case 2: + thresh = (_r$1 = ((-n >>> 0)) % ((n >>> 0)), _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")); + /* while (true) { */ case 4: + /* if (!(low < thresh)) { break; } */ if(!(low < thresh)) { $s = 5; continue; } + _r$2 = r.Uint32(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + v = _r$2; + prod = $mul64((new $Uint64(0, v)), (new $Uint64(0, n))); + low = ((prod.$low >>> 0)); + $s = 4; continue; + case 5: + /* } */ case 3: + $s = -1; return (($shiftRightUint64(prod, 32).$low >> 0)); + /* */ } return; } var $f = {$blk: int31n, $c: true, $r, _r, _r$1, _r$2, low, n, prod, r, thresh, v, $s};return $f; + }; + $ptrType(Rand).prototype.Intn = function Intn$1(n) { + var {$24r, $24r$1, _r, _r$1, n, r, x, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if (n <= 0) { + $panic(new $String("invalid argument to Intn")); + } + /* */ if (n <= 2147483647) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n <= 2147483647) { */ case 1: + _r = r.Int31n(((n >> 0))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = ((_r >> 0)); + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = r.Int63n((new $Int64(0, n))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = (((x = _r$1, x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: Intn$1, $c: true, $r, $24r, $24r$1, _r, _r$1, n, r, x, $s};return $f; + }; + $ptrType(Rand).prototype.Float64 = function Float64$1() { + var {_r, f, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + /* again: */ case 1: + _r = r.Int63(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + f = ($flatten64(_r)) / 9.223372036854776e+18; + /* */ if (f === 1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (f === 1) { */ case 3: + /* goto again */ $s = 1; continue; + /* } */ case 4: + $s = -1; return f; + /* */ } return; } var $f = {$blk: Float64$1, $c: true, $r, _r, f, r, $s};return $f; + }; + $ptrType(Rand).prototype.Float32 = function Float32$1() { + var {_r, f, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + /* again: */ case 1: + _r = r.Float64(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + f = ($fround(_r)); + /* */ if (f === 1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (f === 1) { */ case 3: + /* goto again */ $s = 1; continue; + /* } */ case 4: + $s = -1; return f; + /* */ } return; } var $f = {$blk: Float32$1, $c: true, $r, _r, f, r, $s};return $f; + }; + $ptrType(Rand).prototype.Perm = function Perm$1(n) { + var {_r, i, j, m, n, r, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + m = $makeSlice(sliceType, n); + i = 0; + /* while (true) { */ case 1: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } + _r = r.Intn(i + 1 >> 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + j = _r; + ((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i] = ((j < 0 || j >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + j])); + ((j < 0 || j >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + j] = i); + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return m; + /* */ } return; } var $f = {$blk: Perm$1, $c: true, $r, _r, i, j, m, n, r, $s};return $f; + }; + $ptrType(Rand).prototype.Shuffle = function Shuffle$1(n, swap) { + var {_r, _r$1, i, j, j$1, n, r, swap, x, $s, $r, $c} = $restore(this, {n, swap}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if (n < 0) { + $panic(new $String("invalid argument to Shuffle")); + } + i = n - 1 >> 0; + /* while (true) { */ case 1: + /* if (!(i > 2147483646)) { break; } */ if(!(i > 2147483646)) { $s = 2; continue; } + _r = r.Int63n((new $Int64(0, (i + 1 >> 0)))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + j = (((x = _r, x.$low + ((x.$high >> 31) * 4294967296)) >> 0)); + $r = swap(i, j); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i - (1) >> 0; + $s = 1; continue; + case 2: + /* while (true) { */ case 5: + /* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 6; continue; } + _r$1 = r.int31n((((i + 1 >> 0) >> 0))); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + j$1 = ((_r$1 >> 0)); + $r = swap(i, j$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i - (1) >> 0; + $s = 5; continue; + case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: Shuffle$1, $c: true, $r, _r, _r$1, i, j, j$1, n, r, swap, x, $s};return $f; + }; + $ptrType(Rand).prototype.Read = function Read$1(p) { + var {$24r, $24r$1, _r, _r$1, _tuple, _tuple$1, _tuple$2, err, lk, n, ok, p, r, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + r = this; + _tuple = $assertType(r.src, ptrType$3, true); + lk = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = lk.read(p, (r.$ptr_readVal || (r.$ptr_readVal = new ptrType$5(function() { return this.$target.readVal; }, function($v) { this.$target.readVal = $v; }, r))), (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$4(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + n = _tuple$1[0]; + err = _tuple$1[1]; + $24r = [n, err]; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = read(p, r.src, (r.$ptr_readVal || (r.$ptr_readVal = new ptrType$5(function() { return this.$target.readVal; }, function($v) { this.$target.readVal = $v; }, r))), (r.$ptr_readPos || (r.$ptr_readPos = new ptrType$4(function() { return this.$target.readPos; }, function($v) { this.$target.readPos = $v; }, r)))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$2 = _r$1; + n = _tuple$2[0]; + err = _tuple$2[1]; + $24r$1 = [n, err]; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: Read$1, $c: true, $r, $24r, $24r$1, _r, _r$1, _tuple, _tuple$1, _tuple$2, err, lk, n, ok, p, r, $s};return $f; + }; + read = function read$1(p, src, readVal, readPos) { + var {_r, _tuple, err, n, p, pos, readPos, readVal, rng, src, val, $s, $r, $c} = $restore(this, {p, src, readVal, readPos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + pos = readPos.$get(); + val = readVal.$get(); + _tuple = $assertType(src, ptrType, true); + rng = _tuple[0]; + n = 0; + /* while (true) { */ case 1: + /* if (!(n < p.$length)) { break; } */ if(!(n < p.$length)) { $s = 2; continue; } + /* */ if (pos === 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (pos === 0) { */ case 3: + /* */ if (!(rng === ptrType.nil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(rng === ptrType.nil)) { */ case 5: + val = rng.Int63(); + $s = 7; continue; + /* } else { */ case 6: + _r = src.Int63(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + val = _r; + /* } */ case 7: + pos = 7; + /* } */ case 4: + ((n < 0 || n >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + n] = ((val.$low << 24 >>> 24))); + val = $shiftRightInt64(val, (8)); + pos = pos - (1) << 24 >> 24; + n = n + (1) >> 0; + $s = 1; continue; + case 2: + readPos.$set(pos); + readVal.$set(val); + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: read$1, $c: true, $r, _r, _tuple, err, n, p, pos, readPos, readVal, rng, src, val, $s};return $f; + }; + Seed = function Seed$3(seed) { + var {seed, $s, $r, $c} = $restore(this, {seed}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = globalRand.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Seed$3, $c: true, $r, seed, $s};return $f; + }; + $pkg.Seed = Seed; + Intn = function Intn$2(n) { + var {$24r, _r, n, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = globalRand.Intn(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Intn$2, $c: true, $r, $24r, _r, n, $s};return $f; + }; + $pkg.Intn = Intn; + Float64 = function Float64$2() { + var {$24r, _r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = globalRand.Float64(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Float64$2, $c: true, $r, $24r, _r, $s};return $f; + }; + $pkg.Float64 = Float64; + Read = function Read$2(p) { + var {$24r, _r, _tuple, err, n, p, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + _r = globalRand.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r = [n, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Read$2, $c: true, $r, $24r, _r, _tuple, err, n, p, $s};return $f; + }; + $pkg.Read = Read; + $ptrType(lockedSource).prototype.source = function source() { + var {_r, _r$1, r, seed, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + /* */ if (r.s === ptrType.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (r.s === ptrType.nil) { */ case 1: + seed = new $Int64(0, 0); + _r = randautoseed.Value(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === "0") { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r === "0") { */ case 3: + seed = new $Int64(0, 1); + $s = 5; continue; + /* } else { */ case 4: + _r$1 = fastrand64(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + seed = ((x = _r$1, new $Int64(x.$high, x.$low))); + /* } */ case 5: + r.s = newSource(seed); + /* } */ case 2: + $s = -1; return r.s; + /* */ } return; } var $f = {$blk: source, $c: true, $r, _r, _r$1, r, seed, x, $s};return $f; + }; + $ptrType(lockedSource).prototype.Int63 = function Int63$4() { + var {_r, _r$1, n, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = new $Int64(0, 0); + r = this; + r.lk.Lock(); + _r = r.source(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.Int63(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + n = _r$1; + r.lk.Unlock(); + $s = -1; return n; + /* */ } return; } var $f = {$blk: Int63$4, $c: true, $r, _r, _r$1, n, r, $s};return $f; + }; + $ptrType(lockedSource).prototype.Uint64 = function Uint64$5() { + var {_r, _r$1, n, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = new $Uint64(0, 0); + r = this; + r.lk.Lock(); + _r = r.source(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.Uint64(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + n = _r$1; + r.lk.Unlock(); + $s = -1; return n; + /* */ } return; } var $f = {$blk: Uint64$5, $c: true, $r, _r, _r$1, n, r, $s};return $f; + }; + $ptrType(lockedSource).prototype.Seed = function Seed$4(seed) { + var r, seed; + r = this; + r.lk.Lock(); + r.seed(seed); + r.lk.Unlock(); + }; + $ptrType(lockedSource).prototype.seedPos = function seedPos(seed, readPos) { + var r, readPos, seed; + r = this; + r.lk.Lock(); + r.seed(seed); + readPos.$set(0); + r.lk.Unlock(); + }; + $ptrType(lockedSource).prototype.seed = function seed(seed$1) { + var r, seed$1; + r = this; + if (r.s === ptrType.nil) { + r.s = newSource(seed$1); + } else { + r.s.Seed(seed$1); + } + }; + $ptrType(lockedSource).prototype.read = function read$2(p, readVal, readPos) { + var {_arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _tuple, err, n, p, r, readPos, readVal, $s, $r, $c} = $restore(this, {p, readVal, readPos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + r = this; + r.lk.Lock(); + _arg = p; + _r = r.source(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + _arg$2 = readVal; + _arg$3 = readPos; + _r$1 = read(_arg, _arg$1, _arg$2, _arg$3); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + n = _tuple[0]; + err = _tuple[1]; + r.lk.Unlock(); + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: read$2, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _tuple, err, n, p, r, readPos, readVal, $s};return $f; + }; + absInt32 = function absInt32$1(i) { + var i; + if (i < 0) { + return ((-i >>> 0)); + } + return ((i >>> 0)); + }; + $ptrType(Rand).prototype.NormFloat64 = function NormFloat64$2() { + var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, i, j, r, x, x$1, y, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + /* while (true) { */ case 1: + _r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + j = ((_r >> 0)); + i = j & 127; + x = (j) * (((i < 0 || i >= wn.length) ? ($throwRuntimeError("index out of range"), undefined) : wn[i])); + if (absInt32(j) < ((i < 0 || i >= kn.length) ? ($throwRuntimeError("index out of range"), undefined) : kn[i])) { + $s = -1; return x; + } + /* */ if (i === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (i === 0) { */ case 4: + /* while (true) { */ case 6: + _r$1 = r.Float64(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = math.Log(_r$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = -_r$2 * 0.29047645161474317; + _r$3 = r.Float64(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = math.Log(_r$3); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + y = -_r$4; + if (y + y >= x * x) { + /* break; */ $s = 7; continue; + } + $s = 6; continue; + case 7: + if (j > 0) { + $s = -1; return 3.442619855899 + x; + } + $s = -1; return -3.442619855899 - x; + /* } */ case 5: + _r$5 = r.Float64(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if ($fround(((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]) + $fround(($fround(_r$5)) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[x$1])) - ((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]))))) < ($fround(math.Exp(-0.5 * x * x)))) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ($fround(((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]) + $fround(($fround(_r$5)) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[x$1])) - ((i < 0 || i >= fn.length) ? ($throwRuntimeError("index out of range"), undefined) : fn[i]))))) < ($fround(math.Exp(-0.5 * x * x)))) { */ case 12: + $s = -1; return x; + /* } */ case 13: + $s = 1; continue; + case 2: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: NormFloat64$2, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, i, j, r, x, x$1, y, $s};return $f; + }; + fastrand64 = function() { + $throwRuntimeError("native function not implemented: math/rand.fastrand64"); + }; + $ptrType(Rand).prototype.ExpFloat64 = function ExpFloat64$2() { + var {$24r, _r, _r$1, _r$2, _r$3, i, j, r, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + /* while (true) { */ case 1: + _r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + j = _r; + i = (j & 255) >>> 0; + x = (j) * (((i < 0 || i >= we.length) ? ($throwRuntimeError("index out of range"), undefined) : we[i])); + if (j < ((i < 0 || i >= ke.length) ? ($throwRuntimeError("index out of range"), undefined) : ke[i])) { + $s = -1; return x; + } + /* */ if (i === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (i === 0) { */ case 4: + _r$1 = r.Float64(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = math.Log(_r$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = 7.69711747013105 - _r$2; + $s = 8; case 8: return $24r; + /* } */ case 5: + _r$3 = r.Float64(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if ($fround(((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]) + $fround(($fround(_r$3)) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[x$1])) - ((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]))))) < ($fround(math.Exp(-x)))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ($fround(((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]) + $fround(($fround(_r$3)) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[x$1])) - ((i < 0 || i >= fe.length) ? ($throwRuntimeError("index out of range"), undefined) : fe[i]))))) < ($fround(math.Exp(-x)))) { */ case 9: + $s = -1; return x; + /* } */ case 10: + $s = 1; continue; + case 2: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: ExpFloat64$2, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, i, j, r, x, x$1, $s};return $f; + }; + ptrType.methods = [{prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}]; + ptrType$1.methods = [{prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Int31", name: "Int31", pkg: "", typ: $funcType([], [$Int32], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Int63n", name: "Int63n", pkg: "", typ: $funcType([$Int64], [$Int64], false)}, {prop: "Int31n", name: "Int31n", pkg: "", typ: $funcType([$Int32], [$Int32], false)}, {prop: "int31n", name: "int31n", pkg: "math/rand", typ: $funcType([$Int32], [$Int32], false)}, {prop: "Intn", name: "Intn", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Float32", name: "Float32", pkg: "", typ: $funcType([], [$Float32], false)}, {prop: "Perm", name: "Perm", pkg: "", typ: $funcType([$Int], [sliceType], false)}, {prop: "Shuffle", name: "Shuffle", pkg: "", typ: $funcType([$Int, funcType], [], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "NormFloat64", name: "NormFloat64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "ExpFloat64", name: "ExpFloat64", pkg: "", typ: $funcType([], [$Float64], false)}]; + ptrType$3.methods = [{prop: "source", name: "source", pkg: "math/rand", typ: $funcType([], [ptrType], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "seedPos", name: "seedPos", pkg: "math/rand", typ: $funcType([$Int64, ptrType$4], [], false)}, {prop: "seed", name: "seed", pkg: "math/rand", typ: $funcType([$Int64], [], false)}, {prop: "read", name: "read", pkg: "math/rand", typ: $funcType([sliceType$1, ptrType$5, ptrType$4], [$Int, $error], false)}]; + rngSource.init("math/rand", [{prop: "tap", name: "tap", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "feed", name: "feed", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "vec", name: "vec", embedded: false, exported: false, typ: arrayType, tag: ""}]); + Source.init([{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}]); + Source64.init([{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}]); + Rand.init("math/rand", [{prop: "src", name: "src", embedded: false, exported: false, typ: Source, tag: ""}, {prop: "s64", name: "s64", embedded: false, exported: false, typ: Source64, tag: ""}, {prop: "readVal", name: "readVal", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "readPos", name: "readPos", embedded: false, exported: false, typ: $Int8, tag: ""}]); + lockedSource.init("math/rand", [{prop: "lk", name: "lk", embedded: false, exported: false, typ: nosync.Mutex, tag: ""}, {prop: "s", name: "s", embedded: false, exported: false, typ: ptrType, tag: ""}]); + $pkg.$initLinknames = function() { + fastrand64 = $linknames["runtime.fastrand64"]; + }; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = nosync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = godebug.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + rngCooked = $toNativeArray($kindInt64, [new $Int64(-973649357, 3952672746), new $Int64(-1065661887, 3130416987), new $Int64(324977939, 3414273807), new $Int64(1241840476, 2806224363), new $Int64(-1477934308, 1997590414), new $Int64(2103305448, 2402795971), new $Int64(1663160183, 1140819369), new $Int64(1120601685, 1788868961), new $Int64(1848035537, 1089001426), new $Int64(1235702047, 873593504), new $Int64(1911387977, 581324885), new $Int64(-1654874170, 1609182556), new $Int64(1069394745, 1241596776), new $Int64(1895445337, 1771189259), new $Int64(-1374618802, 3467012610), new $Int64(-140526423, 2344407434), new $Int64(-1745367887, 782467244), new $Int64(26335124, 3404933915), new $Int64(1063924276, 618867887), new $Int64(-968700782, 520164395), new $Int64(-1591572833, 1341358184), new $Int64(-1515085039, 665794848), new $Int64(1527227641, 3183648150), new $Int64(1781176124, 696329606), new $Int64(1789146075, 4151988961), new $Int64(-2087444114, 998951326), new $Int64(-612324923, 1364957564), new $Int64(63173359, 4090230633), new $Int64(-1498029007, 4009697548), new $Int64(248009524, 2569622517), new $Int64(778703922, 3742421481), new $Int64(-1109106023, 1506914633), new $Int64(1738099768, 1983412561), new $Int64(236311649, 1436266083), new $Int64(-1111517500, 3922894967), new $Int64(-1336974714, 1792680179), new $Int64(563141142, 1188796351), new $Int64(1349617468, 405968250), new $Int64(1044074554, 433754187), new $Int64(870549669, 4073162024), new $Int64(-1094251604, 433121399), new $Int64(2451824, 4162580594), new $Int64(-137262572, 4132415622), new $Int64(-1536231048, 3033822028), new $Int64(2016407895, 824682382), new $Int64(2366218, 3583765414), new $Int64(-624604839, 535386927), new $Int64(1637219058, 2286693689), new $Int64(1453075389, 2968466525), new $Int64(193683513, 1351410206), new $Int64(-283806096, 1412813499), new $Int64(492736522, 4126267639), new $Int64(512765208, 2105529399), new $Int64(2132966268, 2413882233), new $Int64(947457634, 32226200), new $Int64(1149341356, 2032329073), new $Int64(106485445, 1356518208), new $Int64(-2067810156, 3430061722), new $Int64(-1484435135, 3820169661), new $Int64(-1665985194, 2981816134), new $Int64(1017155588, 4184371017), new $Int64(206574701, 2119206761), new $Int64(-852109057, 2472200560), new $Int64(-560457548, 2853524696), new $Int64(1307803389, 1681119904), new $Int64(-174986835, 95608918), new $Int64(392686347, 3690479145), new $Int64(-1205570926, 1397922290), new $Int64(-1159314025, 1516129515), new $Int64(-320178155, 1547420459), new $Int64(1311333971, 1470949486), new $Int64(-1953469798, 1336785672), new $Int64(-45086614, 4131677129), new $Int64(-1392278100, 4246329084), new $Int64(-1142500187, 3788585631), new $Int64(-66478285, 3080389532), new $Int64(-646438364, 2215402037), new $Int64(391002300, 1171593935), new $Int64(1408774047, 1423855166), new $Int64(-519177718, 2276716302), new $Int64(-368453140, 2068027241), new $Int64(1369359303, 3427553297), new $Int64(189241615, 3289637845), new $Int64(1057480830, 3486407650), new $Int64(-1512910664, 3071877822), new $Int64(1159653919, 3363620705), new $Int64(-934256930, 4159821533), new $Int64(-76621938, 1894661), new $Int64(-674493898, 1156868282), new $Int64(348271067, 776219088), new $Int64(-501428838, 2425634259), new $Int64(1716021749, 680510161), new $Int64(-574263456, 1310101429), new $Int64(1095885995, 2964454134), new $Int64(-325695512, 3467098407), new $Int64(1990672920, 2109628894), new $Int64(-2139648704, 1232604732), new $Int64(-1838070714, 3261916179), new $Int64(1699175360, 434597899), new $Int64(235436061, 1624796439), new $Int64(-1626402839, 3589632480), new $Int64(1198416575, 864579159), new $Int64(-1938748161, 1380889830), new $Int64(619206309, 2654509477), new $Int64(1419738251, 1468209306), new $Int64(-1744284772, 100794388), new $Int64(-1191421458, 2991674471), new $Int64(-208666741, 2224662036), new $Int64(-173659161, 977097250), new $Int64(1351320195, 726419512), new $Int64(-183459897, 1747974366), new $Int64(-753095183, 1556430604), new $Int64(-1049492215, 1080776742), new $Int64(-385846958, 280794874), new $Int64(117767733, 919835643), new $Int64(-967009426, 3434019658), new $Int64(-1951414480, 2461941785), new $Int64(133215641, 3615001066), new $Int64(417204809, 3103414427), new $Int64(790056561, 3380809712), new $Int64(-1267681408, 2724693469), new $Int64(547796833, 598827710), new $Int64(-1846559452, 3452273442), new $Int64(-75778224, 649274915), new $Int64(-801301329, 2585724112), new $Int64(-1510934263, 3165579553), new $Int64(1185578221, 2635894283), new $Int64(-52910178, 2053289721), new $Int64(985976581, 3169337108), new $Int64(1170569632, 144717764), new $Int64(1079216270, 1383666384), new $Int64(-124804942, 681540375), new $Int64(1375448925, 537050586), new $Int64(-1964768344, 315246468), new $Int64(226402871, 849323088), new $Int64(-885062465, 45543944), new $Int64(-946445250, 2319052083), new $Int64(-40708194, 3613090841), new $Int64(560472520, 2992171180), new $Int64(-381863169, 2068244785), new $Int64(917538188, 4239862634), new $Int64(-1369555809, 3892253031), new $Int64(720683925, 958186149), new $Int64(-423297785, 1877702262), new $Int64(1357886971, 837674867), new $Int64(1837048883, 1507589294), new $Int64(1905518400, 873336795), new $Int64(-1879761037, 2764496274), new $Int64(-1806480530, 4196182374), new $Int64(-1066765755, 550964545), new $Int64(818747069, 420611474), new $Int64(-1924830376, 204265180), new $Int64(1549974541, 1787046383), new $Int64(1215581865, 3102292318), new $Int64(418321538, 1552199393), new $Int64(1243493047, 980542004), new $Int64(267284263, 3293718720), new $Int64(1179528763, 3771917473), new $Int64(599484404, 2195808264), new $Int64(252818753, 3894702887), new $Int64(-1367475956, 2099949527), new $Int64(1424094358, 338442522), new $Int64(490737398, 637158004), new $Int64(-1727621530, 281976339), new $Int64(574970164, 3619802330), new $Int64(-431930823, 3084554784), new $Int64(-1264611183, 4129772886), new $Int64(-2104399043, 1680378557), new $Int64(-1621962591, 3339087776), new $Int64(1680500332, 4220317857), new $Int64(-1935828963, 2959322499), new $Int64(1675600481, 1488354890), new $Int64(-834863562, 3958162143), new $Int64(-1226511573, 2773705983), new $Int64(1876039582, 225908689), new $Int64(-1183735113, 908216283), new $Int64(-605696219, 3574646075), new $Int64(-1827723091, 1936937569), new $Int64(1519770881, 75492235), new $Int64(816689472, 1935193178), new $Int64(2142521206, 2018250883), new $Int64(455141620, 3943126022), new $Int64(-601399488, 3066544345), new $Int64(1932392669, 2793082663), new $Int64(-1239009361, 3297036421), new $Int64(1640597065, 2206987825), new $Int64(-553246738, 807894872), new $Int64(-1781325307, 766252117), new $Int64(2060649606, 3833114345), new $Int64(845619743, 1255067973), new $Int64(1201145605, 741697208), new $Int64(-1476242608, 2810093753), new $Int64(1109032642, 4229340371), new $Int64(1462188720, 1361684224), new $Int64(-1159399429, 1906263026), new $Int64(475781207, 3904421704), new $Int64(-623537128, 1769075545), new $Int64(1062308525, 2621599764), new $Int64(1279509432, 3431891480), new $Int64(-1742751146, 1871896503), new $Int64(128756421, 1412808876), new $Int64(1605404688, 952876175), new $Int64(-230443691, 1824438899), new $Int64(1662295856, 1005035476), new $Int64(-156574141, 527508597), new $Int64(1288873303, 3066806859), new $Int64(565995893, 3244940914), new $Int64(-889746188, 209092916), new $Int64(-247669406, 1242699167), new $Int64(-713830396, 456723774), new $Int64(1776978905, 1001252870), new $Int64(1468772157, 2026725874), new $Int64(857254202, 2137562569), new $Int64(765939740, 3183366709), new $Int64(1533887628, 2612072960), new $Int64(56977098, 1727148468), new $Int64(-1197583895, 3803658212), new $Int64(1883670356, 479946959), new $Int64(685713571, 1562982345), new $Int64(-1946242443, 1766109365), new $Int64(700596547, 3257093788), new $Int64(-184714929, 2365720207), new $Int64(93384808, 3742754173), new $Int64(-458385235, 2878193673), new $Int64(1096135042, 2174002182), new $Int64(-834260953, 3573511231), new $Int64(-754572527, 1760299077), new $Int64(-1375627191, 2260779833), new $Int64(-866019274, 1452805722), new $Int64(-1229671918, 2940011802), new $Int64(1890251082, 1886183802), new $Int64(893897673, 2514369088), new $Int64(1644345561, 3924317791), new $Int64(-1974867432, 500935732), new $Int64(1403501753, 676580929), new $Int64(-1565912283, 1184984890), new $Int64(-691968413, 1271474274), new $Int64(-1828754738, 3163791473), new $Int64(2051027584, 2842487377), new $Int64(1511537551, 2170968612), new $Int64(573262976, 3535856740), new $Int64(-2053227187, 1488599718), new $Int64(-1180531831, 3408913763), new $Int64(-2086531912, 2501050084), new $Int64(-875130448, 1639124157), new $Int64(-2009482504, 4088176393), new $Int64(1574896563, 3989947576), new $Int64(-165243708, 3414355209), new $Int64(-792329287, 2275136352), new $Int64(-2057774345, 2151835223), new $Int64(-931144933, 1654534827), new $Int64(-679921451, 377892833), new $Int64(-482716010, 660204544), new $Int64(85706799, 390828249), new $Int64(-1422172693, 3402783878), new $Int64(-1468634160, 3717936603), new $Int64(1113532086, 2211058823), new $Int64(1564224320, 2692150867), new $Int64(1952770442, 1928910388), new $Int64(788716862, 3931011137), new $Int64(1083670504, 1112701047), new $Int64(-68150572, 2452299106), new $Int64(-896164822, 2337204777), new $Int64(1774877857, 273889282), new $Int64(1798719843, 1462008793), new $Int64(2138834788, 1554494002), new $Int64(-1194967131, 182675323), new $Int64(-1598554764, 1882802136), new $Int64(589279648, 3700220025), new $Int64(381039426, 3083431543), new $Int64(-851859191, 3622207527), new $Int64(338126939, 432729309), new $Int64(-1667470126, 2391914317), new $Int64(-1849558151, 235747924), new $Int64(2120733629, 3088823825), new $Int64(-745079795, 2314658321), new $Int64(1165929723, 2957634338), new $Int64(501323675, 4117056981), new $Int64(1564699815, 1482500298), new $Int64(-740826490, 840489337), new $Int64(799522364, 3483178565), new $Int64(532129761, 2074004656), new $Int64(724246478, 3643392642), new $Int64(-665153481, 1583624461), new $Int64(-885822954, 287473085), new $Int64(1667835381, 3136843981), new $Int64(1138806821, 1266970974), new $Int64(135185781, 1998688839), new $Int64(392094735, 1492900209), new $Int64(1031326774, 1538112737), new $Int64(-2070568842, 2207265429), new $Int64(-1886797613, 963263315), new $Int64(1671145500, 2295892134), new $Int64(1068469660, 2002560897), new $Int64(-356250305, 1369254035), new $Int64(33436120, 3353312708), new $Int64(57507843, 947771099), new $Int64(-1945755145, 1747061399), new $Int64(1507240140, 2047354631), new $Int64(720000810, 4165367136), new $Int64(479265078, 3388864963), new $Int64(-952181250, 286492130), new $Int64(2045622690, 2795735007), new $Int64(-715730566, 3703961339), new $Int64(-148436487, 1797825479), new $Int64(1429039600, 1116589674), new $Int64(-1665420098, 2593309206), new $Int64(1329049334, 3404995677), new $Int64(-750579440, 3453462936), new $Int64(1014767077, 3016498634), new $Int64(75698599, 1650371545), new $Int64(1592007860, 212344364), new $Int64(1127766888, 3843932156), new $Int64(-748019856, 3573129983), new $Int64(-890581831, 665897820), new $Int64(1071492673, 1675628772), new $Int64(243225682, 2831752928), new $Int64(2120298836, 1486294219), new $Int64(-1954407413, 268782709), new $Int64(-1002123503, 4186179080), new $Int64(624342951, 1613720397), new $Int64(857179861, 2703686015), new $Int64(-911618704, 2205342611), new $Int64(-672703993, 1411666394), new $Int64(-1528454899, 677744900), new $Int64(-1876628533, 4172867247), new $Int64(135494707, 2163418403), new $Int64(849547544, 2841526879), new $Int64(-1117516959, 1082141470), new $Int64(-1770111792, 4046134367), new $Int64(51415528, 2142943655), new $Int64(-249824333, 3124627521), new $Int64(998228909, 219992939), new $Int64(-1078790951, 1756846531), new $Int64(1283749206, 1225118210), new $Int64(-525858006, 1647770243), new $Int64(-2035959705, 444807907), new $Int64(2036369448, 3952076173), new $Int64(53201823, 1461839639), new $Int64(315761893, 3699250910), new $Int64(702974850, 1373688981), new $Int64(734022261, 147523747), new $Int64(-2047330906, 1211276581), new $Int64(1294440951, 2548832680), new $Int64(1144696256, 1995631888), new $Int64(-1992983070, 2011457303), new $Int64(-1351022674, 3057425772), new $Int64(667839456, 81484597), new $Int64(-1681980888, 3646681560), new $Int64(-1372462725, 635548515), new $Int64(602489502, 2508044581), new $Int64(-1794220117, 1014917157), new $Int64(719992433, 3214891315), new $Int64(-1294799037, 959582252), new $Int64(226415134, 3347040449), new $Int64(-362868096, 4102971975), new $Int64(397887437, 4078022210), new $Int64(-536803826, 2851767182), new $Int64(-1398321012, 1540160644), new $Int64(-1549098876, 1057290595), new $Int64(-112592988, 3907769253), new $Int64(579300318, 4248952684), new $Int64(-1054576049, 132554364), new $Int64(-1085862414, 1029351092), new $Int64(697840928, 2583007416), new $Int64(298619124, 1486185789), new $Int64(55905697, 2871589073), new $Int64(2017643612, 723203291), new $Int64(146250550, 2494333952), new $Int64(-1082993397, 2230939180), new $Int64(-1804568072, 3943232912), new $Int64(1768732449, 2181367922), new $Int64(-729261111, 2889274791), new $Int64(1824032949, 2046728161), new $Int64(1653899792, 1376052477), new $Int64(1022327048, 381236993), new $Int64(-1113097690, 3188942166), new $Int64(-74480109, 350070824), new $Int64(144881592, 61758415), new $Int64(-741824226, 3492950336), new $Int64(-2030042720, 3093818430), new $Int64(-453590535, 2962480613), new $Int64(-1912050708, 3154871160), new $Int64(-1636478569, 3228564679), new $Int64(610731502, 888276216), new $Int64(-946702974, 3574998604), new $Int64(-1277068380, 1967526716), new $Int64(-1556147941, 1554691298), new $Int64(-1573024234, 339944798), new $Int64(1223764147, 1154515356), new $Int64(1825645307, 967516237), new $Int64(1546195135, 596588202), new $Int64(-1867600880, 3764362170), new $Int64(-1655392592, 266611402), new $Int64(-393255880, 2047856075), new $Int64(-1000726433, 21444105), new $Int64(-949424754, 3065563181), new $Int64(-232418803, 1140663212), new $Int64(633187674, 2323741028), new $Int64(2126290159, 3103873707), new $Int64(1008658319, 2766828349), new $Int64(-485587503, 1970872996), new $Int64(1628585413, 3766615585), new $Int64(-595148528, 2036813414), new $Int64(-1994877121, 3105536507), new $Int64(13954645, 3396176938), new $Int64(-721402003, 1377154485), new $Int64(-61839181, 3807014186), new $Int64(543009040, 3710110597), new $Int64(-1751425519, 916420443), new $Int64(734556788, 2103831255), new $Int64(-1766161494, 717331943), new $Int64(-1574598896, 3550505941), new $Int64(45939673, 378749927), new $Int64(-1997615719, 611017331), new $Int64(592130075, 758907650), new $Int64(1012992349, 154266815), new $Int64(-1040454942, 1407468696), new $Int64(-1678191250, 970098704), new $Int64(-285057486, 1971660656), new $Int64(998365243, 3332747885), new $Int64(1947089649, 1935189867), new $Int64(1510248801, 203520055), new $Int64(-1305165746, 3916463034), new $Int64(-388598655, 3474113316), new $Int64(1036101639, 316544223), new $Int64(-1773744891, 1650844677), new $Int64(-907191419, 4267565603), new $Int64(-1070275024, 2501167616), new $Int64(-1520651863, 3929401789), new $Int64(-2091360852, 337170252), new $Int64(-960502090, 2061966842), new $Int64(-304190848, 2508461464), new $Int64(-1941471116, 2791377107), new $Int64(1240791848, 1227227588), new $Int64(1813978778, 1709681848), new $Int64(1153692192, 3768820575), new $Int64(-1002297449, 2887126398), new $Int64(-1447111334, 296561685), new $Int64(700300844, 3729960077), new $Int64(-1572311344, 372833036), new $Int64(2078875613, 2409779288), new $Int64(1829161290, 555274064), new $Int64(-1105595719, 4239804901), new $Int64(1839403216, 3723486978), new $Int64(-1649093095, 2145871984), new $Int64(-1582765715, 3565480803), new $Int64(-1568653827, 2197313814), new $Int64(974785092, 3613674566), new $Int64(438638731, 3042093666), new $Int64(-96556264, 3324034321), new $Int64(869420878, 3708873369), new $Int64(946682149, 1698090092), new $Int64(1618900382, 4213940712), new $Int64(-1843479747, 2087477361), new $Int64(-1766167800, 2407950639), new $Int64(-1296225558, 3942568569), new $Int64(-1223900450, 4088074412), new $Int64(723260036, 2964773675), new $Int64(-673921829, 1539178386), new $Int64(1062961552, 2694849566), new $Int64(460977733, 2120273838), new $Int64(-1604570740, 2484608657), new $Int64(880846449, 2956190677), new $Int64(1970902366, 4223313749), new $Int64(662161910, 3502682327), new $Int64(705634754, 4133891139), new $Int64(-1031359300, 1166449596), new $Int64(1038247601, 3362705993), new $Int64(93734798, 3892921029), new $Int64(1876124043, 786869787), new $Int64(1057490746, 1046342263), new $Int64(242763728, 493777327), new $Int64(-853573201, 3304827646), new $Int64(616460742, 125356352), new $Int64(499300063, 74094113), new $Int64(-795586925, 2500816079), new $Int64(-490248444, 514015239), new $Int64(1377565129, 543520454), new $Int64(-2039776725, 3614531153), new $Int64(2056746300, 2356753985), new $Int64(1390062617, 2018141668), new $Int64(131272971, 2087974891), new $Int64(-1502927041, 3166972343), new $Int64(372256200, 1517638666), new $Int64(-935275664, 173466846), new $Int64(-695774461, 4241513471), new $Int64(-1413550842, 2783126920), new $Int64(1972004134, 4167264826), new $Int64(29260506, 3907395640), new $Int64(-910901561, 1539634186), new $Int64(-595957298, 178241987), new $Int64(-113277636, 182168164), new $Int64(-1102530459, 2386154934), new $Int64(1379126408, 4077374341), new $Int64(-2114679722, 1732699140), new $Int64(-421057745, 1041306002), new $Int64(1860414813, 2068001749), new $Int64(1005320202, 3208962910), new $Int64(844054010, 697710380), new $Int64(-1509359403, 2228431183), new $Int64(-810313977, 3554678728), new $Int64(-750989047, 173470263), new $Int64(-85886265, 3848297795), new $Int64(-926936977, 246236185), new $Int64(-1984190461, 2066374846), new $Int64(1771673660, 312890749), new $Int64(703378057, 3573310289), new $Int64(-598851901, 143166754), new $Int64(613554316, 2081511079), new $Int64(1197802104, 486038032), new $Int64(-1906483789, 2982218564), new $Int64(364901986, 1000939191), new $Int64(1902782651, 2750454885), new $Int64(-671844857, 3375313137), new $Int64(-1643868040, 881302957), new $Int64(-1508784745, 2514186393), new $Int64(-1703622845, 360024739), new $Int64(1399671872, 292500025), new $Int64(1381210821, 2276300752), new $Int64(521803381, 4069087683), new $Int64(-1938982667, 1637778212), new $Int64(720490469, 1676670893), new $Int64(1067262482, 3855174429), new $Int64(2114075974, 2067248671), new $Int64(-89426259, 2884561259), new $Int64(-805741095, 2456511185), new $Int64(983726246, 561175414), new $Int64(-1719489563, 432588903), new $Int64(885133709, 4059399550), new $Int64(-93096266, 1075014784), new $Int64(-1733832628, 2728058415), new $Int64(1839142064, 1299703678), new $Int64(1262333188, 2347583393), new $Int64(1285481956, 2468164145), new $Int64(-1158354011, 1140014346), new $Int64(2033889184, 1936972070), new $Int64(-1737578993, 3870530098), new $Int64(-484494257, 1717789158), new $Int64(-232997156, 1153452491), new $Int64(-990424416, 3948827651), new $Int64(-1357145630, 2101413152), new $Int64(1495744672, 3854091229), new $Int64(83644069, 4215565463), new $Int64(-1385277313, 1202710438), new $Int64(-564909037, 2072216740), new $Int64(705690639, 2066751068), new $Int64(-2113583312, 173902580), new $Int64(-741983806, 142459001), new $Int64(172391592, 1889151926), new $Int64(-498943125, 3034199774), new $Int64(1618587731, 516490102), new $Int64(93114264, 3692577783), new $Int64(-2078821353, 2953948865), new $Int64(-320938673, 4041040923), new $Int64(-1942517976, 592046130), new $Int64(-705643640, 384297211), new $Int64(-2051649464, 265863924), new $Int64(2101717619, 1333136237), new $Int64(1499611781, 1406273556), new $Int64(1074670496, 426305476), new $Int64(125704633, 2750898176), new $Int64(488068495, 1633944332), new $Int64(2037723464, 3236349343), new $Int64(-1703423246, 4013676611), new $Int64(1718532237, 2265047407), new $Int64(1433593806, 875071080), new $Int64(-343047503, 1418843655), new $Int64(2009228711, 451657300), new $Int64(1229446621, 1866374663), new $Int64(1653472867, 1551455622), new $Int64(577191481, 3560962459), new $Int64(1669204077, 3347903778), new $Int64(-298327194, 2675874918), new $Int64(-1831355577, 2762991672), new $Int64(530492383, 3689068477), new $Int64(844089962, 4071997905), new $Int64(1508155730, 1381702441), new $Int64(2089931018, 2373284878), new $Int64(-864267462, 2143983064), new $Int64(308739063, 1938207195), new $Int64(1754949306, 1188152253), new $Int64(1272345009, 615870490), new $Int64(742653194, 2662252621), new $Int64(1477718295, 3839976789), new $Int64(-2091334213, 306752547), new $Int64(-1426688067, 2162363077), new $Int64(-57052633, 2767224719), new $Int64(-1471624099, 2628837712), new $Int64(1678405918, 2967771969), new $Int64(1694285728, 499792248), new $Int64(-1744131281, 4285253508), new $Int64(962357072, 2856511070), new $Int64(679471692, 2526409716), new $Int64(-1793706473, 1240875658), new $Int64(-914893422, 2577342868), new $Int64(-1001298215, 4136853496), new $Int64(-1477114974, 2403540137), new $Int64(1372824515, 1371410668), new $Int64(-176562048, 371758825), new $Int64(-441063112, 1528834084), new $Int64(-71688630, 1504757260), new $Int64(-1461820072, 699052551), new $Int64(-505543539, 3347789870), new $Int64(1951619734, 3430604759), new $Int64(2119672219, 1935601723), new $Int64(966789690, 834676166)]); + globalRand = New(new lockedSource.ptr(new nosync.Mutex.ptr(false, false, false, false, 0), ptrType.nil)); + randautoseed = godebug.New("randautoseed"); + kn = $toNativeArray($kindUint32, [1991057938, 0, 1611602771, 1826899878, 1918584482, 1969227037, 2001281515, 2023368125, 2039498179, 2051788381, 2061460127, 2069267110, 2075699398, 2081089314, 2085670119, 2089610331, 2093034710, 2096037586, 2098691595, 2101053571, 2103168620, 2105072996, 2106796166, 2108362327, 2109791536, 2111100552, 2112303493, 2113412330, 2114437283, 2115387130, 2116269447, 2117090813, 2117856962, 2118572919, 2119243101, 2119871411, 2120461303, 2121015852, 2121537798, 2122029592, 2122493434, 2122931299, 2123344971, 2123736059, 2124106020, 2124456175, 2124787725, 2125101763, 2125399283, 2125681194, 2125948325, 2126201433, 2126441213, 2126668298, 2126883268, 2127086657, 2127278949, 2127460589, 2127631985, 2127793506, 2127945490, 2128088244, 2128222044, 2128347141, 2128463758, 2128572095, 2128672327, 2128764606, 2128849065, 2128925811, 2128994934, 2129056501, 2129110560, 2129157136, 2129196237, 2129227847, 2129251929, 2129268426, 2129277255, 2129278312, 2129271467, 2129256561, 2129233410, 2129201800, 2129161480, 2129112170, 2129053545, 2128985244, 2128906855, 2128817916, 2128717911, 2128606255, 2128482298, 2128345305, 2128194452, 2128028813, 2127847342, 2127648860, 2127432031, 2127195339, 2126937058, 2126655214, 2126347546, 2126011445, 2125643893, 2125241376, 2124799783, 2124314271, 2123779094, 2123187386, 2122530867, 2121799464, 2120980787, 2120059418, 2119015917, 2117825402, 2116455471, 2114863093, 2112989789, 2110753906, 2108037662, 2104664315, 2100355223, 2094642347, 2086670106, 2074676188, 2054300022, 2010539237]); + wn = $toNativeArray($kindFloat32, [1.7290404663583558e-09, 1.2680928529462676e-10, 1.689751810696194e-10, 1.9862687883343e-10, 2.223243117382978e-10, 2.4244936613904144e-10, 2.601613091623989e-10, 2.761198769629658e-10, 2.9073962681813725e-10, 3.042996965518796e-10, 3.169979556627567e-10, 3.289802041894774e-10, 3.4035738116777736e-10, 3.5121602848242617e-10, 3.61625090983253e-10, 3.7164057942185025e-10, 3.813085680537398e-10, 3.906675816178762e-10, 3.997501218933053e-10, 4.0858399996679395e-10, 4.1719308563337165e-10, 4.255982233303257e-10, 4.3381759295968436e-10, 4.4186720948857783e-10, 4.497613115272969e-10, 4.57512583373898e-10, 4.6513240481438345e-10, 4.726310454117311e-10, 4.800177477726209e-10, 4.873009773476156e-10, 4.944885056978876e-10, 5.015873272284921e-10, 5.086040477664255e-10, 5.155446070048697e-10, 5.224146670812502e-10, 5.292193350214802e-10, 5.359634958068682e-10, 5.426517013518151e-10, 5.492881705038144e-10, 5.558769555769061e-10, 5.624218868405251e-10, 5.689264614971989e-10, 5.75394121238304e-10, 5.818281967329142e-10, 5.882316855831959e-10, 5.946076964136182e-10, 6.009590047817426e-10, 6.072883862451306e-10, 6.135985053390414e-10, 6.19892026598734e-10, 6.261713370037114e-10, 6.324390455780815e-10, 6.386973727678935e-10, 6.449488165749528e-10, 6.511955974453087e-10, 6.574400468473129e-10, 6.636843297158634e-10, 6.699307220081607e-10, 6.761814441702541e-10, 6.824387166481927e-10, 6.887046488657234e-10, 6.949815167800466e-10, 7.012714853260604e-10, 7.075767749498141e-10, 7.13899661608508e-10, 7.202424212593428e-10, 7.266072743483676e-10, 7.329966078550854e-10, 7.394128087589991e-10, 7.458582640396116e-10, 7.523354716987285e-10, 7.588469852493063e-10, 7.653954137154528e-10, 7.719834771435785e-10, 7.786139510912449e-10, 7.852897221383159e-10, 7.920137878869582e-10, 7.987892014504894e-10, 8.056192379868321e-10, 8.125072836762115e-10, 8.194568912323064e-10, 8.264716688799467e-10, 8.3355555791087e-10, 8.407127216614185e-10, 8.479473234679347e-10, 8.552640262671218e-10, 8.626675485068347e-10, 8.701631637464402e-10, 8.777562010564566e-10, 8.854524335966119e-10, 8.932581896381464e-10, 9.011799639857543e-10, 9.092249730890956e-10, 9.174008219758889e-10, 9.25715837318819e-10, 9.341788453909317e-10, 9.42799727177146e-10, 9.515889187738935e-10, 9.605578554783278e-10, 9.697193048552322e-10, 9.790869226478094e-10, 9.886760299337993e-10, 9.985036131254788e-10, 1.008588212947359e-09, 1.0189509236369076e-09, 1.0296150598776421e-09, 1.040606933955246e-09, 1.0519566329136865e-09, 1.0636980185552147e-09, 1.0758701707302976e-09, 1.0885182755160372e-09, 1.101694735439196e-09, 1.115461056855338e-09, 1.1298901814171813e-09, 1.1450695946990663e-09, 1.1611052119775422e-09, 1.178127595480305e-09, 1.1962995039027646e-09, 1.2158286599728285e-09, 1.2369856250415978e-09, 1.2601323318151003e-09, 1.2857697129220469e-09, 1.3146201904845611e-09, 1.3477839955200466e-09, 1.3870635751089821e-09, 1.43574030442295e-09, 1.5008658760251592e-09, 1.6030947680434338e-09]); + fn = $toNativeArray($kindFloat32, [1, 0.963599681854248, 0.9362826943397522, 0.9130436182022095, 0.8922816514968872, 0.8732430338859558, 0.8555005788803101, 0.8387836217880249, 0.8229072093963623, 0.8077383041381836, 0.7931770086288452, 0.7791460752487183, 0.7655841708183289, 0.7524415850639343, 0.7396772503852844, 0.7272568941116333, 0.7151514887809753, 0.7033361196517944, 0.6917891502380371, 0.6804918646812439, 0.6694276928901672, 0.6585819721221924, 0.6479418277740479, 0.6374954581260681, 0.6272324919700623, 0.6171433925628662, 0.6072195172309875, 0.5974531769752502, 0.5878370404243469, 0.5783646702766418, 0.5690299868583679, 0.5598273873329163, 0.550751805305481, 0.5417983531951904, 0.5329626798629761, 0.5242405533790588, 0.5156282186508179, 0.5071220397949219, 0.49871864914894104, 0.4904148280620575, 0.48220765590667725, 0.47409430146217346, 0.466072142124176, 0.45813870429992676, 0.45029163360595703, 0.44252872467041016, 0.4348478317260742, 0.42724698781967163, 0.41972434520721436, 0.41227802634239197, 0.40490642189979553, 0.39760786294937134, 0.3903807997703552, 0.3832238018512726, 0.3761354684829712, 0.3691144585609436, 0.36215949058532715, 0.3552693724632263, 0.3484429717063904, 0.3416791558265686, 0.33497685194015503, 0.32833510637283325, 0.3217529058456421, 0.3152293860912323, 0.30876362323760986, 0.3023548424243927, 0.2960021495819092, 0.2897048592567444, 0.28346219658851624, 0.2772735059261322, 0.271138072013855, 0.2650552988052368, 0.25902456045150757, 0.25304529070854187, 0.24711695313453674, 0.24123899638652802, 0.23541094362735748, 0.22963231801986694, 0.22390270233154297, 0.21822164952754974, 0.21258877217769623, 0.20700371265411377, 0.20146611332893372, 0.1959756463766098, 0.19053204357624054, 0.18513499200344086, 0.17978426814079285, 0.1744796335697174, 0.16922089457511902, 0.16400785744190216, 0.1588403731584549, 0.15371830761432648, 0.14864157140254974, 0.14361007511615753, 0.13862377405166626, 0.13368265330791473, 0.12878671288490295, 0.12393598258495331, 0.11913054436445236, 0.11437050998210907, 0.10965602099895477, 0.1049872562289238, 0.10036443918943405, 0.09578784555196762, 0.09125780314207077, 0.08677466958761215, 0.08233889937400818, 0.07795098423957825, 0.07361150532960892, 0.06932111829519272, 0.06508058309555054, 0.06089077144861221, 0.05675266310572624, 0.05266740173101425, 0.048636294901371, 0.044660862535238266, 0.040742866694927216, 0.03688438981771469, 0.03308788686990738, 0.029356317594647408, 0.025693291798233986, 0.02210330404341221, 0.018592102453112602, 0.015167297795414925, 0.011839478276669979, 0.0086244847625494, 0.005548994988203049, 0.0026696291752159595]); + ke = $toNativeArray($kindUint32, [3801129273, 0, 2615860924, 3279400049, 3571300752, 3733536696, 3836274812, 3906990442, 3958562475, 3997804264, 4028649213, 4053523342, 4074002619, 4091154507, 4105727352, 4118261130, 4129155133, 4138710916, 4147160435, 4154685009, 4161428406, 4167506077, 4173011791, 4178022498, 4182601930, 4186803325, 4190671498, 4194244443, 4197554582, 4200629752, 4203493986, 4206168142, 4208670408, 4211016720, 4213221098, 4215295924, 4217252177, 4219099625, 4220846988, 4222502074, 4224071896, 4225562770, 4226980400, 4228329951, 4229616109, 4230843138, 4232014925, 4233135020, 4234206673, 4235232866, 4236216336, 4237159604, 4238064994, 4238934652, 4239770563, 4240574564, 4241348362, 4242093539, 4242811568, 4243503822, 4244171579, 4244816032, 4245438297, 4246039419, 4246620374, 4247182079, 4247725394, 4248251127, 4248760037, 4249252839, 4249730206, 4250192773, 4250641138, 4251075867, 4251497493, 4251906522, 4252303431, 4252688672, 4253062674, 4253425844, 4253778565, 4254121205, 4254454110, 4254777611, 4255092022, 4255397640, 4255694750, 4255983622, 4256264513, 4256537670, 4256803325, 4257061702, 4257313014, 4257557464, 4257795244, 4258026541, 4258251531, 4258470383, 4258683258, 4258890309, 4259091685, 4259287526, 4259477966, 4259663135, 4259843154, 4260018142, 4260188212, 4260353470, 4260514019, 4260669958, 4260821380, 4260968374, 4261111028, 4261249421, 4261383632, 4261513736, 4261639802, 4261761900, 4261880092, 4261994441, 4262105003, 4262211835, 4262314988, 4262414513, 4262510454, 4262602857, 4262691764, 4262777212, 4262859239, 4262937878, 4263013162, 4263085118, 4263153776, 4263219158, 4263281289, 4263340187, 4263395872, 4263448358, 4263497660, 4263543789, 4263586755, 4263626565, 4263663224, 4263696735, 4263727099, 4263754314, 4263778377, 4263799282, 4263817020, 4263831582, 4263842955, 4263851124, 4263856071, 4263857776, 4263856218, 4263851370, 4263843206, 4263831695, 4263816804, 4263798497, 4263776735, 4263751476, 4263722676, 4263690284, 4263654251, 4263614520, 4263571032, 4263523724, 4263472530, 4263417377, 4263358192, 4263294892, 4263227394, 4263155608, 4263079437, 4262998781, 4262913534, 4262823581, 4262728804, 4262629075, 4262524261, 4262414220, 4262298801, 4262177846, 4262051187, 4261918645, 4261780032, 4261635148, 4261483780, 4261325704, 4261160681, 4260988457, 4260808763, 4260621313, 4260425802, 4260221905, 4260009277, 4259787550, 4259556329, 4259315195, 4259063697, 4258801357, 4258527656, 4258242044, 4257943926, 4257632664, 4257307571, 4256967906, 4256612870, 4256241598, 4255853155, 4255446525, 4255020608, 4254574202, 4254106002, 4253614578, 4253098370, 4252555662, 4251984571, 4251383021, 4250748722, 4250079132, 4249371435, 4248622490, 4247828790, 4246986404, 4246090910, 4245137315, 4244119963, 4243032411, 4241867296, 4240616155, 4239269214, 4237815118, 4236240596, 4234530035, 4232664930, 4230623176, 4228378137, 4225897409, 4223141146, 4220059768, 4216590757, 4212654085, 4208145538, 4202926710, 4196809522, 4189531420, 4180713890, 4169789475, 4155865042, 4137444620, 4111806704, 4073393724, 4008685917, 3873074895]); + we = $toNativeArray($kindFloat32, [2.0249555365836613e-09, 1.4866739783681027e-11, 2.4409616689036184e-11, 3.1968806074589295e-11, 3.844677007314168e-11, 4.42282044321729e-11, 4.951644302919611e-11, 5.443358958023836e-11, 5.905943789574764e-11, 6.34494193296753e-11, 6.764381416113352e-11, 7.167294535648239e-11, 7.556032188826833e-11, 7.932458162551725e-11, 8.298078890689453e-11, 8.654132271912474e-11, 9.001651507523079e-11, 9.341507428706208e-11, 9.674443190998971e-11, 1.0001099254308699e-10, 1.0322031424037093e-10, 1.0637725422757427e-10, 1.0948611461891744e-10, 1.1255067711157807e-10, 1.1557434870246297e-10, 1.1856014781042035e-10, 1.2151082917633005e-10, 1.2442885610752796e-10, 1.2731647680563896e-10, 1.3017574518325858e-10, 1.330085347417409e-10, 1.3581656632677408e-10, 1.386014220061682e-10, 1.413645728254309e-10, 1.4410737880776736e-10, 1.4683107507629245e-10, 1.4953686899854546e-10, 1.522258291641876e-10, 1.5489899640730442e-10, 1.575573282952547e-10, 1.6020171300645814e-10, 1.628330109637588e-10, 1.6545202707884954e-10, 1.68059510752272e-10, 1.7065616975120435e-10, 1.73242697965037e-10, 1.758197337720091e-10, 1.783878739169964e-10, 1.8094774290045024e-10, 1.834998542005195e-10, 1.8604476292871652e-10, 1.8858298256319017e-10, 1.9111498494872592e-10, 1.9364125580789704e-10, 1.9616222535212557e-10, 1.9867835154840918e-10, 2.011900368525943e-10, 2.0369768372052732e-10, 2.062016807302669e-10, 2.0870240258208383e-10, 2.1120022397624894e-10, 2.136955057352452e-10, 2.1618855317040442e-10, 2.1867974098199738e-10, 2.2116936060356807e-10, 2.2365774510202385e-10, 2.2614519978869652e-10, 2.2863201609713002e-10, 2.3111849933865614e-10, 2.3360494094681883e-10, 2.3609159072179864e-10, 2.3857874009713953e-10, 2.4106666662859766e-10, 2.4355562011635357e-10, 2.460458781161634e-10, 2.485376904282077e-10, 2.5103127909709144e-10, 2.5352694943414633e-10, 2.560248957284017e-10, 2.585253955356137e-10, 2.610286709003873e-10, 2.6353494386732734e-10, 2.6604446423661443e-10, 2.6855745405285347e-10, 2.71074163116225e-10, 2.7359478571575835e-10, 2.7611959940720965e-10, 2.786487707240326e-10, 2.8118254946640775e-10, 2.8372118543451563e-10, 2.8626484516180994e-10, 2.8881380620404684e-10, 2.9136826285025563e-10, 2.9392840938946563e-10, 2.96494523377433e-10, 2.990667713476114e-10, 3.016454031001814e-10, 3.042306406797479e-10, 3.068226783753403e-10, 3.09421765987139e-10, 3.12028125559749e-10, 3.1464195138219964e-10, 3.17263521010247e-10, 3.1989300097734485e-10, 3.225306410836737e-10, 3.2517669112941405e-10, 3.2783134540359526e-10, 3.3049485370639786e-10, 3.3316743808242677e-10, 3.3584937608743815e-10, 3.385408342548857e-10, 3.4124211789610115e-10, 3.4395342130011386e-10, 3.4667499426710435e-10, 3.494071143528288e-10, 3.521500313574677e-10, 3.54903967325626e-10, 3.576691720574843e-10, 3.6044595086437425e-10, 3.632345535464765e-10, 3.660352021483959e-10, 3.688482297370399e-10, 3.716738583570134e-10, 3.7451239331964814e-10, 3.773641121807003e-10, 3.802292924959261e-10, 3.831082673322328e-10, 3.8600128648980103e-10, 3.8890865527996255e-10, 3.9183070676962473e-10, 3.9476774627011935e-10, 3.977200790927782e-10, 4.006880383045086e-10, 4.0367195697221803e-10, 4.066721681628138e-10, 4.0968900494320337e-10, 4.127228558914453e-10, 4.15774054074447e-10, 4.188429603146915e-10, 4.2192993543466173e-10, 4.25035395767992e-10, 4.2815970213716525e-10, 4.313032986313914e-10, 4.3446651831757777e-10, 4.376498607960855e-10, 4.408536868893975e-10, 4.4407846844229937e-10, 4.4732464954400086e-10, 4.5059267428371186e-10, 4.538830145062178e-10, 4.5719619756745544e-10, 4.605326675566346e-10, 4.638929240741163e-10, 4.672775499869886e-10, 4.706869893844612e-10, 4.74121908400349e-10, 4.775827511238617e-10, 4.810701836888143e-10, 4.845848167178701e-10, 4.881271498113904e-10, 4.916979601254923e-10, 4.952977472605369e-10, 4.989272883726414e-10, 5.025872495956207e-10, 5.062783525744408e-10, 5.100013189540675e-10, 5.13756870379467e-10, 5.175458395179078e-10, 5.21369003525507e-10, 5.252272505806843e-10, 5.29121357839557e-10, 5.330522134805449e-10, 5.3702081670437e-10, 5.41028055689452e-10, 5.450749851476644e-10, 5.491624932574268e-10, 5.532918012640664e-10, 5.574638528571541e-10, 5.616799247931681e-10, 5.659410717839819e-10, 5.702485705860738e-10, 5.746036979559221e-10, 5.790077306500052e-10, 5.83462111958255e-10, 5.879682296594524e-10, 5.925275825546805e-10, 5.971417249561739e-10, 6.01812211176167e-10, 6.065408175714992e-10, 6.113292094767075e-10, 6.16179329782085e-10, 6.21092954844471e-10, 6.260721940876124e-10, 6.311191569352559e-10, 6.362359528111483e-10, 6.414249686947926e-10, 6.466885360545405e-10, 6.520292639144998e-10, 6.574497612987784e-10, 6.629528592760892e-10, 6.685415554485985e-10, 6.742187919073217e-10, 6.799880103436351e-10, 6.858525969377638e-10, 6.918161599145378e-10, 6.978825850545434e-10, 7.040559801829716e-10, 7.103406751696184e-10, 7.167412219288849e-10, 7.232625609532306e-10, 7.2990985477972e-10, 7.366885990123251e-10, 7.436047333442275e-10, 7.506645305355164e-10, 7.57874762946642e-10, 7.652426470272644e-10, 7.727759543385559e-10, 7.804830115532013e-10, 7.883728114777e-10, 7.964550685635174e-10, 8.047402189070851e-10, 8.132396422944055e-10, 8.219657177122031e-10, 8.309318788590758e-10, 8.401527806789488e-10, 8.496445214056791e-10, 8.594246980742071e-10, 8.695127395874636e-10, 8.799300732498239e-10, 8.90700457834015e-10, 9.01850316648023e-10, 9.134091816243028e-10, 9.254100818978372e-10, 9.37890431984556e-10, 9.508922538259412e-10, 9.64463842123564e-10, 9.78660263939446e-10, 9.935448019859905e-10, 1.0091912860943353e-09, 1.0256859805934937e-09, 1.0431305819125214e-09, 1.0616465484503124e-09, 1.0813799855569073e-09, 1.1025096391392708e-09, 1.1252564435793033e-09, 1.149898620766976e-09, 1.176793218427008e-09, 1.2064089727203964e-09, 1.2393785997488749e-09, 1.2765849488616254e-09, 1.319313880365769e-09, 1.36954347862428e-09, 1.4305497897382224e-09, 1.5083649884672923e-09, 1.6160853766322703e-09, 1.7921247819074893e-09]); + fe = $toNativeArray($kindFloat32, [1, 0.9381436705589294, 0.900469958782196, 0.8717043399810791, 0.847785472869873, 0.8269932866096497, 0.8084216713905334, 0.7915276288986206, 0.7759568691253662, 0.7614634037017822, 0.7478685975074768, 0.7350381016731262, 0.7228676676750183, 0.7112747430801392, 0.7001926302909851, 0.6895664930343628, 0.6793505549430847, 0.669506311416626, 0.6600008606910706, 0.6508058309555054, 0.6418967247009277, 0.633251965045929, 0.62485271692276, 0.6166821718215942, 0.608725368976593, 0.6009689569473267, 0.5934008955955505, 0.5860103368759155, 0.5787873864173889, 0.5717230439186096, 0.5648092031478882, 0.5580382943153381, 0.5514034032821655, 0.5448982119560242, 0.5385168790817261, 0.5322538614273071, 0.526104211807251, 0.5200631618499756, 0.5141264200210571, 0.5082897543907166, 0.5025495290756226, 0.4969019889831543, 0.4913438558578491, 0.4858720004558563, 0.48048335313796997, 0.4751752018928528, 0.4699448347091675, 0.4647897481918335, 0.4597076177597046, 0.4546961486339569, 0.4497532546520233, 0.44487687945365906, 0.4400651156902313, 0.4353161156177521, 0.4306281507015228, 0.42599955201148987, 0.42142874002456665, 0.4169141948223114, 0.4124544560909271, 0.40804818272590637, 0.4036940038204193, 0.39939069747924805, 0.3951369822025299, 0.39093172550201416, 0.38677382469177246, 0.38266217708587646, 0.378595769405365, 0.37457355856895447, 0.37059465050697327, 0.366658091545105, 0.362762987613678, 0.358908474445343, 0.35509374737739563, 0.35131800174713135, 0.3475804924964905, 0.34388044476509094, 0.34021714329719543, 0.33658990263938904, 0.3329980671405792, 0.3294409513473511, 0.32591795921325684, 0.32242849469184875, 0.3189719021320343, 0.3155476748943329, 0.31215524673461914, 0.3087940812110901, 0.30546361207962036, 0.30216339230537415, 0.29889291524887085, 0.29565170407295227, 0.2924392819404602, 0.2892552316188812, 0.28609907627105713, 0.2829704284667969, 0.27986884117126465, 0.2767939269542694, 0.2737452983856201, 0.2707225978374481, 0.26772540807724, 0.26475343108177185, 0.2618062496185303, 0.258883535861969, 0.2559850215911865, 0.25311028957366943, 0.25025907158851624, 0.24743106961250305, 0.2446259707212448, 0.24184346199035645, 0.23908329010009766, 0.23634515702724457, 0.2336287796497345, 0.23093391954898834, 0.22826029360294342, 0.22560766339302063, 0.22297576069831848, 0.22036437690258026, 0.21777324378490448, 0.21520215272903442, 0.212650865316391, 0.21011915802955627, 0.20760682225227356, 0.20511364936828613, 0.20263944566249847, 0.20018397271633148, 0.19774706661701202, 0.1953285187482834, 0.19292815029621124, 0.19054576754570007, 0.18818120658397675, 0.18583425879478455, 0.18350479006767273, 0.18119260668754578, 0.17889754474163055, 0.17661945521831512, 0.17435817420482635, 0.1721135377883911, 0.16988539695739746, 0.16767361760139465, 0.16547803580760956, 0.16329853236675262, 0.16113494336605072, 0.1589871346950531, 0.15685498714447021, 0.15473836660385132, 0.15263713896274567, 0.1505511850118637, 0.1484803706407547, 0.14642459154129028, 0.1443837285041809, 0.14235764741897583, 0.1403462439775467, 0.13834942877292633, 0.136367067694664, 0.13439907133579254, 0.1324453204870224, 0.1305057406425476, 0.12858019769191742, 0.12666863203048706, 0.12477091699838638, 0.12288697808980942, 0.1210167184472084, 0.11916005611419678, 0.11731690168380737, 0.11548716574907303, 0.11367076635360718, 0.11186762899160385, 0.11007767915725708, 0.1083008274435997, 0.10653700679540634, 0.10478614270687103, 0.1030481606721878, 0.10132300108671188, 0.0996105819940567, 0.09791085124015808, 0.09622374176979065, 0.09454918652772903, 0.09288713335990906, 0.09123751521110535, 0.08960027992725372, 0.08797537535429001, 0.08636274188756943, 0.0847623273730278, 0.08317409455776215, 0.08159798383712769, 0.08003395050764084, 0.07848194986581802, 0.07694194465875626, 0.07541389018297195, 0.07389774918556213, 0.07239348441362381, 0.070901058614254, 0.06942043453454971, 0.06795158982276917, 0.06649449467658997, 0.06504911929368973, 0.06361543387174606, 0.06219341605901718, 0.06078304722905159, 0.0593843050301075, 0.05799717456102371, 0.05662164092063904, 0.05525768920779228, 0.05390531197190285, 0.05256449431180954, 0.05123523622751236, 0.04991753399372101, 0.04861138388514519, 0.047316793352365494, 0.04603376239538193, 0.044762298464775085, 0.04350241273641586, 0.04225412383675575, 0.04101744294166565, 0.039792392402887344, 0.03857899457216263, 0.03737728297710419, 0.03618728369474411, 0.03500903770327568, 0.03384258225560188, 0.0326879620552063, 0.031545232981443405, 0.030414443463087082, 0.0292956605553627, 0.028188949450850487, 0.027094384655356407, 0.02601204626262188, 0.024942025542259216, 0.023884421214461327, 0.022839335724711418, 0.021806888282299042, 0.020787203684449196, 0.019780423492193222, 0.018786700442433357, 0.017806200310587883, 0.016839107498526573, 0.015885621309280396, 0.014945968054234982, 0.01402039173990488, 0.013109165243804455, 0.012212592177093029, 0.011331013403832912, 0.010464809834957123, 0.009614413604140282, 0.008780314587056637, 0.007963077165186405, 0.007163353264331818, 0.0063819061033427715, 0.005619642324745655, 0.004877655766904354, 0.004157294984906912, 0.003460264764726162, 0.0027887988835573196, 0.0021459676790982485, 0.001536299823783338, 0.0009672692976891994, 0.0004541343660093844]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["math/big"] = (function() { + var $pkg = {}, $init, bytes, binary, errors, fmt, nosync, io, math, bits, rand, strconv, strings, Rat, divisor, nat, byteReader, Int, Float, ErrNaN, form, RoundingMode, Accuracy, decimal, Word, ptrType, structType, arrayType, structType$1, sliceType, ptrType$1, sliceType$1, ptrType$2, sliceType$2, ptrType$3, sliceType$3, sliceType$4, ptrType$4, arrayType$1, arrayType$2, ptrType$5, ptrType$6, threeOnce, cacheBase10, natPool, _RoundingMode_index, errNoDigits, errInvalSep, leafSize, natOne, natTwo, natFive, natTen, karatsubaThreshold, basicSqrThreshold, karatsubaSqrThreshold, intOne, pow5tab, _Accuracy_index, three, newFloat, ratTok, scanExponent, NewRat, quotToFloat32, quotToFloat64, mulDenom, divWVW, greaterThan, maxPow, pow, divisors, basicMul, karatsubaAdd, karatsubaSub, karatsuba, alias, addAt, max, karatsubaLen, basicSqr, karatsubaSqr, getNat, putNat, same, bigEndianWord, writeMultiple, scanSign, NewInt, low32, low64, lehmerSimulate, lehmerUpdate, euclidUpdate, Jacobi, roundShortest, fmtE, fmtF, min, NewFloat, makeAcc, fnorm, msb32, msb64, validateBinaryOperands, umax32, shr, appendZeros, shouldRoundUp, trim, addVV, subVV, addVW, subVW, shlVU, shrVU, mulAddVWW, addMulVVW, mulWW, mulAddWWW_g, nlz, addVV_g, subVV_g, addVW_g, addVWlarge, subVW_g, subVWlarge, shlVU_g, shrVU_g, mulAddVWW_g, addMulVVW_g, divWW, reciprocalWord; + bytes = $packages["bytes"]; + binary = $packages["encoding/binary"]; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; + io = $packages["io"]; + math = $packages["math"]; + bits = $packages["math/bits"]; + rand = $packages["math/rand"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + Rat = $newType(0, $kindStruct, "big.Rat", true, "math/big", true, function(a_, b_) { + this.$val = this; + if (arguments.length === 0) { + this.a = new Int.ptr(false, nat.nil); + this.b = new Int.ptr(false, nat.nil); + return; + } + this.a = a_; + this.b = b_; + }); + divisor = $newType(0, $kindStruct, "big.divisor", true, "math/big", false, function(bbb_, nbits_, ndigits_) { + this.$val = this; + if (arguments.length === 0) { + this.bbb = nat.nil; + this.nbits = 0; + this.ndigits = 0; + return; + } + this.bbb = bbb_; + this.nbits = nbits_; + this.ndigits = ndigits_; + }); + nat = $newType(12, $kindSlice, "big.nat", true, "math/big", false, null); + byteReader = $newType(0, $kindStruct, "big.byteReader", true, "math/big", false, function(ScanState_) { + this.$val = this; + if (arguments.length === 0) { + this.ScanState = $ifaceNil; + return; + } + this.ScanState = ScanState_; + }); + Int = $newType(0, $kindStruct, "big.Int", true, "math/big", true, function(neg_, abs_) { + this.$val = this; + if (arguments.length === 0) { + this.neg = false; + this.abs = nat.nil; + return; + } + this.neg = neg_; + this.abs = abs_; + }); + Float = $newType(0, $kindStruct, "big.Float", true, "math/big", true, function(prec_, mode_, acc_, form_, neg_, mant_, exp_) { + this.$val = this; + if (arguments.length === 0) { + this.prec = 0; + this.mode = 0; + this.acc = 0; + this.form = 0; + this.neg = false; + this.mant = nat.nil; + this.exp = 0; + return; + } + this.prec = prec_; + this.mode = mode_; + this.acc = acc_; + this.form = form_; + this.neg = neg_; + this.mant = mant_; + this.exp = exp_; + }); + ErrNaN = $newType(0, $kindStruct, "big.ErrNaN", true, "math/big", true, function(msg_) { + this.$val = this; + if (arguments.length === 0) { + this.msg = ""; + return; + } + this.msg = msg_; + }); + form = $newType(1, $kindUint8, "big.form", true, "math/big", false, null); + RoundingMode = $newType(1, $kindUint8, "big.RoundingMode", true, "math/big", true, null); + Accuracy = $newType(1, $kindInt8, "big.Accuracy", true, "math/big", true, null); + decimal = $newType(0, $kindStruct, "big.decimal", true, "math/big", false, function(mant_, exp_) { + this.$val = this; + if (arguments.length === 0) { + this.mant = sliceType$1.nil; + this.exp = 0; + return; + } + this.mant = mant_; + this.exp = exp_; + }); + Word = $newType(4, $kindUint, "big.Word", true, "math/big", true, null); + $pkg.Rat = Rat; + $pkg.divisor = divisor; + $pkg.nat = nat; + $pkg.byteReader = byteReader; + $pkg.Int = Int; + $pkg.Float = Float; + $pkg.ErrNaN = ErrNaN; + $pkg.form = form; + $pkg.RoundingMode = RoundingMode; + $pkg.Accuracy = Accuracy; + $pkg.decimal = decimal; + $pkg.Word = Word; + $pkg.$finishSetup = function() { + ptrType = $ptrType(Float); + structType = $structType("math/big", [{prop: "Once", name: "Once", embedded: true, exported: true, typ: nosync.Once, tag: ""}, {prop: "v", name: "v", embedded: false, exported: false, typ: ptrType, tag: ""}]); + arrayType = $arrayType(divisor, 64); + structType$1 = $structType("math/big", [{prop: "Mutex", name: "Mutex", embedded: true, exported: true, typ: nosync.Mutex, tag: ""}, {prop: "table", name: "table", embedded: false, exported: false, typ: arrayType, tag: ""}]); + sliceType = $sliceType($emptyInterface); + ptrType$1 = $ptrType(Rat); + sliceType$1 = $sliceType($Uint8); + ptrType$2 = $ptrType(Int); + sliceType$2 = $sliceType(Word); + ptrType$3 = $ptrType(nat); + sliceType$3 = $sliceType(ptrType$3); + sliceType$4 = $sliceType(divisor); + ptrType$4 = $ptrType(Word); + arrayType$1 = $arrayType(ptrType$3, 16); + arrayType$2 = $arrayType(nat, 16); + ptrType$5 = $ptrType(rand.Rand); + ptrType$6 = $ptrType(decimal); + three = function three$1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = threeOnce.Once.Do((function three·func1() { + var {_r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = NewFloat(3); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + threeOnce.v = _r; + $s = -1; return; + /* */ } return; } var $f = {$blk: three·func1, $c: true, $r, _r, $s};return $f; + })); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return threeOnce.v; + /* */ } return; } var $f = {$blk: three$1, $c: true, $r, $s};return $f; + }; + $ptrType(Float).prototype.Sqrt = function Sqrt(x) { + var {$24r, _1, _q, _r, _r$1, _r$2, _r$3, b, prec, x, x$1, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (z.prec === 0) { + z.prec = x.prec; + } + _r = x.Sign(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === -1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r === -1) { */ case 4: + $panic((x$1 = new ErrNaN.ptr("square root of negative operand"), new x$1.constructor.elem(x$1))); + /* } */ case 5: + if (!((x.form === 1))) { + z.acc = 0; + z.form = x.form; + z.neg = x.neg; + $s = -1; return z; + } + prec = z.prec; + _r$1 = x.MantExp(z); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + b = _r$1; + z.prec = prec; + _1 = (_r$2 = b % 2, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")); + if (_1 === (0)) { + } else if (_1 === (1)) { + z.exp = z.exp + (1) >> 0; + } else if (_1 === (-1)) { + z.exp = z.exp - (1) >> 0; + } + $r = z.sqrtInverse(z); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = z.SetMantExp(z, (_q = b / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 10; case 10: return $24r; + /* */ } return; } var $f = {$blk: Sqrt, $c: true, $r, $24r, _1, _q, _r, _r$1, _r$2, _r$3, b, prec, x, x$1, z, $s};return $f; + }; + $ptrType(Float).prototype.sqrtInverse = function sqrtInverse(x) { + var {_r, _r$1, _r$2, _r$3, _r$4, _tuple, ng, prec, sqi, three$2, u, v, x, xf, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + three$2 = [three$2]; + u = [u]; + v = [v]; + x = [x]; + z = this; + u[0] = newFloat(z.prec); + v[0] = newFloat(z.prec); + _r = three(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + three$2[0] = _r; + ng = (function(three$2, u, v, x) { return function Float·sqrtInverse·func1(t) { + var {$24r, _r$1, _r$2, _r$3, _r$4, _r$5, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + u[0].prec = t.prec; + v[0].prec = t.prec; + _r$1 = u[0].Mul(t, t); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = u[0].Mul(x[0], u[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _r$3 = v[0].Sub(three$2[0], u[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + _r$4 = u[0].Mul(t, v[0]); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + u[0].exp = u[0].exp - (1) >> 0; + _r$5 = t.Set(u[0]); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r = _r$5; + $s = 6; case 6: return $24r; + /* */ } return; } var $f = {$blk: Float·sqrtInverse·func1, $c: true, $r, $24r, _r$1, _r$2, _r$3, _r$4, _r$5, t, $s};return $f; + }; })(three$2, u, v, x); + _r$1 = x[0].Float64(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + xf = _tuple[0]; + sqi = newFloat(z.prec); + _r$2 = sqi.SetFloat64(1 / math.Sqrt(xf)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + prec = z.prec + 32 >>> 0; + /* while (true) { */ case 4: + /* if (!(sqi.prec < prec)) { break; } */ if(!(sqi.prec < prec)) { $s = 5; continue; } + sqi.prec = $imul(sqi.prec, (2)) >>> 0; + _r$3 = ng(sqi); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + sqi = _r$3; + $s = 4; continue; + case 5: + _r$4 = z.Mul(x[0], sqi); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + $s = -1; return; + /* */ } return; } var $f = {$blk: sqrtInverse, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, ng, prec, sqi, three$2, u, v, x, xf, z, $s};return $f; + }; + newFloat = function newFloat$1(prec2) { + var _q, prec2, z; + z = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0); + z.mant = z.mant.make($imul((((_q = prec2 / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)), 2)); + return z; + }; + RoundingMode.prototype.String = function String() { + var i, x; + i = this.$val; + if (i >= 6) { + return "RoundingMode(" + strconv.FormatInt((new $Int64(0, i)), 10) + ")"; + } + return $substring("ToNearestEvenToNearestAwayToZeroAwayFromZeroToNegativeInfToPositiveInf", ((i < 0 || i >= _RoundingMode_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _RoundingMode_index[i]), (x = i + 1 << 24 >>> 24, ((x < 0 || x >= _RoundingMode_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _RoundingMode_index[x]))); + }; + $ptrType(RoundingMode).prototype.String = function(...$args) { return new RoundingMode(this.$get()).String(...$args); }; + $ptrType(Rat).prototype.GobEncode = function GobEncode() { + var b, buf, i, j, n, x; + x = this; + if (x === ptrType$1.nil) { + return [sliceType$1.nil, $ifaceNil]; + } + buf = $makeSlice(sliceType$1, (5 + ($imul(((x.a.abs.$length + x.b.abs.$length >> 0)), 4)) >> 0)); + i = x.b.abs.bytes(buf); + j = x.a.abs.bytes($subslice(buf, 0, i)); + n = i - j >> 0; + if (!((((((n >>> 0)) >> 0)) === n))) { + return [sliceType$1.nil, errors.New("Rat.GobEncode: numerator too large")]; + } + $clone(binary.BigEndian, binary.bigEndian).PutUint32($subslice(buf, (j - 4 >> 0), j), ((n >>> 0))); + j = j - (5) >> 0; + b = 2; + if (x.a.neg) { + b = (b | (1)) >>> 0; + } + ((j < 0 || j >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + j] = b); + return [$subslice(buf, j), $ifaceNil]; + }; + $ptrType(Rat).prototype.GobDecode = function GobDecode(buf) { + var {$24r, _r, b, buf, i, ln, x, z, $s, $r, $c} = $restore(this, {buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (buf.$length === 0) { + Rat.copy(z, new Rat.ptr(new Int.ptr(false, nat.nil), new Int.ptr(false, nat.nil))); + $s = -1; return $ifaceNil; + } + if (buf.$length < 5) { + $s = -1; return errors.New("Rat.GobDecode: buffer too small"); + } + b = (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]); + /* */ if (!(((b >>> 1 << 24 >>> 24) === 1))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(((b >>> 1 << 24 >>> 24) === 1))) { */ case 1: + _r = fmt.Errorf("Rat.GobDecode: encoding version %d not supported", new sliceType([new $Uint8((b >>> 1 << 24 >>> 24))])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + ln = $clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(buf, 1, 5)); + if ((x = (new $Uint64(0, ln)), (x.$high > 0 || (x.$high === 0 && x.$low > 2147483642)))) { + $s = -1; return errors.New("Rat.GobDecode: invalid length"); + } + i = 5 + ((ln >> 0)) >> 0; + if (buf.$length < i) { + $s = -1; return errors.New("Rat.GobDecode: buffer too small"); + } + z.a.neg = !((((b & 1) >>> 0) === 0)); + z.a.abs = z.a.abs.setBytes($subslice(buf, 5, i)); + z.b.abs = z.b.abs.setBytes($subslice(buf, i)); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: GobDecode, $c: true, $r, $24r, _r, b, buf, i, ln, x, z, $s};return $f; + }; + $ptrType(Rat).prototype.MarshalText = function MarshalText() { + var {$24r, $24r$1, _r, _r$1, _tmp, _tmp$1, _tuple, err, text, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + text = sliceType$1.nil; + err = $ifaceNil; + x = this; + /* */ if (x.IsInt()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.IsInt()) { */ case 1: + _r = x.a.MarshalText(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + text = _tuple[0]; + err = _tuple[1]; + $24r = [text, err]; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = x.marshal(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tmp = _r$1; + _tmp$1 = $ifaceNil; + text = _tmp; + err = _tmp$1; + $24r$1 = [text, err]; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: MarshalText, $c: true, $r, $24r, $24r$1, _r, _r$1, _tmp, _tmp$1, _tuple, err, text, x, $s};return $f; + }; + $ptrType(Rat).prototype.UnmarshalText = function UnmarshalText(text) { + var {$24r, _r, _r$1, _tuple, ok, text, z, $s, $r, $c} = $restore(this, {text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.SetString(($bytesToString(text))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + _r$1 = fmt.Errorf("math/big: cannot unmarshal %q into a *big.Rat", new sliceType([text])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 5; case 5: return $24r; + /* } */ case 3: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: UnmarshalText, $c: true, $r, $24r, _r, _r$1, _tuple, ok, text, z, $s};return $f; + }; + ratTok = function ratTok$1(ch) { + var ch; + return strings.ContainsRune("+-/0123456789.eE", ch); + }; + $ptrType(Rat).prototype.Scan = function Scan(s, ch) { + var {_r, _r$1, _tuple, _tuple$1, ch, err, ok, s, tok, z, $s, $r, $c} = $restore(this, {s, ch}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = s.Token(true, ratTok); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + tok = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + if (!strings.ContainsRune("efgEFGv", ch)) { + $s = -1; return errors.New("Rat.Scan: invalid verb"); + } + _r$1 = z.SetString(($bytesToString(tok))); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + ok = _tuple$1[1]; + if (!ok) { + $s = -1; return errors.New("Rat.Scan: invalid syntax"); + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Scan, $c: true, $r, _r, _r$1, _tuple, _tuple$1, ch, err, ok, s, tok, z, $s};return $f; + }; + $ptrType(Rat).prototype.SetString = function SetString(s) { + var {$24r, $24r$1, $24r$2, _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, base, d, ebase, err, err$1, exp, exp2, exp5, fcount, n, neg, ok, pow5, r, r$1, s, sep, x, x$1, x$2, z, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (s.length === 0) { + $s = -1; return [ptrType$1.nil, false]; + } + sep = strings.Index(s, "/"); + /* */ if (sep >= 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (sep >= 0) { */ case 1: + _r = z.a.SetString($substring(s, 0, sep), 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ok = _tuple[1]; + if (!ok) { + $s = -1; return [ptrType$1.nil, false]; + } + r = strings.NewReader($substring(s, (sep + 1 >> 0))); + err = $ifaceNil; + _r$1 = z.b.abs.scan(r, 0, false); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + z.b.abs = _tuple$1[0]; + err = _tuple$1[3]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, false]; + } + _tuple$2 = r.ReadByte(); + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, io.EOF))) { + $s = -1; return [ptrType$1.nil, false]; + } + if (z.b.abs.$length === 0) { + $s = -1; return [ptrType$1.nil, false]; + } + _r$2 = z.norm(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = [_r$2, true]; + $s = 6; case 6: return $24r; + /* } */ case 2: + r$1 = strings.NewReader(s); + _r$3 = scanSign(r$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$3 = _r$3; + neg = _tuple$3[0]; + err$1 = _tuple$3[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, false]; + } + base = 0; + fcount = 0; + _r$4 = z.a.abs.scan(r$1, 0, true); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$4 = _r$4; + z.a.abs = _tuple$4[0]; + base = _tuple$4[1]; + fcount = _tuple$4[2]; + err$1 = _tuple$4[3]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, false]; + } + exp = new $Int64(0, 0); + ebase = 0; + _r$5 = scanExponent(r$1, true, true); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$5 = _r$5; + exp = _tuple$5[0]; + ebase = _tuple$5[1]; + err$1 = _tuple$5[2]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, false]; + } + _tuple$6 = r$1.ReadByte(); + err$1 = _tuple$6[1]; + if (!($interfaceIsEqual(err$1, io.EOF))) { + $s = -1; return [ptrType$1.nil, false]; + } + /* */ if (z.a.abs.$length === 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (z.a.abs.$length === 0) { */ case 10: + _r$6 = z.norm(); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$1 = [_r$6, true]; + $s = 13; case 13: return $24r$1; + /* } */ case 11: + _tmp = new $Int64(0, 0); + _tmp$1 = new $Int64(0, 0); + exp2 = _tmp; + exp5 = _tmp$1; + if (fcount < 0) { + d = (new $Int64(0, fcount)); + _1 = base; + if (_1 === (10)) { + exp5 = d; + exp2 = d; + } else if (_1 === (2)) { + exp2 = d; + } else if (_1 === (8)) { + exp2 = $mul64(d, new $Int64(0, 3)); + } else if (_1 === (16)) { + exp2 = $mul64(d, new $Int64(0, 4)); + } else { + $panic(new $String("unexpected mantissa base")); + } + } + _2 = ebase; + if (_2 === (10)) { + exp5 = (x = exp, new $Int64(exp5.$high + x.$high, exp5.$low + x.$low)); + exp2 = (x$1 = exp, new $Int64(exp2.$high + x$1.$high, exp2.$low + x$1.$low)); + } else if (_2 === (2)) { + exp2 = (x$2 = exp, new $Int64(exp2.$high + x$2.$high, exp2.$low + x$2.$low)); + } else { + $panic(new $String("unexpected exponent base")); + } + /* */ if (!((exp5.$high === 0 && exp5.$low === 0))) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!((exp5.$high === 0 && exp5.$low === 0))) { */ case 14: + n = exp5; + if ((n.$high < 0 || (n.$high === 0 && n.$low < 0))) { + n = new $Int64(-n.$high, -n.$low); + if ((n.$high < 0 || (n.$high === 0 && n.$low < 0))) { + $s = -1; return [ptrType$1.nil, false]; + } + } + if ((n.$high > 0 || (n.$high === 0 && n.$low > 1000000))) { + $s = -1; return [ptrType$1.nil, false]; + } + _r$7 = z.b.abs.expNN(natFive, (nat.nil).setWord(((n.$low >>> 0))), nat.nil, false); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + pow5 = _r$7; + /* */ if ((exp5.$high > 0 || (exp5.$high === 0 && exp5.$low > 0))) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if ((exp5.$high > 0 || (exp5.$high === 0 && exp5.$low > 0))) { */ case 18: + _r$8 = z.a.abs.mul(z.a.abs, pow5); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + z.a.abs = _r$8; + z.b.abs = z.b.abs.setWord(1); + $s = 20; continue; + /* } else { */ case 19: + z.b.abs = pow5; + /* } */ case 20: + $s = 16; continue; + /* } else { */ case 15: + z.b.abs = z.b.abs.setWord(1); + /* } */ case 16: + if ((exp2.$high < -1 || (exp2.$high === -1 && exp2.$low < 4284967296)) || (exp2.$high > 0 || (exp2.$high === 0 && exp2.$low > 10000000))) { + $s = -1; return [ptrType$1.nil, false]; + } + if ((exp2.$high > 0 || (exp2.$high === 0 && exp2.$low > 0))) { + z.a.abs = z.a.abs.shl(z.a.abs, ((exp2.$low >>> 0))); + } else if ((exp2.$high < 0 || (exp2.$high === 0 && exp2.$low < 0))) { + z.b.abs = z.b.abs.shl(z.b.abs, ((new $Int64(-exp2.$high, -exp2.$low).$low >>> 0))); + } + z.a.neg = neg && z.a.abs.$length > 0; + _r$9 = z.norm(); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $24r$2 = [_r$9, true]; + $s = 23; case 23: return $24r$2; + /* */ } return; } var $f = {$blk: SetString, $c: true, $r, $24r, $24r$1, $24r$2, _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, base, d, ebase, err, err$1, exp, exp2, exp5, fcount, n, neg, ok, pow5, r, r$1, s, sep, x, x$1, x$2, z, $s};return $f; + }; + scanExponent = function scanExponent$1(r, base2ok, sepOk) { + var {_1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, base, base2ok, ch, digits, err, exp, hasDigits, invalSep, prev, r, sepOk, $s, $r, $c} = $restore(this, {r, base2ok, sepOk}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + exp = new $Int64(0, 0); + base = 0; + err = $ifaceNil; + _r = r.ReadByte(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ch = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + if ($interfaceIsEqual(err, io.EOF)) { + err = $ifaceNil; + } + _tmp = new $Int64(0, 0); + _tmp$1 = 10; + _tmp$2 = err; + exp = _tmp; + base = _tmp$1; + err = _tmp$2; + $s = -1; return [exp, base, err]; + } + _1 = ch; + /* */ if ((_1 === (101)) || (_1 === (69))) { $s = 3; continue; } + /* */ if ((_1 === (112)) || (_1 === (80))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((_1 === (101)) || (_1 === (69))) { */ case 3: + base = 10; + $s = 6; continue; + /* } else if ((_1 === (112)) || (_1 === (80))) { */ case 4: + if (base2ok) { + base = 2; + /* break; */ $s = 2; continue; + } + _r$1 = r.UnreadByte(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _tmp$3 = new $Int64(0, 0); + _tmp$4 = 10; + _tmp$5 = $ifaceNil; + exp = _tmp$3; + base = _tmp$4; + err = _tmp$5; + $s = -1; return [exp, base, err]; + /* } else { */ case 5: + _r$2 = r.UnreadByte(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _tmp$6 = new $Int64(0, 0); + _tmp$7 = 10; + _tmp$8 = $ifaceNil; + exp = _tmp$6; + base = _tmp$7; + err = _tmp$8; + $s = -1; return [exp, base, err]; + /* } */ case 6: + case 2: + digits = sliceType$1.nil; + _r$3 = r.ReadByte(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = _r$3; + ch = _tuple$1[0]; + err = _tuple$1[1]; + /* */ if ($interfaceIsEqual(err, $ifaceNil) && ((ch === 43) || (ch === 45))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ($interfaceIsEqual(err, $ifaceNil) && ((ch === 43) || (ch === 45))) { */ case 10: + if (ch === 45) { + digits = $append(digits, 45); + } + _r$4 = r.ReadByte(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$2 = _r$4; + ch = _tuple$2[0]; + err = _tuple$2[1]; + /* } */ case 11: + prev = 46; + invalSep = false; + hasDigits = false; + /* while (true) { */ case 13: + /* if (!($interfaceIsEqual(err, $ifaceNil))) { break; } */ if(!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; } + /* */ if (48 <= ch && ch <= 57) { $s = 15; continue; } + /* */ if ((ch === 95) && sepOk) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (48 <= ch && ch <= 57) { */ case 15: + digits = $append(digits, ch); + prev = 48; + hasDigits = true; + $s = 18; continue; + /* } else if ((ch === 95) && sepOk) { */ case 16: + if (!((prev === 48))) { + invalSep = true; + } + prev = 95; + $s = 18; continue; + /* } else { */ case 17: + _r$5 = r.UnreadByte(); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + /* break; */ $s = 14; continue; + /* } */ case 18: + _r$6 = r.ReadByte(); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$3 = _r$6; + ch = _tuple$3[0]; + err = _tuple$3[1]; + $s = 13; continue; + case 14: + if ($interfaceIsEqual(err, io.EOF)) { + err = $ifaceNil; + } + if ($interfaceIsEqual(err, $ifaceNil) && !hasDigits) { + err = errNoDigits; + } + if ($interfaceIsEqual(err, $ifaceNil)) { + _tuple$4 = strconv.ParseInt(($bytesToString(digits)), 10, 64); + exp = _tuple$4[0]; + err = _tuple$4[1]; + } + if ($interfaceIsEqual(err, $ifaceNil) && (invalSep || (prev === 95))) { + err = errInvalSep; + } + $s = -1; return [exp, base, err]; + /* */ } return; } var $f = {$blk: scanExponent$1, $c: true, $r, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, base, base2ok, ch, digits, err, exp, hasDigits, invalSep, prev, r, sepOk, $s};return $f; + }; + $ptrType(Rat).prototype.String = function String$1() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.marshal(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = ($bytesToString(_r)); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$1, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(Rat).prototype.marshal = function marshal() { + var {_r, _r$1, buf, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + buf = sliceType$1.nil; + _r = x.a.Append(buf, 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + buf = _r; + buf = $append(buf, 47); + /* */ if (!((x.b.abs.$length === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((x.b.abs.$length === 0))) { */ case 2: + _r$1 = x.b.Append(buf, 10); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + buf = _r$1; + $s = 4; continue; + /* } else { */ case 3: + buf = $append(buf, 49); + /* } */ case 4: + $s = -1; return buf; + /* */ } return; } var $f = {$blk: marshal, $c: true, $r, _r, _r$1, buf, x, $s};return $f; + }; + $ptrType(Rat).prototype.RatString = function RatString() { + var {$24r, $24r$1, _r, _r$1, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (x.IsInt()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.IsInt()) { */ case 1: + _r = x.a.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = x.String(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: RatString, $c: true, $r, $24r, $24r$1, _r, _r$1, x, $s};return $f; + }; + $ptrType(Rat).prototype.FloatString = function FloatString(prec) { + var {_arg, _arg$1, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, buf, i, i$1, p, prec, q, r, r2, rs, x, $s, $r, $c} = $restore(this, {prec}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + buf = sliceType$1.nil; + /* */ if (x.IsInt()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.IsInt()) { */ case 1: + _r = x.a.Append(buf, 10); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + buf = _r; + if (prec > 0) { + buf = $append(buf, 46); + i = prec; + while (true) { + if (!(i > 0)) { break; } + buf = $append(buf, 48); + i = i - (1) >> 0; + } + } + $s = -1; return ($bytesToString(buf)); + /* } */ case 2: + _r$1 = (nat.nil).div((nat.nil), x.a.abs, x.b.abs); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + q = _tuple[0]; + r = _tuple[1]; + p = natOne; + /* */ if (prec > 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (prec > 0) { */ case 5: + _r$2 = (nat.nil).expNN(natTen, (nat.nil).setUint64((new $Uint64(0, prec))), nat.nil, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + p = _r$2; + /* } */ case 6: + _r$3 = r.mul(r, p); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + r = _r$3; + _r$4 = r.div((nat.nil), r, x.b.abs); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + r = _tuple$1[0]; + r2 = _tuple$1[1]; + _r$5 = r2.add(r2, r2); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + r2 = _r$5; + /* */ if (x.b.abs.cmp(r2) <= 0) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (x.b.abs.cmp(r2) <= 0) { */ case 11: + _r$6 = r.add(r, natOne); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + r = _r$6; + /* */ if (r.cmp(p) >= 0) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (r.cmp(p) >= 0) { */ case 14: + _r$7 = (nat.nil).add(q, natOne); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + q = _r$7; + _r$8 = (nat.nil).sub(r, p); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + r = _r$8; + /* } */ case 15: + /* } */ case 12: + if (x.a.neg) { + buf = $append(buf, 45); + } + _arg = buf; + _r$9 = q.utoa(10); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _arg$1 = _r$9; + buf = $appendSlice(_arg, _arg$1); + /* */ if (prec > 0) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (prec > 0) { */ case 19: + buf = $append(buf, 46); + _r$10 = r.utoa(10); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + rs = _r$10; + i$1 = prec - rs.$length >> 0; + while (true) { + if (!(i$1 > 0)) { break; } + buf = $append(buf, 48); + i$1 = i$1 - (1) >> 0; + } + buf = $appendSlice(buf, rs); + /* } */ case 20: + $s = -1; return ($bytesToString(buf)); + /* */ } return; } var $f = {$blk: FloatString, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, buf, i, i$1, p, prec, q, r, r2, rs, x, $s};return $f; + }; + NewRat = function NewRat$1(a, b) { + var {$24r, _r, a, b, $s, $r, $c} = $restore(this, {a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = new Rat.ptr(new Int.ptr(false, nat.nil), new Int.ptr(false, nat.nil)).SetFrac64(a, b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: NewRat$1, $c: true, $r, $24r, _r, a, b, $s};return $f; + }; + $pkg.NewRat = NewRat; + $ptrType(Rat).prototype.SetFloat64 = function SetFloat64(f) { + var {$24r, _1, _r, bits$1, exp, f, mantissa, shift, x, x$1, x$2, z, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + bits$1 = math.Float64bits(f); + mantissa = new $Uint64(bits$1.$high & 1048575, (bits$1.$low & 4294967295) >>> 0); + exp = (((x = $shiftRightUint64(bits$1, 52), new $Uint64(x.$high & 0, (x.$low & 2047) >>> 0)).$low >> 0)); + _1 = exp; + if (_1 === (2047)) { + $s = -1; return ptrType$1.nil; + } else if (_1 === (0)) { + exp = exp - (1022) >> 0; + } else { + mantissa = (x$1 = new $Uint64(1048576, 0), new $Uint64(mantissa.$high | x$1.$high, (mantissa.$low | x$1.$low) >>> 0)); + exp = exp - (1023) >> 0; + } + shift = 52 - exp >> 0; + while (true) { + if (!((x$2 = new $Uint64(mantissa.$high & 0, (mantissa.$low & 1) >>> 0), (x$2.$high === 0 && x$2.$low === 0)) && shift > 0)) { break; } + mantissa = $shiftRightUint64(mantissa, (1)); + shift = shift - (1) >> 0; + } + z.a.SetUint64(mantissa); + z.a.neg = f < 0; + z.b.Set(intOne); + if (shift > 0) { + z.b.Lsh(z.b, ((shift >>> 0))); + } else { + z.a.Lsh(z.a, ((-shift >>> 0))); + } + _r = z.norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetFloat64, $c: true, $r, $24r, _1, _r, bits$1, exp, f, mantissa, shift, x, x$1, x$2, z, $s};return $f; + }; + quotToFloat32 = function quotToFloat32$1(a, b) { + var {_r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, a, a2, alen, b, b2, blen, exact, exp, f, haveRem, lostbits, mantissa, q, r, shift, shift$1, y, y$1, y$2, y$3, y$4, $s, $r, $c} = $restore(this, {a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = 0; + exact = false; + alen = a.bitLen(); + if (alen === 0) { + _tmp = 0; + _tmp$1 = true; + f = _tmp; + exact = _tmp$1; + $s = -1; return [f, exact]; + } + blen = b.bitLen(); + if (blen === 0) { + $panic(new $String("division by zero")); + } + exp = alen - blen >> 0; + _tmp$2 = nat.nil; + _tmp$3 = nat.nil; + a2 = _tmp$2; + b2 = _tmp$3; + a2 = a2.set(a); + b2 = b2.set(b); + shift = 25 - exp >> 0; + if (shift > 0) { + a2 = a2.shl(a2, ((shift >>> 0))); + } else if (shift < 0) { + b2 = b2.shl(b2, ((-shift >>> 0))); + } + q = nat.nil; + _r = q.div(a2, a2, b2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + q = _tuple[0]; + r = _tuple[1]; + mantissa = low32(q); + haveRem = r.$length > 0; + if ((mantissa >>> 25 >>> 0) === 1) { + if (((mantissa & 1) >>> 0) === 1) { + haveRem = true; + } + mantissa = (y = (1), y < 32 ? (mantissa >>> y) : 0) >>> 0; + exp = exp + (1) >> 0; + } + /* */ if (!(((mantissa >>> 24 >>> 0) === 1))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(((mantissa >>> 24 >>> 0) === 1))) { */ case 2: + _r$1 = fmt.Sprintf("expected exactly %d bits of result", new sliceType([new $Int(25)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 3: + if (-149 <= exp && exp <= -126) { + shift$1 = (((-126 - ((exp - 1 >> 0)) >> 0) >>> 0)); + lostbits = (mantissa & ((((y$1 = shift$1, y$1 < 32 ? (1 << y$1) : 0) >>> 0) - 1 >>> 0))) >>> 0; + haveRem = haveRem || !((lostbits === 0)); + mantissa = (y$2 = (shift$1), y$2 < 32 ? (mantissa >>> y$2) : 0) >>> 0; + exp = -125; + } + exact = !haveRem; + if (!((((mantissa & 1) >>> 0) === 0))) { + exact = false; + if (haveRem || !((((mantissa & 2) >>> 0) === 0))) { + mantissa = mantissa + (1) >>> 0; + if (mantissa >= 33554432) { + mantissa = (y$3 = (1), y$3 < 32 ? (mantissa >>> y$3) : 0) >>> 0; + exp = exp + (1) >> 0; + } + } + } + mantissa = (y$4 = (1), y$4 < 32 ? (mantissa >>> y$4) : 0) >>> 0; + f = ($fround(math.Ldexp((mantissa), exp - 24 >> 0))); + if (math.IsInf((f), 0)) { + exact = false; + } + $s = -1; return [f, exact]; + /* */ } return; } var $f = {$blk: quotToFloat32$1, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, a, a2, alen, b, b2, blen, exact, exp, f, haveRem, lostbits, mantissa, q, r, shift, shift$1, y, y$1, y$2, y$3, y$4, $s};return $f; + }; + quotToFloat64 = function quotToFloat64$1(a, b) { + var {_r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, a, a2, alen, b, b2, blen, exact, exp, f, haveRem, lostbits, mantissa, q, r, shift, shift$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = 0; + exact = false; + alen = a.bitLen(); + if (alen === 0) { + _tmp = 0; + _tmp$1 = true; + f = _tmp; + exact = _tmp$1; + $s = -1; return [f, exact]; + } + blen = b.bitLen(); + if (blen === 0) { + $panic(new $String("division by zero")); + } + exp = alen - blen >> 0; + _tmp$2 = nat.nil; + _tmp$3 = nat.nil; + a2 = _tmp$2; + b2 = _tmp$3; + a2 = a2.set(a); + b2 = b2.set(b); + shift = 54 - exp >> 0; + if (shift > 0) { + a2 = a2.shl(a2, ((shift >>> 0))); + } else if (shift < 0) { + b2 = b2.shl(b2, ((-shift >>> 0))); + } + q = nat.nil; + _r = q.div(a2, a2, b2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + q = _tuple[0]; + r = _tuple[1]; + mantissa = low64(q); + haveRem = r.$length > 0; + if ((x = $shiftRightUint64(mantissa, 54), (x.$high === 0 && x.$low === 1))) { + if ((x$1 = new $Uint64(mantissa.$high & 0, (mantissa.$low & 1) >>> 0), (x$1.$high === 0 && x$1.$low === 1))) { + haveRem = true; + } + mantissa = $shiftRightUint64(mantissa, (1)); + exp = exp + (1) >> 0; + } + /* */ if (!((x$2 = $shiftRightUint64(mantissa, 53), (x$2.$high === 0 && x$2.$low === 1)))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((x$2 = $shiftRightUint64(mantissa, 53), (x$2.$high === 0 && x$2.$low === 1)))) { */ case 2: + _r$1 = fmt.Sprintf("expected exactly %d bits of result", new sliceType([new $Int(54)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 3: + if (-1074 <= exp && exp <= -1022) { + shift$1 = (((-1022 - ((exp - 1 >> 0)) >> 0) >>> 0)); + lostbits = (x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), shift$1), new $Uint64(x$4.$high - 0, x$4.$low - 1)), new $Uint64(mantissa.$high & x$3.$high, (mantissa.$low & x$3.$low) >>> 0)); + haveRem = haveRem || !((lostbits.$high === 0 && lostbits.$low === 0)); + mantissa = $shiftRightUint64(mantissa, (shift$1)); + exp = -1021; + } + exact = !haveRem; + if (!((x$5 = new $Uint64(mantissa.$high & 0, (mantissa.$low & 1) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) { + exact = false; + if (haveRem || !((x$6 = new $Uint64(mantissa.$high & 0, (mantissa.$low & 2) >>> 0), (x$6.$high === 0 && x$6.$low === 0)))) { + mantissa = (x$7 = new $Uint64(0, 1), new $Uint64(mantissa.$high + x$7.$high, mantissa.$low + x$7.$low)); + if ((mantissa.$high > 4194304 || (mantissa.$high === 4194304 && mantissa.$low >= 0))) { + mantissa = $shiftRightUint64(mantissa, (1)); + exp = exp + (1) >> 0; + } + } + } + mantissa = $shiftRightUint64(mantissa, (1)); + f = math.Ldexp(($flatten64(mantissa)), exp - 53 >> 0); + if (math.IsInf(f, 0)) { + exact = false; + } + $s = -1; return [f, exact]; + /* */ } return; } var $f = {$blk: quotToFloat64$1, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, a, a2, alen, b, b2, blen, exact, exp, f, haveRem, lostbits, mantissa, q, r, shift, shift$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + $ptrType(Rat).prototype.Float32 = function Float32() { + var {_r, _tuple, b, exact, f, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = 0; + exact = false; + x = this; + b = x.b.abs; + if (b.$length === 0) { + b = natOne; + } + _r = quotToFloat32(x.a.abs, b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = _tuple[0]; + exact = _tuple[1]; + if (x.a.neg) { + f = -f; + } + $s = -1; return [f, exact]; + /* */ } return; } var $f = {$blk: Float32, $c: true, $r, _r, _tuple, b, exact, f, x, $s};return $f; + }; + $ptrType(Rat).prototype.Float64 = function Float64() { + var {_r, _tuple, b, exact, f, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = 0; + exact = false; + x = this; + b = x.b.abs; + if (b.$length === 0) { + b = natOne; + } + _r = quotToFloat64(x.a.abs, b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = _tuple[0]; + exact = _tuple[1]; + if (x.a.neg) { + f = -f; + } + $s = -1; return [f, exact]; + /* */ } return; } var $f = {$blk: Float64, $c: true, $r, _r, _tuple, b, exact, f, x, $s};return $f; + }; + $ptrType(Rat).prototype.SetFrac = function SetFrac(a, b) { + var {$24r, _r, a, b, babs, z, $s, $r, $c} = $restore(this, {a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + z.a.neg = !(a.neg === b.neg); + babs = b.abs; + if (babs.$length === 0) { + $panic(new $String("division by zero")); + } + if (z.a === b || alias(z.a.abs, babs)) { + babs = (nat.nil).set(babs); + } + z.a.abs = z.a.abs.set(a.abs); + z.b.abs = z.b.abs.set(babs); + _r = z.norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetFrac, $c: true, $r, $24r, _r, a, b, babs, z, $s};return $f; + }; + $ptrType(Rat).prototype.SetFrac64 = function SetFrac64(a, b) { + var {$24r, _r, a, b, z, $s, $r, $c} = $restore(this, {a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if ((b.$high === 0 && b.$low === 0)) { + $panic(new $String("division by zero")); + } + z.a.SetInt64(a); + if ((b.$high < 0 || (b.$high === 0 && b.$low < 0))) { + b = new $Int64(-b.$high, -b.$low); + z.a.neg = !z.a.neg; + } + z.b.abs = z.b.abs.setUint64((new $Uint64(b.$high, b.$low))); + _r = z.norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetFrac64, $c: true, $r, $24r, _r, a, b, z, $s};return $f; + }; + $ptrType(Rat).prototype.SetInt = function SetInt(x) { + var x, z; + z = this; + z.a.Set(x); + z.b.abs = z.b.abs.setWord(1); + return z; + }; + $ptrType(Rat).prototype.SetInt64 = function SetInt64(x) { + var x, z; + z = this; + z.a.SetInt64(x); + z.b.abs = z.b.abs.setWord(1); + return z; + }; + $ptrType(Rat).prototype.SetUint64 = function SetUint64(x) { + var x, z; + z = this; + z.a.SetUint64(x); + z.b.abs = z.b.abs.setWord(1); + return z; + }; + $ptrType(Rat).prototype.Set = function Set(x) { + var x, z; + z = this; + if (!(z === x)) { + z.a.Set(x.a); + z.b.Set(x.b); + } + if (z.b.abs.$length === 0) { + z.b.abs = z.b.abs.setWord(1); + } + return z; + }; + $ptrType(Rat).prototype.Abs = function Abs(x) { + var x, z; + z = this; + z.Set(x); + z.a.neg = false; + return z; + }; + $ptrType(Rat).prototype.Neg = function Neg(x) { + var x, z; + z = this; + z.Set(x); + z.a.neg = z.a.abs.$length > 0 && !z.a.neg; + return z; + }; + $ptrType(Rat).prototype.Inv = function Inv(x) { + var _tmp, _tmp$1, x, z; + z = this; + if (x.a.abs.$length === 0) { + $panic(new $String("division by zero")); + } + z.Set(x); + _tmp = z.b.abs; + _tmp$1 = z.a.abs; + z.a.abs = _tmp; + z.b.abs = _tmp$1; + return z; + }; + $ptrType(Rat).prototype.Sign = function Sign() { + var x; + x = this; + return x.a.Sign(); + }; + $ptrType(Rat).prototype.IsInt = function IsInt() { + var x; + x = this; + return (x.b.abs.$length === 0) || (x.b.abs.cmp(natOne) === 0); + }; + $ptrType(Rat).prototype.Num = function Num() { + var x; + x = this; + return x.a; + }; + $ptrType(Rat).prototype.Denom = function Denom() { + var x; + x = this; + if (x.b.abs.$length === 0) { + return new Int.ptr(false, new nat([1])); + } + return x.b; + }; + $ptrType(Rat).prototype.norm = function norm() { + var {_r, _r$1, _r$2, _tuple, _tuple$1, f, neg, z, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if ((z.a.abs.$length === 0)) { $s = 2; continue; } + /* */ if ((z.b.abs.$length === 0)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((z.a.abs.$length === 0)) { */ case 2: + z.a.neg = false; + z.b.abs = z.b.abs.setWord(1); + $s = 5; continue; + /* } else if ((z.b.abs.$length === 0)) { */ case 3: + z.b.abs = z.b.abs.setWord(1); + $s = 5; continue; + /* } else { */ case 4: + neg = z.a.neg; + z.a.neg = false; + z.b.neg = false; + _r = NewInt(new $Int64(0, 0)).lehmerGCD(ptrType$2.nil, ptrType$2.nil, z.a, z.b); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + f = _r; + /* */ if (!((f.Cmp(intOne) === 0))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((f.Cmp(intOne) === 0))) { */ case 7: + _r$1 = z.a.abs.div(nat.nil, z.a.abs, f.abs); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + z.a.abs = _tuple[0]; + _r$2 = z.b.abs.div(nat.nil, z.b.abs, f.abs); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + z.b.abs = _tuple$1[0]; + /* } */ case 8: + z.a.neg = neg; + /* } */ case 5: + case 1: + $s = -1; return z; + /* */ } return; } var $f = {$blk: norm, $c: true, $r, _r, _r$1, _r$2, _tuple, _tuple$1, f, neg, z, $s};return $f; + }; + mulDenom = function mulDenom$1(z, x, y) { + var {$24r, _r, x, y, z, $s, $r, $c} = $restore(this, {z, x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ((x.$length === 0) && (y.$length === 0)) { + $s = -1; return z.setWord(1); + } else if ((x.$length === 0)) { + $s = -1; return z.set(y); + } else if ((y.$length === 0)) { + $s = -1; return z.set(x); + } + _r = z.mul(x, y); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: mulDenom$1, $c: true, $r, $24r, _r, x, y, z, $s};return $f; + }; + $ptrType(Int).prototype.scaleDenom = function scaleDenom(x, f) { + var {_r, f, x, z, $s, $r, $c} = $restore(this, {x, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (f.$length === 0) { + z.Set(x); + $s = -1; return; + } + _r = z.abs.mul(x.abs, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.abs = _r; + z.neg = x.neg; + $s = -1; return; + /* */ } return; } var $f = {$blk: scaleDenom, $c: true, $r, _r, f, x, z, $s};return $f; + }; + $ptrType(Rat).prototype.Cmp = function Cmp(y) { + var {_tmp, _tmp$1, a, b, x, y, $s, $r, $c} = $restore(this, {y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = [b]; + x = this; + _tmp = new Int.ptr(false, nat.nil); + _tmp$1 = new Int.ptr(false, nat.nil); + a = $clone(_tmp, Int); + b[0] = $clone(_tmp$1, Int); + $r = a.scaleDenom(x.a, y.b.abs); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = b[0].scaleDenom(y.a, x.b.abs); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return a.Cmp(b[0]); + /* */ } return; } var $f = {$blk: Cmp, $c: true, $r, _tmp, _tmp$1, a, b, x, y, $s};return $f; + }; + $ptrType(Rat).prototype.Add = function Add(x, y) { + var {$24r, _r, _r$1, _r$2, _tmp, _tmp$1, a1, a2, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a1 = [a1]; + a2 = [a2]; + z = this; + _tmp = new Int.ptr(false, nat.nil); + _tmp$1 = new Int.ptr(false, nat.nil); + a1[0] = $clone(_tmp, Int); + a2[0] = $clone(_tmp$1, Int); + $r = a1[0].scaleDenom(x.a, y.b.abs); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = a2[0].scaleDenom(y.a, x.b.abs); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = z.a.Add(a1[0], a2[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + _r$1 = mulDenom(z.b.abs, x.b.abs, y.b.abs); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.b.abs = _r$1; + _r$2 = z.norm(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 6; case 6: return $24r; + /* */ } return; } var $f = {$blk: Add, $c: true, $r, $24r, _r, _r$1, _r$2, _tmp, _tmp$1, a1, a2, x, y, z, $s};return $f; + }; + $ptrType(Rat).prototype.Sub = function Sub(x, y) { + var {$24r, _r, _r$1, _r$2, _tmp, _tmp$1, a1, a2, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a1 = [a1]; + a2 = [a2]; + z = this; + _tmp = new Int.ptr(false, nat.nil); + _tmp$1 = new Int.ptr(false, nat.nil); + a1[0] = $clone(_tmp, Int); + a2[0] = $clone(_tmp$1, Int); + $r = a1[0].scaleDenom(x.a, y.b.abs); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = a2[0].scaleDenom(y.a, x.b.abs); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = z.a.Sub(a1[0], a2[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + _r$1 = mulDenom(z.b.abs, x.b.abs, y.b.abs); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.b.abs = _r$1; + _r$2 = z.norm(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 6; case 6: return $24r; + /* */ } return; } var $f = {$blk: Sub, $c: true, $r, $24r, _r, _r$1, _r$2, _tmp, _tmp$1, a1, a2, x, y, z, $s};return $f; + }; + $ptrType(Rat).prototype.Mul = function Mul(x, y) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (x === y) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x === y) { */ case 1: + z.a.neg = false; + _r = z.a.abs.sqr(x.a.abs); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.a.abs = _r; + /* */ if (x.b.abs.$length === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (x.b.abs.$length === 0) { */ case 4: + z.b.abs = z.b.abs.setWord(1); + $s = 6; continue; + /* } else { */ case 5: + _r$1 = z.b.abs.sqr(x.b.abs); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.b.abs = _r$1; + /* } */ case 6: + $s = -1; return z; + /* } */ case 2: + _r$2 = z.a.Mul(x.a, y.a); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _r$3 = mulDenom(z.b.abs, x.b.abs, y.b.abs); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + z.b.abs = _r$3; + _r$4 = z.norm(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 11; case 11: return $24r; + /* */ } return; } var $f = {$blk: Mul, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, x, y, z, $s};return $f; + }; + $ptrType(Rat).prototype.Quo = function Quo(x, y) { + var {$24r, _r, _tmp, _tmp$1, a, b, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (y.a.abs.$length === 0) { + $panic(new $String("division by zero")); + } + _tmp = new Int.ptr(false, nat.nil); + _tmp$1 = new Int.ptr(false, nat.nil); + a = $clone(_tmp, Int); + b = $clone(_tmp$1, Int); + $r = a.scaleDenom(x.a, y.b.abs); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = b.scaleDenom(y.a, x.b.abs); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + z.a.abs = a.abs; + z.b.abs = b.abs; + z.a.neg = !(a.neg === b.neg); + _r = z.norm(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: Quo, $c: true, $r, $24r, _r, _tmp, _tmp$1, a, b, x, y, z, $s};return $f; + }; + $ptrType(Int).prototype.ProbablyPrime = function ProbablyPrime(n) { + var {$24r, _1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _v, n, r, rA, rB, w, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (n < 0) { + $panic(new $String("negative n for ProbablyPrime")); + } + if (x.neg || (x.abs.$length === 0)) { + $s = -1; return false; + } + w = (x$1 = x.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); + if ((x.abs.$length === 1) && w < 64) { + $s = -1; return !((x$2 = (x$3 = $shiftLeft64(new $Uint64(0, 1), w), new $Uint64(673221152 & x$3.$high, (2693408940 & x$3.$low) >>> 0)), (x$2.$high === 0 && x$2.$low === 0))); + } + if (((w & 1) >>> 0) === 0) { + $s = -1; return false; + } + _tmp = 0; + _tmp$1 = 0; + rA = _tmp; + rB = _tmp$1; + _1 = 32; + if (_1 === (32)) { + rA = ((x.abs.modW(4127218095) >>> 0)); + rB = ((x.abs.modW(3948078067) >>> 0)); + } else if (_1 === (64)) { + r = x.abs.modW(820596253); + rA = (((_r = r % 4127218095, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0)); + rB = (((_r$1 = r % 3948078067, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >>> 0)); + } else { + $panic(new $String("math/big: invalid word size")); + } + if (((_r$2 = rA % 3, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$3 = rA % 5, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$4 = rA % 7, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$5 = rA % 11, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$6 = rA % 13, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$7 = rA % 17, _r$7 === _r$7 ? _r$7 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$8 = rA % 19, _r$8 === _r$8 ? _r$8 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$9 = rA % 23, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$10 = rA % 37, _r$10 === _r$10 ? _r$10 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$11 = rB % 29, _r$11 === _r$11 ? _r$11 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$12 = rB % 31, _r$12 === _r$12 ? _r$12 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$13 = rB % 41, _r$13 === _r$13 ? _r$13 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$14 = rB % 43, _r$14 === _r$14 ? _r$14 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$15 = rB % 47, _r$15 === _r$15 ? _r$15 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$16 = rB % 53, _r$16 === _r$16 ? _r$16 : $throwRuntimeError("integer divide by zero")) === 0)) { + $s = -1; return false; + } + _r$17 = x.abs.probablyPrimeMillerRabin(n + 1 >> 0, true); /* */ $s = 2; case 2: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + if (!(_r$17)) { _v = false; $s = 1; continue s; } + _r$18 = x.abs.probablyPrimeLucas(); /* */ $s = 3; case 3: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _v = _r$18; case 1: + $24r = _v; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: ProbablyPrime, $c: true, $r, $24r, _1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _v, n, r, rA, rB, w, x, x$1, x$2, x$3, $s};return $f; + }; + nat.prototype.probablyPrimeMillerRabin = function probablyPrimeMillerRabin(reps, force2) { + var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tuple, force2, i, j, k, n, nm1, nm3, nm3Len, q, quotient, rand$1, reps, x, y, $s, $r, $c} = $restore(this, {reps, force2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = this; + _r = (nat.nil).sub(n, natOne); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + nm1 = _r; + k = nm1.trailingZeroBits(); + q = (nat.nil).shr(nm1, k); + _r$1 = (nat.nil).sub(nm1, natTwo); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + nm3 = _r$1; + rand$1 = rand.New(rand.NewSource((new $Int64(0, (0 >= n.$length ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + 0]))))); + _tmp = nat.nil; + _tmp$1 = nat.nil; + _tmp$2 = nat.nil; + x = _tmp; + y = _tmp$1; + quotient = _tmp$2; + nm3Len = nm3.bitLen(); + i = 0; + /* while (true) { */ case 3: + /* if (!(i < reps)) { break; } */ if(!(i < reps)) { $s = 4; continue; } + /* */ if ((i === (reps - 1 >> 0)) && force2) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ((i === (reps - 1 >> 0)) && force2) { */ case 5: + x = x.set(natTwo); + $s = 7; continue; + /* } else { */ case 6: + _r$2 = x.random(rand$1, nm3, nm3Len); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = _r$2; + _r$3 = x.add(x, natTwo); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + x = _r$3; + /* } */ case 7: + _r$4 = y.expNN(x, q, n, false); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + y = _r$4; + if ((y.cmp(natOne) === 0) || (y.cmp(nm1) === 0)) { + i = i + (1) >> 0; + /* continue; */ $s = 3; continue; + } + j = 1; + /* while (true) { */ case 11: + /* if (!(j < k)) { break; } */ if(!(j < k)) { $s = 12; continue; } + _r$5 = y.sqr(y); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + y = _r$5; + _r$6 = quotient.div(y, y, n); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple = _r$6; + quotient = _tuple[0]; + y = _tuple[1]; + if (y.cmp(nm1) === 0) { + i = i + (1) >> 0; + /* continue NextRandom; */ $s = 3; continue s; + } + if (y.cmp(natOne) === 0) { + $s = -1; return false; + } + j = j + (1) >>> 0; + $s = 11; continue; + case 12: + $s = -1; return false; + case 4: + $s = -1; return true; + /* */ } return; } var $f = {$blk: probablyPrimeMillerRabin, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tuple, force2, i, j, k, n, nm1, nm3, nm3Len, q, quotient, rand$1, reps, x, y, $s};return $f; + }; + $ptrType(nat).prototype.probablyPrimeMillerRabin = function(...$args) { return this.$get().probablyPrimeMillerRabin(...$args); }; + nat.prototype.probablyPrimeLucas = function probablyPrimeLucas() { + var {_r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, d, i, intD, intN, j, n, natP, nm2, p, r, s, t, t1, t1$1, t2, t2$1, t3, vk, vk1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = this; + if ((n.$length === 0) || (n.cmp(natOne) === 0)) { + $s = -1; return false; + } + if ((((0 >= n.$length ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + 0]) & 1) >>> 0) === 0) { + $s = -1; return n.cmp(natTwo) === 0; + } + p = 3; + d = new nat([1]); + t1 = (nat.nil); + intD = new Int.ptr(false, d); + intN = new Int.ptr(false, n); + /* while (true) { */ case 1: + /* */ if (p > 10000) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (p > 10000) { */ case 3: + _r = intN.String(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(new $String("math/big: internal error: cannot find (D/n) = -1 for " + _r)); + /* } */ case 4: + (0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0] = (($imul(p, p) >>> 0) - 4 >>> 0)); + _r$1 = Jacobi(intD, intN); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + j = _r$1; + if (j === -1) { + /* break; */ $s = 2; continue; + } + if (j === 0) { + $s = -1; return (n.$length === 1) && ((0 >= n.$length ? ($throwRuntimeError("index out of range"), undefined) : n.$array[n.$offset + 0]) === (p + 2 >>> 0)); + } + /* */ if (p === 40) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (p === 40) { */ case 7: + _r$2 = t1.sqrt(n); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + t1 = _r$2; + _r$3 = t1.sqr(t1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + t1 = _r$3; + if (t1.cmp(n) === 0) { + $s = -1; return false; + } + /* } */ case 8: + p = p + (1) >>> 0; + $s = 1; continue; + case 2: + _r$4 = (nat.nil).add(n, natOne); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + s = _r$4; + r = ((s.trailingZeroBits() >> 0)); + s = s.shr(s, ((r >>> 0))); + _r$5 = (nat.nil).sub(n, natTwo); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + nm2 = _r$5; + natP = (nat.nil).setWord(p); + vk = (nat.nil).setWord(2); + vk1 = (nat.nil).setWord(p); + t2 = (nat.nil); + i = (s.bitLen()); + /* while (true) { */ case 13: + /* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 14; continue; } + /* */ if (!((s.bit(((i >>> 0))) === 0))) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!((s.bit(((i >>> 0))) === 0))) { */ case 15: + _r$6 = t1.mul(vk, vk1); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + t1 = _r$6; + _r$7 = t1.add(t1, n); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + t1 = _r$7; + _r$8 = t1.sub(t1, natP); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + t1 = _r$8; + _r$9 = t2.div(vk, t1, n); /* */ $s = 21; case 21: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple = _r$9; + t2 = _tuple[0]; + vk = _tuple[1]; + _r$10 = t1.sqr(vk1); /* */ $s = 22; case 22: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + t1 = _r$10; + _r$11 = t1.add(t1, nm2); /* */ $s = 23; case 23: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + t1 = _r$11; + _r$12 = t2.div(vk1, t1, n); /* */ $s = 24; case 24: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _tuple$1 = _r$12; + t2 = _tuple$1[0]; + vk1 = _tuple$1[1]; + $s = 17; continue; + /* } else { */ case 16: + _r$13 = t1.mul(vk, vk1); /* */ $s = 25; case 25: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + t1 = _r$13; + _r$14 = t1.add(t1, n); /* */ $s = 26; case 26: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + t1 = _r$14; + _r$15 = t1.sub(t1, natP); /* */ $s = 27; case 27: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + t1 = _r$15; + _r$16 = t2.div(vk1, t1, n); /* */ $s = 28; case 28: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _tuple$2 = _r$16; + t2 = _tuple$2[0]; + vk1 = _tuple$2[1]; + _r$17 = t1.sqr(vk); /* */ $s = 29; case 29: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + t1 = _r$17; + _r$18 = t1.add(t1, nm2); /* */ $s = 30; case 30: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + t1 = _r$18; + _r$19 = t2.div(vk, t1, n); /* */ $s = 31; case 31: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _tuple$3 = _r$19; + t2 = _tuple$3[0]; + vk = _tuple$3[1]; + /* } */ case 17: + i = i - (1) >> 0; + $s = 13; continue; + case 14: + /* */ if ((vk.cmp(natTwo) === 0) || (vk.cmp(nm2) === 0)) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if ((vk.cmp(natTwo) === 0) || (vk.cmp(nm2) === 0)) { */ case 32: + _r$20 = t1.mul(vk, natP); /* */ $s = 34; case 34: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + t1$1 = _r$20; + t2$1 = t2.shl(vk1, 1); + if (t1$1.cmp(t2$1) < 0) { + _tmp = t2$1; + _tmp$1 = t1$1; + t1$1 = _tmp; + t2$1 = _tmp$1; + } + _r$21 = t1$1.sub(t1$1, t2$1); /* */ $s = 35; case 35: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + t1$1 = _r$21; + t3 = vk1; + vk1 = nat.nil; + $unused(vk1); + _r$22 = t2$1.div(t3, t1$1, n); /* */ $s = 36; case 36: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple$4 = _r$22; + t2$1 = _tuple$4[0]; + t3 = _tuple$4[1]; + if (t3.$length === 0) { + $s = -1; return true; + } + /* } */ case 33: + t = 0; + /* while (true) { */ case 37: + /* if (!(t < (r - 1 >> 0))) { break; } */ if(!(t < (r - 1 >> 0))) { $s = 38; continue; } + if (vk.$length === 0) { + $s = -1; return true; + } + if ((vk.$length === 1) && ((0 >= vk.$length ? ($throwRuntimeError("index out of range"), undefined) : vk.$array[vk.$offset + 0]) === 2)) { + $s = -1; return false; + } + _r$23 = t1.sqr(vk); /* */ $s = 39; case 39: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + t1 = _r$23; + _r$24 = t1.sub(t1, natTwo); /* */ $s = 40; case 40: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + t1 = _r$24; + _r$25 = t2.div(vk, t1, n); /* */ $s = 41; case 41: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _tuple$5 = _r$25; + t2 = _tuple$5[0]; + vk = _tuple$5[1]; + t = t + (1) >> 0; + $s = 37; continue; + case 38: + $s = -1; return false; + /* */ } return; } var $f = {$blk: probablyPrimeLucas, $c: true, $r, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, d, i, intD, intN, j, n, natP, nm2, p, r, s, t, t1, t1$1, t2, t2$1, t3, vk, vk1, $s};return $f; + }; + $ptrType(nat).prototype.probablyPrimeLucas = function(...$args) { return this.$get().probablyPrimeLucas(...$args); }; + nat.prototype.rem = function rem(u, v) { + var {_r, _r$1, _tuple, q, qp, r, u, v, z, $s, $r, $c} = $restore(this, {u, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = nat.nil; + z = this; + if (alias(z, u)) { + z = nat.nil; + } + _r = getNat(0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + qp = _r; + _r$1 = qp.div(z, u, v); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + q = _tuple[0]; + r = _tuple[1]; + qp.$set(q); + putNat(qp); + r = r; + $s = -1; return r; + /* */ } return; } var $f = {$blk: rem, $c: true, $r, _r, _r$1, _tuple, q, qp, r, u, v, z, $s};return $f; + }; + $ptrType(nat).prototype.rem = function(...$args) { return this.$get().rem(...$args); }; + nat.prototype.div = function div(z2, u, v) { + var {_r, _tuple, _tuple$1, q, r, r2, u, v, z, z2, $s, $r, $c} = $restore(this, {z2, u, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + q = nat.nil; + r = nat.nil; + z = this; + if (v.$length === 0) { + $panic(new $String("division by zero")); + } + if (u.cmp(v) < 0) { + q = $subslice(z, 0, 0); + r = z2.set(u); + $s = -1; return [q, r]; + } + if (v.$length === 1) { + r2 = 0; + _tuple = z.divW(u, (0 >= v.$length ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + 0])); + q = _tuple[0]; + r2 = _tuple[1]; + r = z2.setWord(r2); + $s = -1; return [q, r]; + } + _r = z.divLarge(z2, u, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + q = _tuple$1[0]; + r = _tuple$1[1]; + $s = -1; return [q, r]; + /* */ } return; } var $f = {$blk: div, $c: true, $r, _r, _tuple, _tuple$1, q, r, r2, u, v, z, z2, $s};return $f; + }; + $ptrType(nat).prototype.div = function(...$args) { return this.$get().div(...$args); }; + nat.prototype.divW = function divW(x, y) { + var m, q, r, x, y, z; + q = nat.nil; + r = 0; + z = this; + m = x.$length; + if ((y === 0)) { + $panic(new $String("division by zero")); + } else if ((y === 1)) { + q = z.set(x); + return [q, r]; + } else if ((m === 0)) { + q = $subslice(z, 0, 0); + return [q, r]; + } + z = z.make(m); + r = divWVW($convertSliceType(z, sliceType$2), 0, $convertSliceType(x, sliceType$2), y); + q = z.norm(); + return [q, r]; + }; + $ptrType(nat).prototype.divW = function(...$args) { return this.$get().divW(...$args); }; + nat.prototype.modW = function modW(d) { + var d, q, r, x; + r = 0; + x = this; + q = nat.nil; + q = q.make(x.$length); + r = divWVW($convertSliceType(q, sliceType$2), 0, $convertSliceType(x, sliceType$2), d); + return r; + }; + $ptrType(nat).prototype.modW = function(...$args) { return this.$get().modW(...$args); }; + divWVW = function divWVW$1(z, xn, x, y) { + var _tuple, _tuple$1, i, qq, r, rec, rr, x, xn, y, z; + r = 0; + r = xn; + if (x.$length === 1) { + _tuple = bits.Div(((r >>> 0)), (((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]) >>> 0)), ((y >>> 0))); + qq = _tuple[0]; + rr = _tuple[1]; + (0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = ((qq >>> 0))); + r = ((rr >>> 0)); + return r; + } + rec = reciprocalWord(y); + i = z.$length - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + _tuple$1 = divWW(r, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), y, rec); + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple$1[0]); + r = _tuple$1[1]; + i = i - (1) >> 0; + } + r = r; + return r; + }; + nat.prototype.divLarge = function divLarge(u, uIn, vIn) { + var {_r, _tmp, _tmp$1, m, n, q, r, shift, u, uIn, v, vIn, vp, x, x$1, z, $s, $r, $c} = $restore(this, {u, uIn, vIn}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + q = nat.nil; + r = nat.nil; + z = this; + n = vIn.$length; + m = uIn.$length - n >> 0; + shift = nlz((x = n - 1 >> 0, ((x < 0 || x >= vIn.$length) ? ($throwRuntimeError("index out of range"), undefined) : vIn.$array[vIn.$offset + x]))); + _r = getNat(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + vp = _r; + v = vp.$get(); + shlVU($convertSliceType(v, sliceType$2), $convertSliceType(vIn, sliceType$2), shift); + u = u.make(uIn.$length + 1 >> 0); + (x$1 = uIn.$length, ((x$1 < 0 || x$1 >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + x$1] = shlVU($convertSliceType($subslice(u, 0, uIn.$length), sliceType$2), $convertSliceType(uIn, sliceType$2), shift))); + if (alias(z, u)) { + z = nat.nil; + } + q = z.make(m + 1 >> 0); + /* */ if (n < 100) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (n < 100) { */ case 2: + $r = q.divBasic(u, v); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 4; continue; + /* } else { */ case 3: + $r = q.divRecursive(u, v); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + putNat(vp); + q = q.norm(); + shrVU($convertSliceType(u, sliceType$2), $convertSliceType(u, sliceType$2), shift); + r = u.norm(); + _tmp = q; + _tmp$1 = r; + q = _tmp; + r = _tmp$1; + $s = -1; return [q, r]; + /* */ } return; } var $f = {$blk: divLarge, $c: true, $r, _r, _tmp, _tmp$1, m, n, q, r, shift, u, uIn, v, vIn, vp, x, x$1, z, $s};return $f; + }; + $ptrType(nat).prototype.divLarge = function(...$args) { return this.$get().divLarge(...$args); }; + nat.prototype.divBasic = function divBasic(u, v) { + var {_index, _r, _tuple, _tuple$1, _tuple$2, c, c$1, j, m, n, prevRhat, q, qhat, qhatv, qhatvp, qhl, rec, rhat, u, ujn, ujn2, v, vn1, vn2, x, x$1, x$2, x$3, x$4, x1, x2, $s, $r, $c} = $restore(this, {u, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + q = this; + n = v.$length; + m = u.$length - n >> 0; + _r = getNat(n + 1 >> 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + qhatvp = _r; + qhatv = qhatvp.$get(); + vn1 = (x = n - 1 >> 0, ((x < 0 || x >= v.$length) ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + x])); + rec = reciprocalWord(vn1); + j = m; + while (true) { + if (!(j >= 0)) { break; } + qhat = 4294967295; + ujn = 0; + if ((j + n >> 0) < u.$length) { + ujn = (x$1 = j + n >> 0, ((x$1 < 0 || x$1 >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + x$1])); + } + if (!((ujn === vn1))) { + rhat = 0; + _tuple = divWW(ujn, (x$2 = (j + n >> 0) - 1 >> 0, ((x$2 < 0 || x$2 >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + x$2])), vn1, rec); + qhat = _tuple[0]; + rhat = _tuple[1]; + vn2 = (x$3 = n - 2 >> 0, ((x$3 < 0 || x$3 >= v.$length) ? ($throwRuntimeError("index out of range"), undefined) : v.$array[v.$offset + x$3])); + _tuple$1 = mulWW(qhat, vn2); + x1 = _tuple$1[0]; + x2 = _tuple$1[1]; + ujn2 = (x$4 = (j + n >> 0) - 2 >> 0, ((x$4 < 0 || x$4 >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + x$4])); + while (true) { + if (!(greaterThan(x1, x2, rhat, ujn2))) { break; } + qhat = qhat - (1) >>> 0; + prevRhat = rhat; + rhat = rhat + (vn1) >>> 0; + if (rhat < prevRhat) { + break; + } + _tuple$2 = mulWW(qhat, vn2); + x1 = _tuple$2[0]; + x2 = _tuple$2[1]; + } + } + ((n < 0 || n >= qhatv.$length) ? ($throwRuntimeError("index out of range"), undefined) : qhatv.$array[qhatv.$offset + n] = mulAddVWW($convertSliceType($subslice(qhatv, 0, n), sliceType$2), $convertSliceType(v, sliceType$2), qhat, 0)); + qhl = qhatv.$length; + if ((j + qhl >> 0) > u.$length && (((n < 0 || n >= qhatv.$length) ? ($throwRuntimeError("index out of range"), undefined) : qhatv.$array[qhatv.$offset + n]) === 0)) { + qhl = qhl - (1) >> 0; + } + c = subVV($convertSliceType($subslice(u, j, (j + qhl >> 0)), sliceType$2), $convertSliceType($subslice(u, j), sliceType$2), $convertSliceType(qhatv, sliceType$2)); + if (!((c === 0))) { + c$1 = addVV($convertSliceType($subslice(u, j, (j + n >> 0)), sliceType$2), $convertSliceType($subslice(u, j), sliceType$2), $convertSliceType(v, sliceType$2)); + if (n < qhl) { + _index = j + n >> 0; + ((_index < 0 || _index >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + _index] = (((_index < 0 || _index >= u.$length) ? ($throwRuntimeError("index out of range"), undefined) : u.$array[u.$offset + _index]) + (c$1) >>> 0)); + } + qhat = qhat - (1) >>> 0; + } + if ((j === m) && (m === q.$length) && (qhat === 0)) { + j = j - (1) >> 0; + continue; + } + ((j < 0 || j >= q.$length) ? ($throwRuntimeError("index out of range"), undefined) : q.$array[q.$offset + j] = qhat); + j = j - (1) >> 0; + } + putNat(qhatvp); + $s = -1; return; + /* */ } return; } var $f = {$blk: divBasic, $c: true, $r, _index, _r, _tuple, _tuple$1, _tuple$2, c, c$1, j, m, n, prevRhat, q, qhat, qhatv, qhatvp, qhl, rec, rhat, u, ujn, ujn2, v, vn1, vn2, x, x$1, x$2, x$3, x$4, x1, x2, $s};return $f; + }; + $ptrType(nat).prototype.divBasic = function(...$args) { return this.$get().divBasic(...$args); }; + greaterThan = function greaterThan$1(x1, x2, y1, y2) { + var x1, x2, y1, y2; + return x1 > y1 || (x1 === y1) && x2 > y2; + }; + nat.prototype.divRecursive = function divRecursive(u, v) { + var {_i, _r, _ref, n, recDepth, temps, tmp, u, v, z, $s, $r, $c} = $restore(this, {u, v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + recDepth = $imul(2, bits.Len(((v.$length >>> 0)))); + _r = getNat($imul(3, v.$length)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tmp = _r; + temps = $makeSlice(sliceType$3, recDepth); + z.clear(); + $r = z.divRecursiveStep(u, v, 0, tmp, temps); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = temps; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + n = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(n === ptrType$3.nil)) { + putNat(n); + } + _i++; + } + putNat(tmp); + $s = -1; return; + /* */ } return; } var $f = {$blk: divRecursive, $c: true, $r, _i, _r, _ref, n, recDepth, temps, tmp, u, v, z, $s};return $f; + }; + $ptrType(nat).prototype.divRecursive = function(...$args) { return this.$get().divRecursive(...$args); }; + nat.prototype.divRecursiveStep = function divRecursiveStep(u, v, depth, tmp, temps) { + var {B, _q, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, c, c$1, c$2, c$3, depth, e, e$1, i, i$1, j, m, n, qhat, qhat$1, qhatv, qhatv$1, s, s$1, temps, tmp, u, uu, v, z, $s, $r, $c} = $restore(this, {u, v, depth, tmp, temps}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + u = u.norm(); + v = v.norm(); + if (u.$length === 0) { + z.clear(); + $s = -1; return; + } + n = v.$length; + /* */ if (n < 100) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n < 100) { */ case 1: + $r = z.divBasic(u, v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 2: + m = u.$length - n >> 0; + if (m < 0) { + $s = -1; return; + } + B = (_q = n / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + /* */ if (((depth < 0 || depth >= temps.$length) ? ($throwRuntimeError("index out of range"), undefined) : temps.$array[temps.$offset + depth]) === ptrType$3.nil) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (((depth < 0 || depth >= temps.$length) ? ($throwRuntimeError("index out of range"), undefined) : temps.$array[temps.$offset + depth]) === ptrType$3.nil) { */ case 4: + _r = getNat(n); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ((depth < 0 || depth >= temps.$length) ? ($throwRuntimeError("index out of range"), undefined) : temps.$array[temps.$offset + depth] = _r); + $s = 6; continue; + /* } else { */ case 5: + ((depth < 0 || depth >= temps.$length) ? ($throwRuntimeError("index out of range"), undefined) : temps.$array[temps.$offset + depth]).$set(((depth < 0 || depth >= temps.$length) ? ($throwRuntimeError("index out of range"), undefined) : temps.$array[temps.$offset + depth]).make(B + 1 >> 0)); + /* } */ case 6: + j = m; + /* while (true) { */ case 8: + /* if (!(j > B)) { break; } */ if(!(j > B)) { $s = 9; continue; } + s = (B - 1 >> 0); + uu = $subslice(u, (j - B >> 0)); + qhat = ((depth < 0 || depth >= temps.$length) ? ($throwRuntimeError("index out of range"), undefined) : temps.$array[temps.$offset + depth]).$get(); + qhat.clear(); + $r = qhat.divRecursiveStep($subslice(uu, s, (B + n >> 0)), $subslice(v, s), depth + 1 >> 0, tmp, temps); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + qhat = qhat.norm(); + qhatv = tmp.make($imul(3, n)); + qhatv.clear(); + _r$1 = qhatv.mul(qhat, $subslice(v, 0, s)); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + qhatv = _r$1; + i = 0; + /* while (true) { */ case 12: + /* if (!(i < 2)) { break; } */ if(!(i < 2)) { $s = 13; continue; } + e = qhatv.cmp(uu.norm()); + if (e <= 0) { + /* break; */ $s = 13; continue; + } + _r$2 = subVW($convertSliceType(qhat, sliceType$2), $convertSliceType(qhat, sliceType$2), 1); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + c = subVV($convertSliceType($subslice(qhatv, 0, s), sliceType$2), $convertSliceType($subslice(qhatv, 0, s), sliceType$2), $convertSliceType($subslice(v, 0, s), sliceType$2)); + /* */ if (qhatv.$length > s) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (qhatv.$length > s) { */ case 15: + _r$3 = subVW($convertSliceType($subslice(qhatv, s), sliceType$2), $convertSliceType($subslice(qhatv, s), sliceType$2), c); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + /* } */ case 16: + $r = addAt($subslice(uu, s), $subslice(v, s), 0); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 12; continue; + case 13: + if (qhatv.cmp(uu.norm()) > 0) { + $panic(new $String("impossible")); + } + c$1 = subVV($convertSliceType($subslice(uu, 0, qhatv.$length), sliceType$2), $convertSliceType($subslice(uu, 0, qhatv.$length), sliceType$2), $convertSliceType(qhatv, sliceType$2)); + /* */ if (c$1 > 0) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (c$1 > 0) { */ case 19: + _r$4 = subVW($convertSliceType($subslice(uu, qhatv.$length), sliceType$2), $convertSliceType($subslice(uu, qhatv.$length), sliceType$2), c$1); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + /* } */ case 20: + $r = addAt(z, qhat, j - B >> 0); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + j = j - (B) >> 0; + $s = 8; continue; + case 9: + s$1 = B - 1 >> 0; + qhat$1 = ((depth < 0 || depth >= temps.$length) ? ($throwRuntimeError("index out of range"), undefined) : temps.$array[temps.$offset + depth]).$get(); + qhat$1.clear(); + $r = qhat$1.divRecursiveStep($subslice(u, s$1).norm(), $subslice(v, s$1), depth + 1 >> 0, tmp, temps); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + qhat$1 = qhat$1.norm(); + qhatv$1 = tmp.make($imul(3, n)); + qhatv$1.clear(); + _r$5 = qhatv$1.mul(qhat$1, $subslice(v, 0, s$1)); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + qhatv$1 = _r$5; + i$1 = 0; + /* while (true) { */ case 25: + /* if (!(i$1 < 2)) { break; } */ if(!(i$1 < 2)) { $s = 26; continue; } + e$1 = qhatv$1.cmp(u.norm()); + /* */ if (e$1 > 0) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (e$1 > 0) { */ case 27: + _r$6 = subVW($convertSliceType(qhat$1, sliceType$2), $convertSliceType(qhat$1, sliceType$2), 1); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$6; + c$2 = subVV($convertSliceType($subslice(qhatv$1, 0, s$1), sliceType$2), $convertSliceType($subslice(qhatv$1, 0, s$1), sliceType$2), $convertSliceType($subslice(v, 0, s$1), sliceType$2)); + /* */ if (qhatv$1.$length > s$1) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (qhatv$1.$length > s$1) { */ case 30: + _r$7 = subVW($convertSliceType($subslice(qhatv$1, s$1), sliceType$2), $convertSliceType($subslice(qhatv$1, s$1), sliceType$2), c$2); /* */ $s = 32; case 32: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + /* } */ case 31: + $r = addAt($subslice(u, s$1), $subslice(v, s$1), 0); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 28: + i$1 = i$1 + (1) >> 0; + $s = 25; continue; + case 26: + if (qhatv$1.cmp(u.norm()) > 0) { + $panic(new $String("impossible")); + } + c$3 = subVV($convertSliceType($subslice(u, 0, qhatv$1.$length), sliceType$2), $convertSliceType($subslice(u, 0, qhatv$1.$length), sliceType$2), $convertSliceType(qhatv$1, sliceType$2)); + /* */ if (c$3 > 0) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (c$3 > 0) { */ case 34: + _r$8 = subVW($convertSliceType($subslice(u, qhatv$1.$length), sliceType$2), $convertSliceType($subslice(u, qhatv$1.$length), sliceType$2), c$3); /* */ $s = 36; case 36: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + c$3 = _r$8; + /* } */ case 35: + if (c$3 > 0) { + $panic(new $String("impossible")); + } + $r = addAt(z, qhat$1.norm(), 0); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: divRecursiveStep, $c: true, $r, B, _q, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, c, c$1, c$2, c$3, depth, e, e$1, i, i$1, j, m, n, qhat, qhat$1, qhatv, qhatv$1, s, s$1, temps, tmp, u, uu, v, z, $s};return $f; + }; + $ptrType(nat).prototype.divRecursiveStep = function(...$args) { return this.$get().divRecursiveStep(...$args); }; + maxPow = function maxPow$1(b) { + var _q, _tmp, _tmp$1, b, max$1, n, p; + p = 0; + n = 0; + _tmp = b; + _tmp$1 = 1; + p = _tmp; + n = _tmp$1; + max$1 = (_q = 4294967295 / b, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + while (true) { + if (!(p <= max$1)) { break; } + p = $imul(p, (b)) >>> 0; + n = n + (1) >> 0; + } + return [p, n]; + }; + pow = function pow$1(x, n) { + var n, p, x; + p = 0; + p = 1; + while (true) { + if (!(n > 0)) { break; } + if (!(((n & 1) === 0))) { + p = $imul(p, (x)) >>> 0; + } + x = $imul(x, (x)) >>> 0; + n = (n >> $min((1), 31)) >> 0; + } + return p; + }; + nat.prototype.scan = function scan(r, base, fracOk) { + var {_1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, b1, base, baseOk, bn, ch, count, d1, di, dp, err, fracOk, i, invalSep, n, prefix, prev, r, res, z, $s, $r, $c} = $restore(this, {r, base, fracOk}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + res = nat.nil; + b = 0; + count = 0; + err = $ifaceNil; + z = this; + baseOk = (base === 0) || !fracOk && 2 <= base && base <= 62 || fracOk && ((base === 2) || (base === 8) || (base === 10) || (base === 16)); + /* */ if (!baseOk) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!baseOk) { */ case 1: + _r = fmt.Sprintf("invalid number base %d", new sliceType([new $Int(base)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(new $String(_r)); + /* } */ case 2: + prev = 46; + invalSep = false; + _r$1 = r.ReadByte(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + ch = _tuple[0]; + err = _tuple[1]; + _tmp = base; + _tmp$1 = 0; + b = _tmp; + prefix = _tmp$1; + /* */ if (base === 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (base === 0) { */ case 5: + b = 10; + /* */ if ($interfaceIsEqual(err, $ifaceNil) && (ch === 48)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ($interfaceIsEqual(err, $ifaceNil) && (ch === 48)) { */ case 7: + prev = 48; + count = 1; + _r$2 = r.ReadByte(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + ch = _tuple$1[0]; + err = _tuple$1[1]; + /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 10: + _1 = ch; + if ((_1 === (98)) || (_1 === (66))) { + _tmp$2 = 2; + _tmp$3 = 98; + b = _tmp$2; + prefix = _tmp$3; + } else if ((_1 === (111)) || (_1 === (79))) { + _tmp$4 = 8; + _tmp$5 = 111; + b = _tmp$4; + prefix = _tmp$5; + } else if ((_1 === (120)) || (_1 === (88))) { + _tmp$6 = 16; + _tmp$7 = 120; + b = _tmp$6; + prefix = _tmp$7; + } else if (!fracOk) { + _tmp$8 = 8; + _tmp$9 = 48; + b = _tmp$8; + prefix = _tmp$9; + } + /* */ if (!((prefix === 0))) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!((prefix === 0))) { */ case 12: + count = 0; + /* */ if (!((prefix === 48))) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!((prefix === 48))) { */ case 14: + _r$3 = r.ReadByte(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$2 = _r$3; + ch = _tuple$2[0]; + err = _tuple$2[1]; + /* } */ case 15: + /* } */ case 13: + /* } */ case 11: + /* } */ case 8: + /* } */ case 6: + z = $subslice(z, 0, 0); + b1 = ((b >>> 0)); + _tuple$3 = maxPow(b1); + bn = _tuple$3[0]; + n = _tuple$3[1]; + di = 0; + i = 0; + dp = -1; + /* while (true) { */ case 17: + /* if (!($interfaceIsEqual(err, $ifaceNil))) { break; } */ if(!($interfaceIsEqual(err, $ifaceNil))) { $s = 18; continue; } + /* */ if ((ch === 46) && fracOk) { $s = 19; continue; } + /* */ if ((ch === 95) && (base === 0)) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if ((ch === 46) && fracOk) { */ case 19: + fracOk = false; + if (prev === 95) { + invalSep = true; + } + prev = 46; + dp = count; + $s = 22; continue; + /* } else if ((ch === 95) && (base === 0)) { */ case 20: + if (!((prev === 48))) { + invalSep = true; + } + prev = 95; + $s = 22; continue; + /* } else { */ case 21: + d1 = 0; + if (48 <= ch && ch <= 57) { + d1 = (((ch - 48 << 24 >>> 24) >>> 0)); + } else if (97 <= ch && ch <= 122) { + d1 = ((((ch - 97 << 24 >>> 24) + 10 << 24 >>> 24) >>> 0)); + } else if (65 <= ch && ch <= 90) { + if (b <= 36) { + d1 = ((((ch - 65 << 24 >>> 24) + 10 << 24 >>> 24) >>> 0)); + } else { + d1 = ((((ch - 65 << 24 >>> 24) + 36 << 24 >>> 24) >>> 0)); + } + } else { + d1 = 63; + } + /* */ if (d1 >= b1) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (d1 >= b1) { */ case 23: + _r$4 = r.UnreadByte(); /* */ $s = 25; case 25: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + /* break; */ $s = 18; continue; + /* } */ case 24: + prev = 48; + count = count + (1) >> 0; + di = ($imul(di, b1) >>> 0) + d1 >>> 0; + i = i + (1) >> 0; + if (i === n) { + z = z.mulAddWW(z, bn, di); + di = 0; + i = 0; + } + /* } */ case 22: + _r$5 = r.ReadByte(); /* */ $s = 26; case 26: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$4 = _r$5; + ch = _tuple$4[0]; + err = _tuple$4[1]; + $s = 17; continue; + case 18: + if ($interfaceIsEqual(err, io.EOF)) { + err = $ifaceNil; + } + if ($interfaceIsEqual(err, $ifaceNil) && (invalSep || (prev === 95))) { + err = errInvalSep; + } + if (count === 0) { + if (prefix === 48) { + _tmp$10 = $subslice(z, 0, 0); + _tmp$11 = 10; + _tmp$12 = 1; + _tmp$13 = err; + res = _tmp$10; + b = _tmp$11; + count = _tmp$12; + err = _tmp$13; + $s = -1; return [res, b, count, err]; + } + err = errNoDigits; + } + if (i > 0) { + z = z.mulAddWW(z, pow(b1, i), di); + } + res = z.norm(); + if (dp >= 0) { + count = dp - count >> 0; + } + $s = -1; return [res, b, count, err]; + /* */ } return; } var $f = {$blk: scan, $c: true, $r, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, b1, base, baseOk, bn, ch, count, d1, di, dp, err, fracOk, i, invalSep, n, prefix, prev, r, res, z, $s};return $f; + }; + $ptrType(nat).prototype.scan = function(...$args) { return this.$get().scan(...$args); }; + nat.prototype.utoa = function utoa(base) { + var {$24r, _r, base, x, $s, $r, $c} = $restore(this, {base}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.itoa(false, base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: utoa, $c: true, $r, $24r, _r, base, x, $s};return $f; + }; + $ptrType(nat).prototype.utoa = function(...$args) { return this.$get().utoa(...$args); }; + nat.prototype.itoa = function itoa(neg, base) { + var {_r, _tuple, b, base, bb, i, k, mask, nbits, ndigits, neg, q, s, shift, table, w, x, y, y$1, y$2, y$3, y$4, $s, $r, $c} = $restore(this, {neg, base}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (base < 2 || base > 62) { + $panic(new $String("invalid base")); + } + if (x.$length === 0) { + $s = -1; return (new sliceType$1($stringToBytes("0"))); + } + i = (((x.bitLen()) / math.Log2((base)) >> 0)) + 1 >> 0; + if (neg) { + i = i + (1) >> 0; + } + s = $makeSlice(sliceType$1, i); + b = ((base >>> 0)); + /* */ if (b === ((b & (-b >>> 0)) >>> 0)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (b === ((b & (-b >>> 0)) >>> 0)) { */ case 1: + shift = ((bits.TrailingZeros(((b >>> 0))) >>> 0)); + mask = ((((y = shift, y < 32 ? (1 << y) : 0) >>> 0) - 1 >>> 0)); + w = (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]); + nbits = 32; + k = 1; + while (true) { + if (!(k < x.$length)) { break; } + while (true) { + if (!(nbits >= shift)) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".charCodeAt(((w & mask) >>> 0))); + w = (y$1 = (shift), y$1 < 32 ? (w >>> y$1) : 0) >>> 0; + nbits = nbits - (shift) >>> 0; + } + if (nbits === 0) { + w = ((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k]); + nbits = 32; + } else { + w = (w | (((y$2 = nbits, y$2 < 32 ? (((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k]) << y$2) : 0) >>> 0))) >>> 0; + i = i - (1) >> 0; + ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".charCodeAt(((w & mask) >>> 0))); + w = (y$3 = ((shift - nbits >>> 0)), y$3 < 32 ? (((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k]) >>> y$3) : 0) >>> 0; + nbits = 32 - ((shift - nbits >>> 0)) >>> 0; + } + k = k + (1) >> 0; + } + while (true) { + if (!(!((w === 0)))) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".charCodeAt(((w & mask) >>> 0))); + w = (y$4 = (shift), y$4 < 32 ? (w >>> y$4) : 0) >>> 0; + } + $s = 3; continue; + /* } else { */ case 2: + _tuple = maxPow(b); + bb = _tuple[0]; + ndigits = _tuple[1]; + _r = divisors(x.$length, b, ndigits, bb); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + table = _r; + q = (nat.nil).set(x); + $r = q.convertWords(s, b, ndigits, bb, table); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = 0; + while (true) { + if (!(((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i]) === 48)) { break; } + i = i + (1) >> 0; + } + /* } */ case 3: + if (neg) { + i = i - (1) >> 0; + ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = 45); + } + $s = -1; return $subslice(s, i); + /* */ } return; } var $f = {$blk: itoa, $c: true, $r, _r, _tuple, b, base, bb, i, k, mask, nbits, ndigits, neg, q, s, shift, table, w, x, y, y$1, y$2, y$3, y$4, $s};return $f; + }; + $ptrType(nat).prototype.itoa = function(...$args) { return this.$get().itoa(...$args); }; + nat.prototype.convertWords = function convertWords(s, b, ndigits, bb, table) { + var {_q, _q$1, _r, _r$1, _tuple, _tuple$1, _tuple$2, b, bb, h, i, index, j, j$1, maxLength, minLength, ndigits, q, r, r$1, s, t, table, x, $s, $r, $c} = $restore(this, {s, b, ndigits, bb, table}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + q = this; + /* */ if (!(table === sliceType$4.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(table === sliceType$4.nil)) { */ case 1: + r = nat.nil; + index = table.$length - 1 >> 0; + /* while (true) { */ case 3: + /* if (!(q.$length > leafSize)) { break; } */ if(!(q.$length > leafSize)) { $s = 4; continue; } + maxLength = q.bitLen(); + minLength = maxLength >> 1 >> 0; + while (true) { + if (!(index > 0 && (x = index - 1 >> 0, ((x < 0 || x >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x])).nbits > minLength)) { break; } + index = index - (1) >> 0; + } + if (((index < 0 || index >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + index]).nbits >= maxLength && ((index < 0 || index >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + index]).bbb.cmp(q) >= 0) { + index = index - (1) >> 0; + if (index < 0) { + $panic(new $String("internal inconsistency")); + } + } + _r = q.div(r, q, ((index < 0 || index >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + index]).bbb); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + q = _tuple[0]; + r = _tuple[1]; + h = s.$length - ((index < 0 || index >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + index]).ndigits >> 0; + $r = r.convertWords($subslice(s, h), b, ndigits, bb, $subslice(table, 0, index)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s = $subslice(s, 0, h); + $s = 3; continue; + case 4: + /* } */ case 2: + i = s.$length; + r$1 = 0; + if (b === 10) { + while (true) { + if (!(q.$length > 0)) { break; } + _tuple$1 = q.divW(q, bb); + q = _tuple$1[0]; + r$1 = _tuple$1[1]; + j = 0; + while (true) { + if (!(j < ndigits && i > 0)) { break; } + i = i - (1) >> 0; + t = (_q = r$1 / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = (48 + (((r$1 - ($imul(t, 10) >>> 0) >>> 0) << 24 >>> 24)) << 24 >>> 24)); + r$1 = t; + j = j + (1) >> 0; + } + } + } else { + while (true) { + if (!(q.$length > 0)) { break; } + _tuple$2 = q.divW(q, bb); + q = _tuple$2[0]; + r$1 = _tuple$2[1]; + j$1 = 0; + while (true) { + if (!(j$1 < ndigits && i > 0)) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".charCodeAt((_r$1 = r$1 % b, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")))); + r$1 = (_q$1 = r$1 / (b), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); + j$1 = j$1 + (1) >> 0; + } + } + } + while (true) { + if (!(i > 0)) { break; } + i = i - (1) >> 0; + ((i < 0 || i >= s.$length) ? ($throwRuntimeError("index out of range"), undefined) : s.$array[s.$offset + i] = 48); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: convertWords, $c: true, $r, _q, _q$1, _r, _r$1, _tuple, _tuple$1, _tuple$2, b, bb, h, i, index, j, j$1, maxLength, minLength, ndigits, q, r, r$1, s, t, table, x, $s};return $f; + }; + $ptrType(nat).prototype.convertWords = function(...$args) { return this.$get().convertWords(...$args); }; + nat.prototype.expWW = function expWW(x, y) { + var {$24r, _r, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.expNN((nat.nil).setWord(x), (nat.nil).setWord(y), nat.nil, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: expWW, $c: true, $r, $24r, _r, x, y, z, $s};return $f; + }; + $ptrType(nat).prototype.expWW = function(...$args) { return this.$get().expWW(...$args); }; + divisors = function divisors$1(m, b, ndigits, bb) { + var {_r, _r$1, b, bb, i, k, larger, m, ndigits, table, words, x, x$1, x$2, y, $s, $r, $c} = $restore(this, {m, b, ndigits, bb}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ((leafSize === 0) || m <= leafSize) { + $s = -1; return sliceType$4.nil; + } + k = 1; + words = leafSize; + while (true) { + if (!(words < (m >> 1 >> 0) && k < 64)) { break; } + k = k + (1) >> 0; + words = (y = (1), y < 32 ? (words << y) : 0) >> 0; + } + table = sliceType$4.nil; + if (b === 10) { + cacheBase10.Mutex.Lock(); + table = $subslice(new sliceType$4(cacheBase10.table), 0, k); + } else { + table = $makeSlice(sliceType$4, k); + } + /* */ if ((x = k - 1 >> 0, ((x < 0 || x >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x])).ndigits === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((x = k - 1 >> 0, ((x < 0 || x >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x])).ndigits === 0) { */ case 1: + larger = nat.nil; + i = 0; + /* while (true) { */ case 3: + /* if (!(i < k)) { break; } */ if(!(i < k)) { $s = 4; continue; } + /* */ if (((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits === 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits === 0) { */ case 5: + /* */ if (i === 0) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (i === 0) { */ case 7: + _r = (nat.nil).expWW(bb, ((leafSize >>> 0))); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + (0 >= table.$length ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + 0]).bbb = _r; + (0 >= table.$length ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + 0]).ndigits = $imul(ndigits, leafSize); + $s = 9; continue; + /* } else { */ case 8: + _r$1 = (nat.nil).sqr((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x$1])).bbb); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb = _r$1; + ((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits = $imul(2, (x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x$2])).ndigits); + /* } */ case 9: + larger = (nat.nil).set(((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb); + while (true) { + if (!(mulAddVWW($convertSliceType(larger, sliceType$2), $convertSliceType(larger, sliceType$2), b, 0) === 0)) { break; } + ((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb = ((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb.set(larger); + ((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits = ((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).ndigits + (1) >> 0; + } + ((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).nbits = ((i < 0 || i >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + i]).bbb.bitLen(); + /* } */ case 6: + i = i + (1) >> 0; + $s = 3; continue; + case 4: + /* } */ case 2: + if (b === 10) { + cacheBase10.Mutex.Unlock(); + } + $s = -1; return table; + /* */ } return; } var $f = {$blk: divisors$1, $c: true, $r, _r, _r$1, b, bb, i, k, larger, m, ndigits, table, words, x, x$1, x$2, y, $s};return $f; + }; + nat.prototype.String = function String$2() { + var {$24r, _r, z, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.itoa(false, 16); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = "0x" + ($bytesToString(_r)); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$2, $c: true, $r, $24r, _r, z, $s};return $f; + }; + $ptrType(nat).prototype.String = function(...$args) { return this.$get().String(...$args); }; + nat.prototype.clear = function clear() { + var _i, _ref, i, z; + z = this; + _ref = z; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = 0); + _i++; + } + }; + $ptrType(nat).prototype.clear = function(...$args) { return this.$get().clear(...$args); }; + nat.prototype.norm = function norm$1() { + var i, x, z; + z = this; + i = z.$length; + while (true) { + if (!(i > 0 && ((x = i - 1 >> 0, ((x < 0 || x >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x])) === 0))) { break; } + i = i - (1) >> 0; + } + return $subslice(z, 0, i); + }; + $ptrType(nat).prototype.norm = function(...$args) { return this.$get().norm(...$args); }; + nat.prototype.make = function make(n) { + var n, z; + z = this; + if (n <= z.$capacity) { + return $subslice(z, 0, n); + } + if (n === 1) { + return $makeSlice(nat, 1); + } + return $makeSlice(nat, n, (n + 4 >> 0)); + }; + $ptrType(nat).prototype.make = function(...$args) { return this.$get().make(...$args); }; + nat.prototype.setWord = function setWord(x) { + var x, z; + z = this; + if (x === 0) { + return $subslice(z, 0, 0); + } + z = z.make(1); + (0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = x); + return z; + }; + $ptrType(nat).prototype.setWord = function(...$args) { return this.$get().setWord(...$args); }; + nat.prototype.setUint64 = function setUint64(x) { + var w, x, x$1, z; + z = this; + w = ((x.$low >>> 0)); + if ((x$1 = (new $Uint64(0, w)), (x$1.$high === x.$high && x$1.$low === x.$low))) { + return z.setWord(w); + } + z = z.make(2); + (1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = (($shiftRightUint64(x, 32).$low >>> 0))); + (0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = ((x.$low >>> 0))); + return z; + }; + $ptrType(nat).prototype.setUint64 = function(...$args) { return this.$get().setUint64(...$args); }; + nat.prototype.set = function set(x) { + var x, z; + z = this; + z = z.make(x.$length); + $copySlice(z, x); + return z; + }; + $ptrType(nat).prototype.set = function(...$args) { return this.$get().set(...$args); }; + nat.prototype.add = function add(x, y) { + var {$24r, _r, _r$1, c, m, n, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + m = x.$length; + n = y.$length; + /* */ if (m < n) { $s = 2; continue; } + /* */ if ((m === 0)) { $s = 3; continue; } + /* */ if ((n === 0)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (m < n) { */ case 2: + _r = z.add(y, x); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 7; case 7: return $24r; + /* } else if ((m === 0)) { */ case 3: + $s = -1; return $subslice(z, 0, 0); + /* } else if ((n === 0)) { */ case 4: + $s = -1; return z.set(x); + /* } */ case 5: + case 1: + z = z.make(m + 1 >> 0); + c = addVV($convertSliceType($subslice(z, 0, n), sliceType$2), $convertSliceType(x, sliceType$2), $convertSliceType(y, sliceType$2)); + /* */ if (m > n) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (m > n) { */ case 8: + _r$1 = addVW($convertSliceType($subslice(z, n, m), sliceType$2), $convertSliceType($subslice(x, n), sliceType$2), c); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + c = _r$1; + /* } */ case 9: + ((m < 0 || m >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + m] = c); + $s = -1; return z.norm(); + /* */ } return; } var $f = {$blk: add, $c: true, $r, $24r, _r, _r$1, c, m, n, x, y, z, $s};return $f; + }; + $ptrType(nat).prototype.add = function(...$args) { return this.$get().add(...$args); }; + nat.prototype.sub = function sub(x, y) { + var {_r, c, m, n, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + m = x.$length; + n = y.$length; + if (m < n) { + $panic(new $String("underflow")); + } else if ((m === 0)) { + $s = -1; return $subslice(z, 0, 0); + } else if ((n === 0)) { + $s = -1; return z.set(x); + } + z = z.make(m); + c = subVV($convertSliceType($subslice(z, 0, n), sliceType$2), $convertSliceType(x, sliceType$2), $convertSliceType(y, sliceType$2)); + /* */ if (m > n) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (m > n) { */ case 1: + _r = subVW($convertSliceType($subslice(z, n), sliceType$2), $convertSliceType($subslice(x, n), sliceType$2), c); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + c = _r; + /* } */ case 2: + if (!((c === 0))) { + $panic(new $String("underflow")); + } + $s = -1; return z.norm(); + /* */ } return; } var $f = {$blk: sub, $c: true, $r, _r, c, m, n, x, y, z, $s};return $f; + }; + $ptrType(nat).prototype.sub = function(...$args) { return this.$get().sub(...$args); }; + nat.prototype.cmp = function cmp(y) { + var i, m, n, r, x, y; + r = 0; + x = this; + m = x.$length; + n = y.$length; + if (!((m === n)) || (m === 0)) { + if (m < n) { + r = -1; + } else if (m > n) { + r = 1; + } + return r; + } + i = m - 1 >> 0; + while (true) { + if (!(i > 0 && (((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) === ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])))) { break; } + i = i - (1) >> 0; + } + if (((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) < ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) { + r = -1; + } else if (((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) > ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) { + r = 1; + } + return r; + }; + $ptrType(nat).prototype.cmp = function(...$args) { return this.$get().cmp(...$args); }; + nat.prototype.mulAddWW = function mulAddWW(x, y, r) { + var m, r, x, y, z; + z = this; + m = x.$length; + if ((m === 0) || (y === 0)) { + return z.setWord(r); + } + z = z.make(m + 1 >> 0); + ((m < 0 || m >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + m] = mulAddVWW($convertSliceType($subslice(z, 0, m), sliceType$2), $convertSliceType(x, sliceType$2), y, r)); + return z.norm(); + }; + $ptrType(nat).prototype.mulAddWW = function(...$args) { return this.$get().mulAddWW(...$args); }; + basicMul = function basicMul$1(z, x, y) { + var _i, _ref, d, i, x, x$1, y, z; + $subslice(z, 0, (x.$length + y.$length >> 0)).clear(); + _ref = y; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + d = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((d === 0))) { + (x$1 = x.$length + i >> 0, ((x$1 < 0 || x$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$1] = addMulVVW($convertSliceType($subslice(z, i, (i + x.$length >> 0)), sliceType$2), $convertSliceType(x, sliceType$2), d))); + } + _i++; + } + }; + nat.prototype.montgomery = function montgomery(x, y, m, k, n) { + var c, c2, c3, cx, cy, d, i, k, m, n, t, x, x$1, y, z; + z = this; + if (!((x.$length === n)) || !((y.$length === n)) || !((m.$length === n))) { + $panic(new $String("math/big: mismatched montgomery number lengths")); + } + z = z.make($imul(n, 2)); + z.clear(); + c = 0; + i = 0; + while (true) { + if (!(i < n)) { break; } + d = ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]); + c2 = addMulVVW($convertSliceType($subslice(z, i, (n + i >> 0)), sliceType$2), $convertSliceType(x, sliceType$2), d); + t = $imul(((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i]), k) >>> 0; + c3 = addMulVVW($convertSliceType($subslice(z, i, (n + i >> 0)), sliceType$2), $convertSliceType(m, sliceType$2), t); + cx = c + c2 >>> 0; + cy = cx + c3 >>> 0; + (x$1 = n + i >> 0, ((x$1 < 0 || x$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$1] = cy)); + if (cx < c2 || cy < c3) { + c = 1; + } else { + c = 0; + } + i = i + (1) >> 0; + } + if (!((c === 0))) { + subVV($convertSliceType($subslice(z, 0, n), sliceType$2), $convertSliceType($subslice(z, n), sliceType$2), $convertSliceType(m, sliceType$2)); + } else { + $copySlice($subslice(z, 0, n), $subslice(z, n)); + } + return $subslice(z, 0, n); + }; + $ptrType(nat).prototype.montgomery = function(...$args) { return this.$get().montgomery(...$args); }; + karatsubaAdd = function karatsubaAdd$1(z, x, n) { + var {_r, c, n, x, z, $s, $r, $c} = $restore(this, {z, x, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = addVV($convertSliceType($subslice(z, 0, n), sliceType$2), $convertSliceType(z, sliceType$2), $convertSliceType(x, sliceType$2)); + /* */ if (!((c === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((c === 0))) { */ case 1: + _r = addVW($convertSliceType($subslice(z, n, (n + (n >> 1 >> 0) >> 0)), sliceType$2), $convertSliceType($subslice(z, n), sliceType$2), c); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: karatsubaAdd$1, $c: true, $r, _r, c, n, x, z, $s};return $f; + }; + karatsubaSub = function karatsubaSub$1(z, x, n) { + var {_r, c, n, x, z, $s, $r, $c} = $restore(this, {z, x, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = subVV($convertSliceType($subslice(z, 0, n), sliceType$2), $convertSliceType(z, sliceType$2), $convertSliceType(x, sliceType$2)); + /* */ if (!((c === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((c === 0))) { */ case 1: + _r = subVW($convertSliceType($subslice(z, n, (n + (n >> 1 >> 0) >> 0)), sliceType$2), $convertSliceType($subslice(z, n), sliceType$2), c); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: karatsubaSub$1, $c: true, $r, _r, c, n, x, z, $s};return $f; + }; + karatsuba = function karatsuba$1(z, x, y) { + var {_tmp, _tmp$1, _tmp$2, _tmp$3, n, n2, p, r, s, x, x0, x1, xd, y, y0, y1, yd, z, $s, $r, $c} = $restore(this, {z, x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = y.$length; + if (!(((n & 1) === 0)) || n < karatsubaThreshold || n < 2) { + basicMul(z, x, y); + $s = -1; return; + } + n2 = n >> 1 >> 0; + _tmp = $subslice(x, n2); + _tmp$1 = $subslice(x, 0, n2); + x1 = _tmp; + x0 = _tmp$1; + _tmp$2 = $subslice(y, n2); + _tmp$3 = $subslice(y, 0, n2); + y1 = _tmp$2; + y0 = _tmp$3; + $r = karatsuba(z, x0, y0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = karatsuba($subslice(z, n), x1, y1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s = 1; + xd = $subslice(z, ($imul(2, n)), (($imul(2, n)) + n2 >> 0)); + if (!((subVV($convertSliceType(xd, sliceType$2), $convertSliceType(x1, sliceType$2), $convertSliceType(x0, sliceType$2)) === 0))) { + s = -s; + subVV($convertSliceType(xd, sliceType$2), $convertSliceType(x0, sliceType$2), $convertSliceType(x1, sliceType$2)); + } + yd = $subslice(z, (($imul(2, n)) + n2 >> 0), ($imul(3, n))); + if (!((subVV($convertSliceType(yd, sliceType$2), $convertSliceType(y0, sliceType$2), $convertSliceType(y1, sliceType$2)) === 0))) { + s = -s; + subVV($convertSliceType(yd, sliceType$2), $convertSliceType(y1, sliceType$2), $convertSliceType(y0, sliceType$2)); + } + p = $subslice(z, ($imul(n, 3))); + $r = karatsuba(p, xd, yd); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + r = $subslice(z, ($imul(n, 4))); + $copySlice(r, $subslice(z, 0, ($imul(n, 2)))); + $r = karatsubaAdd($subslice(z, n2), r, n); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = karatsubaAdd($subslice(z, n2), $subslice(r, n), n); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (s > 0) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (s > 0) { */ case 6: + $r = karatsubaAdd($subslice(z, n2), p, n); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 8; continue; + /* } else { */ case 7: + $r = karatsubaSub($subslice(z, n2), p, n); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + $s = -1; return; + /* */ } return; } var $f = {$blk: karatsuba$1, $c: true, $r, _tmp, _tmp$1, _tmp$2, _tmp$3, n, n2, p, r, s, x, x0, x1, xd, y, y0, y1, yd, z, $s};return $f; + }; + alias = function alias$1(x, y) { + var x, x$1, x$2, y; + return x.$capacity > 0 && y.$capacity > 0 && (x$1 = $subslice(x, 0, x.$capacity), $indexPtr(x$1.$array, x$1.$offset + (x.$capacity - 1 >> 0), ptrType$4)) === (x$2 = $subslice(y, 0, y.$capacity), $indexPtr(x$2.$array, x$2.$offset + (y.$capacity - 1 >> 0), ptrType$4)); + }; + addAt = function addAt$1(z, x, i) { + var {_r, c, i, j, n, x, z, $s, $r, $c} = $restore(this, {z, x, i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = x.$length; + /* */ if (n > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n > 0) { */ case 1: + c = addVV($convertSliceType($subslice(z, i, (i + n >> 0)), sliceType$2), $convertSliceType($subslice(z, i), sliceType$2), $convertSliceType(x, sliceType$2)); + /* */ if (!((c === 0))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!((c === 0))) { */ case 3: + j = i + n >> 0; + /* */ if (j < z.$length) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (j < z.$length) { */ case 5: + _r = addVW($convertSliceType($subslice(z, j), sliceType$2), $convertSliceType($subslice(z, j), sliceType$2), c); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* } */ case 6: + /* } */ case 4: + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: addAt$1, $c: true, $r, _r, c, i, j, n, x, z, $s};return $f; + }; + max = function max$1(x, y) { + var x, y; + if (x > y) { + return x; + } + return y; + }; + karatsubaLen = function karatsubaLen$1(n, threshold) { + var i, n, threshold, y; + i = 0; + while (true) { + if (!(n > threshold)) { break; } + n = (n >> $min((1), 31)) >> 0; + i = i + (1) >>> 0; + } + return (y = i, y < 32 ? (n << y) : 0) >> 0; + }; + nat.prototype.mul = function mul(x, y) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, i, k, m, n, t, tp, x, x0, x0$1, xi, y, y0, y0$1, y1, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + m = x.$length; + n = y.$length; + /* */ if (m < n) { $s = 2; continue; } + /* */ if ((m === 0) || (n === 0)) { $s = 3; continue; } + /* */ if ((n === 1)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (m < n) { */ case 2: + _r = z.mul(y, x); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 7; case 7: return $24r; + /* } else if ((m === 0) || (n === 0)) { */ case 3: + $s = -1; return $subslice(z, 0, 0); + /* } else if ((n === 1)) { */ case 4: + $s = -1; return z.mulAddWW(x, (0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0]), 0); + /* } */ case 5: + case 1: + if (alias(z, x) || alias(z, y)) { + z = nat.nil; + } + if (n < karatsubaThreshold) { + z = z.make(m + n >> 0); + basicMul(z, x, y); + $s = -1; return z.norm(); + } + k = karatsubaLen(n, karatsubaThreshold); + x0 = $subslice(x, 0, k); + y0 = $subslice(y, 0, k); + z = z.make(max($imul(6, k), m + n >> 0)); + $r = karatsuba(z, x0, y0); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + z = $subslice(z, 0, (m + n >> 0)); + $subslice(z, ($imul(2, k))).clear(); + /* */ if (k < n || !((m === n))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (k < n || !((m === n))) { */ case 9: + _r$1 = getNat($imul(3, k)); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + tp = _r$1; + t = tp.$get(); + x0$1 = x0.norm(); + y1 = $subslice(y, k); + _r$2 = t.mul(x0$1, y1); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + t = _r$2; + $r = addAt(z, t, k); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + y0$1 = y0.norm(); + i = k; + /* while (true) { */ case 14: + /* if (!(i < x.$length)) { break; } */ if(!(i < x.$length)) { $s = 15; continue; } + xi = $subslice(x, i); + if (xi.$length > k) { + xi = $subslice(xi, 0, k); + } + xi = xi.norm(); + _r$3 = t.mul(xi, y0$1); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + t = _r$3; + $r = addAt(z, t, i); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$4 = t.mul(xi, y1); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + t = _r$4; + $r = addAt(z, t, i + k >> 0); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (k) >> 0; + $s = 14; continue; + case 15: + putNat(tp); + /* } */ case 10: + $s = -1; return z.norm(); + /* */ } return; } var $f = {$blk: mul, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, i, k, m, n, t, tp, x, x0, x0$1, xi, y, y0, y0$1, y1, z, $s};return $f; + }; + $ptrType(nat).prototype.mul = function(...$args) { return this.$get().mul(...$args); }; + basicSqr = function basicSqr$1(z, x) { + var {_r, _tuple, _tuple$1, d, i, n, t, tp, x, x$1, x$2, x$3, x$4, z, $s, $r, $c} = $restore(this, {z, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = x.$length; + _r = getNat($imul(2, n)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tp = _r; + t = tp.$get(); + t.clear(); + _tuple = mulWW((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + (1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = _tuple[0]); + (0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = _tuple[1]); + i = 1; + while (true) { + if (!(i < n)) { break; } + d = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]); + _tuple$1 = mulWW(d, d); + (x$1 = ($imul(2, i)) + 1 >> 0, ((x$1 < 0 || x$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$1] = _tuple$1[0])); + (x$2 = $imul(2, i), ((x$2 < 0 || x$2 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$2] = _tuple$1[1])); + (x$3 = $imul(2, i), ((x$3 < 0 || x$3 >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x$3] = addMulVVW($convertSliceType($subslice(t, i, ($imul(2, i))), sliceType$2), $convertSliceType($subslice(x, 0, i), sliceType$2), d))); + i = i + (1) >> 0; + } + (x$4 = ($imul(2, n)) - 1 >> 0, ((x$4 < 0 || x$4 >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x$4] = shlVU($convertSliceType($subslice(t, 1, (($imul(2, n)) - 1 >> 0)), sliceType$2), $convertSliceType($subslice(t, 1, (($imul(2, n)) - 1 >> 0)), sliceType$2), 1))); + addVV($convertSliceType(z, sliceType$2), $convertSliceType(z, sliceType$2), $convertSliceType(t, sliceType$2)); + putNat(tp); + $s = -1; return; + /* */ } return; } var $f = {$blk: basicSqr$1, $c: true, $r, _r, _tuple, _tuple$1, d, i, n, t, tp, x, x$1, x$2, x$3, x$4, z, $s};return $f; + }; + karatsubaSqr = function karatsubaSqr$1(z, x) { + var {_tmp, _tmp$1, n, n2, p, r, x, x0, x1, xd, z, $s, $r, $c} = $restore(this, {z, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = x.$length; + /* */ if (!(((n & 1) === 0)) || n < karatsubaSqrThreshold || n < 2) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(((n & 1) === 0)) || n < karatsubaSqrThreshold || n < 2) { */ case 1: + $r = basicSqr($subslice(z, 0, ($imul(2, n))), x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 2: + n2 = n >> 1 >> 0; + _tmp = $subslice(x, n2); + _tmp$1 = $subslice(x, 0, n2); + x1 = _tmp; + x0 = _tmp$1; + $r = karatsubaSqr(z, x0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = karatsubaSqr($subslice(z, n), x1); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + xd = $subslice(z, ($imul(2, n)), (($imul(2, n)) + n2 >> 0)); + if (!((subVV($convertSliceType(xd, sliceType$2), $convertSliceType(x1, sliceType$2), $convertSliceType(x0, sliceType$2)) === 0))) { + subVV($convertSliceType(xd, sliceType$2), $convertSliceType(x0, sliceType$2), $convertSliceType(x1, sliceType$2)); + } + p = $subslice(z, ($imul(n, 3))); + $r = karatsubaSqr(p, xd); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + r = $subslice(z, ($imul(n, 4))); + $copySlice(r, $subslice(z, 0, ($imul(n, 2)))); + $r = karatsubaAdd($subslice(z, n2), r, n); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = karatsubaAdd($subslice(z, n2), $subslice(r, n), n); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = karatsubaSub($subslice(z, n2), p, n); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: karatsubaSqr$1, $c: true, $r, _tmp, _tmp$1, n, n2, p, r, x, x0, x1, xd, z, $s};return $f; + }; + nat.prototype.sqr = function sqr(x) { + var {_r, _r$1, _r$2, _tuple, d, k, n, t, tp, x, x0, x0$1, x1, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + n = x.$length; + if ((n === 0)) { + $s = -1; return $subslice(z, 0, 0); + } else if ((n === 1)) { + d = (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]); + z = z.make(2); + _tuple = mulWW(d, d); + (1 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 1] = _tuple[0]); + (0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = _tuple[1]); + $s = -1; return z.norm(); + } + if (alias(z, x)) { + z = nat.nil; + } + if (n < basicSqrThreshold) { + z = z.make($imul(2, n)); + basicMul(z, x, x); + $s = -1; return z.norm(); + } + /* */ if (n < karatsubaSqrThreshold) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n < karatsubaSqrThreshold) { */ case 1: + z = z.make($imul(2, n)); + $r = basicSqr(z, x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return z.norm(); + /* } */ case 2: + k = karatsubaLen(n, karatsubaSqrThreshold); + x0 = $subslice(x, 0, k); + z = z.make(max($imul(6, k), $imul(2, n))); + $r = karatsubaSqr(z, x0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + z = $subslice(z, 0, ($imul(2, n))); + $subslice(z, ($imul(2, k))).clear(); + /* */ if (k < n) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (k < n) { */ case 5: + _r = getNat($imul(2, k)); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tp = _r; + t = tp.$get(); + x0$1 = x0.norm(); + x1 = $subslice(x, k); + _r$1 = t.mul(x0$1, x1); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + t = _r$1; + $r = addAt(z, t, k); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = addAt(z, t, k); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = t.sqr(x1); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + t = _r$2; + $r = addAt(z, t, $imul(2, k)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + putNat(tp); + /* } */ case 6: + $s = -1; return z.norm(); + /* */ } return; } var $f = {$blk: sqr, $c: true, $r, _r, _r$1, _r$2, _tuple, d, k, n, t, tp, x, x0, x0$1, x1, z, $s};return $f; + }; + $ptrType(nat).prototype.sqr = function(...$args) { return this.$get().sqr(...$args); }; + nat.prototype.mulRange = function mulRange(a, b) { + var {$24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$2, _r$3, a, b, m, x, z, $s, $r, $c} = $restore(this, {a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if ((a.$high === 0 && a.$low === 0)) { $s = 2; continue; } + /* */ if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) { $s = 3; continue; } + /* */ if ((a.$high === b.$high && a.$low === b.$low)) { $s = 4; continue; } + /* */ if ((x = new $Uint64(a.$high + 0, a.$low + 1), (x.$high === b.$high && x.$low === b.$low))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ((a.$high === 0 && a.$low === 0)) { */ case 2: + $s = -1; return z.setUint64(new $Uint64(0, 0)); + /* } else if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) { */ case 3: + $s = -1; return z.setUint64(new $Uint64(0, 1)); + /* } else if ((a.$high === b.$high && a.$low === b.$low)) { */ case 4: + $s = -1; return z.setUint64(a); + /* } else if ((x = new $Uint64(a.$high + 0, a.$low + 1), (x.$high === b.$high && x.$low === b.$low))) { */ case 5: + _r = z.mul((nat.nil).setUint64(a), (nat.nil).setUint64(b)); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 8; case 8: return $24r; + /* } */ case 6: + case 1: + m = $div64((new $Uint64(a.$high + b.$high, a.$low + b.$low)), new $Uint64(0, 2), false); + _r$1 = (nat.nil).mulRange(a, m); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = _r$1; + _r$2 = (nat.nil).mulRange(new $Uint64(m.$high + 0, m.$low + 1), b); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = _r$2; + _r$3 = z.mul(_arg, _arg$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = _r$3; + $s = 12; case 12: return $24r$1; + /* */ } return; } var $f = {$blk: mulRange, $c: true, $r, $24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$2, _r$3, a, b, m, x, z, $s};return $f; + }; + $ptrType(nat).prototype.mulRange = function(...$args) { return this.$get().mulRange(...$args); }; + getNat = function getNat$1(n) { + var {_r, n, v, x, z, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = ptrType$3.nil; + _r = natPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + if (!($interfaceIsEqual(v, $ifaceNil))) { + z = $assertType(v, ptrType$3); + } + if (z === ptrType$3.nil) { + z = $newDataPointer(nat.nil, ptrType$3); + } + z.$set(z.make(n)); + if (n > 0) { + (x = z.$get(), (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = 1043915)); + } + $s = -1; return z; + /* */ } return; } var $f = {$blk: getNat$1, $c: true, $r, _r, n, v, x, z, $s};return $f; + }; + putNat = function putNat$1(x) { + var x; + natPool.Put(x); + }; + nat.prototype.bitLen = function bitLen() { + var i, top, x; + x = this; + i = x.$length - 1 >> 0; + if (i >= 0) { + top = ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0)); + top = (top | ((top >>> 1 >>> 0))) >>> 0; + top = (top | ((top >>> 2 >>> 0))) >>> 0; + top = (top | ((top >>> 4 >>> 0))) >>> 0; + top = (top | ((top >>> 8 >>> 0))) >>> 0; + top = (top | ((top >>> 16 >>> 0))) >>> 0; + top = (top | (((top >>> 16 >>> 0) >>> 16 >>> 0))) >>> 0; + return ($imul(i, 32)) + bits.Len(top) >> 0; + } + return 0; + }; + $ptrType(nat).prototype.bitLen = function(...$args) { return this.$get().bitLen(...$args); }; + nat.prototype.trailingZeroBits = function trailingZeroBits() { + var i, x; + x = this; + if (x.$length === 0) { + return 0; + } + i = 0; + while (true) { + if (!(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) === 0)) { break; } + i = i + (1) >>> 0; + } + return ($imul(i, 32) >>> 0) + ((bits.TrailingZeros(((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0))) >>> 0)) >>> 0; + }; + $ptrType(nat).prototype.trailingZeroBits = function(...$args) { return this.$get().trailingZeroBits(...$args); }; + nat.prototype.isPow2 = function isPow2() { + var i, x; + x = this; + i = 0; + while (true) { + if (!(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) === 0)) { break; } + i = i + (1) >>> 0; + } + if ((i === (((x.$length >>> 0)) - 1 >>> 0)) && (((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) & ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) - 1 >>> 0))) >>> 0) === 0)) { + return [($imul(i, 32) >>> 0) + ((bits.TrailingZeros(((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0))) >>> 0)) >>> 0, true]; + } + return [0, false]; + }; + $ptrType(nat).prototype.isPow2 = function(...$args) { return this.$get().isPow2(...$args); }; + same = function same$1(x, y) { + var x, y; + return (x.$length === y.$length) && x.$length > 0 && $indexPtr(x.$array, x.$offset + 0, ptrType$4) === $indexPtr(y.$array, y.$offset + 0, ptrType$4); + }; + nat.prototype.shl = function shl(x, s) { + var _q, _r, m, n, s, x, z; + z = this; + if (s === 0) { + if (same(z, x)) { + return z; + } + if (!alias(z, x)) { + return z.set(x); + } + } + m = x.$length; + if (m === 0) { + return $subslice(z, 0, 0); + } + n = m + (((_q = s / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) >> 0; + z = z.make(n + 1 >> 0); + ((n < 0 || n >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + n] = shlVU($convertSliceType($subslice(z, (n - m >> 0), n), sliceType$2), $convertSliceType(x, sliceType$2), (_r = s % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero")))); + $subslice(z, 0, (n - m >> 0)).clear(); + return z.norm(); + }; + $ptrType(nat).prototype.shl = function(...$args) { return this.$get().shl(...$args); }; + nat.prototype.shr = function shr$1(x, s) { + var _q, _r, m, n, s, x, z; + z = this; + if (s === 0) { + if (same(z, x)) { + return z; + } + if (!alias(z, x)) { + return z.set(x); + } + } + m = x.$length; + n = m - (((_q = s / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) >> 0; + if (n <= 0) { + return $subslice(z, 0, 0); + } + z = z.make(n); + shrVU($convertSliceType(z, sliceType$2), $convertSliceType($subslice(x, (m - n >> 0)), sliceType$2), (_r = s % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))); + return z.norm(); + }; + $ptrType(nat).prototype.shr = function(...$args) { return this.$get().shr(...$args); }; + nat.prototype.setBit = function setBit(x, i, b) { + var _1, _q, _r, b, i, j, m, n, x, y, z; + z = this; + j = (((_q = i / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)); + m = (y = ((_r = i % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) >>> 0; + n = x.$length; + _1 = b; + if (_1 === (0)) { + z = z.make(n); + $copySlice(z, x); + if (j >= n) { + return z; + } + ((j < 0 || j >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + j] = ((((j < 0 || j >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + j]) & ~(m)) >>> 0)); + return z.norm(); + } else if (_1 === (1)) { + if (j >= n) { + z = z.make(j + 1 >> 0); + $subslice(z, n).clear(); + } else { + z = z.make(n); + } + $copySlice(z, x); + ((j < 0 || j >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + j] = ((((j < 0 || j >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + j]) | (m)) >>> 0)); + return z; + } + $panic(new $String("set bit is not 0 or 1")); + }; + $ptrType(nat).prototype.setBit = function(...$args) { return this.$get().setBit(...$args); }; + nat.prototype.bit = function bit(i) { + var _q, _r, i, j, x, y; + x = this; + j = (_q = i / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + if (j >= ((x.$length >>> 0))) { + return 0; + } + return ((((((y = ((_r = i % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))), y < 32 ? (((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]) >>> y) : 0) >>> 0) & 1) >>> 0) >>> 0)); + }; + $ptrType(nat).prototype.bit = function(...$args) { return this.$get().bit(...$args); }; + nat.prototype.sticky = function sticky(i) { + var _i, _q, _r, _ref, i, j, x, x$1, y; + x = this; + j = (_q = i / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + if (j >= ((x.$length >>> 0))) { + if (x.$length === 0) { + return 0; + } + return 1; + } + _ref = $subslice(x, 0, j); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((x$1 === 0))) { + return 1; + } + _i++; + } + if (!((((y = ((32 - (_r = i % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0)), y < 32 ? (((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j]) << y) : 0) >>> 0) === 0))) { + return 1; + } + return 0; + }; + $ptrType(nat).prototype.sticky = function(...$args) { return this.$get().sticky(...$args); }; + nat.prototype.and = function and(x, y) { + var i, m, n, x, y, z; + z = this; + m = x.$length; + n = y.$length; + if (m > n) { + m = n; + } + z = z.make(m); + i = 0; + while (true) { + if (!(i < m)) { break; } + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) & ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) >>> 0)); + i = i + (1) >> 0; + } + return z.norm(); + }; + $ptrType(nat).prototype.and = function(...$args) { return this.$get().and(...$args); }; + nat.prototype.trunc = function trunc(x, n) { + var _index, _q, _r, _r$1, n, w, x, y, z; + z = this; + w = (_q = (((n + 32 >>> 0) - 1 >>> 0)) / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + if (((x.$length >>> 0)) < w) { + return z.set(x); + } + z = z.make(((w >> 0))); + $copySlice(z, x); + if (!(((_r = n % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) { + _index = z.$length - 1 >> 0; + ((_index < 0 || _index >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + _index] = ((((_index < 0 || _index >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + _index]) & ((((y = ((_r$1 = n % 32, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) >>> 0) - 1 >>> 0))) >>> 0)); + } + return z.norm(); + }; + $ptrType(nat).prototype.trunc = function(...$args) { return this.$get().trunc(...$args); }; + nat.prototype.andNot = function andNot(x, y) { + var i, m, n, x, y, z; + z = this; + m = x.$length; + n = y.$length; + if (n > m) { + n = m; + } + z = z.make(m); + i = 0; + while (true) { + if (!(i < n)) { break; } + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) & ~((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) >>> 0)); + i = i + (1) >> 0; + } + $copySlice($subslice(z, n, m), $subslice(x, n, m)); + return z.norm(); + }; + $ptrType(nat).prototype.andNot = function(...$args) { return this.$get().andNot(...$args); }; + nat.prototype.or = function or(x, y) { + var _tmp, _tmp$1, i, m, n, s, x, y, z; + z = this; + m = x.$length; + n = y.$length; + s = x; + if (m < n) { + _tmp = m; + _tmp$1 = n; + n = _tmp; + m = _tmp$1; + s = y; + } + z = z.make(m); + i = 0; + while (true) { + if (!(i < n)) { break; } + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) | ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) >>> 0)); + i = i + (1) >> 0; + } + $copySlice($subslice(z, n, m), $subslice(s, n, m)); + return z.norm(); + }; + $ptrType(nat).prototype.or = function(...$args) { return this.$get().or(...$args); }; + nat.prototype.xor = function xor(x, y) { + var _tmp, _tmp$1, i, m, n, s, x, y, z; + z = this; + m = x.$length; + n = y.$length; + s = x; + if (m < n) { + _tmp = m; + _tmp$1 = n; + n = _tmp; + m = _tmp$1; + s = y; + } + z = z.make(m); + i = 0; + while (true) { + if (!(i < n)) { break; } + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) ^ ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i])) >>> 0)); + i = i + (1) >> 0; + } + $copySlice($subslice(z, n, m), $subslice(s, n, m)); + return z.norm(); + }; + $ptrType(nat).prototype.xor = function(...$args) { return this.$get().xor(...$args); }; + nat.prototype.random = function random(rand$1, limit, n) { + var {_1, _i, _i$1, _index, _r, _r$1, _r$2, _ref, _ref$1, bitLengthOfMSW, i, i$1, limit, mask, n, rand$1, y, z, $s, $r, $c} = $restore(this, {rand$1, limit, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (alias(z, limit)) { + z = nat.nil; + } + z = z.make(limit.$length); + bitLengthOfMSW = (((_r = n % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0)); + if (bitLengthOfMSW === 0) { + bitLengthOfMSW = 32; + } + mask = (((((y = bitLengthOfMSW, y < 32 ? (1 << y) : 0) >>> 0)) - 1 >>> 0)); + /* while (true) { */ case 1: + _1 = 32; + /* */ if (_1 === (32)) { $s = 4; continue; } + /* */ if (_1 === (64)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (32)) { */ case 4: + _ref = z; + _i = 0; + /* while (true) { */ case 8: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 9; continue; } + i = _i; + _r$1 = rand$1.Uint32(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((_r$1 >>> 0))); + _i++; + $s = 8; continue; + case 9: + $s = 7; continue; + /* } else if (_1 === (64)) { */ case 5: + _ref$1 = z; + _i$1 = 0; + /* while (true) { */ case 11: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 12; continue; } + i$1 = _i$1; + _r$2 = rand$1.Uint32(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ((i$1 < 0 || i$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i$1] = ((((_r$2 >>> 0)) | 0) >>> 0)); + _i$1++; + $s = 11; continue; + case 12: + $s = 7; continue; + /* } else { */ case 6: + $panic(new $String("unknown word size")); + /* } */ case 7: + case 3: + _index = limit.$length - 1 >> 0; + ((_index < 0 || _index >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + _index] = ((((_index < 0 || _index >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + _index]) & (mask)) >>> 0)); + if (z.cmp(limit) < 0) { + /* break; */ $s = 2; continue; + } + $s = 1; continue; + case 2: + $s = -1; return z.norm(); + /* */ } return; } var $f = {$blk: random, $c: true, $r, _1, _i, _i$1, _index, _r, _r$1, _r$2, _ref, _ref$1, bitLengthOfMSW, i, i$1, limit, mask, n, rand$1, y, z, $s};return $f; + }; + $ptrType(nat).prototype.random = function(...$args) { return this.$get().random(...$args); }; + nat.prototype.expNN = function expNN(x, y, m, slow) { + var {$24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, i, j, j$1, logM, m, ok, q, r, shift, slow, v, w, x, x$1, y, y$1, y$2, y$3, z, zz, $s, $r, $c} = $restore(this, {x, y, m, slow}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (alias(z, x) || alias(z, y)) { + z = nat.nil; + } + if ((m.$length === 1) && ((0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) === 1)) { + $s = -1; return z.setWord(0); + } + if (y.$length === 0) { + $s = -1; return z.setWord(1); + } + if (x.$length === 0) { + $s = -1; return z.setWord(0); + } + if ((x.$length === 1) && ((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]) === 1)) { + $s = -1; return z.setWord(1); + } + /* */ if ((y.$length === 1) && ((0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0]) === 1)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((y.$length === 1) && ((0 >= y.$length ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + 0]) === 1)) { */ case 1: + /* */ if (!((m.$length === 0))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!((m.$length === 0))) { */ case 3: + _r = z.rem(x, m); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 6; case 6: return $24r; + /* } */ case 4: + $s = -1; return z.set(x); + /* } */ case 2: + /* */ if (!((m.$length === 0))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((m.$length === 0))) { */ case 7: + z = z.make(m.$length); + /* */ if (y.$length > 1 && !slow) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (y.$length > 1 && !slow) { */ case 9: + /* */ if ((((0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) & 1) >>> 0) === 1) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if ((((0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) & 1) >>> 0) === 1) { */ case 11: + _r$1 = z.expNNMontgomery(x, y, m); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 14; case 14: return $24r$1; + /* } */ case 12: + _tuple = m.isPow2(); + logM = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (ok) { */ case 15: + _r$2 = z.expNNWindowed(x, y, logM); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$2 = _r$2; + $s = 18; case 18: return $24r$2; + /* } */ case 16: + _r$3 = z.expNNMontgomeryEven(x, y, m); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$3 = _r$3; + $s = 20; case 20: return $24r$3; + /* } */ case 10: + /* } */ case 8: + z = z.set(x); + v = (x$1 = y.$length - 1 >> 0, ((x$1 < 0 || x$1 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + x$1])); + shift = nlz(v) + 1 >>> 0; + v = (y$1 = (shift), y$1 < 32 ? (v << y$1) : 0) >>> 0; + q = nat.nil; + w = 32 - ((shift >> 0)) >> 0; + _tmp = nat.nil; + _tmp$1 = nat.nil; + zz = _tmp; + r = _tmp$1; + j = 0; + /* while (true) { */ case 21: + /* if (!(j < w)) { break; } */ if(!(j < w)) { $s = 22; continue; } + _r$4 = zz.sqr(z); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + zz = _r$4; + _tmp$2 = z; + _tmp$3 = zz; + zz = _tmp$2; + z = _tmp$3; + /* */ if (!((((v & 2147483648) >>> 0) === 0))) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!((((v & 2147483648) >>> 0) === 0))) { */ case 24: + _r$5 = zz.mul(z, x); /* */ $s = 26; case 26: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + zz = _r$5; + _tmp$4 = z; + _tmp$5 = zz; + zz = _tmp$4; + z = _tmp$5; + /* } */ case 25: + /* */ if (!((m.$length === 0))) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (!((m.$length === 0))) { */ case 27: + _r$6 = zz.div(r, z, m); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$1 = _r$6; + zz = _tuple$1[0]; + r = _tuple$1[1]; + _tmp$6 = q; + _tmp$7 = z; + _tmp$8 = zz; + _tmp$9 = r; + zz = _tmp$6; + r = _tmp$7; + q = _tmp$8; + z = _tmp$9; + /* } */ case 28: + v = (y$2 = (1), y$2 < 32 ? (v << y$2) : 0) >>> 0; + j = j + (1) >> 0; + $s = 21; continue; + case 22: + i = y.$length - 2 >> 0; + /* while (true) { */ case 30: + /* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 31; continue; } + v = ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]); + j$1 = 0; + /* while (true) { */ case 32: + /* if (!(j$1 < 32)) { break; } */ if(!(j$1 < 32)) { $s = 33; continue; } + _r$7 = zz.sqr(z); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + zz = _r$7; + _tmp$10 = z; + _tmp$11 = zz; + zz = _tmp$10; + z = _tmp$11; + /* */ if (!((((v & 2147483648) >>> 0) === 0))) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (!((((v & 2147483648) >>> 0) === 0))) { */ case 35: + _r$8 = zz.mul(z, x); /* */ $s = 37; case 37: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + zz = _r$8; + _tmp$12 = z; + _tmp$13 = zz; + zz = _tmp$12; + z = _tmp$13; + /* } */ case 36: + /* */ if (!((m.$length === 0))) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (!((m.$length === 0))) { */ case 38: + _r$9 = zz.div(r, z, m); /* */ $s = 40; case 40: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple$2 = _r$9; + zz = _tuple$2[0]; + r = _tuple$2[1]; + _tmp$14 = q; + _tmp$15 = z; + _tmp$16 = zz; + _tmp$17 = r; + zz = _tmp$14; + r = _tmp$15; + q = _tmp$16; + z = _tmp$17; + /* } */ case 39: + v = (y$3 = (1), y$3 < 32 ? (v << y$3) : 0) >>> 0; + j$1 = j$1 + (1) >> 0; + $s = 32; continue; + case 33: + i = i - (1) >> 0; + $s = 30; continue; + case 31: + $s = -1; return z.norm(); + /* */ } return; } var $f = {$blk: expNN, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, i, j, j$1, logM, m, ok, q, r, shift, slow, v, w, x, x$1, y, y$1, y$2, y$3, z, zz, $s};return $f; + }; + $ptrType(nat).prototype.expNN = function(...$args) { return this.$get().expNN(...$args); }; + nat.prototype.expNNMontgomeryEven = function expNNMontgomeryEven(x, y, m) { + var {_arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, m, m1, m2, m2inv, n, x, y, z, z1, z2, $s, $r, $c} = $restore(this, {x, y, m}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + n = m.trailingZeroBits(); + m1 = (nat.nil).shl(natOne, n); + m2 = (nat.nil).shr(m, n); + _r = (nat.nil).expNN(x, y, m1, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z1 = _r; + _r$1 = (nat.nil).expNN(x, y, m2, false); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z2 = _r$1; + z = z.set(z2); + _r$2 = z1.subMod2N(z1, z2, n); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + z1 = _r$2; + _r$3 = (nat.nil).modInverse(m2, m1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + m2inv = _r$3; + _r$4 = z2.mul(z1, m2inv); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + z2 = _r$4; + z2 = z2.trunc(z2, n); + _arg = z; + _r$5 = z1.mul(z2, m2); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$1 = _r$5; + _r$6 = z.add(_arg, _arg$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + z = _r$6; + $s = -1; return z; + /* */ } return; } var $f = {$blk: expNNMontgomeryEven, $c: true, $r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, m, m1, m2, m2inv, n, x, y, z, z1, z2, $s};return $f; + }; + $ptrType(nat).prototype.expNNMontgomeryEven = function(...$args) { return this.$get().expNNMontgomeryEven(...$args); }; + nat.prototype.expNNWindowed = function expNNWindowed(x, y, logM) { + var {_i, _i$1, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _ref$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, advance, i, i$1, i$2, i$3, j, logM, mbits, mmask, mtop, p, p1, p2, powers, w, x, x$1, x$2, x$3, y, y$1, y$2, yi, z, zz, zzp, $s, $r, $c} = $restore(this, {x, y, logM}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (y.$length <= 1) { + $panic(new $String("big: misuse of expNNWindowed")); + } + if ((((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]) & 1) >>> 0) === 0) { + $s = -1; return z.setWord(0); + } + if (logM === 1) { + $s = -1; return z.setWord(1); + } + w = (((_q = (((logM + 32 >>> 0) - 1 >>> 0)) / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)); + _r = getNat(w); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + zzp = _r; + zz = zzp.$get(); + powers = arrayType$1.zero(); + _ref = powers; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < 16)) { break; } */ if(!(_i < 16)) { $s = 3; continue; } + i = _i; + _r$1 = getNat(w); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ((i < 0 || i >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[i] = _r$1); + _i++; + $s = 2; continue; + case 3: + powers[0].$set(powers[0].set(natOne)); + powers[1].$set(powers[1].trunc(x, logM)); + i$1 = 2; + /* while (true) { */ case 5: + /* if (!(i$1 < 16)) { break; } */ if(!(i$1 < 16)) { $s = 6; continue; } + _tmp = (x$1 = (_q$1 = i$1 / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[x$1])); + _tmp$1 = ((i$1 < 0 || i$1 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[i$1]); + _tmp$2 = (x$2 = i$1 + 1 >> 0, ((x$2 < 0 || x$2 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[x$2])); + p2 = _tmp; + p = _tmp$1; + p1 = _tmp$2; + _r$2 = p.sqr(p2.$get()); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + p.$set(_r$2); + p.$set(p.trunc(p.$get(), logM)); + _r$3 = p1.mul(p.$get(), x); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + p1.$set(_r$3); + p1.$set(p1.trunc(p1.$get(), logM)); + i$1 = i$1 + (2) >> 0; + $s = 5; continue; + case 6: + i$2 = y.$length - 1 >> 0; + mtop = (((_q$2 = ((logM - 2 >>> 0)) / 32, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)); + mmask = 4294967295; + mbits = (((logM - 1 >>> 0)) & 31) >>> 0; + if (!((mbits === 0))) { + mmask = (((y$1 = mbits, y$1 < 32 ? (1 << y$1) : 0) >>> 0)) - 1 >>> 0; + } + if (i$2 > mtop) { + i$2 = mtop; + } + advance = false; + z = z.setWord(1); + /* while (true) { */ case 9: + /* if (!(i$2 >= 0)) { break; } */ if(!(i$2 >= 0)) { $s = 10; continue; } + yi = ((i$2 < 0 || i$2 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i$2]); + if (i$2 === mtop) { + yi = (yi & (mmask)) >>> 0; + } + j = 0; + /* while (true) { */ case 11: + /* if (!(j < 32)) { break; } */ if(!(j < 32)) { $s = 12; continue; } + /* */ if (advance) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (advance) { */ case 13: + _r$4 = zz.sqr(z); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + zz = _r$4; + _tmp$3 = z; + _tmp$4 = zz; + zz = _tmp$3; + z = _tmp$4; + z = z.trunc(z, logM); + _r$5 = zz.sqr(z); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + zz = _r$5; + _tmp$5 = z; + _tmp$6 = zz; + zz = _tmp$5; + z = _tmp$6; + z = z.trunc(z, logM); + _r$6 = zz.sqr(z); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + zz = _r$6; + _tmp$7 = z; + _tmp$8 = zz; + zz = _tmp$7; + z = _tmp$8; + z = z.trunc(z, logM); + _r$7 = zz.sqr(z); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + zz = _r$7; + _tmp$9 = z; + _tmp$10 = zz; + zz = _tmp$9; + z = _tmp$10; + z = z.trunc(z, logM); + /* } */ case 14: + _r$8 = zz.mul(z, (x$3 = yi >>> 28 >>> 0, ((x$3 < 0 || x$3 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[x$3])).$get()); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + zz = _r$8; + _tmp$11 = z; + _tmp$12 = zz; + zz = _tmp$11; + z = _tmp$12; + z = z.trunc(z, logM); + yi = (y$2 = (4), y$2 < 32 ? (yi << y$2) : 0) >>> 0; + advance = true; + j = j + (4) >> 0; + $s = 11; continue; + case 12: + i$2 = i$2 - (1) >> 0; + $s = 9; continue; + case 10: + zzp.$set(zz); + putNat(zzp); + _ref$1 = powers; + _i$1 = 0; + while (true) { + if (!(_i$1 < 16)) { break; } + i$3 = _i$1; + putNat(((i$3 < 0 || i$3 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[i$3])); + _i$1++; + } + $s = -1; return z.norm(); + /* */ } return; } var $f = {$blk: expNNWindowed, $c: true, $r, _i, _i$1, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _ref$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, advance, i, i$1, i$2, i$3, j, logM, mbits, mmask, mtop, p, p1, p2, powers, w, x, x$1, x$2, x$3, y, y$1, y$2, yi, z, zz, zzp, $s};return $f; + }; + $ptrType(nat).prototype.expNNWindowed = function(...$args) { return this.$get().expNNWindowed(...$args); }; + nat.prototype.expNNMontgomery = function expNNMontgomery(x, y, m) { + var {RR, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, i, i$1, i$2, j, k0, m, numWords, one, powers, rr, t, x, x$1, x$2, y, y$1, y$2, yi, z, zz, $s, $r, $c} = $restore(this, {x, y, m}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + numWords = m.$length; + /* */ if (x.$length > numWords) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.$length > numWords) { */ case 1: + _r = (nat.nil).div(nat.nil, x, m); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + x = _tuple[1]; + /* } */ case 2: + if (x.$length < numWords) { + rr = $makeSlice(nat, numWords); + $copySlice(rr, x); + x = rr; + } + k0 = 2 - (0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) >>> 0; + t = (0 >= m.$length ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + 0]) - 1 >>> 0; + i = 1; + while (true) { + if (!(i < 32)) { break; } + t = $imul(t, (t)) >>> 0; + k0 = $imul(k0, (((t + 1 >>> 0)))) >>> 0; + i = (y$1 = (1), y$1 < 32 ? (i << y$1) : 0) >> 0; + } + k0 = -k0 >>> 0; + RR = (nat.nil).setWord(1); + zz = (nat.nil).shl(RR, ((($imul(($imul(2, numWords)), 32)) >>> 0))); + _r$1 = (nat.nil).div(RR, zz, m); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + RR = _tuple$1[1]; + if (RR.$length < numWords) { + zz = zz.make(numWords); + $copySlice(zz, RR); + RR = zz; + } + one = $makeSlice(nat, numWords); + (0 >= one.$length ? ($throwRuntimeError("index out of range"), undefined) : one.$array[one.$offset + 0] = 1); + powers = arrayType$2.zero(); + powers[0] = powers[0].montgomery(one, RR, m, k0, numWords); + powers[1] = powers[1].montgomery(x, RR, m, k0, numWords); + i$1 = 2; + while (true) { + if (!(i$1 < 16)) { break; } + ((i$1 < 0 || i$1 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[i$1] = ((i$1 < 0 || i$1 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[i$1]).montgomery((x$1 = i$1 - 1 >> 0, ((x$1 < 0 || x$1 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[x$1])), powers[1], m, k0, numWords)); + i$1 = i$1 + (1) >> 0; + } + z = z.make(numWords); + $copySlice(z, powers[0]); + zz = zz.make(numWords); + i$2 = y.$length - 1 >> 0; + while (true) { + if (!(i$2 >= 0)) { break; } + yi = ((i$2 < 0 || i$2 >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i$2]); + j = 0; + while (true) { + if (!(j < 32)) { break; } + if (!((i$2 === (y.$length - 1 >> 0))) || !((j === 0))) { + zz = zz.montgomery(z, z, m, k0, numWords); + z = z.montgomery(zz, zz, m, k0, numWords); + zz = zz.montgomery(z, z, m, k0, numWords); + z = z.montgomery(zz, zz, m, k0, numWords); + } + zz = zz.montgomery(z, (x$2 = yi >>> 28 >>> 0, ((x$2 < 0 || x$2 >= powers.length) ? ($throwRuntimeError("index out of range"), undefined) : powers[x$2])), m, k0, numWords); + _tmp = zz; + _tmp$1 = z; + z = _tmp; + zz = _tmp$1; + yi = (y$2 = (4), y$2 < 32 ? (yi << y$2) : 0) >>> 0; + j = j + (4) >> 0; + } + i$2 = i$2 - (1) >> 0; + } + zz = zz.montgomery(z, one, m, k0, numWords); + /* */ if (zz.cmp(m) >= 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (zz.cmp(m) >= 0) { */ case 5: + _r$2 = zz.sub(zz, m); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + zz = _r$2; + /* */ if (zz.cmp(m) >= 0) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (zz.cmp(m) >= 0) { */ case 8: + _r$3 = (nat.nil).div(nat.nil, zz, m); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$2 = _r$3; + zz = _tuple$2[1]; + /* } */ case 9: + /* } */ case 6: + $s = -1; return zz.norm(); + /* */ } return; } var $f = {$blk: expNNMontgomery, $c: true, $r, RR, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, i, i$1, i$2, j, k0, m, numWords, one, powers, rr, t, x, x$1, x$2, y, y$1, y$2, yi, z, zz, $s};return $f; + }; + $ptrType(nat).prototype.expNNMontgomery = function(...$args) { return this.$get().expNNMontgomery(...$args); }; + nat.prototype.bytes = function bytes$1(buf) { + var _i, _ref, buf, d, i, j, y, z; + i = 0; + z = this; + i = buf.$length; + _ref = z; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + d = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + j = 0; + while (true) { + if (!(j < 4)) { break; } + i = i - (1) >> 0; + if (i >= 0) { + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = ((d << 24 >>> 24))); + } else if (!((((d << 24 >>> 24)) === 0))) { + $panic(new $String("math/big: buffer too small to fit value")); + } + d = (y = (8), y < 32 ? (d >>> y) : 0) >>> 0; + j = j + (1) >> 0; + } + _i++; + } + if (i < 0) { + i = 0; + } + while (true) { + if (!(i < buf.$length && (((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i]) === 0))) { break; } + i = i + (1) >> 0; + } + return i; + }; + $ptrType(nat).prototype.bytes = function(...$args) { return this.$get().bytes(...$args); }; + bigEndianWord = function bigEndianWord$1(buf) { + var buf; + if (false) { + return (($clone(binary.BigEndian, binary.bigEndian).Uint64(buf).$low >>> 0)); + } + return (($clone(binary.BigEndian, binary.bigEndian).Uint32(buf) >>> 0)); + }; + nat.prototype.setBytes = function setBytes(buf) { + var _q, buf, d, i, k, s, x, x$1, y, z; + z = this; + z = z.make((_q = (((buf.$length + 4 >> 0) - 1 >> 0)) / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); + i = buf.$length; + k = 0; + while (true) { + if (!(i >= 4)) { break; } + ((k < 0 || k >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + k] = bigEndianWord($subslice(buf, (i - 4 >> 0), i))); + i = i - (4) >> 0; + k = k + (1) >> 0; + } + if (i > 0) { + d = 0; + s = 0; + while (true) { + if (!(i > 0)) { break; } + d = (d | (((y = s, y < 32 ? ((((x = i - 1 >> 0, ((x < 0 || x >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + x])) >>> 0)) << y) : 0) >>> 0))) >>> 0; + i = i - (1) >> 0; + s = s + (8) >>> 0; + } + (x$1 = z.$length - 1 >> 0, ((x$1 < 0 || x$1 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$1] = d)); + } + return z.norm(); + }; + $ptrType(nat).prototype.setBytes = function(...$args) { return this.$get().setBytes(...$args); }; + nat.prototype.sqrt = function sqrt(x) { + var {_q, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, n, x, z, z1, z2, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (x.cmp(natOne) <= 0) { + $s = -1; return z.set(x); + } + if (alias(z, x)) { + z = nat.nil; + } + _tmp = nat.nil; + _tmp$1 = nat.nil; + z1 = _tmp; + z2 = _tmp$1; + z1 = z; + z1 = z1.setUint64(new $Uint64(0, 1)); + z1 = z1.shl(z1, (_q = (((x.bitLen() + 1 >> 0) >>> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"))); + n = 0; + /* while (true) { */ case 1: + _r = z2.div(nat.nil, x, z1); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + z2 = _tuple[0]; + _r$1 = z2.add(z2, z1); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z2 = _r$1; + z2 = z2.shr(z2, 1); + if (z2.cmp(z1) >= 0) { + if ((n & 1) === 0) { + $s = -1; return z1; + } + $s = -1; return z.set(z1); + } + _tmp$2 = z2; + _tmp$3 = z1; + z1 = _tmp$2; + z2 = _tmp$3; + n = n + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return nat.nil; + /* */ } return; } var $f = {$blk: sqrt, $c: true, $r, _q, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, n, x, z, z1, z2, $s};return $f; + }; + $ptrType(nat).prototype.sqrt = function(...$args) { return this.$get().sqrt(...$args); }; + nat.prototype.subMod2N = function subMod2N(x, y, n) { + var {$24r, $24r$1, _i, _r, _r$1, _r$2, _ref, i, n, x, y, z, $s, $r, $c} = $restore(this, {x, y, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (((x.bitLen() >>> 0)) > n) { + if (alias(z, x)) { + x = x.trunc(x, n); + } else { + x = (nat.nil).trunc(x, n); + } + } + if (((y.bitLen() >>> 0)) > n) { + if (alias(z, y)) { + y = y.trunc(y, n); + } else { + y = (nat.nil).trunc(y, n); + } + } + /* */ if (x.cmp(y) >= 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.cmp(y) >= 0) { */ case 1: + _r = z.sub(x, y); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = z.sub(y, x); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z = _r$1; + while (true) { + if (!(($imul(((z.$length >>> 0)), 32) >>> 0) < n)) { break; } + z = $append(z, 0); + } + _ref = z; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = (~((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i]) >>> 0)); + _i++; + } + z = z.trunc(z, n); + _r$2 = z.add(z, natOne); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = _r$2; + $s = 7; case 7: return $24r$1; + /* */ } return; } var $f = {$blk: subMod2N, $c: true, $r, $24r, $24r$1, _i, _r, _r$1, _r$2, _ref, i, n, x, y, z, $s};return $f; + }; + $ptrType(nat).prototype.subMod2N = function(...$args) { return this.$get().subMod2N(...$args); }; + $ptrType(Int).prototype.GobEncode = function GobEncode$1() { + var b, buf, i, x; + x = this; + if (x === ptrType$2.nil) { + return [sliceType$1.nil, $ifaceNil]; + } + buf = $makeSlice(sliceType$1, (1 + ($imul(x.abs.$length, 4)) >> 0)); + i = x.abs.bytes(buf) - 1 >> 0; + b = 2; + if (x.neg) { + b = (b | (1)) >>> 0; + } + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = b); + return [$subslice(buf, i), $ifaceNil]; + }; + $ptrType(Int).prototype.GobDecode = function GobDecode$1(buf) { + var {$24r, _r, b, buf, z, $s, $r, $c} = $restore(this, {buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (buf.$length === 0) { + Int.copy(z, new Int.ptr(false, nat.nil)); + $s = -1; return $ifaceNil; + } + b = (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]); + /* */ if (!(((b >>> 1 << 24 >>> 24) === 1))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(((b >>> 1 << 24 >>> 24) === 1))) { */ case 1: + _r = fmt.Errorf("Int.GobDecode: encoding version %d not supported", new sliceType([new $Uint8((b >>> 1 << 24 >>> 24))])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + z.neg = !((((b & 1) >>> 0) === 0)); + z.abs = z.abs.setBytes($subslice(buf, 1)); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: GobDecode$1, $c: true, $r, $24r, _r, b, buf, z, $s};return $f; + }; + $ptrType(Int).prototype.MarshalText = function MarshalText$1() { + var {$24r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, err, text, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + text = sliceType$1.nil; + err = $ifaceNil; + x = this; + if (x === ptrType$2.nil) { + _tmp = (new sliceType$1($stringToBytes(""))); + _tmp$1 = $ifaceNil; + text = _tmp; + err = _tmp$1; + $s = -1; return [text, err]; + } + _r = x.abs.itoa(x.neg, 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp$2 = _r; + _tmp$3 = $ifaceNil; + text = _tmp$2; + err = _tmp$3; + $24r = [text, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: MarshalText$1, $c: true, $r, $24r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, err, text, x, $s};return $f; + }; + $ptrType(Int).prototype.UnmarshalText = function UnmarshalText$1(text) { + var {$24r, _r, _r$1, _tuple, ok, text, z, $s, $r, $c} = $restore(this, {text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.setFromScanner(bytes.NewReader(text), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + _r$1 = fmt.Errorf("math/big: cannot unmarshal %q into a *big.Int", new sliceType([text])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 5; case 5: return $24r; + /* } */ case 3: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: UnmarshalText$1, $c: true, $r, $24r, _r, _r$1, _tuple, ok, text, z, $s};return $f; + }; + $ptrType(Int).prototype.MarshalJSON = function MarshalJSON() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (x === ptrType$2.nil) { + $s = -1; return [(new sliceType$1($stringToBytes("null"))), $ifaceNil]; + } + _r = x.abs.itoa(x.neg, 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = [_r, $ifaceNil]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: MarshalJSON, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(Int).prototype.UnmarshalJSON = function UnmarshalJSON(text) { + var {$24r, _r, text, z, $s, $r, $c} = $restore(this, {text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (($bytesToString(text)) === "null") { + $s = -1; return $ifaceNil; + } + _r = z.UnmarshalText(text); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: UnmarshalJSON, $c: true, $r, $24r, _r, text, z, $s};return $f; + }; + $ptrType(Int).prototype.Text = function Text(base) { + var {$24r, _r, base, x, $s, $r, $c} = $restore(this, {base}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (x === ptrType$2.nil) { + $s = -1; return ""; + } + _r = x.abs.itoa(x.neg, base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = ($bytesToString(_r)); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Text, $c: true, $r, $24r, _r, base, x, $s};return $f; + }; + $ptrType(Int).prototype.Append = function Append(buf, base) { + var {$24r, _arg, _arg$1, _r, base, buf, x, $s, $r, $c} = $restore(this, {buf, base}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (x === ptrType$2.nil) { + $s = -1; return $appendSlice(buf, ""); + } + _arg = buf; + _r = x.abs.itoa(x.neg, base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + $24r = $appendSlice(_arg, _arg$1); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Append, $c: true, $r, $24r, _arg, _arg$1, _r, base, buf, x, $s};return $f; + }; + $ptrType(Int).prototype.String = function String$3() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Text(10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$3, $c: true, $r, $24r, _r, x, $s};return $f; + }; + writeMultiple = function writeMultiple$1(s, text, count) { + var {_r, b, count, s, text, $s, $r, $c} = $restore(this, {s, text, count}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (text.length > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (text.length > 0) { */ case 1: + b = (new sliceType$1($stringToBytes(text))); + /* while (true) { */ case 3: + /* if (!(count > 0)) { break; } */ if(!(count > 0)) { $s = 4; continue; } + _r = s.Write(b); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + count = count - (1) >> 0; + $s = 3; continue; + case 4: + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: writeMultiple$1, $c: true, $r, _r, b, count, s, text, $s};return $f; + }; + $ptrType(Int).prototype.Format = function Format(s, ch) { + var {_1, _2, _arg, _arg$1, _arg$2, _i, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, base, ch, d, d$1, digits, i, left, length, precision, precisionSet, prefix, right, s, sign, width, widthSet, x, zeros, $s, $r, $c} = $restore(this, {s, ch}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + base = 0; + _1 = ch; + /* */ if (_1 === (98)) { $s = 2; continue; } + /* */ if ((_1 === (111)) || (_1 === (79))) { $s = 3; continue; } + /* */ if ((_1 === (100)) || (_1 === (115)) || (_1 === (118))) { $s = 4; continue; } + /* */ if ((_1 === (120)) || (_1 === (88))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (98)) { */ case 2: + base = 2; + $s = 7; continue; + /* } else if ((_1 === (111)) || (_1 === (79))) { */ case 3: + base = 8; + $s = 7; continue; + /* } else if ((_1 === (100)) || (_1 === (115)) || (_1 === (118))) { */ case 4: + base = 10; + $s = 7; continue; + /* } else if ((_1 === (120)) || (_1 === (88))) { */ case 5: + base = 16; + $s = 7; continue; + /* } else { */ case 6: + _arg = s; + _arg$1 = new $Int32(ch); + _r = x.String(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$2 = new $String(_r); + _r$1 = fmt.Fprintf(_arg, "%%!%c(big.Int=%s)", new sliceType([_arg$1, _arg$2])); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return; + /* } */ case 7: + case 1: + /* */ if (x === ptrType$2.nil) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (x === ptrType$2.nil) { */ case 10: + _r$2 = fmt.Fprint(s, new sliceType([new $String("")])); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = -1; return; + /* } */ case 11: + sign = ""; + /* */ if (x.neg) { $s = 14; continue; } + _r$3 = s.Flag(43); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 15; continue; } + _r$4 = s.Flag(32); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (x.neg) { */ case 14: + sign = "-"; + $s = 17; continue; + /* } else if (_r$3) { */ case 15: + sign = "+"; + $s = 17; continue; + /* } else if (_r$4) { */ case 16: + sign = " "; + /* } */ case 17: + case 13: + prefix = ""; + _r$5 = s.Flag(35); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (_r$5) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (_r$5) { */ case 20: + _2 = ch; + if (_2 === (98)) { + prefix = "0b"; + } else if (_2 === (111)) { + prefix = "0"; + } else if (_2 === (120)) { + prefix = "0x"; + } else if (_2 === (88)) { + prefix = "0X"; + } + /* } */ case 21: + if (ch === 79) { + prefix = "0o"; + } + _r$6 = x.abs.utoa(base); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + digits = _r$6; + if (ch === 88) { + _ref = digits; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + d = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (97 <= d && d <= 122) { + ((i < 0 || i >= digits.$length) ? ($throwRuntimeError("index out of range"), undefined) : digits.$array[digits.$offset + i] = (65 + ((d - 97 << 24 >>> 24)) << 24 >>> 24)); + } + _i++; + } + } + left = 0; + zeros = 0; + right = 0; + _r$7 = s.Precision(); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple = _r$7; + precision = _tuple[0]; + precisionSet = _tuple[1]; + if (precisionSet) { + if (digits.$length < precision) { + zeros = precision - digits.$length >> 0; + } else if ((digits.$length === 1) && ((0 >= digits.$length ? ($throwRuntimeError("index out of range"), undefined) : digits.$array[digits.$offset + 0]) === 48) && (precision === 0)) { + $s = -1; return; + } + } + length = ((sign.length + prefix.length >> 0) + zeros >> 0) + digits.$length >> 0; + _r$8 = s.Width(); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tuple$1 = _r$8; + width = _tuple$1[0]; + widthSet = _tuple$1[1]; + /* */ if (widthSet && length < width) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (widthSet && length < width) { */ case 26: + d$1 = width - length >> 0; + _r$9 = s.Flag(45); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (_r$9) { $s = 29; continue; } + _r$10 = s.Flag(48); /* */ $s = 34; case 34: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + /* */ if (_r$10 && !precisionSet) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (_r$9) { */ case 29: + right = d$1; + $s = 32; continue; + /* } else if (_r$10 && !precisionSet) { */ case 30: + zeros = d$1; + $s = 32; continue; + /* } else { */ case 31: + left = d$1; + /* } */ case 32: + case 28: + /* } */ case 27: + $r = writeMultiple(s, " ", left); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = writeMultiple(s, sign, 1); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = writeMultiple(s, prefix, 1); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = writeMultiple(s, "0", zeros); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$11 = s.Write(digits); /* */ $s = 39; case 39: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$11; + $r = writeMultiple(s, " ", right); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Format, $c: true, $r, _1, _2, _arg, _arg$1, _arg$2, _i, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, base, ch, d, d$1, digits, i, left, length, precision, precisionSet, prefix, right, s, sign, width, widthSet, x, zeros, $s};return $f; + }; + $ptrType(Int).prototype.scan = function scan$1(r, base) { + var {_r, _r$1, _tuple, _tuple$1, base, err, neg, r, z, $s, $r, $c} = $restore(this, {r, base}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = scanSign(r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + neg = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, 0, err]; + } + _r$1 = z.abs.scan(r, base, false); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + z.abs = _tuple$1[0]; + base = _tuple$1[1]; + err = _tuple$1[3]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, base, err]; + } + z.neg = z.abs.$length > 0 && neg; + $s = -1; return [z, base, $ifaceNil]; + /* */ } return; } var $f = {$blk: scan$1, $c: true, $r, _r, _r$1, _tuple, _tuple$1, base, err, neg, r, z, $s};return $f; + }; + scanSign = function scanSign$1(r) { + var {_1, _r, _r$1, _tmp, _tmp$1, _tuple, ch, err, neg, r, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + neg = false; + err = $ifaceNil; + ch = 0; + _r = r.ReadByte(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ch = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = false; + _tmp$1 = err; + neg = _tmp; + err = _tmp$1; + $s = -1; return [neg, err]; + } + _1 = ch; + /* */ if (_1 === (45)) { $s = 3; continue; } + /* */ if (_1 === (43)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (45)) { */ case 3: + neg = true; + $s = 6; continue; + /* } else if (_1 === (43)) { */ case 4: + $s = 6; continue; + /* } else { */ case 5: + _r$1 = r.UnreadByte(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 6: + case 2: + $s = -1; return [neg, err]; + /* */ } return; } var $f = {$blk: scanSign$1, $c: true, $r, _1, _r, _r$1, _tmp, _tmp$1, _tuple, ch, err, neg, r, $s};return $f; + }; + $ptrType(byteReader).prototype.ReadByte = function ReadByte() { + var {_r, _r$1, _tuple, ch, err, r, size, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.ScanState.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ch = _tuple[0]; + size = _tuple[1]; + err = _tuple[2]; + /* */ if (!((size === 1)) && $interfaceIsEqual(err, $ifaceNil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((size === 1)) && $interfaceIsEqual(err, $ifaceNil)) { */ case 2: + _r$1 = fmt.Errorf("invalid rune %#U", new sliceType([new $Int32(ch)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err = _r$1; + /* } */ case 3: + $s = -1; return [((ch << 24 >>> 24)), err]; + /* */ } return; } var $f = {$blk: ReadByte, $c: true, $r, _r, _r$1, _tuple, ch, err, r, size, $s};return $f; + }; + byteReader.prototype.ReadByte = function(...$args) { return this.$val.ReadByte(...$args); }; + $ptrType(byteReader).prototype.UnreadByte = function UnreadByte() { + var {$24r, _r, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.ScanState.UnreadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: UnreadByte, $c: true, $r, $24r, _r, r, $s};return $f; + }; + byteReader.prototype.UnreadByte = function(...$args) { return this.$val.UnreadByte(...$args); }; + $ptrType(Int).prototype.Scan = function Scan$1(s, ch) { + var {_1, _r, _tuple, base, ch, err, s, x, z, $s, $r, $c} = $restore(this, {s, ch}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + $r = s.SkipSpace(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + base = 0; + _1 = ch; + if (_1 === (98)) { + base = 2; + } else if (_1 === (111)) { + base = 8; + } else if (_1 === (100)) { + base = 10; + } else if ((_1 === (120)) || (_1 === (88))) { + base = 16; + } else if ((_1 === (115)) || (_1 === (118))) { + } else { + $s = -1; return errors.New("Int.Scan: invalid verb"); + } + _r = z.scan((x = new byteReader.ptr(s), new x.constructor.elem(x)), base); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[2]; + $s = -1; return err; + /* */ } return; } var $f = {$blk: Scan$1, $c: true, $r, _1, _r, _tuple, base, ch, err, s, x, z, $s};return $f; + }; + $ptrType(Int).prototype.Sign = function Sign$1() { + var x; + x = this; + if (x.abs.$length === 0) { + return 0; + } + if (x.neg) { + return -1; + } + return 1; + }; + $ptrType(Int).prototype.SetInt64 = function SetInt64$1(x) { + var neg, x, z; + z = this; + neg = false; + if ((x.$high < 0 || (x.$high === 0 && x.$low < 0))) { + neg = true; + x = new $Int64(-x.$high, -x.$low); + } + z.abs = z.abs.setUint64((new $Uint64(x.$high, x.$low))); + z.neg = neg; + return z; + }; + $ptrType(Int).prototype.SetUint64 = function SetUint64$1(x) { + var x, z; + z = this; + z.abs = z.abs.setUint64(x); + z.neg = false; + return z; + }; + NewInt = function NewInt$1(x) { + var abs, u, x, x$1; + u = (new $Uint64(x.$high, x.$low)); + if ((x.$high < 0 || (x.$high === 0 && x.$low < 0))) { + u = new $Uint64(-u.$high, -u.$low); + } + abs = sliceType$2.nil; + if ((x.$high === 0 && x.$low === 0)) { + } else if (true && !((x$1 = $shiftRightUint64(u, 32), (x$1.$high === 0 && x$1.$low === 0)))) { + abs = new sliceType$2([((u.$low >>> 0)), (($shiftRightUint64(u, 32).$low >>> 0))]); + } else { + abs = new sliceType$2([((u.$low >>> 0))]); + } + return new Int.ptr((x.$high < 0 || (x.$high === 0 && x.$low < 0)), $convertSliceType(abs, nat)); + }; + $pkg.NewInt = NewInt; + $ptrType(Int).prototype.Set = function Set$1(x) { + var x, z; + z = this; + if (!(z === x)) { + z.abs = z.abs.set(x.abs); + z.neg = x.neg; + } + return z; + }; + $ptrType(Int).prototype.Bits = function Bits() { + var x; + x = this; + return $convertSliceType(x.abs, sliceType$2); + }; + $ptrType(Int).prototype.SetBits = function SetBits(abs) { + var abs, z; + z = this; + z.abs = ($convertSliceType(abs, nat)).norm(); + z.neg = false; + return z; + }; + $ptrType(Int).prototype.Abs = function Abs$1(x) { + var x, z; + z = this; + z.Set(x); + z.neg = false; + return z; + }; + $ptrType(Int).prototype.Neg = function Neg$1(x) { + var x, z; + z = this; + z.Set(x); + z.neg = z.abs.$length > 0 && !z.neg; + return z; + }; + $ptrType(Int).prototype.Add = function Add$1(x, y) { + var {_r, _r$1, _r$2, neg, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + neg = x.neg; + /* */ if (x.neg === y.neg) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.neg === y.neg) { */ case 1: + _r = z.abs.add(x.abs, y.abs); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.abs = _r; + $s = 3; continue; + /* } else { */ case 2: + /* */ if (x.abs.cmp(y.abs) >= 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (x.abs.cmp(y.abs) >= 0) { */ case 5: + _r$1 = z.abs.sub(x.abs, y.abs); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.abs = _r$1; + $s = 7; continue; + /* } else { */ case 6: + neg = !neg; + _r$2 = z.abs.sub(y.abs, x.abs); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + z.abs = _r$2; + /* } */ case 7: + /* } */ case 3: + z.neg = z.abs.$length > 0 && neg; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Add$1, $c: true, $r, _r, _r$1, _r$2, neg, x, y, z, $s};return $f; + }; + $ptrType(Int).prototype.Sub = function Sub$1(x, y) { + var {_r, _r$1, _r$2, neg, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + neg = x.neg; + /* */ if (!(x.neg === y.neg)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(x.neg === y.neg)) { */ case 1: + _r = z.abs.add(x.abs, y.abs); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.abs = _r; + $s = 3; continue; + /* } else { */ case 2: + /* */ if (x.abs.cmp(y.abs) >= 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (x.abs.cmp(y.abs) >= 0) { */ case 5: + _r$1 = z.abs.sub(x.abs, y.abs); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.abs = _r$1; + $s = 7; continue; + /* } else { */ case 6: + neg = !neg; + _r$2 = z.abs.sub(y.abs, x.abs); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + z.abs = _r$2; + /* } */ case 7: + /* } */ case 3: + z.neg = z.abs.$length > 0 && neg; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Sub$1, $c: true, $r, _r, _r$1, _r$2, neg, x, y, z, $s};return $f; + }; + $ptrType(Int).prototype.Mul = function Mul$1(x, y) { + var {_r, _r$1, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (x === y) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x === y) { */ case 1: + _r = z.abs.sqr(x.abs); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.abs = _r; + z.neg = false; + $s = -1; return z; + /* } */ case 2: + _r$1 = z.abs.mul(x.abs, y.abs); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.abs = _r$1; + z.neg = z.abs.$length > 0 && !(x.neg === y.neg); + $s = -1; return z; + /* */ } return; } var $f = {$blk: Mul$1, $c: true, $r, _r, _r$1, x, y, z, $s};return $f; + }; + $ptrType(Int).prototype.MulRange = function MulRange(a, b) { + var {_r, _tmp, _tmp$1, a, b, neg, x, x$1, z, $s, $r, $c} = $restore(this, {a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) { + $s = -1; return z.SetInt64(new $Int64(0, 1)); + } else if ((a.$high < 0 || (a.$high === 0 && a.$low <= 0)) && (b.$high > 0 || (b.$high === 0 && b.$low >= 0))) { + $s = -1; return z.SetInt64(new $Int64(0, 0)); + } + neg = false; + if ((a.$high < 0 || (a.$high === 0 && a.$low < 0))) { + neg = (x = (x$1 = new $Int64(b.$high - a.$high, b.$low - a.$low), new $Int64(x$1.$high & 0, (x$1.$low & 1) >>> 0)), (x.$high === 0 && x.$low === 0)); + _tmp = new $Int64(-b.$high, -b.$low); + _tmp$1 = new $Int64(-a.$high, -a.$low); + a = _tmp; + b = _tmp$1; + } + _r = z.abs.mulRange((new $Uint64(a.$high, a.$low)), (new $Uint64(b.$high, b.$low))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.abs = _r; + z.neg = neg; + $s = -1; return z; + /* */ } return; } var $f = {$blk: MulRange, $c: true, $r, _r, _tmp, _tmp$1, a, b, neg, x, x$1, z, $s};return $f; + }; + $ptrType(Int).prototype.Binomial = function Binomial(n, k) { + var {K, N, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, i, k, n, t, x, z, $s, $r, $c} = $restore(this, {n, k}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + K = [K]; + N = [N]; + i = [i]; + z = this; + if ((k.$high > n.$high || (k.$high === n.$high && k.$low > n.$low))) { + $s = -1; return z.SetInt64(new $Int64(0, 0)); + } + if ((x = new $Int64(n.$high - k.$high, n.$low - k.$low), (k.$high > x.$high || (k.$high === x.$high && k.$low > x.$low)))) { + k = new $Int64(n.$high - k.$high, n.$low - k.$low); + } + _tmp = new Int.ptr(false, nat.nil); + _tmp$1 = new Int.ptr(false, nat.nil); + _tmp$2 = new Int.ptr(false, nat.nil); + _tmp$3 = new Int.ptr(false, nat.nil); + N[0] = $clone(_tmp, Int); + K[0] = $clone(_tmp$1, Int); + i[0] = $clone(_tmp$2, Int); + t = $clone(_tmp$3, Int); + N[0].SetInt64(n); + K[0].SetInt64(k); + z.Set(intOne); + /* while (true) { */ case 1: + /* if (!(i[0].Cmp(K[0]) < 0)) { break; } */ if(!(i[0].Cmp(K[0]) < 0)) { $s = 2; continue; } + _arg = z; + _r = t.Sub(N[0], i[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + _r$1 = z.Mul(_arg, _arg$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = i[0].Add(i[0], intOne); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _r$3 = z.Quo(z, i[0]); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + $s = 1; continue; + case 2: + $s = -1; return z; + /* */ } return; } var $f = {$blk: Binomial, $c: true, $r, K, N, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, i, k, n, t, x, z, $s};return $f; + }; + $ptrType(Int).prototype.Quo = function Quo$1(x, y) { + var {_r, _tuple, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.abs.div(nat.nil, x.abs, y.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + z.abs = _tuple[0]; + z.neg = z.abs.$length > 0 && !(x.neg === y.neg); + $s = -1; return z; + /* */ } return; } var $f = {$blk: Quo$1, $c: true, $r, _r, _tuple, x, y, z, $s};return $f; + }; + $ptrType(Int).prototype.Rem = function Rem(x, y) { + var {_r, _tuple, x, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = (nat.nil).div(z.abs, x.abs, y.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + z.abs = _tuple[1]; + z.neg = z.abs.$length > 0 && x.neg; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Rem, $c: true, $r, _r, _tuple, x, y, z, $s};return $f; + }; + $ptrType(Int).prototype.QuoRem = function QuoRem(x, y, r) { + var {_r, _tmp, _tmp$1, _tuple, r, x, y, z, $s, $r, $c} = $restore(this, {x, y, r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.abs.div(r.abs, x.abs, y.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + z.abs = _tuple[0]; + r.abs = _tuple[1]; + _tmp = z.abs.$length > 0 && !(x.neg === y.neg); + _tmp$1 = r.abs.$length > 0 && x.neg; + z.neg = _tmp; + r.neg = _tmp$1; + $s = -1; return [z, r]; + /* */ } return; } var $f = {$blk: QuoRem, $c: true, $r, _r, _tmp, _tmp$1, _tuple, r, x, y, z, $s};return $f; + }; + $ptrType(Int).prototype.Div = function Div(x, y) { + var {_r, _r$1, _r$2, r, x, y, y_neg, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = [r]; + z = this; + y_neg = y.neg; + r[0] = new Int.ptr(false, nat.nil); + _r = z.QuoRem(x, y, r[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* */ if (r[0].neg) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (r[0].neg) { */ case 2: + /* */ if (y_neg) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (y_neg) { */ case 4: + _r$1 = z.Add(z, intOne); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = 6; continue; + /* } else { */ case 5: + _r$2 = z.Sub(z, intOne); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* } */ case 6: + /* } */ case 3: + $s = -1; return z; + /* */ } return; } var $f = {$blk: Div, $c: true, $r, _r, _r$1, _r$2, r, x, y, y_neg, z, $s};return $f; + }; + $ptrType(Int).prototype.Mod = function Mod(x, y) { + var {_r, _r$1, _r$2, q, x, y, y0, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + y0 = y; + if (z === y || alias(z.abs, y.abs)) { + y0 = new Int.ptr(false, nat.nil).Set(y); + } + q = new Int.ptr(false, nat.nil); + _r = q.QuoRem(x, y, z); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* */ if (z.neg) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (z.neg) { */ case 2: + /* */ if (y0.neg) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (y0.neg) { */ case 4: + _r$1 = z.Sub(z, y0); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = 6; continue; + /* } else { */ case 5: + _r$2 = z.Add(z, y0); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* } */ case 6: + /* } */ case 3: + $s = -1; return z; + /* */ } return; } var $f = {$blk: Mod, $c: true, $r, _r, _r$1, _r$2, q, x, y, y0, z, $s};return $f; + }; + $ptrType(Int).prototype.DivMod = function DivMod(x, y, m) { + var {_r, _r$1, _r$2, _r$3, _r$4, m, x, y, y0, z, $s, $r, $c} = $restore(this, {x, y, m}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + y0 = y; + if (z === y || alias(z.abs, y.abs)) { + y0 = new Int.ptr(false, nat.nil).Set(y); + } + _r = z.QuoRem(x, y, m); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* */ if (m.neg) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (m.neg) { */ case 2: + /* */ if (y0.neg) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (y0.neg) { */ case 4: + _r$1 = z.Add(z, intOne); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = m.Sub(m, y0); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = 6; continue; + /* } else { */ case 5: + _r$3 = z.Sub(z, intOne); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + _r$4 = m.Add(m, y0); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + /* } */ case 6: + /* } */ case 3: + $s = -1; return [z, m]; + /* */ } return; } var $f = {$blk: DivMod, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, m, x, y, y0, z, $s};return $f; + }; + $ptrType(Int).prototype.Cmp = function Cmp$1(y) { + var r, x, y; + r = 0; + x = this; + if (x === y) { + } else if (x.neg === y.neg) { + r = x.abs.cmp(y.abs); + if (x.neg) { + r = -r; + } + } else if (x.neg) { + r = -1; + } else { + r = 1; + } + return r; + }; + $ptrType(Int).prototype.CmpAbs = function CmpAbs(y) { + var x, y; + x = this; + return x.abs.cmp(y.abs); + }; + low32 = function low32$1(x) { + var x; + if (x.$length === 0) { + return 0; + } + return (((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]) >>> 0)); + }; + low64 = function low64$1(x) { + var v, x, x$1; + if (x.$length === 0) { + return new $Uint64(0, 0); + } + v = (new $Uint64(0, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); + if (true && x.$length > 1) { + return (x$1 = $shiftLeft64((new $Uint64(0, (1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1]))), 32), new $Uint64(x$1.$high | v.$high, (x$1.$low | v.$low) >>> 0)); + } + return v; + }; + $ptrType(Int).prototype.Int64 = function Int64() { + var v, x, x$1; + x = this; + v = ((x$1 = low64(x.abs), new $Int64(x$1.$high, x$1.$low))); + if (x.neg) { + v = new $Int64(-v.$high, -v.$low); + } + return v; + }; + $ptrType(Int).prototype.Uint64 = function Uint64() { + var x; + x = this; + return low64(x.abs); + }; + $ptrType(Int).prototype.IsInt64 = function IsInt64() { + var w, x, x$1, x$2; + x = this; + if (x.abs.$length <= 2) { + w = ((x$1 = low64(x.abs), new $Int64(x$1.$high, x$1.$low))); + return (w.$high > 0 || (w.$high === 0 && w.$low >= 0)) || x.neg && (x$2 = new $Int64(-w.$high, -w.$low), (w.$high === x$2.$high && w.$low === x$2.$low)); + } + return false; + }; + $ptrType(Int).prototype.IsUint64 = function IsUint64() { + var x; + x = this; + return !x.neg && x.abs.$length <= 2; + }; + $ptrType(Int).prototype.SetString = function SetString$1(s, base) { + var {$24r, _r, base, s, z, $s, $r, $c} = $restore(this, {s, base}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.setFromScanner(strings.NewReader(s), base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetString$1, $c: true, $r, $24r, _r, base, s, z, $s};return $f; + }; + $ptrType(Int).prototype.setFromScanner = function setFromScanner(r, base) { + var {_r, _r$1, _tuple, _tuple$1, base, err, err$1, r, z, $s, $r, $c} = $restore(this, {r, base}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.scan(r, base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, false]; + } + _r$1 = r.ReadByte(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + err$1 = _tuple$1[1]; + if (!($interfaceIsEqual(err$1, io.EOF))) { + $s = -1; return [ptrType$2.nil, false]; + } + $s = -1; return [z, true]; + /* */ } return; } var $f = {$blk: setFromScanner, $c: true, $r, _r, _r$1, _tuple, _tuple$1, base, err, err$1, r, z, $s};return $f; + }; + $ptrType(Int).prototype.SetBytes = function SetBytes(buf) { + var buf, z; + z = this; + z.abs = z.abs.setBytes(buf); + z.neg = false; + return z; + }; + $ptrType(Int).prototype.Bytes = function Bytes() { + var buf, x; + x = this; + buf = $makeSlice(sliceType$1, ($imul(x.abs.$length, 4))); + return $subslice(buf, x.abs.bytes(buf)); + }; + $ptrType(Int).prototype.FillBytes = function FillBytes(buf) { + var _i, _ref, buf, i, x; + x = this; + _ref = buf; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= buf.$length) ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + i] = 0); + _i++; + } + x.abs.bytes(buf); + return buf; + }; + $ptrType(Int).prototype.BitLen = function BitLen() { + var x; + x = this; + return x.abs.bitLen(); + }; + $ptrType(Int).prototype.TrailingZeroBits = function TrailingZeroBits() { + var x; + x = this; + return x.abs.trailingZeroBits(); + }; + $ptrType(Int).prototype.Exp = function Exp(x, y, m) { + var {$24r, _r, m, x, y, z, $s, $r, $c} = $restore(this, {x, y, m}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.exp(x, y, m, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Exp, $c: true, $r, $24r, _r, m, x, y, z, $s};return $f; + }; + $ptrType(Int).prototype.exp = function exp(x, y, m, slow) { + var {_r, _r$1, _r$2, inverse, m, mWords, slow, x, xWords, y, yWords, z, $s, $r, $c} = $restore(this, {x, y, m, slow}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + xWords = x.abs; + /* */ if (y.neg) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (y.neg) { */ case 1: + if (m === ptrType$2.nil || (m.abs.$length === 0)) { + $s = -1; return z.SetInt64(new $Int64(0, 1)); + } + _r = new Int.ptr(false, nat.nil).ModInverse(x, m); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + inverse = _r; + if (inverse === ptrType$2.nil) { + $s = -1; return ptrType$2.nil; + } + xWords = inverse.abs; + /* } */ case 2: + yWords = y.abs; + mWords = nat.nil; + if (!(m === ptrType$2.nil)) { + if (z === m || alias(z.abs, m.abs)) { + m = new Int.ptr(false, nat.nil).Set(m); + } + mWords = m.abs; + } + _r$1 = z.abs.expNN(xWords, yWords, mWords, slow); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.abs = _r$1; + z.neg = z.abs.$length > 0 && x.neg && yWords.$length > 0 && ((((0 >= yWords.$length ? ($throwRuntimeError("index out of range"), undefined) : yWords.$array[yWords.$offset + 0]) & 1) >>> 0) === 1); + /* */ if (z.neg && mWords.$length > 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (z.neg && mWords.$length > 0) { */ case 5: + _r$2 = z.abs.sub(mWords, z.abs); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + z.abs = _r$2; + z.neg = false; + /* } */ case 6: + $s = -1; return z; + /* */ } return; } var $f = {$blk: exp, $c: true, $r, _r, _r$1, _r$2, inverse, m, mWords, slow, x, xWords, y, yWords, z, $s};return $f; + }; + $ptrType(Int).prototype.GCD = function GCD(x, y, a, b) { + var {$24r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, a, b, lenA, lenB, negA, negB, x, y, z, $s, $r, $c} = $restore(this, {x, y, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if ((a.abs.$length === 0) || (b.abs.$length === 0)) { + _tmp = a.abs.$length; + _tmp$1 = b.abs.$length; + _tmp$2 = a.neg; + _tmp$3 = b.neg; + lenA = _tmp; + lenB = _tmp$1; + negA = _tmp$2; + negB = _tmp$3; + if (lenA === 0) { + z.Set(b); + } else { + z.Set(a); + } + z.neg = false; + if (!(x === ptrType$2.nil)) { + if (lenA === 0) { + x.SetUint64(new $Uint64(0, 0)); + } else { + x.SetUint64(new $Uint64(0, 1)); + x.neg = negA; + } + } + if (!(y === ptrType$2.nil)) { + if (lenB === 0) { + y.SetUint64(new $Uint64(0, 0)); + } else { + y.SetUint64(new $Uint64(0, 1)); + y.neg = negB; + } + } + $s = -1; return z; + } + _r = z.lehmerGCD(x, y, a, b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: GCD, $c: true, $r, $24r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, a, b, lenA, lenB, negA, negB, x, y, z, $s};return $f; + }; + lehmerSimulate = function lehmerSimulate$1(A, B) { + var A, B, _q, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, a1, a2, even, h, m, n, q, r, u0, u1, u2, v0, v1, v2, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, y$1, y$2, y$3, y$4; + u0 = 0; + u1 = 0; + v0 = 0; + v1 = 0; + even = false; + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = 0; + _tmp$3 = 0; + a1 = _tmp; + a2 = _tmp$1; + u2 = _tmp$2; + v2 = _tmp$3; + m = B.abs.$length; + n = A.abs.$length; + h = nlz((x = A.abs, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]))); + a1 = (((y = h, y < 32 ? ((x$2 = A.abs, x$3 = n - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])) << y) : 0) >>> 0) | ((y$1 = ((32 - h >>> 0)), y$1 < 32 ? ((x$4 = A.abs, x$5 = n - 2 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])) >>> y$1) : 0) >>> 0)) >>> 0; + if ((n === m)) { + a2 = (((y$2 = h, y$2 < 32 ? ((x$6 = B.abs, x$7 = n - 1 >> 0, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])) << y$2) : 0) >>> 0) | ((y$3 = ((32 - h >>> 0)), y$3 < 32 ? ((x$8 = B.abs, x$9 = n - 2 >> 0, ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9])) >>> y$3) : 0) >>> 0)) >>> 0; + } else if ((n === (m + 1 >> 0))) { + a2 = (y$4 = ((32 - h >>> 0)), y$4 < 32 ? ((x$10 = B.abs, x$11 = n - 2 >> 0, ((x$11 < 0 || x$11 >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + x$11])) >>> y$4) : 0) >>> 0; + } else { + a2 = 0; + } + even = false; + _tmp$4 = 0; + _tmp$5 = 1; + _tmp$6 = 0; + u0 = _tmp$4; + u1 = _tmp$5; + u2 = _tmp$6; + _tmp$7 = 0; + _tmp$8 = 0; + _tmp$9 = 1; + v0 = _tmp$7; + v1 = _tmp$8; + v2 = _tmp$9; + while (true) { + if (!(a2 >= v2 && (a1 - a2 >>> 0) >= (v1 + v2 >>> 0))) { break; } + _tmp$10 = (_q = a1 / a2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + _tmp$11 = (_r = a1 % a2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); + q = _tmp$10; + r = _tmp$11; + _tmp$12 = a2; + _tmp$13 = r; + a1 = _tmp$12; + a2 = _tmp$13; + _tmp$14 = u1; + _tmp$15 = u2; + _tmp$16 = u1 + ($imul(q, u2) >>> 0) >>> 0; + u0 = _tmp$14; + u1 = _tmp$15; + u2 = _tmp$16; + _tmp$17 = v1; + _tmp$18 = v2; + _tmp$19 = v1 + ($imul(q, v2) >>> 0) >>> 0; + v0 = _tmp$17; + v1 = _tmp$18; + v2 = _tmp$19; + even = !even; + } + return [u0, u1, v0, v1, even]; + }; + lehmerUpdate = function lehmerUpdate$1(A, B, q, r, s, t, u0, u1, v0, v1, even) { + var {A, B, _r, _r$1, _r$2, _r$3, _r$4, _r$5, even, q, r, s, t, u0, u1, v0, v1, $s, $r, $c} = $restore(this, {A, B, q, r, s, t, u0, u1, v0, v1, even}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t.abs = t.abs.setWord(u0); + s.abs = s.abs.setWord(v0); + t.neg = !even; + s.neg = even; + _r = t.Mul(A, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + _r$1 = s.Mul(B, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + r.abs = r.abs.setWord(u1); + q.abs = q.abs.setWord(v1); + r.neg = even; + q.neg = !even; + _r$2 = r.Mul(A, r); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _r$3 = q.Mul(B, q); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + _r$4 = A.Add(t, s); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + _r$5 = B.Add(r, q); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + $s = -1; return; + /* */ } return; } var $f = {$blk: lehmerUpdate$1, $c: true, $r, A, B, _r, _r$1, _r$2, _r$3, _r$4, _r$5, even, q, r, s, t, u0, u1, v0, v1, $s};return $f; + }; + euclidUpdate = function euclidUpdate$1(A, B, Ua, Ub, q, r, s, t, extended) { + var {A, B, Ua, Ub, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tuple, extended, q, r, s, t, $s, $r, $c} = $restore(this, {A, B, Ua, Ub, q, r, s, t, extended}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = q.QuoRem(A, B, r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + q = _tuple[0]; + r = _tuple[1]; + _tmp = $clone(B, Int); + _tmp$1 = $clone(r, Int); + _tmp$2 = $clone(A, Int); + Int.copy(A, _tmp); + Int.copy(B, _tmp$1); + Int.copy(r, _tmp$2); + /* */ if (extended) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (extended) { */ case 2: + t.Set(Ub); + _r$1 = s.Mul(Ub, q); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = Ub.Sub(Ua, s); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + Ua.Set(t); + /* } */ case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: euclidUpdate$1, $c: true, $r, A, B, Ua, Ub, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tuple, extended, q, r, s, t, $s};return $f; + }; + $ptrType(Int).prototype.lehmerGCD = function lehmerGCD(x, y, a, b) { + var {A, B, Ua, Ub, _q, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, a, aWord, b, bWord, even, even$1, extended, negA, q, q$1, r, r$1, s, t, u0, u1, ua, ub, v0, v1, va, vb, x, x$1, x$2, x$3, y, z, $s, $r, $c} = $restore(this, {x, y, a, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _tmp = ptrType$2.nil; + _tmp$1 = ptrType$2.nil; + _tmp$2 = ptrType$2.nil; + _tmp$3 = ptrType$2.nil; + A = _tmp; + B = _tmp$1; + Ua = _tmp$2; + Ub = _tmp$3; + A = new Int.ptr(false, nat.nil).Abs(a); + B = new Int.ptr(false, nat.nil).Abs(b); + extended = !(x === ptrType$2.nil) || !(y === ptrType$2.nil); + if (extended) { + Ua = new Int.ptr(false, nat.nil).SetInt64(new $Int64(0, 1)); + Ub = new Int.ptr(false, nat.nil); + } + q = new Int.ptr(false, nat.nil); + r = new Int.ptr(false, nat.nil); + s = new Int.ptr(false, nat.nil); + t = new Int.ptr(false, nat.nil); + if (A.abs.cmp(B.abs) < 0) { + _tmp$4 = B; + _tmp$5 = A; + A = _tmp$4; + B = _tmp$5; + _tmp$6 = Ua; + _tmp$7 = Ub; + Ub = _tmp$6; + Ua = _tmp$7; + } + /* while (true) { */ case 1: + /* if (!(B.abs.$length > 1)) { break; } */ if(!(B.abs.$length > 1)) { $s = 2; continue; } + _tuple = lehmerSimulate(A, B); + u0 = _tuple[0]; + u1 = _tuple[1]; + v0 = _tuple[2]; + v1 = _tuple[3]; + even = _tuple[4]; + /* */ if (!((v0 === 0))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!((v0 === 0))) { */ case 3: + $r = lehmerUpdate(A, B, q, r, s, t, u0, u1, v0, v1, even); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (extended) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (extended) { */ case 7: + $r = lehmerUpdate(Ua, Ub, q, r, s, t, u0, u1, v0, v1, even); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + $s = 5; continue; + /* } else { */ case 4: + $r = euclidUpdate(A, B, Ua, Ub, q, r, s, t, extended); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + $s = 1; continue; + case 2: + /* */ if (B.abs.$length > 0) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (B.abs.$length > 0) { */ case 11: + /* */ if (A.abs.$length > 1) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (A.abs.$length > 1) { */ case 13: + $r = euclidUpdate(A, B, Ua, Ub, q, r, s, t, extended); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 14: + /* */ if (B.abs.$length > 0) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (B.abs.$length > 0) { */ case 16: + _tmp$8 = (x$1 = A.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); + _tmp$9 = (x$2 = B.abs, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])); + aWord = _tmp$8; + bWord = _tmp$9; + /* */ if (extended) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (extended) { */ case 18: + _tmp$10 = 0; + _tmp$11 = 0; + _tmp$12 = 0; + _tmp$13 = 0; + ua = _tmp$10; + ub = _tmp$11; + va = _tmp$12; + vb = _tmp$13; + _tmp$14 = 1; + _tmp$15 = 0; + ua = _tmp$14; + ub = _tmp$15; + _tmp$16 = 0; + _tmp$17 = 1; + va = _tmp$16; + vb = _tmp$17; + even$1 = true; + while (true) { + if (!(!((bWord === 0)))) { break; } + _tmp$18 = (_q = aWord / bWord, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + _tmp$19 = (_r = aWord % bWord, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); + q$1 = _tmp$18; + r$1 = _tmp$19; + _tmp$20 = bWord; + _tmp$21 = r$1; + aWord = _tmp$20; + bWord = _tmp$21; + _tmp$22 = ub; + _tmp$23 = ua + ($imul(q$1, ub) >>> 0) >>> 0; + ua = _tmp$22; + ub = _tmp$23; + _tmp$24 = vb; + _tmp$25 = va + ($imul(q$1, vb) >>> 0) >>> 0; + va = _tmp$24; + vb = _tmp$25; + even$1 = !even$1; + } + t.abs = t.abs.setWord(ua); + s.abs = s.abs.setWord(va); + t.neg = !even$1; + s.neg = even$1; + _r$1 = t.Mul(Ua, t); /* */ $s = 21; case 21: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = s.Mul(Ub, s); /* */ $s = 22; case 22: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _r$3 = Ua.Add(t, s); /* */ $s = 23; case 23: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + $s = 20; continue; + /* } else { */ case 19: + while (true) { + if (!(!((bWord === 0)))) { break; } + _tmp$26 = bWord; + _tmp$27 = (_r$4 = aWord % bWord, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")); + aWord = _tmp$26; + bWord = _tmp$27; + } + /* } */ case 20: + (x$3 = A.abs, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0] = aWord)); + /* } */ case 17: + /* } */ case 12: + negA = a.neg; + /* */ if (!(y === ptrType$2.nil)) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!(y === ptrType$2.nil)) { */ case 24: + if (y === b) { + B.Set(b); + } else { + B = b; + } + _r$5 = y.Mul(a, Ua); /* */ $s = 26; case 26: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + if (negA) { + y.neg = !y.neg; + } + _r$6 = y.Sub(A, y); /* */ $s = 27; case 27: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$6; + _r$7 = y.Div(y, B); /* */ $s = 28; case 28: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + /* } */ case 25: + if (!(x === ptrType$2.nil)) { + Int.copy(x, Ua); + if (negA) { + x.neg = !x.neg; + } + } + Int.copy(z, A); + $s = -1; return z; + /* */ } return; } var $f = {$blk: lehmerGCD, $c: true, $r, A, B, Ua, Ub, _q, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, a, aWord, b, bWord, even, even$1, extended, negA, q, q$1, r, r$1, s, t, u0, u1, ua, ub, v0, v1, va, vb, x, x$1, x$2, x$3, y, z, $s};return $f; + }; + $ptrType(Int).prototype.Rand = function Rand(rnd, n) { + var {_r, n, rnd, z, $s, $r, $c} = $restore(this, {rnd, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (n.neg || (n.abs.$length === 0)) { + z.neg = false; + z.abs = nat.nil; + $s = -1; return z; + } + z.neg = false; + _r = z.abs.random(rnd, n.abs, n.abs.bitLen()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.abs = _r; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Rand, $c: true, $r, _r, n, rnd, z, $s};return $f; + }; + $ptrType(Int).prototype.ModInverse = function ModInverse(g, n) { + var {_r, _r$1, _r$2, _tmp, _tmp$1, d, g, g2, n, n2, x, z, $s, $r, $c} = $restore(this, {g, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = [x]; + z = this; + if (n.neg) { + n2 = new Int.ptr(false, nat.nil); + n = n2.Neg(n); + } + /* */ if (g.neg) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (g.neg) { */ case 1: + g2 = new Int.ptr(false, nat.nil); + _r = g2.Mod(g, n); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + g = _r; + /* } */ case 2: + _tmp = new Int.ptr(false, nat.nil); + _tmp$1 = new Int.ptr(false, nat.nil); + d = $clone(_tmp, Int); + x[0] = $clone(_tmp$1, Int); + _r$1 = d.GCD(x[0], ptrType$2.nil, g, n); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + if (!((d.Cmp(intOne) === 0))) { + $s = -1; return ptrType$2.nil; + } + /* */ if (x[0].neg) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (x[0].neg) { */ case 5: + _r$2 = z.Add(x[0], n); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = 7; continue; + /* } else { */ case 6: + z.Set(x[0]); + /* } */ case 7: + $s = -1; return z; + /* */ } return; } var $f = {$blk: ModInverse, $c: true, $r, _r, _r$1, _r$2, _tmp, _tmp$1, d, g, g2, n, n2, x, z, $s};return $f; + }; + nat.prototype.modInverse = function modInverse(g, n) { + var {$24r, _r, g, n, z, $s, $r, $c} = $restore(this, {g, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = (new Int.ptr(false, z)).ModInverse(new Int.ptr(false, g), new Int.ptr(false, n)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r.abs; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: modInverse, $c: true, $r, $24r, _r, g, n, z, $s};return $f; + }; + $ptrType(nat).prototype.modInverse = function(...$args) { return this.$get().modInverse(...$args); }; + Jacobi = function Jacobi$1(x, y) { + var {_arg, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, a, b, bmod8, c, j, s, x, x$1, x$2, x$3, x$4, y, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = [a]; + b = [b]; + c = [c]; + /* */ if ((y.abs.$length === 0) || ((((x$1 = y.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) & 1) >>> 0) === 0)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((y.abs.$length === 0) || ((((x$1 = y.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) & 1) >>> 0) === 0)) { */ case 1: + _r = y.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = new $String(_r); + _r$1 = fmt.Sprintf("big: invalid 2nd argument to Int.Jacobi: need odd integer but got %s", new sliceType([_arg])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 2: + _tmp = new Int.ptr(false, nat.nil); + _tmp$1 = new Int.ptr(false, nat.nil); + _tmp$2 = new Int.ptr(false, nat.nil); + a[0] = $clone(_tmp, Int); + b[0] = $clone(_tmp$1, Int); + c[0] = $clone(_tmp$2, Int); + a[0].Set(x); + b[0].Set(y); + j = 1; + if (b[0].neg) { + if (a[0].neg) { + j = -1; + } + b[0].neg = false; + } + /* while (true) { */ case 5: + if (b[0].Cmp(intOne) === 0) { + $s = -1; return j; + } + if (a[0].abs.$length === 0) { + $s = -1; return 0; + } + _r$2 = a[0].Mod(a[0], b[0]); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + if (a[0].abs.$length === 0) { + $s = -1; return 0; + } + s = a[0].abs.trailingZeroBits(); + if (!((((s & 1) >>> 0) === 0))) { + bmod8 = ((x$2 = b[0].abs, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])) & 7) >>> 0; + if ((bmod8 === 3) || (bmod8 === 5)) { + j = -j; + } + } + _r$3 = c[0].Rsh(a[0], s); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + if (((((x$3 = b[0].abs, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])) & 3) >>> 0) === 3) && ((((x$4 = c[0].abs, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])) & 3) >>> 0) === 3)) { + j = -j; + } + a[0].Set(b[0]); + b[0].Set(c[0]); + $s = 5; continue; + case 6: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: Jacobi$1, $c: true, $r, _arg, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, a, b, bmod8, c, j, s, x, x$1, x$2, x$3, x$4, y, $s};return $f; + }; + $pkg.Jacobi = Jacobi; + $ptrType(Int).prototype.modSqrt3Mod4Prime = function modSqrt3Mod4Prime(x, p) { + var {_r, _r$1, _r$2, e, p, x, z, $s, $r, $c} = $restore(this, {x, p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = new Int.ptr(false, nat.nil).Add(p, intOne); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + e = _r; + _r$1 = e.Rsh(e, 2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = z.Exp(x, e, p); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = -1; return z; + /* */ } return; } var $f = {$blk: modSqrt3Mod4Prime, $c: true, $r, _r, _r$1, _r$2, e, p, x, z, $s};return $f; + }; + $ptrType(Int).prototype.modSqrt5Mod8Prime = function modSqrt5Mod8Prime(x, p) { + var {_r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, alpha, beta, e, p, tx, x, z, $s, $r, $c} = $restore(this, {x, p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = new Int.ptr(false, nat.nil).Rsh(p, 3); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + e = _r; + tx = new Int.ptr(false, nat.nil).Lsh(x, 1); + _r$1 = new Int.ptr(false, nat.nil).Exp(tx, e, p); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + alpha = _r$1; + _r$2 = new Int.ptr(false, nat.nil).Mul(alpha, alpha); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + beta = _r$2; + _r$3 = beta.Mod(beta, p); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + _r$4 = beta.Mul(beta, tx); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + _r$5 = beta.Mod(beta, p); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + _r$6 = beta.Sub(beta, intOne); /* */ $s = 7; case 7: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$6; + _r$7 = beta.Mul(beta, x); /* */ $s = 8; case 8: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + _r$8 = beta.Mod(beta, p); /* */ $s = 9; case 9: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$8; + _r$9 = beta.Mul(beta, alpha); /* */ $s = 10; case 10: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$9; + _r$10 = z.Mod(beta, p); /* */ $s = 11; case 11: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + $s = -1; return z; + /* */ } return; } var $f = {$blk: modSqrt5Mod8Prime, $c: true, $r, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, alpha, beta, e, p, tx, x, z, $s};return $f; + }; + $ptrType(Int).prototype.modSqrtTonelliShanks = function modSqrtTonelliShanks(x, p) { + var {_r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, b, e, g, m, n, p, r, s, t, x, y, z, $s, $r, $c} = $restore(this, {x, p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = [b]; + g = [g]; + n = [n]; + s = [s]; + t = [t]; + y = [y]; + z = this; + s[0] = new Int.ptr(false, nat.nil); + _r = s[0].Sub(p, intOne); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + e = s[0].abs.trailingZeroBits(); + _r$1 = s[0].Rsh(s[0], e); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + n[0] = new Int.ptr(false, nat.nil); + n[0].SetInt64(new $Int64(0, 2)); + /* while (true) { */ case 3: + _r$2 = Jacobi(n[0], p); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* if (!(!((_r$2 === -1)))) { break; } */ if(!(!((_r$2 === -1)))) { $s = 4; continue; } + _r$3 = n[0].Add(n[0], intOne); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + $s = 3; continue; + case 4: + _tmp = new Int.ptr(false, nat.nil); + _tmp$1 = new Int.ptr(false, nat.nil); + _tmp$2 = new Int.ptr(false, nat.nil); + _tmp$3 = new Int.ptr(false, nat.nil); + y[0] = $clone(_tmp, Int); + b[0] = $clone(_tmp$1, Int); + g[0] = $clone(_tmp$2, Int); + t[0] = $clone(_tmp$3, Int); + _r$4 = y[0].Add(s[0], intOne); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + _r$5 = y[0].Rsh(y[0], 1); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + _r$6 = y[0].Exp(x, y[0], p); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$6; + _r$7 = b[0].Exp(x, s[0], p); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + _r$8 = g[0].Exp(n[0], s[0], p); /* */ $s = 11; case 11: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$8; + r = e; + /* while (true) { */ case 12: + m = 0; + t[0].Set(b[0]); + /* while (true) { */ case 14: + /* if (!(!((t[0].Cmp(intOne) === 0)))) { break; } */ if(!(!((t[0].Cmp(intOne) === 0)))) { $s = 15; continue; } + _r$9 = t[0].Mul(t[0], t[0]); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$10 = _r$9.Mod(t[0], p); /* */ $s = 17; case 17: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + m = m + (1) >>> 0; + $s = 14; continue; + case 15: + if (m === 0) { + $s = -1; return z.Set(y[0]); + } + _r$11 = t[0].SetInt64(new $Int64(0, 0)).SetBit(t[0], ((((r - m >>> 0) - 1 >>> 0) >> 0)), 1); /* */ $s = 18; case 18: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$12 = _r$11.Exp(g[0], t[0], p); /* */ $s = 19; case 19: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$12; + _r$13 = g[0].Mul(t[0], t[0]); /* */ $s = 20; case 20: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$14 = _r$13.Mod(g[0], p); /* */ $s = 21; case 21: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _r$14; + _r$15 = y[0].Mul(y[0], t[0]); /* */ $s = 22; case 22: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _r$16 = _r$15.Mod(y[0], p); /* */ $s = 23; case 23: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _r$16; + _r$17 = b[0].Mul(b[0], g[0]); /* */ $s = 24; case 24: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _r$18 = _r$17.Mod(b[0], p); /* */ $s = 25; case 25: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _r$18; + r = m; + $s = 12; continue; + case 13: + $s = -1; return ptrType$2.nil; + /* */ } return; } var $f = {$blk: modSqrtTonelliShanks, $c: true, $r, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, b, e, g, m, n, p, r, s, t, x, y, z, $s};return $f; + }; + $ptrType(Int).prototype.ModSqrt = function ModSqrt(x, p) { + var {$24r, $24r$1, $24r$2, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, p, x, x$1, x$2, z, $s, $r, $c} = $restore(this, {x, p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = Jacobi(x, p); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _1 = _r; + if (_1 === (-1)) { + $s = -1; return ptrType$2.nil; + } else if (_1 === (0)) { + $s = -1; return z.SetInt64(new $Int64(0, 0)); + } else if (_1 === (1)) { + /* break; */ $s = 1; continue; + } + case 1: + /* */ if (x.neg || x.Cmp(p) >= 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (x.neg || x.Cmp(p) >= 0) { */ case 3: + _r$1 = new Int.ptr(false, nat.nil).Mod(x, p); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + x = _r$1; + /* } */ case 4: + /* */ if (((_r$2 = (x$1 = p.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) % 4, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 3)) { $s = 7; continue; } + /* */ if (((_r$3 = (x$2 = p.abs, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])) % 8, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) === 5)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (((_r$2 = (x$1 = p.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) % 4, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 3)) { */ case 7: + _r$4 = z.modSqrt3Mod4Prime(x, p); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 12; case 12: return $24r; + /* } else if (((_r$3 = (x$2 = p.abs, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])) % 8, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) === 5)) { */ case 8: + _r$5 = z.modSqrt5Mod8Prime(x, p); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r$1 = _r$5; + $s = 14; case 14: return $24r$1; + /* } else { */ case 9: + _r$6 = z.modSqrtTonelliShanks(x, p); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$2 = _r$6; + $s = 16; case 16: return $24r$2; + /* } */ case 10: + case 6: + $s = -1; return ptrType$2.nil; + /* */ } return; } var $f = {$blk: ModSqrt, $c: true, $r, $24r, $24r$1, $24r$2, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, p, x, x$1, x$2, z, $s};return $f; + }; + $ptrType(Int).prototype.Lsh = function Lsh(x, n) { + var n, x, z; + z = this; + z.abs = z.abs.shl(x.abs, n); + z.neg = x.neg; + return z; + }; + $ptrType(Int).prototype.Rsh = function Rsh(x, n) { + var {_r, _r$1, n, t, x, z, $s, $r, $c} = $restore(this, {x, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (x.neg) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.neg) { */ case 1: + _r = z.abs.sub(x.abs, natOne); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + t = _r; + t = t.shr(t, n); + _r$1 = t.add(t, natOne); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.abs = _r$1; + z.neg = true; + $s = -1; return z; + /* } */ case 2: + z.abs = z.abs.shr(x.abs, n); + z.neg = false; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Rsh, $c: true, $r, _r, _r$1, n, t, x, z, $s};return $f; + }; + $ptrType(Int).prototype.Bit = function Bit(i) { + var {_r, i, t, x, x$1, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (i === 0) { + if (x.abs.$length > 0) { + $s = -1; return (((((x$1 = x.abs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) & 1) >>> 0) >>> 0)); + } + $s = -1; return 0; + } + if (i < 0) { + $panic(new $String("negative bit index")); + } + /* */ if (x.neg) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.neg) { */ case 1: + _r = (nat.nil).sub(x.abs, natOne); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + t = _r; + $s = -1; return (t.bit(((i >>> 0))) ^ 1) >>> 0; + /* } */ case 2: + $s = -1; return x.abs.bit(((i >>> 0))); + /* */ } return; } var $f = {$blk: Bit, $c: true, $r, _r, i, t, x, x$1, $s};return $f; + }; + $ptrType(Int).prototype.SetBit = function SetBit(x, i, b) { + var {_r, _r$1, b, i, t, x, z, $s, $r, $c} = $restore(this, {x, i, b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (i < 0) { + $panic(new $String("negative bit index")); + } + /* */ if (x.neg) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.neg) { */ case 1: + _r = z.abs.sub(x.abs, natOne); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + t = _r; + t = t.setBit(t, ((i >>> 0)), (b ^ 1) >>> 0); + _r$1 = t.add(t, natOne); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.abs = _r$1; + z.neg = z.abs.$length > 0; + $s = -1; return z; + /* } */ case 2: + z.abs = z.abs.setBit(x.abs, ((i >>> 0)), b); + z.neg = false; + $s = -1; return z; + /* */ } return; } var $f = {$blk: SetBit, $c: true, $r, _r, _r$1, b, i, t, x, z, $s};return $f; + }; + $ptrType(Int).prototype.And = function And(x, y) { + var {_r, _r$1, _r$2, _r$3, _tmp, _tmp$1, x, x1, y, y1, y1$1, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (x.neg === y.neg) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.neg === y.neg) { */ case 1: + /* */ if (x.neg) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (x.neg) { */ case 3: + _r = (nat.nil).sub(x.abs, natOne); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x1 = _r; + _r$1 = (nat.nil).sub(y.abs, natOne); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + y1 = _r$1; + _r$2 = z.abs.add(z.abs.or(x1, y1), natOne); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + z.abs = _r$2; + z.neg = true; + $s = -1; return z; + /* } */ case 4: + z.abs = z.abs.and(x.abs, y.abs); + z.neg = false; + $s = -1; return z; + /* } */ case 2: + if (x.neg) { + _tmp = y; + _tmp$1 = x; + x = _tmp; + y = _tmp$1; + } + _r$3 = (nat.nil).sub(y.abs, natOne); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + y1$1 = _r$3; + z.abs = z.abs.andNot(x.abs, y1$1); + z.neg = false; + $s = -1; return z; + /* */ } return; } var $f = {$blk: And, $c: true, $r, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, x, x1, y, y1, y1$1, z, $s};return $f; + }; + $ptrType(Int).prototype.AndNot = function AndNot(x, y) { + var {_r, _r$1, _r$2, _r$3, _r$4, x, x1, x1$1, y, y1, y1$1, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (x.neg === y.neg) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.neg === y.neg) { */ case 1: + /* */ if (x.neg) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (x.neg) { */ case 3: + _r = (nat.nil).sub(x.abs, natOne); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x1 = _r; + _r$1 = (nat.nil).sub(y.abs, natOne); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + y1 = _r$1; + z.abs = z.abs.andNot(y1, x1); + z.neg = false; + $s = -1; return z; + /* } */ case 4: + z.abs = z.abs.andNot(x.abs, y.abs); + z.neg = false; + $s = -1; return z; + /* } */ case 2: + /* */ if (x.neg) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (x.neg) { */ case 7: + _r$2 = (nat.nil).sub(x.abs, natOne); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x1$1 = _r$2; + _r$3 = z.abs.add(z.abs.or(x1$1, y.abs), natOne); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + z.abs = _r$3; + z.neg = true; + $s = -1; return z; + /* } */ case 8: + _r$4 = (nat.nil).sub(y.abs, natOne); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + y1$1 = _r$4; + z.abs = z.abs.and(x.abs, y1$1); + z.neg = false; + $s = -1; return z; + /* */ } return; } var $f = {$blk: AndNot, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, x, x1, x1$1, y, y1, y1$1, z, $s};return $f; + }; + $ptrType(Int).prototype.Or = function Or(x, y) { + var {_r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, x, x1, y, y1, y1$1, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (x.neg === y.neg) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.neg === y.neg) { */ case 1: + /* */ if (x.neg) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (x.neg) { */ case 3: + _r = (nat.nil).sub(x.abs, natOne); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x1 = _r; + _r$1 = (nat.nil).sub(y.abs, natOne); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + y1 = _r$1; + _r$2 = z.abs.add(z.abs.and(x1, y1), natOne); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + z.abs = _r$2; + z.neg = true; + $s = -1; return z; + /* } */ case 4: + z.abs = z.abs.or(x.abs, y.abs); + z.neg = false; + $s = -1; return z; + /* } */ case 2: + if (x.neg) { + _tmp = y; + _tmp$1 = x; + x = _tmp; + y = _tmp$1; + } + _r$3 = (nat.nil).sub(y.abs, natOne); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + y1$1 = _r$3; + _r$4 = z.abs.add(z.abs.andNot(y1$1, x.abs), natOne); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + z.abs = _r$4; + z.neg = true; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Or, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, x, x1, y, y1, y1$1, z, $s};return $f; + }; + $ptrType(Int).prototype.Xor = function Xor(x, y) { + var {_r, _r$1, _r$2, _r$3, _tmp, _tmp$1, x, x1, y, y1, y1$1, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (x.neg === y.neg) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.neg === y.neg) { */ case 1: + /* */ if (x.neg) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (x.neg) { */ case 3: + _r = (nat.nil).sub(x.abs, natOne); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x1 = _r; + _r$1 = (nat.nil).sub(y.abs, natOne); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + y1 = _r$1; + z.abs = z.abs.xor(x1, y1); + z.neg = false; + $s = -1; return z; + /* } */ case 4: + z.abs = z.abs.xor(x.abs, y.abs); + z.neg = false; + $s = -1; return z; + /* } */ case 2: + if (x.neg) { + _tmp = y; + _tmp$1 = x; + x = _tmp; + y = _tmp$1; + } + _r$2 = (nat.nil).sub(y.abs, natOne); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + y1$1 = _r$2; + _r$3 = z.abs.add(z.abs.xor(x.abs, y1$1), natOne); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + z.abs = _r$3; + z.neg = true; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Xor, $c: true, $r, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, x, x1, y, y1, y1$1, z, $s};return $f; + }; + $ptrType(Int).prototype.Not = function Not(x) { + var {_r, _r$1, x, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (x.neg) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.neg) { */ case 1: + _r = z.abs.sub(x.abs, natOne); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.abs = _r; + z.neg = false; + $s = -1; return z; + /* } */ case 2: + _r$1 = z.abs.add(x.abs, natOne); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.abs = _r$1; + z.neg = true; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Not, $c: true, $r, _r, _r$1, x, z, $s};return $f; + }; + $ptrType(Int).prototype.Sqrt = function Sqrt$1(x) { + var {_r, x, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (x.neg) { + $panic(new $String("square root of negative number")); + } + z.neg = false; + _r = z.abs.sqrt(x.abs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.abs = _r; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Sqrt$1, $c: true, $r, _r, x, z, $s};return $f; + }; + $ptrType(Float).prototype.Text = function Text$1(format, prec) { + var {$24r, _r, cap, format, prec, x, $s, $r, $c} = $restore(this, {format, prec}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + cap = 10; + if (prec > 0) { + cap = cap + (prec) >> 0; + } + _r = x.Append($makeSlice(sliceType$1, 0, cap), format, prec); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = ($bytesToString(_r)); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Text$1, $c: true, $r, $24r, _r, cap, format, prec, x, $s};return $f; + }; + $ptrType(Float).prototype.String = function String$4() { + var {$24r, _r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.Text(103, 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$4, $c: true, $r, $24r, _r, x, $s};return $f; + }; + $ptrType(Float).prototype.Append = function Append$1(buf, fmt$1, prec) { + var {$24r, $24r$1, $24r$2, _1, _2, _3, _4, _r, _r$1, _r$2, buf, d, eprec, exp$1, fmt$1, prec, shortest, x, $s, $r, $c} = $restore(this, {buf, fmt$1, prec}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = [d]; + x = this; + if (x.neg) { + buf = $append(buf, 45); + } + if (x.form === 2) { + if (!x.neg) { + buf = $append(buf, 43); + } + $s = -1; return $appendSlice(buf, "Inf"); + } + _1 = fmt$1; + /* */ if (_1 === (98)) { $s = 2; continue; } + /* */ if (_1 === (112)) { $s = 3; continue; } + /* */ if (_1 === (120)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (98)) { */ case 2: + _r = x.fmtB(buf); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 7; case 7: return $24r; + /* } else if (_1 === (112)) { */ case 3: + _r$1 = x.fmtP(buf); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 9; case 9: return $24r$1; + /* } else if (_1 === (120)) { */ case 4: + _r$2 = x.fmtX(buf, prec); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$2 = _r$2; + $s = 11; case 11: return $24r$2; + /* } */ case 5: + case 1: + d[0] = new decimal.ptr(sliceType$1.nil, 0); + /* */ if (x.form === 1) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (x.form === 1) { */ case 12: + $r = d[0].init(x.mant, ((x.exp >> 0)) - x.mant.bitLen() >> 0); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 13: + shortest = false; + /* */ if (prec < 0) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (prec < 0) { */ case 15: + shortest = true; + $r = roundShortest(d[0], x); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _2 = fmt$1; + if ((_2 === (101)) || (_2 === (69))) { + prec = d[0].mant.$length - 1 >> 0; + } else if (_2 === (102)) { + prec = max(d[0].mant.$length - d[0].exp >> 0, 0); + } else if ((_2 === (103)) || (_2 === (71))) { + prec = d[0].mant.$length; + } + $s = 17; continue; + /* } else { */ case 16: + _3 = fmt$1; + if ((_3 === (101)) || (_3 === (69))) { + d[0].round(1 + prec >> 0); + } else if (_3 === (102)) { + d[0].round(d[0].exp + prec >> 0); + } else if ((_3 === (103)) || (_3 === (71))) { + if (prec === 0) { + prec = 1; + } + d[0].round(prec); + } + /* } */ case 17: + _4 = fmt$1; + if ((_4 === (101)) || (_4 === (69))) { + $s = -1; return fmtE(buf, fmt$1, prec, $clone(d[0], decimal)); + } else if (_4 === (102)) { + $s = -1; return fmtF(buf, prec, $clone(d[0], decimal)); + } else if ((_4 === (103)) || (_4 === (71))) { + eprec = prec; + if (eprec > d[0].mant.$length && d[0].mant.$length >= d[0].exp) { + eprec = d[0].mant.$length; + } + if (shortest) { + eprec = 6; + } + exp$1 = d[0].exp - 1 >> 0; + if (exp$1 < -4 || exp$1 >= eprec) { + if (prec > d[0].mant.$length) { + prec = d[0].mant.$length; + } + $s = -1; return fmtE(buf, (fmt$1 + 101 << 24 >>> 24) - 103 << 24 >>> 24, prec - 1 >> 0, $clone(d[0], decimal)); + } + if (prec > d[0].exp) { + prec = d[0].mant.$length; + } + $s = -1; return fmtF(buf, max(prec - d[0].exp >> 0, 0), $clone(d[0], decimal)); + } + if (x.neg) { + buf = $subslice(buf, 0, (buf.$length - 1 >> 0)); + } + $s = -1; return $append(buf, 37, fmt$1); + /* */ } return; } var $f = {$blk: Append$1, $c: true, $r, $24r, $24r$1, $24r$2, _1, _2, _3, _4, _r, _r$1, _r$2, buf, d, eprec, exp$1, fmt$1, prec, shortest, x, $s};return $f; + }; + roundShortest = function roundShortest$1(d, x) { + var {_i, _r, _r$1, _ref, d, exp$1, i, inclusive, l, lower, m, mant, okdown, okup, s, tmp, u, upper, x, $s, $r, $c} = $restore(this, {d, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (d.mant.$length === 0) { + $s = -1; return; + } + mant = (nat.nil).set(x.mant); + exp$1 = ((x.exp >> 0)) - mant.bitLen() >> 0; + s = mant.bitLen() - (((x.prec + 1 >>> 0) >> 0)) >> 0; + if (s < 0) { + mant = mant.shl(mant, ((-s >>> 0))); + } else if (s > 0) { + mant = mant.shr(mant, ((s >>> 0))); + } + exp$1 = exp$1 + (s) >> 0; + lower = new decimal.ptr(sliceType$1.nil, 0); + tmp = nat.nil; + _r = tmp.sub(mant, natOne); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = lower.init(_r, exp$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + upper = new decimal.ptr(sliceType$1.nil, 0); + _r$1 = tmp.add(mant, natOne); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = upper.init(_r$1, exp$1); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + inclusive = (((0 >= mant.$length ? ($throwRuntimeError("index out of range"), undefined) : mant.$array[mant.$offset + 0]) & 2) >>> 0) === 0; + _ref = d.mant; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + m = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + l = lower.at(i); + u = upper.at(i); + okdown = !((l === m)) || inclusive && ((i + 1 >> 0) === lower.mant.$length); + okup = !((m === u)) && (inclusive || (m + 1 << 24 >>> 24) < u || (i + 1 >> 0) < upper.mant.$length); + if (okdown && okup) { + d.round(i + 1 >> 0); + $s = -1; return; + } else if (okdown) { + d.roundDown(i + 1 >> 0); + $s = -1; return; + } else if (okup) { + d.roundUp(i + 1 >> 0); + $s = -1; return; + } + _i++; + } + $s = -1; return; + /* */ } return; } var $f = {$blk: roundShortest$1, $c: true, $r, _i, _r, _r$1, _ref, d, exp$1, i, inclusive, l, lower, m, mant, okdown, okup, s, tmp, u, upper, x, $s};return $f; + }; + fmtE = function fmtE$1(buf, fmt$1, prec, d) { + var buf, ch, d, exp$1, fmt$1, i, m, prec, x, x$1; + ch = 48; + if (d.mant.$length > 0) { + ch = (x = d.mant, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + } + buf = $append(buf, ch); + if (prec > 0) { + buf = $append(buf, 46); + i = 1; + m = min(d.mant.$length, prec + 1 >> 0); + if (i < m) { + buf = $appendSlice(buf, $subslice(d.mant, i, m)); + i = m; + } + while (true) { + if (!(i <= prec)) { break; } + buf = $append(buf, 48); + i = i + (1) >> 0; + } + } + buf = $append(buf, fmt$1); + exp$1 = new $Int64(0, 0); + if (d.mant.$length > 0) { + exp$1 = (x$1 = (new $Int64(0, d.exp)), new $Int64(x$1.$high - 0, x$1.$low - 1)); + } + if ((exp$1.$high < 0 || (exp$1.$high === 0 && exp$1.$low < 0))) { + ch = 45; + exp$1 = new $Int64(-exp$1.$high, -exp$1.$low); + } else { + ch = 43; + } + buf = $append(buf, ch); + if ((exp$1.$high < 0 || (exp$1.$high === 0 && exp$1.$low < 10))) { + buf = $append(buf, 48); + } + return strconv.AppendInt(buf, exp$1, 10); + }; + fmtF = function fmtF$1(buf, prec, d) { + var buf, d, i, m, prec; + if (d.exp > 0) { + m = min(d.mant.$length, d.exp); + buf = $appendSlice(buf, $subslice(d.mant, 0, m)); + while (true) { + if (!(m < d.exp)) { break; } + buf = $append(buf, 48); + m = m + (1) >> 0; + } + } else { + buf = $append(buf, 48); + } + if (prec > 0) { + buf = $append(buf, 46); + i = 0; + while (true) { + if (!(i < prec)) { break; } + buf = $append(buf, d.at(d.exp + i >> 0)); + i = i + (1) >> 0; + } + } + return buf; + }; + $ptrType(Float).prototype.fmtB = function fmtB(buf) { + var {_arg, _arg$1, _r, buf, e, m, w, x, x$1, x$2, $s, $r, $c} = $restore(this, {buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (x.form === 0) { + $s = -1; return $append(buf, 48); + } + if (false && !((x.form === 1))) { + $panic(new $String("non-finite float")); + } + m = x.mant; + w = $imul(((x.mant.$length >>> 0)), 32) >>> 0; + if (w < x.prec) { + m = (nat.nil).shl(m, (((x.prec - w >>> 0) >>> 0))); + } else if (w > x.prec) { + m = (nat.nil).shr(m, (((w - x.prec >>> 0) >>> 0))); + } + _arg = buf; + _r = m.utoa(10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + buf = $appendSlice(_arg, _arg$1); + buf = $append(buf, 112); + e = (x$1 = (new $Int64(0, x.exp)), x$2 = (new $Int64(0, x.prec)), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)); + if ((e.$high > 0 || (e.$high === 0 && e.$low >= 0))) { + buf = $append(buf, 43); + } + $s = -1; return strconv.AppendInt(buf, e, 10); + /* */ } return; } var $f = {$blk: fmtB, $c: true, $r, _arg, _arg$1, _r, buf, e, m, w, x, x$1, x$2, $s};return $f; + }; + $ptrType(Float).prototype.fmtX = function fmtX(buf, prec) { + var {_q, _r, _r$1, _r$2, _r$3, buf, exp64, hm, i, m, n, prec, w, x, x$1, $s, $r, $c} = $restore(this, {buf, prec}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (x.form === 0) { + buf = $appendSlice(buf, "0x0"); + if (prec > 0) { + buf = $append(buf, 46); + i = 0; + while (true) { + if (!(i < prec)) { break; } + buf = $append(buf, 48); + i = i + (1) >> 0; + } + } + buf = $appendSlice(buf, "p+00"); + $s = -1; return buf; + } + if (false && !((x.form === 1))) { + $panic(new $String("non-finite float")); + } + n = 0; + if (prec < 0) { + n = 1 + ($imul((_q = (((x.MinPrec() - 1 >>> 0) + 3 >>> 0)) / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")), 4) >>> 0) >>> 0; + } else { + n = 1 + ($imul(4, ((prec >>> 0))) >>> 0) >>> 0; + } + _r = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0).SetPrec(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.SetMode(x.mode); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Set(x); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = _r$2; + m = x.mant; + w = $imul(((x.mant.$length >>> 0)), 32) >>> 0; + if (w < n) { + m = (nat.nil).shl(m, n - w >>> 0); + } else if (w > n) { + m = (nat.nil).shr(m, w - n >>> 0); + } + exp64 = (x$1 = (new $Int64(0, x.exp)), new $Int64(x$1.$high - 0, x$1.$low - 1)); + _r$3 = m.utoa(16); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + hm = _r$3; + if (false && !(((0 >= hm.$length ? ($throwRuntimeError("index out of range"), undefined) : hm.$array[hm.$offset + 0]) === 49))) { + $panic(new $String("incorrect mantissa: " + ($bytesToString(hm)))); + } + buf = $appendSlice(buf, "0x1"); + if (hm.$length > 1) { + buf = $append(buf, 46); + buf = $appendSlice(buf, $subslice(hm, 1)); + } + buf = $append(buf, 112); + if ((exp64.$high > 0 || (exp64.$high === 0 && exp64.$low >= 0))) { + buf = $append(buf, 43); + } else { + exp64 = new $Int64(-exp64.$high, -exp64.$low); + buf = $append(buf, 45); + } + if ((exp64.$high < 0 || (exp64.$high === 0 && exp64.$low < 10))) { + buf = $append(buf, 48); + } + $s = -1; return strconv.AppendInt(buf, exp64, 10); + /* */ } return; } var $f = {$blk: fmtX, $c: true, $r, _q, _r, _r$1, _r$2, _r$3, buf, exp64, hm, i, m, n, prec, w, x, x$1, $s};return $f; + }; + $ptrType(Float).prototype.fmtP = function fmtP(buf) { + var {_arg, _arg$1, _r, _r$1, buf, i, m, x, $s, $r, $c} = $restore(this, {buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (x.form === 0) { + $s = -1; return $append(buf, 48); + } + if (false && !((x.form === 1))) { + $panic(new $String("non-finite float")); + } + m = x.mant; + i = 0; + while (true) { + if (!(i < m.$length && (((i < 0 || i >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + i]) === 0))) { break; } + i = i + (1) >> 0; + } + m = $subslice(m, i); + buf = $appendSlice(buf, "0x."); + _arg = buf; + _r = m.utoa(16); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = bytes.TrimRight(_r, "0"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = _r$1; + buf = $appendSlice(_arg, _arg$1); + buf = $append(buf, 112); + if (x.exp >= 0) { + buf = $append(buf, 43); + } + $s = -1; return strconv.AppendInt(buf, (new $Int64(0, x.exp)), 10); + /* */ } return; } var $f = {$blk: fmtP, $c: true, $r, _arg, _arg$1, _r, _r$1, buf, i, m, x, $s};return $f; + }; + min = function min$1(x, y) { + var x, y; + if (x < y) { + return x; + } + return y; + }; + $ptrType(Float).prototype.Format = function Format$1(s, format) { + var {_1, _arg, _arg$1, _arg$2, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, buf, format, hasPrec, hasWidth, padding, prec, s, sign, width, x, $s, $r, $c} = $restore(this, {s, format}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = s.Precision(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + prec = _tuple[0]; + hasPrec = _tuple[1]; + if (!hasPrec) { + prec = 6; + } + _1 = format; + /* */ if ((_1 === (101)) || (_1 === (69)) || (_1 === (102)) || (_1 === (98)) || (_1 === (112)) || (_1 === (120))) { $s = 3; continue; } + /* */ if (_1 === (70)) { $s = 4; continue; } + /* */ if (_1 === (118)) { $s = 5; continue; } + /* */ if ((_1 === (103)) || (_1 === (71))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((_1 === (101)) || (_1 === (69)) || (_1 === (102)) || (_1 === (98)) || (_1 === (112)) || (_1 === (120))) { */ case 3: + $s = 8; continue; + /* } else if (_1 === (70)) { */ case 4: + format = 102; + $s = 8; continue; + /* } else if (_1 === (118)) { */ case 5: + format = 103; + if (!hasPrec) { + prec = -1; + } + $s = 8; continue; + /* } else if ((_1 === (103)) || (_1 === (71))) { */ case 6: + if (!hasPrec) { + prec = -1; + } + $s = 8; continue; + /* } else { */ case 7: + _arg = s; + _arg$1 = new $Int32(format); + _r$1 = x.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$2 = new $String(_r$1); + _r$2 = fmt.Fprintf(_arg, "%%!%c(*big.Float=%s)", new sliceType([_arg$1, _arg$2])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = -1; return; + /* } */ case 8: + case 2: + buf = sliceType$1.nil; + _r$3 = x.Append(buf, ((format << 24 >>> 24)), prec); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + buf = _r$3; + if (buf.$length === 0) { + buf = (new sliceType$1($stringToBytes("?"))); + } + sign = ""; + /* */ if (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 45)) { $s = 13; continue; } + /* */ if (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 43)) { $s = 14; continue; } + _r$4 = s.Flag(43); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 15; continue; } + _r$5 = s.Flag(32); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (_r$5) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 45)) { */ case 13: + sign = "-"; + buf = $subslice(buf, 1); + $s = 17; continue; + /* } else if (((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 43)) { */ case 14: + sign = "+"; + _r$6 = s.Flag(32); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (_r$6) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (_r$6) { */ case 20: + sign = " "; + /* } */ case 21: + buf = $subslice(buf, 1); + $s = 17; continue; + /* } else if (_r$4) { */ case 15: + sign = "+"; + $s = 17; continue; + /* } else if (_r$5) { */ case 16: + sign = " "; + /* } */ case 17: + case 12: + padding = 0; + _r$7 = s.Width(); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$1 = _r$7; + width = _tuple$1[0]; + hasWidth = _tuple$1[1]; + if (hasWidth && width > (sign.length + buf.$length >> 0)) { + padding = (width - sign.length >> 0) - buf.$length >> 0; + } + _r$8 = s.Flag(48); /* */ $s = 29; case 29: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (_r$8 && !x.IsInf()) { $s = 25; continue; } + _r$9 = s.Flag(45); /* */ $s = 30; case 30: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (_r$9) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (_r$8 && !x.IsInf()) { */ case 25: + $r = writeMultiple(s, sign, 1); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = writeMultiple(s, "0", padding); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$10 = s.Write(buf); /* */ $s = 33; case 33: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + $s = 28; continue; + /* } else if (_r$9) { */ case 26: + $r = writeMultiple(s, sign, 1); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$11 = s.Write(buf); /* */ $s = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$11; + $r = writeMultiple(s, " ", padding); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 28; continue; + /* } else { */ case 27: + $r = writeMultiple(s, " ", padding); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = writeMultiple(s, sign, 1); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$12 = s.Write(buf); /* */ $s = 39; case 39: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$12; + /* } */ case 28: + case 24: + $s = -1; return; + /* */ } return; } var $f = {$blk: Format$1, $c: true, $r, _1, _arg, _arg$1, _arg$2, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, buf, format, hasPrec, hasWidth, padding, prec, s, sign, width, x, $s};return $f; + }; + $ptrType(Float).prototype.GobEncode = function GobEncode$2() { + var _q, b, buf, n, sz, x; + x = this; + if (x === ptrType.nil) { + return [sliceType$1.nil, $ifaceNil]; + } + sz = 6; + n = 0; + if (x.form === 1) { + n = (((_q = ((x.prec + 31 >>> 0)) / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)); + if (x.mant.$length < n) { + n = x.mant.$length; + } + sz = sz + ((4 + ($imul(n, 4)) >> 0)) >> 0; + } + buf = $makeSlice(sliceType$1, sz); + (0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0] = 1); + b = ((((((((x.mode & 7) >>> 0) << 24 >>> 24)) << 5 << 24 >>> 24) | ((((((x.acc + 1 << 24 >> 24)) & 3) << 24 >>> 24)) << 3 << 24 >>> 24)) >>> 0) | (((((x.form & 3) >>> 0) << 24 >>> 24)) << 1 << 24 >>> 24)) >>> 0; + if (x.neg) { + b = (b | (1)) >>> 0; + } + (1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1] = b); + $clone(binary.BigEndian, binary.bigEndian).PutUint32($subslice(buf, 2), x.prec); + if (x.form === 1) { + $clone(binary.BigEndian, binary.bigEndian).PutUint32($subslice(buf, 6), ((x.exp >>> 0))); + $subslice(x.mant, (x.mant.$length - n >> 0)).bytes($subslice(buf, 10)); + } + return [buf, $ifaceNil]; + }; + $ptrType(Float).prototype.GobDecode = function GobDecode$2(buf) { + var {$24r, _r, _r$1, b, buf, oldMode, oldPrec, z, $s, $r, $c} = $restore(this, {buf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (buf.$length === 0) { + Float.copy(z, new Float.ptr(0, 0, 0, 0, false, nat.nil, 0)); + $s = -1; return $ifaceNil; + } + if (buf.$length < 6) { + $s = -1; return errors.New("Float.GobDecode: buffer too small"); + } + /* */ if (!(((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 1))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]) === 1))) { */ case 1: + _r = fmt.Errorf("Float.GobDecode: encoding version %d not supported", new sliceType([new $Uint8((0 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 0]))])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + oldPrec = z.prec; + oldMode = z.mode; + b = (1 >= buf.$length ? ($throwRuntimeError("index out of range"), undefined) : buf.$array[buf.$offset + 1]); + z.mode = ((((((b >>> 5 << 24 >>> 24)) & 7) >>> 0) << 24 >>> 24)); + z.acc = ((((((b >>> 3 << 24 >>> 24)) & 3) >>> 0) << 24 >> 24)) - 1 << 24 >> 24; + z.form = ((((((b >>> 1 << 24 >>> 24)) & 3) >>> 0) << 24 >>> 24)); + z.neg = !((((b & 1) >>> 0) === 0)); + z.prec = $clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(buf, 2)); + if (z.form === 1) { + if (buf.$length < 10) { + $s = -1; return errors.New("Float.GobDecode: buffer too small for finite form float"); + } + z.exp = (($clone(binary.BigEndian, binary.bigEndian).Uint32($subslice(buf, 6)) >> 0)); + z.mant = z.mant.setBytes($subslice(buf, 10)); + } + /* */ if (!((oldPrec === 0))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((oldPrec === 0))) { */ case 5: + z.mode = oldMode; + _r$1 = z.SetPrec(((oldPrec >>> 0))); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 6: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: GobDecode$2, $c: true, $r, $24r, _r, _r$1, b, buf, oldMode, oldPrec, z, $s};return $f; + }; + $ptrType(Float).prototype.MarshalText = function MarshalText$2() { + var {$24r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, buf, err, text, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + text = sliceType$1.nil; + err = $ifaceNil; + x = this; + if (x === ptrType.nil) { + _tmp = (new sliceType$1($stringToBytes(""))); + _tmp$1 = $ifaceNil; + text = _tmp; + err = _tmp$1; + $s = -1; return [text, err]; + } + buf = sliceType$1.nil; + _r = x.Append(buf, 103, -1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp$2 = _r; + _tmp$3 = $ifaceNil; + text = _tmp$2; + err = _tmp$3; + $24r = [text, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: MarshalText$2, $c: true, $r, $24r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, buf, err, text, x, $s};return $f; + }; + $ptrType(Float).prototype.UnmarshalText = function UnmarshalText$2(text) { + var {_r, _r$1, _tuple, err, text, z, $s, $r, $c} = $restore(this, {text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.Parse(($bytesToString(text)), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[2]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + _r$1 = fmt.Errorf("math/big: cannot unmarshal %q into a *big.Float (%v)", new sliceType([text, err])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err = _r$1; + /* } */ case 3: + $s = -1; return err; + /* */ } return; } var $f = {$blk: UnmarshalText$2, $c: true, $r, _r, _r$1, _tuple, err, text, z, $s};return $f; + }; + $ptrType(Float).prototype.SetString = function SetString$2(s) { + var {_r, _tuple, err, f, s, z, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.Parse(s, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = _tuple[0]; + err = _tuple[2]; + if ($interfaceIsEqual(err, $ifaceNil)) { + $s = -1; return [f, true]; + } + $s = -1; return [ptrType.nil, false]; + /* */ } return; } var $f = {$blk: SetString$2, $c: true, $r, _r, _tuple, err, f, s, z, $s};return $f; + }; + $ptrType(Float).prototype.scan = function scan$2(r, base) { + var {_1, _2, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, b, base, d, ebase, err, exp$1, exp2, exp5, f, fcount, p, prec, r, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, z, $s, $r, $c} = $restore(this, {r, base}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = ptrType.nil; + b = 0; + err = $ifaceNil; + z = this; + prec = z.prec; + if (prec === 0) { + prec = 64; + } + z.form = 0; + _r = scanSign(r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + z.neg = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [f, b, err]; + } + fcount = 0; + _r$1 = z.mant.scan(r, base, true); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + z.mant = _tuple$1[0]; + b = _tuple$1[1]; + fcount = _tuple$1[2]; + err = _tuple$1[3]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [f, b, err]; + } + exp$1 = new $Int64(0, 0); + ebase = 0; + _r$2 = scanExponent(r, true, base === 0); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + exp$1 = _tuple$2[0]; + ebase = _tuple$2[1]; + err = _tuple$2[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [f, b, err]; + } + if (z.mant.$length === 0) { + z.prec = prec; + z.acc = 0; + z.form = 0; + f = z; + $s = -1; return [f, b, err]; + } + exp2 = (x = $mul64((new $Int64(0, z.mant.$length)), new $Int64(0, 32)), x$1 = fnorm(z.mant), new $Int64(x.$high - x$1.$high, x.$low - x$1.$low)); + exp5 = new $Int64(0, 0); + if (fcount < 0) { + d = (new $Int64(0, fcount)); + _1 = b; + if (_1 === (10)) { + exp5 = d; + exp2 = (x$2 = d, new $Int64(exp2.$high + x$2.$high, exp2.$low + x$2.$low)); + } else if (_1 === (2)) { + exp2 = (x$3 = d, new $Int64(exp2.$high + x$3.$high, exp2.$low + x$3.$low)); + } else if (_1 === (8)) { + exp2 = (x$4 = $mul64(d, new $Int64(0, 3)), new $Int64(exp2.$high + x$4.$high, exp2.$low + x$4.$low)); + } else if (_1 === (16)) { + exp2 = (x$5 = $mul64(d, new $Int64(0, 4)), new $Int64(exp2.$high + x$5.$high, exp2.$low + x$5.$low)); + } else { + $panic(new $String("unexpected mantissa base")); + } + } + _2 = ebase; + if (_2 === (10)) { + exp5 = (x$6 = exp$1, new $Int64(exp5.$high + x$6.$high, exp5.$low + x$6.$low)); + exp2 = (x$7 = exp$1, new $Int64(exp2.$high + x$7.$high, exp2.$low + x$7.$low)); + } else if (_2 === (2)) { + exp2 = (x$8 = exp$1, new $Int64(exp2.$high + x$8.$high, exp2.$low + x$8.$low)); + } else { + $panic(new $String("unexpected exponent base")); + } + /* */ if ((-1 < exp2.$high || (-1 === exp2.$high && 2147483648 <= exp2.$low)) && (exp2.$high < 0 || (exp2.$high === 0 && exp2.$low <= 2147483647))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((-1 < exp2.$high || (-1 === exp2.$high && 2147483648 <= exp2.$low)) && (exp2.$high < 0 || (exp2.$high === 0 && exp2.$low <= 2147483647))) { */ case 4: + z.prec = prec; + z.form = 1; + z.exp = (((exp2.$low + ((exp2.$high >> 31) * 4294967296)) >> 0)); + f = z; + $s = 6; continue; + /* } else { */ case 5: + _r$3 = fmt.Errorf("exponent overflow", sliceType.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err = _r$3; + $s = -1; return [f, b, err]; + /* } */ case 6: + /* */ if ((exp5.$high === 0 && exp5.$low === 0)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ((exp5.$high === 0 && exp5.$low === 0)) { */ case 8: + $r = z.round(0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [f, b, err]; + /* } */ case 9: + _r$4 = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0).SetPrec(z.Prec() + 64 >>> 0); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + p = _r$4; + /* */ if ((exp5.$high < 0 || (exp5.$high === 0 && exp5.$low < 0))) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ((exp5.$high < 0 || (exp5.$high === 0 && exp5.$low < 0))) { */ case 12: + _arg = z; + _r$5 = p.pow5(((x$9 = new $Int64(-exp5.$high, -exp5.$low), new $Uint64(x$9.$high, x$9.$low)))); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$1 = _r$5; + _r$6 = z.Quo(_arg, _arg$1); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$6; + $s = 14; continue; + /* } else { */ case 13: + _arg$2 = z; + _r$7 = p.pow5((new $Uint64(exp5.$high, exp5.$low))); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _arg$3 = _r$7; + _r$8 = z.Mul(_arg$2, _arg$3); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$8; + /* } */ case 14: + $s = -1; return [f, b, err]; + /* */ } return; } var $f = {$blk: scan$2, $c: true, $r, _1, _2, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, b, base, d, ebase, err, exp$1, exp2, exp5, f, fcount, p, prec, r, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, z, $s};return $f; + }; + $ptrType(Float).prototype.pow5 = function pow5(n) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, f, n, x, x$1, z, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if ((n.$high < 0 || (n.$high === 0 && n.$low <= 27))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((n.$high < 0 || (n.$high === 0 && n.$low <= 27))) { */ case 1: + _r = z.SetUint64((($flatten64(n) < 0 || $flatten64(n) >= pow5tab.length) ? ($throwRuntimeError("index out of range"), undefined) : pow5tab[$flatten64(n)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = z.SetUint64(pow5tab[27]); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + n = (x = new $Uint64(0, 27), new $Uint64(n.$high - x.$high, n.$low - x.$low)); + _r$2 = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0).SetPrec(z.Prec() + 64 >>> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.SetUint64(new $Uint64(0, 5)); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + f = _r$3; + /* while (true) { */ case 8: + /* if (!((n.$high > 0 || (n.$high === 0 && n.$low > 0)))) { break; } */ if(!((n.$high > 0 || (n.$high === 0 && n.$low > 0)))) { $s = 9; continue; } + /* */ if (!((x$1 = new $Uint64(n.$high & 0, (n.$low & 1) >>> 0), (x$1.$high === 0 && x$1.$low === 0)))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!((x$1 = new $Uint64(n.$high & 0, (n.$low & 1) >>> 0), (x$1.$high === 0 && x$1.$low === 0)))) { */ case 10: + _r$4 = z.Mul(z, f); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + /* } */ case 11: + _r$5 = f.Mul(f, f); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + n = $shiftRightUint64(n, (1)); + $s = 8; continue; + case 9: + $s = -1; return z; + /* */ } return; } var $f = {$blk: pow5, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, f, n, x, x$1, z, $s};return $f; + }; + $ptrType(Float).prototype.Parse = function Parse(s, base) { + var {_r, _r$1, _tuple, _tuple$1, b, base, ch, err, err2, f, r, s, z, $s, $r, $c} = $restore(this, {s, base}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = ptrType.nil; + b = 0; + err = $ifaceNil; + z = this; + if ((s.length === 3) && (s === "Inf" || s === "inf")) { + f = z.SetInf(false); + $s = -1; return [f, b, err]; + } + if ((s.length === 4) && ((s.charCodeAt(0) === 43) || (s.charCodeAt(0) === 45)) && ($substring(s, 1) === "Inf" || $substring(s, 1) === "inf")) { + f = z.SetInf(s.charCodeAt(0) === 45); + $s = -1; return [f, b, err]; + } + r = strings.NewReader(s); + _r = z.scan(r, base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = _tuple[0]; + b = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [f, b, err]; + } + _tuple$1 = r.ReadByte(); + ch = _tuple$1[0]; + err2 = _tuple$1[1]; + /* */ if ($interfaceIsEqual(err2, $ifaceNil)) { $s = 2; continue; } + /* */ if (!($interfaceIsEqual(err2, io.EOF))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($interfaceIsEqual(err2, $ifaceNil)) { */ case 2: + _r$1 = fmt.Errorf("expected end of string, found %q", new sliceType([new $Uint8(ch)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err = _r$1; + $s = 4; continue; + /* } else if (!($interfaceIsEqual(err2, io.EOF))) { */ case 3: + err = err2; + /* } */ case 4: + $s = -1; return [f, b, err]; + /* */ } return; } var $f = {$blk: Parse, $c: true, $r, _r, _r$1, _tuple, _tuple$1, b, base, ch, err, err2, f, r, s, z, $s};return $f; + }; + $ptrType(Float).prototype.Scan = function Scan$2(s, ch) { + var {_r, _tuple, ch, err, s, x, z, $s, $r, $c} = $restore(this, {s, ch}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + $r = s.SkipSpace(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = z.scan((x = new byteReader.ptr(s), new x.constructor.elem(x)), 0); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[2]; + $s = -1; return err; + /* */ } return; } var $f = {$blk: Scan$2, $c: true, $r, _r, _tuple, ch, err, s, x, z, $s};return $f; + }; + $ptrType(ErrNaN).prototype.Error = function Error() { + var err; + err = this; + return err.msg; + }; + ErrNaN.prototype.Error = function(...$args) { return this.$val.Error(...$args); }; + NewFloat = function NewFloat$1(x) { + var {$24r, _r, x, x$1, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (math.IsNaN(x)) { + $panic((x$1 = new ErrNaN.ptr("NewFloat(NaN)"), new x$1.constructor.elem(x$1))); + } + _r = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0).SetFloat64(x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: NewFloat$1, $c: true, $r, $24r, _r, x, x$1, $s};return $f; + }; + $pkg.NewFloat = NewFloat; + $ptrType(Float).prototype.SetPrec = function SetPrec(prec) { + var {old, prec, z, $s, $r, $c} = $restore(this, {prec}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + z.acc = 0; + if (prec === 0) { + z.prec = 0; + if (z.form === 1) { + z.acc = makeAcc(z.neg); + z.form = 0; + } + $s = -1; return z; + } + if (prec > 4294967295) { + prec = 4294967295; + } + old = z.prec; + z.prec = ((prec >>> 0)); + /* */ if (z.prec < old) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (z.prec < old) { */ case 1: + $r = z.round(0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return z; + /* */ } return; } var $f = {$blk: SetPrec, $c: true, $r, old, prec, z, $s};return $f; + }; + makeAcc = function makeAcc$1(above) { + var above; + if (above) { + return 1; + } + return -1; + }; + $ptrType(Float).prototype.SetMode = function SetMode(mode) { + var mode, z; + z = this; + z.mode = mode; + z.acc = 0; + return z; + }; + $ptrType(Float).prototype.Prec = function Prec() { + var x; + x = this; + return ((x.prec >>> 0)); + }; + $ptrType(Float).prototype.MinPrec = function MinPrec() { + var x; + x = this; + if (!((x.form === 1))) { + return 0; + } + return ($imul(((x.mant.$length >>> 0)), 32) >>> 0) - x.mant.trailingZeroBits() >>> 0; + }; + $ptrType(Float).prototype.Mode = function Mode() { + var x; + x = this; + return x.mode; + }; + $ptrType(Float).prototype.Acc = function Acc() { + var x; + x = this; + return x.acc; + }; + $ptrType(Float).prototype.Sign = function Sign$2() { + var {x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (x.form === 0) { + $s = -1; return 0; + } + if (x.neg) { + $s = -1; return -1; + } + $s = -1; return 1; + /* */ } return; } var $f = {$blk: Sign$2, $c: true, $r, x, $s};return $f; + }; + $ptrType(Float).prototype.MantExp = function MantExp(mant) { + var {_r, exp$1, mant, x, $s, $r, $c} = $restore(this, {mant}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + exp$1 = 0; + x = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (x.form === 1) { + exp$1 = ((x.exp >> 0)); + } + /* */ if (!(mant === ptrType.nil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(mant === ptrType.nil)) { */ case 4: + _r = mant.Copy(x); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + if (mant.form === 1) { + mant.exp = 0; + } + /* } */ case 5: + $s = -1; return exp$1; + /* */ } return; } var $f = {$blk: MantExp, $c: true, $r, _r, exp$1, mant, x, $s};return $f; + }; + $ptrType(Float).prototype.setExpAndRound = function setExpAndRound(exp$1, sbit) { + var {exp$1, sbit, z, $s, $r, $c} = $restore(this, {exp$1, sbit}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if ((exp$1.$high < -1 || (exp$1.$high === -1 && exp$1.$low < 2147483648))) { + z.acc = makeAcc(z.neg); + z.form = 0; + $s = -1; return; + } + if ((exp$1.$high > 0 || (exp$1.$high === 0 && exp$1.$low > 2147483647))) { + z.acc = makeAcc(!z.neg); + z.form = 2; + $s = -1; return; + } + z.form = 1; + z.exp = (((exp$1.$low + ((exp$1.$high >> 31) * 4294967296)) >> 0)); + $r = z.round(sbit); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: setExpAndRound, $c: true, $r, exp$1, sbit, z, $s};return $f; + }; + $ptrType(Float).prototype.SetMantExp = function SetMantExp(mant, exp$1) { + var {_r, exp$1, mant, x, x$1, z, $s, $r, $c} = $restore(this, {mant, exp$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = z.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = mant.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _r = z.Copy(mant); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* */ if (z.form === 1) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (z.form === 1) { */ case 6: + $r = z.setExpAndRound((x = (new $Int64(0, z.exp)), x$1 = (new $Int64(0, exp$1)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)), 0); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + $s = -1; return z; + /* */ } return; } var $f = {$blk: SetMantExp, $c: true, $r, _r, exp$1, mant, x, x$1, z, $s};return $f; + }; + $ptrType(Float).prototype.Signbit = function Signbit() { + var x; + x = this; + return x.neg; + }; + $ptrType(Float).prototype.IsInf = function IsInf() { + var x; + x = this; + return x.form === 2; + }; + $ptrType(Float).prototype.IsInt = function IsInt$1() { + var {x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (!((x.form === 1))) { + $s = -1; return x.form === 0; + } + if (x.exp <= 0) { + $s = -1; return false; + } + $s = -1; return x.prec <= ((x.exp >>> 0)) || x.MinPrec() <= ((x.exp >>> 0)); + /* */ } return; } var $f = {$blk: IsInt$1, $c: true, $r, x, $s};return $f; + }; + $ptrType(Float).prototype.validate = function validate() { + var {_arg, _arg$1, _r, _r$1, m, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (true) { + $panic(new $String("validate called but debugFloat is not set")); + } + if (!((x.form === 1))) { + $s = -1; return; + } + m = x.mant.$length; + if (m === 0) { + $panic(new $String("nonzero finite number with empty mantissa")); + } + /* */ if ((((x$1 = x.mant, x$2 = m - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) & 2147483648) >>> 0) === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((((x$1 = x.mant, x$2 = m - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) & 2147483648) >>> 0) === 0) { */ case 1: + _arg = new Word((x$3 = x.mant, x$4 = m - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + x$4]))); + _r = x.Text(112, 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = new $String(_r); + _r$1 = fmt.Sprintf("msb not set in last word %#x of %s", new sliceType([_arg, _arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 2: + if (x.prec === 0) { + $panic(new $String("zero precision finite number")); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: validate, $c: true, $r, _arg, _arg$1, _r, _r$1, m, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + $ptrType(Float).prototype.round = function round(sbit) { + var {_1, _index, _q, _r, bits$1, inc, lsb, m, n, ntz, r, rbit, sbit, x, x$1, x$2, x$3, x$4, y, z, $s, $r, $c} = $restore(this, {sbit}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = z.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + z.acc = 0; + if (!((z.form === 1))) { + $s = -1; return; + } + m = ((z.mant.$length >>> 0)); + bits$1 = $imul(m, 32) >>> 0; + if (bits$1 <= z.prec) { + $s = -1; return; + } + r = ((((bits$1 - z.prec >>> 0) - 1 >>> 0) >>> 0)); + rbit = (z.mant.bit(r) & 1) >>> 0; + if ((sbit === 0) && ((rbit === 0) || (z.mode === 0))) { + sbit = z.mant.sticky(r); + } + sbit = (sbit & (1)) >>> 0; + n = (_q = ((z.prec + 31 >>> 0)) / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + if (m > n) { + $copySlice(z.mant, $subslice(z.mant, (m - n >>> 0))); + z.mant = $subslice(z.mant, 0, n); + } + ntz = ($imul(n, 32) >>> 0) - z.prec >>> 0; + lsb = (y = ntz, y < 32 ? (1 << y) : 0) >>> 0; + /* */ if (!((((rbit | sbit) >>> 0) === 0))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!((((rbit | sbit) >>> 0) === 0))) { */ case 4: + inc = false; + _1 = z.mode; + if (_1 === (4)) { + inc = z.neg; + } else if (_1 === (2)) { + } else if (_1 === (0)) { + inc = !((rbit === 0)) && (!((sbit === 0)) || !(((((x = z.mant, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) & lsb) >>> 0) === 0))); + } else if (_1 === (1)) { + inc = !((rbit === 0)); + } else if (_1 === (3)) { + inc = true; + } else if (_1 === (5)) { + inc = !z.neg; + } else { + $panic(new $String("unreachable")); + } + z.acc = makeAcc(!(inc === z.neg)); + /* */ if (inc) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (inc) { */ case 6: + _r = addVW($convertSliceType(z.mant, sliceType$2), $convertSliceType(z.mant, sliceType$2), lsb); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 0))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!((_r === 0))) { */ case 8: + if (z.exp >= 2147483647) { + z.form = 2; + $s = -1; return; + } + z.exp = z.exp + (1) >> 0; + shrVU($convertSliceType(z.mant, sliceType$2), $convertSliceType(z.mant, sliceType$2), 1); + _index = n - 1 >>> 0; + (x$2 = z.mant, ((_index < 0 || _index >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + _index] = (((x$1 = z.mant, ((_index < 0 || _index >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + _index])) | (2147483648)) >>> 0))); + /* } */ case 9: + /* } */ case 7: + /* } */ case 5: + (x$4 = z.mant, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0] = (((x$3 = z.mant, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])) & ~((lsb - 1 >>> 0))) >>> 0))); + /* */ if (false) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (false) { */ case 11: + $r = z.validate(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + $s = -1; return; + /* */ } return; } var $f = {$blk: round, $c: true, $r, _1, _index, _q, _r, bits$1, inc, lsb, m, n, ntz, r, rbit, sbit, x, x$1, x$2, x$3, x$4, y, z, $s};return $f; + }; + $ptrType(Float).prototype.setBits64 = function setBits64(neg, x) { + var {neg, s, x, z, $s, $r, $c} = $restore(this, {neg, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (z.prec === 0) { + z.prec = 64; + } + z.acc = 0; + z.neg = neg; + if ((x.$high === 0 && x.$low === 0)) { + z.form = 0; + $s = -1; return z; + } + z.form = 1; + s = bits.LeadingZeros64(x); + z.mant = z.mant.setUint64($shiftLeft64(x, ((s >>> 0)))); + z.exp = (((64 - s >> 0) >> 0)); + /* */ if (z.prec < 64) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (z.prec < 64) { */ case 1: + $r = z.round(0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return z; + /* */ } return; } var $f = {$blk: setBits64, $c: true, $r, neg, s, x, z, $s};return $f; + }; + $ptrType(Float).prototype.SetUint64 = function SetUint64$2(x) { + var {$24r, _r, x, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.setBits64(false, x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetUint64$2, $c: true, $r, $24r, _r, x, z, $s};return $f; + }; + $ptrType(Float).prototype.SetInt64 = function SetInt64$2(x) { + var {$24r, _r, u, x, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + u = x; + if ((u.$high < 0 || (u.$high === 0 && u.$low < 0))) { + u = new $Int64(-u.$high, -u.$low); + } + _r = z.setBits64((x.$high < 0 || (x.$high === 0 && x.$low < 0)), (new $Uint64(u.$high, u.$low))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: SetInt64$2, $c: true, $r, $24r, _r, u, x, z, $s};return $f; + }; + $ptrType(Float).prototype.SetFloat64 = function SetFloat64$1(x) { + var {_tuple, exp$1, fmant, x, x$1, x$2, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (z.prec === 0) { + z.prec = 53; + } + if (math.IsNaN(x)) { + $panic((x$1 = new ErrNaN.ptr("Float.SetFloat64(NaN)"), new x$1.constructor.elem(x$1))); + } + z.acc = 0; + z.neg = math.Signbit(x); + if (x === 0) { + z.form = 0; + $s = -1; return z; + } + if (math.IsInf(x, 0)) { + z.form = 2; + $s = -1; return z; + } + z.form = 1; + _tuple = math.Frexp(x); + fmant = _tuple[0]; + exp$1 = _tuple[1]; + z.mant = z.mant.setUint64((x$2 = $shiftLeft64(math.Float64bits(fmant), 11), new $Uint64(2147483648 | x$2.$high, (0 | x$2.$low) >>> 0))); + z.exp = ((exp$1 >> 0)); + /* */ if (z.prec < 53) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (z.prec < 53) { */ case 1: + $r = z.round(0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return z; + /* */ } return; } var $f = {$blk: SetFloat64$1, $c: true, $r, _tuple, exp$1, fmant, x, x$1, x$2, z, $s};return $f; + }; + fnorm = function fnorm$1(m) { + var c, m, s, x, x$1; + if (false && ((m.$length === 0) || ((x = m.$length - 1 >> 0, ((x < 0 || x >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x])) === 0))) { + $panic(new $String("msw of mantissa is 0")); + } + s = nlz((x$1 = m.$length - 1 >> 0, ((x$1 < 0 || x$1 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$1]))); + if (s > 0) { + c = shlVU($convertSliceType(m, sliceType$2), $convertSliceType(m, sliceType$2), s); + if (false && !((c === 0))) { + $panic(new $String("nlz or shlVU incorrect")); + } + } + return (new $Int64(0, s)); + }; + $ptrType(Float).prototype.SetInt = function SetInt$1(x) { + var {bits$1, x, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + bits$1 = ((x.BitLen() >>> 0)); + if (z.prec === 0) { + z.prec = umax32(bits$1, 64); + } + z.acc = 0; + z.neg = x.neg; + if (x.abs.$length === 0) { + z.form = 0; + $s = -1; return z; + } + z.mant = z.mant.set(x.abs); + fnorm(z.mant); + $r = z.setExpAndRound((new $Int64(0, bits$1)), 0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return z; + /* */ } return; } var $f = {$blk: SetInt$1, $c: true, $r, bits$1, x, z, $s};return $f; + }; + $ptrType(Float).prototype.SetRat = function SetRat(x) { + var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, a, b, x, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = [a]; + b = [b]; + z = this; + /* */ if (x.IsInt()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.IsInt()) { */ case 1: + _r = z.SetInt(x.Num()); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + _tmp = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0); + _tmp$1 = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0); + a[0] = $clone(_tmp, Float); + b[0] = $clone(_tmp$1, Float); + _r$1 = a[0].SetInt(x.Num()); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = b[0].SetInt(x.Denom()); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + if (z.prec === 0) { + z.prec = umax32(a[0].prec, b[0].prec); + } + _r$3 = z.Quo(a[0], b[0]); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = _r$3; + $s = 8; case 8: return $24r$1; + /* */ } return; } var $f = {$blk: SetRat, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, a, b, x, z, $s};return $f; + }; + $ptrType(Float).prototype.SetInf = function SetInf(signbit) { + var signbit, z; + z = this; + z.acc = 0; + z.form = 2; + z.neg = signbit; + return z; + }; + $ptrType(Float).prototype.Set = function Set$2(x) { + var {x, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + z.acc = 0; + /* */ if (!(z === x)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(z === x)) { */ case 4: + z.form = x.form; + z.neg = x.neg; + if (x.form === 1) { + z.exp = x.exp; + z.mant = z.mant.set(x.mant); + } + /* */ if (z.prec === 0) { $s = 6; continue; } + /* */ if (z.prec < x.prec) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (z.prec === 0) { */ case 6: + z.prec = x.prec; + $s = 8; continue; + /* } else if (z.prec < x.prec) { */ case 7: + $r = z.round(0); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + /* } */ case 5: + $s = -1; return z; + /* */ } return; } var $f = {$blk: Set$2, $c: true, $r, x, z, $s};return $f; + }; + $ptrType(Float).prototype.Copy = function Copy(x) { + var {x, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (!(z === x)) { + z.prec = x.prec; + z.mode = x.mode; + z.acc = x.acc; + z.form = x.form; + z.neg = x.neg; + if (z.form === 1) { + z.mant = z.mant.set(x.mant); + z.exp = x.exp; + } + } + $s = -1; return z; + /* */ } return; } var $f = {$blk: Copy, $c: true, $r, x, z, $s};return $f; + }; + msb32 = function msb32$1(x) { + var _1, i, x; + i = x.$length - 1 >> 0; + if (i < 0) { + return 0; + } + if (false && (((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) & 2147483648) >>> 0) === 0)) { + $panic(new $String("x not normalized")); + } + _1 = 32; + if (_1 === (32)) { + return ((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0)); + } else if (_1 === (64)) { + return ((0 >>> 0)); + } + $panic(new $String("unreachable")); + }; + msb64 = function msb64$1(x) { + var _1, i, v, x, x$1, x$2; + i = x.$length - 1 >> 0; + if (i < 0) { + return new $Uint64(0, 0); + } + if (false && (((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) & 2147483648) >>> 0) === 0)) { + $panic(new $String("x not normalized")); + } + _1 = 32; + if (_1 === (32)) { + v = $shiftLeft64((new $Uint64(0, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))), 32); + if (i > 0) { + v = (x$1 = (new $Uint64(0, (x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$2])))), new $Uint64(v.$high | x$1.$high, (v.$low | x$1.$low) >>> 0)); + } + return v; + } else if (_1 === (64)) { + return (new $Uint64(0, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))); + } + $panic(new $String("unreachable")); + }; + $ptrType(Float).prototype.Uint64 = function Uint64$1() { + var {_1, u, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _1 = x.form; + if (_1 === (1)) { + if (x.neg) { + $s = -1; return [new $Uint64(0, 0), 1]; + } + if (x.exp <= 0) { + $s = -1; return [new $Uint64(0, 0), -1]; + } + if (x.exp <= 64) { + u = $shiftRightUint64(msb64(x.mant), ((64 - ((x.exp >>> 0)) >>> 0))); + if (x.MinPrec() <= 64) { + $s = -1; return [u, 0]; + } + $s = -1; return [u, -1]; + } + $s = -1; return [new $Uint64(4294967295, 4294967295), -1]; + } else if (_1 === (0)) { + $s = -1; return [new $Uint64(0, 0), 0]; + } else if (_1 === (2)) { + if (x.neg) { + $s = -1; return [new $Uint64(0, 0), 1]; + } + $s = -1; return [new $Uint64(4294967295, 4294967295), -1]; + } + $panic(new $String("unreachable")); + $s = -1; return [new $Uint64(0, 0), 0]; + /* */ } return; } var $f = {$blk: Uint64$1, $c: true, $r, _1, u, x, $s};return $f; + }; + $ptrType(Float).prototype.Int64 = function Int64$1() { + var {_1, acc, i, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _1 = x.form; + if (_1 === (1)) { + acc = makeAcc(x.neg); + if (x.exp <= 0) { + $s = -1; return [new $Int64(0, 0), acc]; + } + if (x.exp <= 63) { + i = ((x$1 = $shiftRightUint64(msb64(x.mant), ((64 - ((x.exp >>> 0)) >>> 0))), new $Int64(x$1.$high, x$1.$low))); + if (x.neg) { + i = new $Int64(-i.$high, -i.$low); + } + if (x.MinPrec() <= ((x.exp >>> 0))) { + $s = -1; return [i, 0]; + } + $s = -1; return [i, acc]; + } + if (x.neg) { + if ((x.exp === 64) && (x.MinPrec() === 1)) { + acc = 0; + } + $s = -1; return [new $Int64(-2147483648, 0), acc]; + } + $s = -1; return [new $Int64(2147483647, 4294967295), -1]; + } else if (_1 === (0)) { + $s = -1; return [new $Int64(0, 0), 0]; + } else if (_1 === (2)) { + if (x.neg) { + $s = -1; return [new $Int64(-2147483648, 0), 1]; + } + $s = -1; return [new $Int64(2147483647, 4294967295), -1]; + } + $panic(new $String("unreachable")); + $s = -1; return [new $Int64(0, 0), 0]; + /* */ } return; } var $f = {$blk: Int64$1, $c: true, $r, _1, acc, i, x, x$1, $s};return $f; + }; + $ptrType(Float).prototype.Float32 = function Float32$1() { + var {_1, _r, _tmp, _tmp$1, _tmp$2, bexp, e, mant, p, r, sign, x, y, z, z$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _1 = x.form; + /* */ if (_1 === (1)) { $s = 5; continue; } + /* */ if (_1 === (0)) { $s = 6; continue; } + /* */ if (_1 === (2)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_1 === (1)) { */ case 5: + e = x.exp - 1 >> 0; + p = 24; + if (e < -126) { + p = 150 + ((e >> 0)) >> 0; + if (p < 0 || (p === 0) && (x.mant.sticky(($imul(((x.mant.$length >>> 0)), 32) >>> 0) - 1 >>> 0) === 0)) { + if (x.neg) { + z = 0; + $s = -1; return [-z, 1]; + } + $s = -1; return [0, -1]; + } + if (p === 0) { + if (x.neg) { + $s = -1; return [-1.401298464324817e-45, -1]; + } + $s = -1; return [1.401298464324817e-45, 1]; + } + } + r = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0); + r.prec = ((p >>> 0)); + _r = r.Set(x); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + e = r.exp - 1 >> 0; + if ((r.form === 2) || e > 127) { + if (x.neg) { + $s = -1; return [($fround(math.Inf(-1))), -1]; + } + $s = -1; return [($fround(math.Inf(1))), 1]; + } + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = 0; + sign = _tmp; + bexp = _tmp$1; + mant = _tmp$2; + if (x.neg) { + sign = 2147483648; + } + if (e < -126) { + p = 150 + ((e >> 0)) >> 0; + mant = (y = (((32 - p >> 0) >>> 0)), y < 32 ? (msb32(r.mant) >>> y) : 0) >>> 0; + } else { + bexp = (((e + 127 >> 0) >>> 0)) << 23 >>> 0; + mant = ((msb32(r.mant) >>> 8 >>> 0) & 8388607) >>> 0; + } + $s = -1; return [math.Float32frombits((((sign | bexp) >>> 0) | mant) >>> 0), r.acc]; + /* } else if (_1 === (0)) { */ case 6: + if (x.neg) { + z$1 = 0; + $s = -1; return [-z$1, 0]; + } + $s = -1; return [0, 0]; + /* } else if (_1 === (2)) { */ case 7: + if (x.neg) { + $s = -1; return [($fround(math.Inf(-1))), 0]; + } + $s = -1; return [($fround(math.Inf(1))), 0]; + /* } */ case 8: + case 4: + $panic(new $String("unreachable")); + $s = -1; return [0, 0]; + /* */ } return; } var $f = {$blk: Float32$1, $c: true, $r, _1, _r, _tmp, _tmp$1, _tmp$2, bexp, e, mant, p, r, sign, x, y, z, z$1, $s};return $f; + }; + $ptrType(Float).prototype.Float64 = function Float64$1() { + var {_1, _r, _tmp, _tmp$1, _tmp$2, bexp, e, mant, p, r, sign, x, x$1, x$2, z, z$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _1 = x.form; + /* */ if (_1 === (1)) { $s = 5; continue; } + /* */ if (_1 === (0)) { $s = 6; continue; } + /* */ if (_1 === (2)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_1 === (1)) { */ case 5: + e = x.exp - 1 >> 0; + p = 53; + if (e < -1022) { + p = 1075 + ((e >> 0)) >> 0; + if (p < 0 || (p === 0) && (x.mant.sticky(($imul(((x.mant.$length >>> 0)), 32) >>> 0) - 1 >>> 0) === 0)) { + if (x.neg) { + z = 0; + $s = -1; return [-z, 1]; + } + $s = -1; return [0, -1]; + } + if (p === 0) { + if (x.neg) { + $s = -1; return [-5e-324, -1]; + } + $s = -1; return [5e-324, 1]; + } + } + r = new Float.ptr(0, 0, 0, 0, false, nat.nil, 0); + r.prec = ((p >>> 0)); + _r = r.Set(x); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + e = r.exp - 1 >> 0; + if ((r.form === 2) || e > 1023) { + if (x.neg) { + $s = -1; return [math.Inf(-1), -1]; + } + $s = -1; return [math.Inf(1), 1]; + } + _tmp = new $Uint64(0, 0); + _tmp$1 = new $Uint64(0, 0); + _tmp$2 = new $Uint64(0, 0); + sign = _tmp; + bexp = _tmp$1; + mant = _tmp$2; + if (x.neg) { + sign = new $Uint64(2147483648, 0); + } + if (e < -1022) { + p = 1075 + ((e >> 0)) >> 0; + mant = $shiftRightUint64(msb64(r.mant), (((64 - p >> 0) >>> 0))); + } else { + bexp = $shiftLeft64((new $Uint64(0, (e + 1023 >> 0))), 52); + mant = (x$1 = $shiftRightUint64(msb64(r.mant), 11), new $Uint64(x$1.$high & 1048575, (x$1.$low & 4294967295) >>> 0)); + } + $s = -1; return [math.Float64frombits((x$2 = new $Uint64(sign.$high | bexp.$high, (sign.$low | bexp.$low) >>> 0), new $Uint64(x$2.$high | mant.$high, (x$2.$low | mant.$low) >>> 0))), r.acc]; + /* } else if (_1 === (0)) { */ case 6: + if (x.neg) { + z$1 = 0; + $s = -1; return [-z$1, 0]; + } + $s = -1; return [0, 0]; + /* } else if (_1 === (2)) { */ case 7: + if (x.neg) { + $s = -1; return [math.Inf(-1), 0]; + } + $s = -1; return [math.Inf(1), 0]; + /* } */ case 8: + case 4: + $panic(new $String("unreachable")); + $s = -1; return [0, 0]; + /* */ } return; } var $f = {$blk: Float64$1, $c: true, $r, _1, _r, _tmp, _tmp$1, _tmp$2, bexp, e, mant, p, r, sign, x, x$1, x$2, z, z$1, $s};return $f; + }; + $ptrType(Float).prototype.Int = function Int$1(z) { + var {_1, acc, allBits, exp$1, x, z, $s, $r, $c} = $restore(this, {z}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (z === ptrType$2.nil && x.form <= 1) { + z = new Int.ptr(false, nat.nil); + } + _1 = x.form; + if (_1 === (1)) { + acc = makeAcc(x.neg); + if (x.exp <= 0) { + $s = -1; return [z.SetInt64(new $Int64(0, 0)), acc]; + } + allBits = $imul(((x.mant.$length >>> 0)), 32) >>> 0; + exp$1 = ((x.exp >>> 0)); + if (x.MinPrec() <= exp$1) { + acc = 0; + } + if (z === ptrType$2.nil) { + z = new Int.ptr(false, nat.nil); + } + z.neg = x.neg; + if (exp$1 > allBits) { + z.abs = z.abs.shl(x.mant, exp$1 - allBits >>> 0); + } else if (exp$1 < allBits) { + z.abs = z.abs.shr(x.mant, allBits - exp$1 >>> 0); + } else { + z.abs = z.abs.set(x.mant); + } + $s = -1; return [z, acc]; + } else if (_1 === (0)) { + $s = -1; return [z.SetInt64(new $Int64(0, 0)), 0]; + } else if (_1 === (2)) { + $s = -1; return [ptrType$2.nil, makeAcc(x.neg)]; + } + $panic(new $String("unreachable")); + $s = -1; return [ptrType$2.nil, 0]; + /* */ } return; } var $f = {$blk: Int$1, $c: true, $r, _1, acc, allBits, exp$1, x, z, $s};return $f; + }; + $ptrType(Float).prototype.Rat = function Rat$1(z) { + var {_1, _r, allBits, t, x, z, $s, $r, $c} = $restore(this, {z}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (z === ptrType$1.nil && x.form <= 1) { + z = new Rat.ptr(new Int.ptr(false, nat.nil), new Int.ptr(false, nat.nil)); + } + _1 = x.form; + /* */ if (_1 === (1)) { $s = 5; continue; } + /* */ if (_1 === (0)) { $s = 6; continue; } + /* */ if (_1 === (2)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_1 === (1)) { */ case 5: + allBits = $imul(((x.mant.$length >> 0)), 32); + z.a.neg = x.neg; + /* */ if (x.exp > allBits) { $s = 10; continue; } + /* */ if (x.exp < allBits) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (x.exp > allBits) { */ case 10: + z.a.abs = z.a.abs.shl(x.mant, (((x.exp - allBits >> 0) >>> 0))); + z.b.abs = $subslice(z.b.abs, 0, 0); + $s = 13; continue; + /* } else if (x.exp < allBits) { */ case 11: + z.a.abs = z.a.abs.set(x.mant); + t = z.b.abs.setUint64(new $Uint64(0, 1)); + z.b.abs = t.shl(t, (((allBits - x.exp >> 0) >>> 0))); + _r = z.norm(); /* */ $s = 14; case 14: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + $s = 13; continue; + /* } else { */ case 12: + z.a.abs = z.a.abs.set(x.mant); + z.b.abs = $subslice(z.b.abs, 0, 0); + /* } */ case 13: + case 9: + $s = -1; return [z, 0]; + /* } else if (_1 === (0)) { */ case 6: + $s = -1; return [z.SetInt64(new $Int64(0, 0)), 0]; + /* } else if (_1 === (2)) { */ case 7: + $s = -1; return [ptrType$1.nil, makeAcc(x.neg)]; + /* } */ case 8: + case 4: + $panic(new $String("unreachable")); + $s = -1; return [ptrType$1.nil, 0]; + /* */ } return; } var $f = {$blk: Rat$1, $c: true, $r, _1, _r, allBits, t, x, z, $s};return $f; + }; + $ptrType(Float).prototype.Abs = function Abs$2(x) { + var {_r, x, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.Set(x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + z.neg = false; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Abs$2, $c: true, $r, _r, x, z, $s};return $f; + }; + $ptrType(Float).prototype.Neg = function Neg$2(x) { + var {_r, x, z, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + _r = z.Set(x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + z.neg = !z.neg; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Neg$2, $c: true, $r, _r, x, z, $s};return $f; + }; + validateBinaryOperands = function validateBinaryOperands$1(x, y) { + var x, y; + if (true) { + $panic(new $String("validateBinaryOperands called but debugFloat is not set")); + } + if (x.mant.$length === 0) { + $panic(new $String("empty mantissa for x")); + } + if (y.mant.$length === 0) { + $panic(new $String("empty mantissa for y")); + } + }; + $ptrType(Float).prototype.uadd = function uadd(x, y) { + var {_r, _r$1, _r$2, _r$3, _r$4, al, ex, ey, t, t$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (false) { + validateBinaryOperands(x, y); + } + ex = (x$1 = (new $Int64(0, x.exp)), x$2 = $mul64((new $Int64(0, x.mant.$length)), new $Int64(0, 32)), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)); + ey = (x$3 = (new $Int64(0, y.exp)), x$4 = $mul64((new $Int64(0, y.mant.$length)), new $Int64(0, 32)), new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)); + al = alias(z.mant, x.mant) || alias(z.mant, y.mant); + /* */ if ((ex.$high < ey.$high || (ex.$high === ey.$high && ex.$low < ey.$low))) { $s = 2; continue; } + /* */ if ((ex.$high > ey.$high || (ex.$high === ey.$high && ex.$low > ey.$low))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((ex.$high < ey.$high || (ex.$high === ey.$high && ex.$low < ey.$low))) { */ case 2: + /* */ if (al) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (al) { */ case 6: + t = (nat.nil).shl(y.mant, ((new $Int64(ey.$high - ex.$high, ey.$low - ex.$low).$low >>> 0))); + _r = z.mant.add(x.mant, t); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.mant = _r; + $s = 8; continue; + /* } else { */ case 7: + z.mant = z.mant.shl(y.mant, ((new $Int64(ey.$high - ex.$high, ey.$low - ex.$low).$low >>> 0))); + _r$1 = z.mant.add(x.mant, z.mant); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.mant = _r$1; + /* } */ case 8: + $s = 5; continue; + /* } else if ((ex.$high > ey.$high || (ex.$high === ey.$high && ex.$low > ey.$low))) { */ case 3: + /* */ if (al) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (al) { */ case 11: + t$1 = (nat.nil).shl(x.mant, ((new $Int64(ex.$high - ey.$high, ex.$low - ey.$low).$low >>> 0))); + _r$2 = z.mant.add(t$1, y.mant); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + z.mant = _r$2; + $s = 13; continue; + /* } else { */ case 12: + z.mant = z.mant.shl(x.mant, ((new $Int64(ex.$high - ey.$high, ex.$low - ey.$low).$low >>> 0))); + _r$3 = z.mant.add(z.mant, y.mant); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + z.mant = _r$3; + /* } */ case 13: + ex = ey; + $s = 5; continue; + /* } else { */ case 4: + _r$4 = z.mant.add(x.mant, y.mant); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + z.mant = _r$4; + /* } */ case 5: + case 1: + $r = z.setExpAndRound((x$5 = (x$6 = $mul64((new $Int64(0, z.mant.$length)), new $Int64(0, 32)), new $Int64(ex.$high + x$6.$high, ex.$low + x$6.$low)), x$7 = fnorm(z.mant), new $Int64(x$5.$high - x$7.$high, x$5.$low - x$7.$low)), 0); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: uadd, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, al, ex, ey, t, t$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, y, z, $s};return $f; + }; + $ptrType(Float).prototype.usub = function usub(x, y) { + var {_r, _r$1, _r$2, _r$3, _r$4, al, ex, ey, t, t$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (false) { + validateBinaryOperands(x, y); + } + ex = (x$1 = (new $Int64(0, x.exp)), x$2 = $mul64((new $Int64(0, x.mant.$length)), new $Int64(0, 32)), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)); + ey = (x$3 = (new $Int64(0, y.exp)), x$4 = $mul64((new $Int64(0, y.mant.$length)), new $Int64(0, 32)), new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)); + al = alias(z.mant, x.mant) || alias(z.mant, y.mant); + /* */ if ((ex.$high < ey.$high || (ex.$high === ey.$high && ex.$low < ey.$low))) { $s = 2; continue; } + /* */ if ((ex.$high > ey.$high || (ex.$high === ey.$high && ex.$low > ey.$low))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((ex.$high < ey.$high || (ex.$high === ey.$high && ex.$low < ey.$low))) { */ case 2: + /* */ if (al) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (al) { */ case 6: + t = (nat.nil).shl(y.mant, ((new $Int64(ey.$high - ex.$high, ey.$low - ex.$low).$low >>> 0))); + _r = t.sub(x.mant, t); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.mant = _r; + $s = 8; continue; + /* } else { */ case 7: + z.mant = z.mant.shl(y.mant, ((new $Int64(ey.$high - ex.$high, ey.$low - ex.$low).$low >>> 0))); + _r$1 = z.mant.sub(x.mant, z.mant); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.mant = _r$1; + /* } */ case 8: + $s = 5; continue; + /* } else if ((ex.$high > ey.$high || (ex.$high === ey.$high && ex.$low > ey.$low))) { */ case 3: + /* */ if (al) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (al) { */ case 11: + t$1 = (nat.nil).shl(x.mant, ((new $Int64(ex.$high - ey.$high, ex.$low - ey.$low).$low >>> 0))); + _r$2 = t$1.sub(t$1, y.mant); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + z.mant = _r$2; + $s = 13; continue; + /* } else { */ case 12: + z.mant = z.mant.shl(x.mant, ((new $Int64(ex.$high - ey.$high, ex.$low - ey.$low).$low >>> 0))); + _r$3 = z.mant.sub(z.mant, y.mant); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + z.mant = _r$3; + /* } */ case 13: + ex = ey; + $s = 5; continue; + /* } else { */ case 4: + _r$4 = z.mant.sub(x.mant, y.mant); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + z.mant = _r$4; + /* } */ case 5: + case 1: + if (z.mant.$length === 0) { + z.acc = 0; + z.form = 0; + z.neg = false; + $s = -1; return; + } + $r = z.setExpAndRound((x$5 = (x$6 = $mul64((new $Int64(0, z.mant.$length)), new $Int64(0, 32)), new $Int64(ex.$high + x$6.$high, ex.$low + x$6.$low)), x$7 = fnorm(z.mant), new $Int64(x$5.$high - x$7.$high, x$5.$low - x$7.$low)), 0); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: usub, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, al, ex, ey, t, t$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, y, z, $s};return $f; + }; + $ptrType(Float).prototype.umul = function umul(x, y) { + var {_r, _r$1, e, x, x$1, x$2, x$3, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (false) { + validateBinaryOperands(x, y); + } + e = (x$1 = (new $Int64(0, x.exp)), x$2 = (new $Int64(0, y.exp)), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); + /* */ if (x === y) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x === y) { */ case 1: + _r = z.mant.sqr(x.mant); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + z.mant = _r; + $s = 3; continue; + /* } else { */ case 2: + _r$1 = z.mant.mul(x.mant, y.mant); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z.mant = _r$1; + /* } */ case 3: + $r = z.setExpAndRound((x$3 = fnorm(z.mant), new $Int64(e.$high - x$3.$high, e.$low - x$3.$low)), 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: umul, $c: true, $r, _r, _r$1, e, x, x$1, x$2, x$3, y, z, $s};return $f; + }; + $ptrType(Float).prototype.uquo = function uquo(x, y) { + var {_q, _r, _tuple, d, d$1, e, n, r, sbit, x, x$1, x$2, x$3, x$4, x$5, xadj, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + if (false) { + validateBinaryOperands(x, y); + } + n = (((_q = z.prec / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) + 1 >> 0; + xadj = x.mant; + d = (n - x.mant.$length >> 0) + y.mant.$length >> 0; + if (d > 0) { + xadj = $makeSlice(nat, (x.mant.$length + d >> 0)); + $copySlice($subslice(xadj, d), x.mant); + } + d$1 = xadj.$length - y.mant.$length >> 0; + r = nat.nil; + _r = z.mant.div(nat.nil, xadj, y.mant); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + z.mant = _tuple[0]; + r = _tuple[1]; + e = (x$1 = (x$2 = (new $Int64(0, x.exp)), x$3 = (new $Int64(0, y.exp)), new $Int64(x$2.$high - x$3.$high, x$2.$low - x$3.$low)), x$4 = $mul64((new $Int64(0, (d$1 - z.mant.$length >> 0))), new $Int64(0, 32)), new $Int64(x$1.$high - x$4.$high, x$1.$low - x$4.$low)); + sbit = 0; + if (r.$length > 0) { + sbit = 1; + } + $r = z.setExpAndRound((x$5 = fnorm(z.mant), new $Int64(e.$high - x$5.$high, e.$low - x$5.$low)), sbit); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: uquo, $c: true, $r, _q, _r, _tuple, d, d$1, e, n, r, sbit, x, x$1, x$2, x$3, x$4, x$5, xadj, y, z, $s};return $f; + }; + $ptrType(Float).prototype.ucmp = function ucmp(y) { + var _tmp, _tmp$1, i, j, x, x$1, x$2, xm, y, ym; + x = this; + if (false) { + validateBinaryOperands(x, y); + } + if (x.exp < y.exp) { + return -1; + } else if (x.exp > y.exp) { + return 1; + } + i = x.mant.$length; + j = y.mant.$length; + while (true) { + if (!(i > 0 || j > 0)) { break; } + _tmp = 0; + _tmp$1 = 0; + xm = _tmp; + ym = _tmp$1; + if (i > 0) { + i = i - (1) >> 0; + xm = (x$1 = x.mant, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])); + } + if (j > 0) { + j = j - (1) >> 0; + ym = (x$2 = y.mant, ((j < 0 || j >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j])); + } + if (xm < ym) { + return -1; + } else if (xm > ym) { + return 1; + } + } + return 0; + }; + $ptrType(Float).prototype.Add = function Add$2(x, y) { + var {$24r, $24r$1, _r, _r$1, x, x$1, y, yneg, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = y.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (z.prec === 0) { + z.prec = umax32(x.prec, y.prec); + } + /* */ if ((x.form === 1) && (y.form === 1)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ((x.form === 1) && (y.form === 1)) { */ case 5: + yneg = y.neg; + z.neg = x.neg; + /* */ if (x.neg === yneg) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (x.neg === yneg) { */ case 7: + $r = z.uadd(x, y); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 9; continue; + /* } else { */ case 8: + /* */ if (x.ucmp(y) > 0) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (x.ucmp(y) > 0) { */ case 11: + $r = z.usub(x, y); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + /* } else { */ case 12: + z.neg = !z.neg; + $r = z.usub(y, x); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 13: + /* } */ case 9: + if ((z.form === 0) && (z.mode === 4) && (z.acc === 0)) { + z.neg = true; + } + $s = -1; return z; + /* } */ case 6: + if ((x.form === 2) && (y.form === 2) && !(x.neg === y.neg)) { + z.acc = 0; + z.form = 0; + z.neg = false; + $panic((x$1 = new ErrNaN.ptr("addition of infinities with opposite signs"), new x$1.constructor.elem(x$1))); + } + if ((x.form === 0) && (y.form === 0)) { + z.acc = 0; + z.form = 0; + z.neg = x.neg && y.neg; + $s = -1; return z; + } + /* */ if ((x.form === 2) || (y.form === 0)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if ((x.form === 2) || (y.form === 0)) { */ case 16: + _r = z.Set(x); /* */ $s = 18; case 18: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 19; case 19: return $24r; + /* } */ case 17: + _r$1 = z.Set(y); /* */ $s = 20; case 20: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 21; case 21: return $24r$1; + /* */ } return; } var $f = {$blk: Add$2, $c: true, $r, $24r, $24r$1, _r, _r$1, x, x$1, y, yneg, z, $s};return $f; + }; + $ptrType(Float).prototype.Sub = function Sub$2(x, y) { + var {$24r, $24r$1, _r, _r$1, x, x$1, y, yneg, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = y.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (z.prec === 0) { + z.prec = umax32(x.prec, y.prec); + } + /* */ if ((x.form === 1) && (y.form === 1)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ((x.form === 1) && (y.form === 1)) { */ case 5: + yneg = y.neg; + z.neg = x.neg; + /* */ if (!(x.neg === yneg)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(x.neg === yneg)) { */ case 7: + $r = z.uadd(x, y); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 9; continue; + /* } else { */ case 8: + /* */ if (x.ucmp(y) > 0) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (x.ucmp(y) > 0) { */ case 11: + $r = z.usub(x, y); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + /* } else { */ case 12: + z.neg = !z.neg; + $r = z.usub(y, x); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 13: + /* } */ case 9: + if ((z.form === 0) && (z.mode === 4) && (z.acc === 0)) { + z.neg = true; + } + $s = -1; return z; + /* } */ case 6: + if ((x.form === 2) && (y.form === 2) && x.neg === y.neg) { + z.acc = 0; + z.form = 0; + z.neg = false; + $panic((x$1 = new ErrNaN.ptr("subtraction of infinities with equal signs"), new x$1.constructor.elem(x$1))); + } + if ((x.form === 0) && (y.form === 0)) { + z.acc = 0; + z.form = 0; + z.neg = x.neg && !y.neg; + $s = -1; return z; + } + /* */ if ((x.form === 2) || (y.form === 0)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if ((x.form === 2) || (y.form === 0)) { */ case 16: + _r = z.Set(x); /* */ $s = 18; case 18: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 19; case 19: return $24r; + /* } */ case 17: + _r$1 = z.Neg(y); /* */ $s = 20; case 20: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 21; case 21: return $24r$1; + /* */ } return; } var $f = {$blk: Sub$2, $c: true, $r, $24r, $24r$1, _r, _r$1, x, x$1, y, yneg, z, $s};return $f; + }; + $ptrType(Float).prototype.Mul = function Mul$2(x, y) { + var {x, x$1, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = y.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (z.prec === 0) { + z.prec = umax32(x.prec, y.prec); + } + z.neg = !(x.neg === y.neg); + /* */ if ((x.form === 1) && (y.form === 1)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ((x.form === 1) && (y.form === 1)) { */ case 5: + $r = z.umul(x, y); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return z; + /* } */ case 6: + z.acc = 0; + if ((x.form === 0) && (y.form === 2) || (x.form === 2) && (y.form === 0)) { + z.form = 0; + z.neg = false; + $panic((x$1 = new ErrNaN.ptr("multiplication of zero with infinity"), new x$1.constructor.elem(x$1))); + } + if ((x.form === 2) || (y.form === 2)) { + z.form = 2; + $s = -1; return z; + } + z.form = 0; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Mul$2, $c: true, $r, x, x$1, y, z, $s};return $f; + }; + $ptrType(Float).prototype.Quo = function Quo$2(x, y) { + var {x, x$1, y, z, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + z = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = y.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (z.prec === 0) { + z.prec = umax32(x.prec, y.prec); + } + z.neg = !(x.neg === y.neg); + /* */ if ((x.form === 1) && (y.form === 1)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ((x.form === 1) && (y.form === 1)) { */ case 5: + $r = z.uquo(x, y); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return z; + /* } */ case 6: + z.acc = 0; + if ((x.form === 0) && (y.form === 0) || (x.form === 2) && (y.form === 2)) { + z.form = 0; + z.neg = false; + $panic((x$1 = new ErrNaN.ptr("division of zero by zero or infinity by infinity"), new x$1.constructor.elem(x$1))); + } + if ((x.form === 0) || (y.form === 2)) { + z.form = 0; + $s = -1; return z; + } + z.form = 2; + $s = -1; return z; + /* */ } return; } var $f = {$blk: Quo$2, $c: true, $r, x, x$1, y, z, $s};return $f; + }; + $ptrType(Float).prototype.Cmp = function Cmp$2(y) { + var {_1, mx, my, x, y, $s, $r, $c} = $restore(this, {y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = x.validate(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = y.validate(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + mx = x.ord(); + my = y.ord(); + if (mx < my) { + $s = -1; return -1; + } else if (mx > my) { + $s = -1; return 1; + } + _1 = mx; + if (_1 === (-1)) { + $s = -1; return y.ucmp(x); + } else if (_1 === (1)) { + $s = -1; return x.ucmp(y); + } + $s = -1; return 0; + /* */ } return; } var $f = {$blk: Cmp$2, $c: true, $r, _1, mx, my, x, y, $s};return $f; + }; + $ptrType(Float).prototype.ord = function ord() { + var _1, m, x; + x = this; + m = 0; + _1 = x.form; + if (_1 === (1)) { + m = 1; + } else if (_1 === (0)) { + return 0; + } else if (_1 === (2)) { + m = 2; + } + if (x.neg) { + m = -m; + } + return m; + }; + umax32 = function umax32$1(x, y) { + var x, y; + if (x > y) { + return x; + } + return y; + }; + $ptrType(decimal).prototype.at = function at(i) { + var d, i, x; + d = this; + if (0 <= i && i < d.mant.$length) { + return (x = d.mant, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + } + return 48; + }; + $ptrType(decimal).prototype.init = function init(m, shift) { + var {_r, m, n, ntz, s, s$1, shift, x, x$1, $s, $r, $c} = $restore(this, {m, shift}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (m.$length === 0) { + x.mant = $subslice(x.mant, 0, 0); + x.exp = 0; + $s = -1; return; + } + if (shift < 0) { + ntz = m.trailingZeroBits(); + s = ((-shift >>> 0)); + if (s >= ntz) { + s = ntz; + } + m = (nat.nil).shr(m, s); + shift = shift + (((s >> 0))) >> 0; + } + if (shift > 0) { + m = (nat.nil).shl(m, ((shift >>> 0))); + shift = 0; + } + _r = m.utoa(10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s$1 = _r; + n = s$1.$length; + x.exp = n; + while (true) { + if (!(n > 0 && ((x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= s$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : s$1.$array[s$1.$offset + x$1])) === 48))) { break; } + n = n - (1) >> 0; + } + x.mant = $appendSlice($subslice(x.mant, 0, 0), $subslice(s$1, 0, n)); + if (shift < 0) { + while (true) { + if (!(shift < -28)) { break; } + shr(x, 28); + shift = shift + (28) >> 0; + } + shr(x, ((-shift >>> 0))); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: init, $c: true, $r, _r, m, n, ntz, s, s$1, shift, x, x$1, $s};return $f; + }; + shr = function shr$2(x, s) { + var ch, ch$1, d, d$1, d$2, mask, n, r, s, w, x, x$1, x$2, x$3, x$4, y, y$1, y$2, y$3, y$4, y$5; + r = 0; + n = 0; + while (true) { + if (!((((y = s, y < 32 ? (n >>> y) : 0) >>> 0) === 0) && r < x.mant.$length)) { break; } + ch = (((x$1 = x.mant, ((r < 0 || r >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + r])) >>> 0)); + r = r + (1) >> 0; + n = (($imul(n, 10) >>> 0) + ch >>> 0) - 48 >>> 0; + } + if (n === 0) { + x.mant = $subslice(x.mant, 0, 0); + return; + } + while (true) { + if (!(((y$1 = s, y$1 < 32 ? (n >>> y$1) : 0) >>> 0) === 0)) { break; } + r = r + (1) >> 0; + n = $imul(n, (10)) >>> 0; + } + x.exp = x.exp + ((1 - r >> 0)) >> 0; + w = 0; + mask = ((y$2 = s, y$2 < 32 ? (1 << y$2) : 0) >>> 0) - 1 >>> 0; + while (true) { + if (!(r < x.mant.$length)) { break; } + ch$1 = (((x$2 = x.mant, ((r < 0 || r >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + r])) >>> 0)); + r = r + (1) >> 0; + d = (y$3 = s, y$3 < 32 ? (n >>> y$3) : 0) >>> 0; + n = (n & (mask)) >>> 0; + (x$3 = x.mant, ((w < 0 || w >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + w] = (((d + 48 >>> 0) << 24 >>> 24)))); + w = w + (1) >> 0; + n = (($imul(n, 10) >>> 0) + ch$1 >>> 0) - 48 >>> 0; + } + while (true) { + if (!(n > 0 && w < x.mant.$length)) { break; } + d$1 = (y$4 = s, y$4 < 32 ? (n >>> y$4) : 0) >>> 0; + n = (n & (mask)) >>> 0; + (x$4 = x.mant, ((w < 0 || w >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + w] = (((d$1 + 48 >>> 0) << 24 >>> 24)))); + w = w + (1) >> 0; + n = $imul(n, 10) >>> 0; + } + x.mant = $subslice(x.mant, 0, w); + while (true) { + if (!(n > 0)) { break; } + d$2 = (y$5 = s, y$5 < 32 ? (n >>> y$5) : 0) >>> 0; + n = (n & (mask)) >>> 0; + x.mant = $append(x.mant, (((d$2 + 48 >>> 0) << 24 >>> 24))); + n = $imul(n, 10) >>> 0; + } + trim(x); + }; + $ptrType(decimal).prototype.String = function String$5() { + var buf, x; + x = this; + if (x.mant.$length === 0) { + return "0"; + } + buf = sliceType$1.nil; + if (x.exp <= 0) { + buf = $makeSlice(sliceType$1, 0, ((2 + (-x.exp) >> 0) + x.mant.$length >> 0)); + buf = $appendSlice(buf, "0."); + buf = appendZeros(buf, -x.exp); + buf = $appendSlice(buf, x.mant); + } else if (x.exp < x.mant.$length) { + buf = $makeSlice(sliceType$1, 0, (1 + x.mant.$length >> 0)); + buf = $appendSlice(buf, $subslice(x.mant, 0, x.exp)); + buf = $append(buf, 46); + buf = $appendSlice(buf, $subslice(x.mant, x.exp)); + } else { + buf = $makeSlice(sliceType$1, 0, x.exp); + buf = $appendSlice(buf, x.mant); + buf = appendZeros(buf, x.exp - x.mant.$length >> 0); + } + return ($bytesToString(buf)); + }; + appendZeros = function appendZeros$1(buf, n) { + var buf, n; + while (true) { + if (!(n > 0)) { break; } + buf = $append(buf, 48); + n = n - (1) >> 0; + } + return buf; + }; + shouldRoundUp = function shouldRoundUp$1(x, n) { + var n, x, x$1, x$2, x$3, x$4; + if (((x$1 = x.mant, ((n < 0 || n >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + n])) === 53) && ((n + 1 >> 0) === x.mant.$length)) { + return n > 0 && !(((((((x$2 = x.mant, x$3 = n - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])) - 48 << 24 >>> 24)) & 1) >>> 0) === 0)); + } + return (x$4 = x.mant, ((n < 0 || n >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + n])) >= 53; + }; + $ptrType(decimal).prototype.round = function round$1(n) { + var n, x; + x = this; + if (n < 0 || n >= x.mant.$length) { + return; + } + if (shouldRoundUp(x, n)) { + x.roundUp(n); + } else { + x.roundDown(n); + } + }; + $ptrType(decimal).prototype.roundUp = function roundUp(n) { + var _index, n, x, x$1, x$2, x$3, x$4, x$5; + x = this; + if (n < 0 || n >= x.mant.$length) { + return; + } + while (true) { + if (!(n > 0 && (x$1 = x.mant, x$2 = n - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) >= 57)) { break; } + n = n - (1) >> 0; + } + if (n === 0) { + (x$3 = x.mant, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0] = 49)); + x.mant = $subslice(x.mant, 0, 1); + x.exp = x.exp + (1) >> 0; + return; + } + _index = n - 1 >> 0; + (x$5 = x.mant, ((_index < 0 || _index >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + _index] = ((x$4 = x.mant, ((_index < 0 || _index >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + _index])) + (1) << 24 >>> 24))); + x.mant = $subslice(x.mant, 0, n); + }; + $ptrType(decimal).prototype.roundDown = function roundDown(n) { + var n, x; + x = this; + if (n < 0 || n >= x.mant.$length) { + return; + } + x.mant = $subslice(x.mant, 0, n); + trim(x); + }; + trim = function trim$1(x) { + var i, x, x$1, x$2; + i = x.mant.$length; + while (true) { + if (!(i > 0 && ((x$1 = x.mant, x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) === 48))) { break; } + i = i - (1) >> 0; + } + x.mant = $subslice(x.mant, 0, i); + if (i === 0) { + x.exp = 0; + } + }; + addVV = function addVV$1(z, x, y) { + var c, x, y, z; + c = 0; + c = addVV_g(z, x, y); + return c; + }; + subVV = function subVV$1(z, x, y) { + var c, x, y, z; + c = 0; + c = subVV_g(z, x, y); + return c; + }; + addVW = function addVW$1(z, x, y) { + var {$24r, _r, c, fn, x, y, z, $s, $r, $c} = $restore(this, {z, x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = 0; + fn = addVW_g; + if (z.$length > 32) { + fn = addVWlarge; + } + _r = fn(z, x, y); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + c = _r; + $24r = c; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: addVW$1, $c: true, $r, $24r, _r, c, fn, x, y, z, $s};return $f; + }; + subVW = function subVW$1(z, x, y) { + var {$24r, _r, c, fn, x, y, z, $s, $r, $c} = $restore(this, {z, x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = 0; + fn = subVW_g; + if (z.$length > 32) { + fn = subVWlarge; + } + _r = fn(z, x, y); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + c = _r; + $24r = c; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: subVW$1, $c: true, $r, $24r, _r, c, fn, x, y, z, $s};return $f; + }; + shlVU = function shlVU$1(z, x, s) { + var c, s, x, z; + c = 0; + c = shlVU_g(z, x, s); + return c; + }; + shrVU = function shrVU$1(z, x, s) { + var c, s, x, z; + c = 0; + c = shrVU_g(z, x, s); + return c; + }; + mulAddVWW = function mulAddVWW$1(z, x, y, r) { + var c, r, x, y, z; + c = 0; + c = mulAddVWW_g(z, x, y, r); + return c; + }; + addMulVVW = function addMulVVW$1(z, x, y) { + var c, x, y, z; + c = 0; + c = addMulVVW_g(z, x, y); + return c; + }; + mulWW = function mulWW$1(x, y) { + var _tmp, _tmp$1, _tuple, hi, lo, x, y, z0, z1; + z1 = 0; + z0 = 0; + _tuple = bits.Mul(((x >>> 0)), ((y >>> 0))); + hi = _tuple[0]; + lo = _tuple[1]; + _tmp = ((hi >>> 0)); + _tmp$1 = ((lo >>> 0)); + z1 = _tmp; + z0 = _tmp$1; + return [z1, z0]; + }; + mulAddWWW_g = function mulAddWWW_g$1(x, y, c) { + var _tmp, _tmp$1, _tuple, _tuple$1, c, cc, hi, lo, x, y, z0, z1; + z1 = 0; + z0 = 0; + _tuple = bits.Mul(((x >>> 0)), ((y >>> 0))); + hi = _tuple[0]; + lo = _tuple[1]; + cc = 0; + _tuple$1 = bits.Add(lo, ((c >>> 0)), 0); + lo = _tuple$1[0]; + cc = _tuple$1[1]; + _tmp = (((hi + cc >>> 0) >>> 0)); + _tmp$1 = ((lo >>> 0)); + z1 = _tmp; + z0 = _tmp$1; + return [z1, z0]; + }; + nlz = function nlz$1(x) { + var x; + return ((bits.LeadingZeros(((x >>> 0))) >>> 0)); + }; + addVV_g = function addVV_g$1(z, x, y) { + var _tuple, c, cc, i, x, y, z, zi; + c = 0; + i = 0; + while (true) { + if (!(i < z.$length && i < x.$length && i < y.$length)) { break; } + _tuple = bits.Add(((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0)), ((((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]) >>> 0)), ((c >>> 0))); + zi = _tuple[0]; + cc = _tuple[1]; + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((zi >>> 0))); + c = ((cc >>> 0)); + i = i + (1) >> 0; + } + return c; + }; + subVV_g = function subVV_g$1(z, x, y) { + var _tuple, c, cc, i, x, y, z, zi; + c = 0; + i = 0; + while (true) { + if (!(i < z.$length && i < x.$length && i < y.$length)) { break; } + _tuple = bits.Sub(((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0)), ((((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]) >>> 0)), ((c >>> 0))); + zi = _tuple[0]; + cc = _tuple[1]; + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((zi >>> 0))); + c = ((cc >>> 0)); + i = i + (1) >> 0; + } + return c; + }; + addVW_g = function addVW_g$1(z, x, y) { + var _tuple, c, cc, i, x, y, z, zi; + c = 0; + c = y; + i = 0; + while (true) { + if (!(i < z.$length && i < x.$length)) { break; } + _tuple = bits.Add(((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0)), ((c >>> 0)), 0); + zi = _tuple[0]; + cc = _tuple[1]; + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((zi >>> 0))); + c = ((cc >>> 0)); + i = i + (1) >> 0; + } + return c; + }; + addVWlarge = function addVWlarge$1(z, x, y) { + var _tuple, c, cc, i, x, y, z, zi; + c = 0; + c = y; + i = 0; + while (true) { + if (!(i < z.$length && i < x.$length)) { break; } + if (c === 0) { + $copySlice($subslice(z, i), $subslice(x, i)); + return c; + } + _tuple = bits.Add(((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0)), ((c >>> 0)), 0); + zi = _tuple[0]; + cc = _tuple[1]; + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((zi >>> 0))); + c = ((cc >>> 0)); + i = i + (1) >> 0; + } + return c; + }; + subVW_g = function subVW_g$1(z, x, y) { + var _tuple, c, cc, i, x, y, z, zi; + c = 0; + c = y; + i = 0; + while (true) { + if (!(i < z.$length && i < x.$length)) { break; } + _tuple = bits.Sub(((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0)), ((c >>> 0)), 0); + zi = _tuple[0]; + cc = _tuple[1]; + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((zi >>> 0))); + c = ((cc >>> 0)); + i = i + (1) >> 0; + } + return c; + }; + subVWlarge = function subVWlarge$1(z, x, y) { + var _tuple, c, cc, i, x, y, z, zi; + c = 0; + c = y; + i = 0; + while (true) { + if (!(i < z.$length && i < x.$length)) { break; } + if (c === 0) { + $copySlice($subslice(z, i), $subslice(x, i)); + return c; + } + _tuple = bits.Sub(((((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) >>> 0)), ((c >>> 0)), 0); + zi = _tuple[0]; + cc = _tuple[1]; + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((zi >>> 0))); + c = ((cc >>> 0)); + i = i + (1) >> 0; + } + return c; + }; + shlVU_g = function shlVU_g$1(z, x, s) { + var $C5$9D, c, i, s, x, x$1, x$2, y, y$1, y$2, y$3, z; + c = 0; + if (s === 0) { + $copySlice(z, x); + return c; + } + if (z.$length === 0) { + return c; + } + s = (s & (31)) >>> 0; + $C5$9D = 32 - s >>> 0; + $C5$9D = ($C5$9D & (31)) >>> 0; + c = (y = $C5$9D, y < 32 ? ((x$1 = z.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) >>> y) : 0) >>> 0; + i = z.$length - 1 >> 0; + while (true) { + if (!(i > 0)) { break; } + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = ((((y$1 = s, y$1 < 32 ? (((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) << y$1) : 0) >>> 0) | ((y$2 = $C5$9D, y$2 < 32 ? ((x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$2])) >>> y$2) : 0) >>> 0)) >>> 0)); + i = i - (1) >> 0; + } + (0 >= z.$length ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + 0] = ((y$3 = s, y$3 < 32 ? ((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]) << y$3) : 0) >>> 0)); + return c; + }; + shrVU_g = function shrVU_g$1(z, x, s) { + var $C5$9D, c, i, s, x, x$1, x$2, x$3, x$4, y, y$1, y$2, y$3, z; + c = 0; + if (s === 0) { + $copySlice(z, x); + return c; + } + if (z.$length === 0) { + return c; + } + if (!((x.$length === z.$length))) { + $panic(new $String("len(x) != len(z)")); + } + s = (s & (31)) >>> 0; + $C5$9D = 32 - s >>> 0; + $C5$9D = ($C5$9D & (31)) >>> 0; + c = (y = $C5$9D, y < 32 ? ((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]) << y) : 0) >>> 0; + i = 1; + while (true) { + if (!(i < z.$length)) { break; } + (x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$2] = ((((y$1 = s, y$1 < 32 ? ((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) >>> y$1) : 0) >>> 0) | ((y$2 = $C5$9D, y$2 < 32 ? (((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]) << y$2) : 0) >>> 0)) >>> 0))); + i = i + (1) >> 0; + } + (x$4 = z.$length - 1 >> 0, ((x$4 < 0 || x$4 >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + x$4] = ((y$3 = s, y$3 < 32 ? ((x$3 = z.$length - 1 >> 0, ((x$3 < 0 || x$3 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$3])) >>> y$3) : 0) >>> 0))); + return c; + }; + mulAddVWW_g = function mulAddVWW_g$1(z, x, y, r) { + var _tuple, c, i, r, x, y, z; + c = 0; + c = r; + i = 0; + while (true) { + if (!(i < z.$length && i < x.$length)) { break; } + _tuple = mulAddWWW_g(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), y, c); + c = _tuple[0]; + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tuple[1]); + i = i + (1) >> 0; + } + return c; + }; + addMulVVW_g = function addMulVVW_g$1(z, x, y) { + var _tmp, _tmp$1, _tuple, _tuple$1, c, cc, i, lo, x, y, z, z0, z1; + c = 0; + i = 0; + while (true) { + if (!(i < z.$length && i < x.$length)) { break; } + _tuple = mulAddWWW_g(((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), y, ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i])); + z1 = _tuple[0]; + z0 = _tuple[1]; + _tuple$1 = bits.Add(((z0 >>> 0)), ((c >>> 0)), 0); + lo = _tuple$1[0]; + cc = _tuple$1[1]; + _tmp = ((cc >>> 0)); + _tmp$1 = ((lo >>> 0)); + c = _tmp; + ((i < 0 || i >= z.$length) ? ($throwRuntimeError("index out of range"), undefined) : z.$array[z.$offset + i] = _tmp$1); + c = c + (z1) >>> 0; + i = i + (1) >> 0; + } + return c; + }; + divWW = function divWW$1(x1, x0, y, m) { + var _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, b, c, d, dq0, dq1, m, q, qq, r, r0, r1, s, t0, t1, x0, x1, y, y$1, y$2, y$3, y$4, y$5; + q = 0; + r = 0; + s = nlz(y); + if (!((s === 0))) { + x1 = (((y$1 = s, y$1 < 32 ? (x1 << y$1) : 0) >>> 0) | ((y$2 = ((32 - s >>> 0)), y$2 < 32 ? (x0 >>> y$2) : 0) >>> 0)) >>> 0; + x0 = (y$3 = (s), y$3 < 32 ? (x0 << y$3) : 0) >>> 0; + y = (y$4 = (s), y$4 < 32 ? (y << y$4) : 0) >>> 0; + } + d = ((y >>> 0)); + _tuple = bits.Mul(((m >>> 0)), ((x1 >>> 0))); + t1 = _tuple[0]; + t0 = _tuple[1]; + _tuple$1 = bits.Add(t0, ((x0 >>> 0)), 0); + c = _tuple$1[1]; + _tuple$2 = bits.Add(t1, ((x1 >>> 0)), c); + t1 = _tuple$2[0]; + qq = t1; + _tuple$3 = bits.Mul(d, qq); + dq1 = _tuple$3[0]; + dq0 = _tuple$3[1]; + _tuple$4 = bits.Sub(((x0 >>> 0)), dq0, 0); + r0 = _tuple$4[0]; + b = _tuple$4[1]; + _tuple$5 = bits.Sub(((x1 >>> 0)), dq1, b); + r1 = _tuple$5[0]; + if (!((r1 === 0))) { + qq = qq + (1) >>> 0; + r0 = r0 - (d) >>> 0; + } + if (r0 >= d) { + qq = qq + (1) >>> 0; + r0 = r0 - (d) >>> 0; + } + _tmp = ((qq >>> 0)); + _tmp$1 = ((((y$5 = s, y$5 < 32 ? (r0 >>> y$5) : 0) >>> 0) >>> 0)); + q = _tmp; + r = _tmp$1; + return [q, r]; + }; + reciprocalWord = function reciprocalWord$1(d1) { + var _tuple, d1, rec, u, x0, x1, y; + u = ((((y = nlz(d1), y < 32 ? (d1 << y) : 0) >>> 0) >>> 0)); + x1 = ~u >>> 0; + x0 = 4294967295; + _tuple = bits.Div(x1, x0, u); + rec = _tuple[0]; + return ((rec >>> 0)); + }; + Accuracy.prototype.String = function String$6() { + var i, x; + i = this.$val; + i = i - (-1) << 24 >> 24; + if (i < 0 || i >= 3) { + return "Accuracy(" + strconv.FormatInt((new $Int64(0, (i + -1 << 24 >> 24))), 10) + ")"; + } + return $substring("BelowExactAbove", ((i < 0 || i >= _Accuracy_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _Accuracy_index[i]), (x = i + 1 << 24 >> 24, ((x < 0 || x >= _Accuracy_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _Accuracy_index[x]))); + }; + $ptrType(Accuracy).prototype.String = function(...$args) { return new Accuracy(this.$get()).String(...$args); }; + ptrType$1.methods = [{prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "Scan", name: "Scan", pkg: "", typ: $funcType([fmt.ScanState, $Int32], [$error], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String], [ptrType$1, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "marshal", name: "marshal", pkg: "math/big", typ: $funcType([], [sliceType$1], false)}, {prop: "RatString", name: "RatString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "FloatString", name: "FloatString", pkg: "", typ: $funcType([$Int], [$String], false)}, {prop: "SetFloat64", name: "SetFloat64", pkg: "", typ: $funcType([$Float64], [ptrType$1], false)}, {prop: "Float32", name: "Float32", pkg: "", typ: $funcType([], [$Float32, $Bool], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([], [$Float64, $Bool], false)}, {prop: "SetFrac", name: "SetFrac", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$1], false)}, {prop: "SetFrac64", name: "SetFrac64", pkg: "", typ: $funcType([$Int64, $Int64], [ptrType$1], false)}, {prop: "SetInt", name: "SetInt", pkg: "", typ: $funcType([ptrType$2], [ptrType$1], false)}, {prop: "SetInt64", name: "SetInt64", pkg: "", typ: $funcType([$Int64], [ptrType$1], false)}, {prop: "SetUint64", name: "SetUint64", pkg: "", typ: $funcType([$Uint64], [ptrType$1], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Abs", name: "Abs", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Neg", name: "Neg", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Inv", name: "Inv", pkg: "", typ: $funcType([ptrType$1], [ptrType$1], false)}, {prop: "Sign", name: "Sign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "IsInt", name: "IsInt", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Num", name: "Num", pkg: "", typ: $funcType([], [ptrType$2], false)}, {prop: "Denom", name: "Denom", pkg: "", typ: $funcType([], [ptrType$2], false)}, {prop: "norm", name: "norm", pkg: "math/big", typ: $funcType([], [ptrType$1], false)}, {prop: "Cmp", name: "Cmp", pkg: "", typ: $funcType([ptrType$1], [$Int], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Mul", name: "Mul", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}, {prop: "Quo", name: "Quo", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1], false)}]; + nat.methods = [{prop: "probablyPrimeMillerRabin", name: "probablyPrimeMillerRabin", pkg: "math/big", typ: $funcType([$Int, $Bool], [$Bool], false)}, {prop: "probablyPrimeLucas", name: "probablyPrimeLucas", pkg: "math/big", typ: $funcType([], [$Bool], false)}, {prop: "rem", name: "rem", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "div", name: "div", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat, nat], false)}, {prop: "divW", name: "divW", pkg: "math/big", typ: $funcType([nat, Word], [nat, Word], false)}, {prop: "modW", name: "modW", pkg: "math/big", typ: $funcType([Word], [Word], false)}, {prop: "divLarge", name: "divLarge", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat, nat], false)}, {prop: "divBasic", name: "divBasic", pkg: "math/big", typ: $funcType([nat, nat], [], false)}, {prop: "divRecursive", name: "divRecursive", pkg: "math/big", typ: $funcType([nat, nat], [], false)}, {prop: "divRecursiveStep", name: "divRecursiveStep", pkg: "math/big", typ: $funcType([nat, nat, $Int, ptrType$3, sliceType$3], [], false)}, {prop: "scan", name: "scan", pkg: "math/big", typ: $funcType([io.ByteScanner, $Int, $Bool], [nat, $Int, $Int, $error], false)}, {prop: "utoa", name: "utoa", pkg: "math/big", typ: $funcType([$Int], [sliceType$1], false)}, {prop: "itoa", name: "itoa", pkg: "math/big", typ: $funcType([$Bool, $Int], [sliceType$1], false)}, {prop: "convertWords", name: "convertWords", pkg: "math/big", typ: $funcType([sliceType$1, Word, $Int, Word, sliceType$4], [], false)}, {prop: "expWW", name: "expWW", pkg: "math/big", typ: $funcType([Word, Word], [nat], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "clear", name: "clear", pkg: "math/big", typ: $funcType([], [], false)}, {prop: "norm", name: "norm", pkg: "math/big", typ: $funcType([], [nat], false)}, {prop: "make", name: "make", pkg: "math/big", typ: $funcType([$Int], [nat], false)}, {prop: "setWord", name: "setWord", pkg: "math/big", typ: $funcType([Word], [nat], false)}, {prop: "setUint64", name: "setUint64", pkg: "math/big", typ: $funcType([$Uint64], [nat], false)}, {prop: "set", name: "set", pkg: "math/big", typ: $funcType([nat], [nat], false)}, {prop: "add", name: "add", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "sub", name: "sub", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "cmp", name: "cmp", pkg: "math/big", typ: $funcType([nat], [$Int], false)}, {prop: "mulAddWW", name: "mulAddWW", pkg: "math/big", typ: $funcType([nat, Word, Word], [nat], false)}, {prop: "montgomery", name: "montgomery", pkg: "math/big", typ: $funcType([nat, nat, nat, Word, $Int], [nat], false)}, {prop: "mul", name: "mul", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "sqr", name: "sqr", pkg: "math/big", typ: $funcType([nat], [nat], false)}, {prop: "mulRange", name: "mulRange", pkg: "math/big", typ: $funcType([$Uint64, $Uint64], [nat], false)}, {prop: "bitLen", name: "bitLen", pkg: "math/big", typ: $funcType([], [$Int], false)}, {prop: "trailingZeroBits", name: "trailingZeroBits", pkg: "math/big", typ: $funcType([], [$Uint], false)}, {prop: "isPow2", name: "isPow2", pkg: "math/big", typ: $funcType([], [$Uint, $Bool], false)}, {prop: "shl", name: "shl", pkg: "math/big", typ: $funcType([nat, $Uint], [nat], false)}, {prop: "shr", name: "shr", pkg: "math/big", typ: $funcType([nat, $Uint], [nat], false)}, {prop: "setBit", name: "setBit", pkg: "math/big", typ: $funcType([nat, $Uint, $Uint], [nat], false)}, {prop: "bit", name: "bit", pkg: "math/big", typ: $funcType([$Uint], [$Uint], false)}, {prop: "sticky", name: "sticky", pkg: "math/big", typ: $funcType([$Uint], [$Uint], false)}, {prop: "and", name: "and", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "trunc", name: "trunc", pkg: "math/big", typ: $funcType([nat, $Uint], [nat], false)}, {prop: "andNot", name: "andNot", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "or", name: "or", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "xor", name: "xor", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "random", name: "random", pkg: "math/big", typ: $funcType([ptrType$5, nat, $Int], [nat], false)}, {prop: "expNN", name: "expNN", pkg: "math/big", typ: $funcType([nat, nat, nat, $Bool], [nat], false)}, {prop: "expNNMontgomeryEven", name: "expNNMontgomeryEven", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat], false)}, {prop: "expNNWindowed", name: "expNNWindowed", pkg: "math/big", typ: $funcType([nat, nat, $Uint], [nat], false)}, {prop: "expNNMontgomery", name: "expNNMontgomery", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat], false)}, {prop: "bytes", name: "bytes", pkg: "math/big", typ: $funcType([sliceType$1], [$Int], false)}, {prop: "setBytes", name: "setBytes", pkg: "math/big", typ: $funcType([sliceType$1], [nat], false)}, {prop: "sqrt", name: "sqrt", pkg: "math/big", typ: $funcType([nat], [nat], false)}, {prop: "subMod2N", name: "subMod2N", pkg: "math/big", typ: $funcType([nat, nat, $Uint], [nat], false)}, {prop: "modInverse", name: "modInverse", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}]; + byteReader.methods = [{prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}]; + ptrType$2.methods = [{prop: "scaleDenom", name: "scaleDenom", pkg: "math/big", typ: $funcType([ptrType$2, nat], [], false)}, {prop: "ProbablyPrime", name: "ProbablyPrime", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "MarshalJSON", name: "MarshalJSON", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "UnmarshalJSON", name: "UnmarshalJSON", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "Text", name: "Text", pkg: "", typ: $funcType([$Int], [$String], false)}, {prop: "Append", name: "Append", pkg: "", typ: $funcType([sliceType$1, $Int], [sliceType$1], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([fmt.State, $Int32], [], false)}, {prop: "scan", name: "scan", pkg: "math/big", typ: $funcType([io.ByteScanner, $Int], [ptrType$2, $Int, $error], false)}, {prop: "Scan", name: "Scan", pkg: "", typ: $funcType([fmt.ScanState, $Int32], [$error], false)}, {prop: "Sign", name: "Sign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetInt64", name: "SetInt64", pkg: "", typ: $funcType([$Int64], [ptrType$2], false)}, {prop: "SetUint64", name: "SetUint64", pkg: "", typ: $funcType([$Uint64], [ptrType$2], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([ptrType$2], [ptrType$2], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [sliceType$2], false)}, {prop: "SetBits", name: "SetBits", pkg: "", typ: $funcType([sliceType$2], [ptrType$2], false)}, {prop: "Abs", name: "Abs", pkg: "", typ: $funcType([ptrType$2], [ptrType$2], false)}, {prop: "Neg", name: "Neg", pkg: "", typ: $funcType([ptrType$2], [ptrType$2], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Mul", name: "Mul", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "MulRange", name: "MulRange", pkg: "", typ: $funcType([$Int64, $Int64], [ptrType$2], false)}, {prop: "Binomial", name: "Binomial", pkg: "", typ: $funcType([$Int64, $Int64], [ptrType$2], false)}, {prop: "Quo", name: "Quo", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Rem", name: "Rem", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "QuoRem", name: "QuoRem", pkg: "", typ: $funcType([ptrType$2, ptrType$2, ptrType$2], [ptrType$2, ptrType$2], false)}, {prop: "Div", name: "Div", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Mod", name: "Mod", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "DivMod", name: "DivMod", pkg: "", typ: $funcType([ptrType$2, ptrType$2, ptrType$2], [ptrType$2, ptrType$2], false)}, {prop: "Cmp", name: "Cmp", pkg: "", typ: $funcType([ptrType$2], [$Int], false)}, {prop: "CmpAbs", name: "CmpAbs", pkg: "", typ: $funcType([ptrType$2], [$Int], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "IsInt64", name: "IsInt64", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsUint64", name: "IsUint64", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String, $Int], [ptrType$2, $Bool], false)}, {prop: "setFromScanner", name: "setFromScanner", pkg: "math/big", typ: $funcType([io.ByteScanner, $Int], [ptrType$2, $Bool], false)}, {prop: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType$1], [ptrType$2], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "FillBytes", name: "FillBytes", pkg: "", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "BitLen", name: "BitLen", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "TrailingZeroBits", name: "TrailingZeroBits", pkg: "", typ: $funcType([], [$Uint], false)}, {prop: "Exp", name: "Exp", pkg: "", typ: $funcType([ptrType$2, ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "expSlow", name: "expSlow", pkg: "math/big", typ: $funcType([ptrType$2, ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "exp", name: "exp", pkg: "math/big", typ: $funcType([ptrType$2, ptrType$2, ptrType$2, $Bool], [ptrType$2], false)}, {prop: "GCD", name: "GCD", pkg: "", typ: $funcType([ptrType$2, ptrType$2, ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "lehmerGCD", name: "lehmerGCD", pkg: "math/big", typ: $funcType([ptrType$2, ptrType$2, ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Rand", name: "Rand", pkg: "", typ: $funcType([ptrType$5, ptrType$2], [ptrType$2], false)}, {prop: "ModInverse", name: "ModInverse", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "modSqrt3Mod4Prime", name: "modSqrt3Mod4Prime", pkg: "math/big", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "modSqrt5Mod8Prime", name: "modSqrt5Mod8Prime", pkg: "math/big", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "modSqrtTonelliShanks", name: "modSqrtTonelliShanks", pkg: "math/big", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "ModSqrt", name: "ModSqrt", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Lsh", name: "Lsh", pkg: "", typ: $funcType([ptrType$2, $Uint], [ptrType$2], false)}, {prop: "Rsh", name: "Rsh", pkg: "", typ: $funcType([ptrType$2, $Uint], [ptrType$2], false)}, {prop: "Bit", name: "Bit", pkg: "", typ: $funcType([$Int], [$Uint], false)}, {prop: "SetBit", name: "SetBit", pkg: "", typ: $funcType([ptrType$2, $Int, $Uint], [ptrType$2], false)}, {prop: "And", name: "And", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "AndNot", name: "AndNot", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Or", name: "Or", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Xor", name: "Xor", pkg: "", typ: $funcType([ptrType$2, ptrType$2], [ptrType$2], false)}, {prop: "Not", name: "Not", pkg: "", typ: $funcType([ptrType$2], [ptrType$2], false)}, {prop: "Sqrt", name: "Sqrt", pkg: "", typ: $funcType([ptrType$2], [ptrType$2], false)}]; + ptrType.methods = [{prop: "Sqrt", name: "Sqrt", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "sqrtInverse", name: "sqrtInverse", pkg: "math/big", typ: $funcType([ptrType], [], false)}, {prop: "Text", name: "Text", pkg: "", typ: $funcType([$Uint8, $Int], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Append", name: "Append", pkg: "", typ: $funcType([sliceType$1, $Uint8, $Int], [sliceType$1], false)}, {prop: "fmtB", name: "fmtB", pkg: "math/big", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "fmtX", name: "fmtX", pkg: "math/big", typ: $funcType([sliceType$1, $Int], [sliceType$1], false)}, {prop: "fmtP", name: "fmtP", pkg: "math/big", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([fmt.State, $Int32], [], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String], [ptrType, $Bool], false)}, {prop: "scan", name: "scan", pkg: "math/big", typ: $funcType([io.ByteScanner, $Int], [ptrType, $Int, $error], false)}, {prop: "pow5", name: "pow5", pkg: "math/big", typ: $funcType([$Uint64], [ptrType], false)}, {prop: "Parse", name: "Parse", pkg: "", typ: $funcType([$String, $Int], [ptrType, $Int, $error], false)}, {prop: "Scan", name: "Scan", pkg: "", typ: $funcType([fmt.ScanState, $Int32], [$error], false)}, {prop: "SetPrec", name: "SetPrec", pkg: "", typ: $funcType([$Uint], [ptrType], false)}, {prop: "SetMode", name: "SetMode", pkg: "", typ: $funcType([RoundingMode], [ptrType], false)}, {prop: "Prec", name: "Prec", pkg: "", typ: $funcType([], [$Uint], false)}, {prop: "MinPrec", name: "MinPrec", pkg: "", typ: $funcType([], [$Uint], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [RoundingMode], false)}, {prop: "Acc", name: "Acc", pkg: "", typ: $funcType([], [Accuracy], false)}, {prop: "Sign", name: "Sign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MantExp", name: "MantExp", pkg: "", typ: $funcType([ptrType], [$Int], false)}, {prop: "setExpAndRound", name: "setExpAndRound", pkg: "math/big", typ: $funcType([$Int64, $Uint], [], false)}, {prop: "SetMantExp", name: "SetMantExp", pkg: "", typ: $funcType([ptrType, $Int], [ptrType], false)}, {prop: "Signbit", name: "Signbit", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsInf", name: "IsInf", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsInt", name: "IsInt", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "validate", name: "validate", pkg: "math/big", typ: $funcType([], [], false)}, {prop: "round", name: "round", pkg: "math/big", typ: $funcType([$Uint], [], false)}, {prop: "setBits64", name: "setBits64", pkg: "math/big", typ: $funcType([$Bool, $Uint64], [ptrType], false)}, {prop: "SetUint64", name: "SetUint64", pkg: "", typ: $funcType([$Uint64], [ptrType], false)}, {prop: "SetInt64", name: "SetInt64", pkg: "", typ: $funcType([$Int64], [ptrType], false)}, {prop: "SetFloat64", name: "SetFloat64", pkg: "", typ: $funcType([$Float64], [ptrType], false)}, {prop: "SetInt", name: "SetInt", pkg: "", typ: $funcType([ptrType$2], [ptrType], false)}, {prop: "SetRat", name: "SetRat", pkg: "", typ: $funcType([ptrType$1], [ptrType], false)}, {prop: "SetInf", name: "SetInf", pkg: "", typ: $funcType([$Bool], [ptrType], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64, Accuracy], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64, Accuracy], false)}, {prop: "Float32", name: "Float32", pkg: "", typ: $funcType([], [$Float32, Accuracy], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([], [$Float64, Accuracy], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([ptrType$2], [ptrType$2, Accuracy], false)}, {prop: "Rat", name: "Rat", pkg: "", typ: $funcType([ptrType$1], [ptrType$1, Accuracy], false)}, {prop: "Abs", name: "Abs", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Neg", name: "Neg", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "uadd", name: "uadd", pkg: "math/big", typ: $funcType([ptrType, ptrType], [], false)}, {prop: "usub", name: "usub", pkg: "math/big", typ: $funcType([ptrType, ptrType], [], false)}, {prop: "umul", name: "umul", pkg: "math/big", typ: $funcType([ptrType, ptrType], [], false)}, {prop: "uquo", name: "uquo", pkg: "math/big", typ: $funcType([ptrType, ptrType], [], false)}, {prop: "ucmp", name: "ucmp", pkg: "math/big", typ: $funcType([ptrType], [$Int], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Mul", name: "Mul", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Quo", name: "Quo", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Cmp", name: "Cmp", pkg: "", typ: $funcType([ptrType], [$Int], false)}, {prop: "ord", name: "ord", pkg: "math/big", typ: $funcType([], [$Int], false)}]; + ErrNaN.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + RoundingMode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + Accuracy.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$6.methods = [{prop: "at", name: "at", pkg: "math/big", typ: $funcType([$Int], [$Uint8], false)}, {prop: "init", name: "init", pkg: "math/big", typ: $funcType([nat, $Int], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "round", name: "round", pkg: "math/big", typ: $funcType([$Int], [], false)}, {prop: "roundUp", name: "roundUp", pkg: "math/big", typ: $funcType([$Int], [], false)}, {prop: "roundDown", name: "roundDown", pkg: "math/big", typ: $funcType([$Int], [], false)}]; + Rat.init("math/big", [{prop: "a", name: "a", embedded: false, exported: false, typ: Int, tag: ""}, {prop: "b", name: "b", embedded: false, exported: false, typ: Int, tag: ""}]); + divisor.init("math/big", [{prop: "bbb", name: "bbb", embedded: false, exported: false, typ: nat, tag: ""}, {prop: "nbits", name: "nbits", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "ndigits", name: "ndigits", embedded: false, exported: false, typ: $Int, tag: ""}]); + nat.init(Word); + byteReader.init("", [{prop: "ScanState", name: "ScanState", embedded: true, exported: true, typ: fmt.ScanState, tag: ""}]); + Int.init("math/big", [{prop: "neg", name: "neg", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "abs", name: "abs", embedded: false, exported: false, typ: nat, tag: ""}]); + Float.init("math/big", [{prop: "prec", name: "prec", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "mode", name: "mode", embedded: false, exported: false, typ: RoundingMode, tag: ""}, {prop: "acc", name: "acc", embedded: false, exported: false, typ: Accuracy, tag: ""}, {prop: "form", name: "form", embedded: false, exported: false, typ: form, tag: ""}, {prop: "neg", name: "neg", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "mant", name: "mant", embedded: false, exported: false, typ: nat, tag: ""}, {prop: "exp", name: "exp", embedded: false, exported: false, typ: $Int32, tag: ""}]); + ErrNaN.init("math/big", [{prop: "msg", name: "msg", embedded: false, exported: false, typ: $String, tag: ""}]); + decimal.init("math/big", [{prop: "mant", name: "mant", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "exp", name: "exp", embedded: false, exported: false, typ: $Int, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = nosync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bits.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = rand.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + threeOnce = new structType.ptr(new nosync.Once.ptr(false, false), ptrType.nil); + cacheBase10 = new structType$1.ptr(new nosync.Mutex.ptr(false, false, false, false, 0), arrayType.zero()); + natPool = new nosync.Pool.ptr(sliceType.nil, $throwNilPointerError); + _RoundingMode_index = $toNativeArray($kindUint8, [0, 13, 26, 32, 44, 57, 70]); + errNoDigits = errors.New("number has no digits"); + errInvalSep = errors.New("'_' must separate successive digits"); + leafSize = 8; + natOne = new nat([1]); + natTwo = new nat([2]); + natFive = new nat([5]); + natTen = new nat([10]); + karatsubaThreshold = 40; + basicSqrThreshold = 20; + karatsubaSqrThreshold = 260; + intOne = new Int.ptr(false, natOne); + pow5tab = $toNativeArray($kindUint64, [new $Uint64(0, 1), new $Uint64(0, 5), new $Uint64(0, 25), new $Uint64(0, 125), new $Uint64(0, 625), new $Uint64(0, 3125), new $Uint64(0, 15625), new $Uint64(0, 78125), new $Uint64(0, 390625), new $Uint64(0, 1953125), new $Uint64(0, 9765625), new $Uint64(0, 48828125), new $Uint64(0, 244140625), new $Uint64(0, 1220703125), new $Uint64(1, 1808548329), new $Uint64(7, 452807053), new $Uint64(35, 2264035265), new $Uint64(177, 2730241733), new $Uint64(888, 766306777), new $Uint64(4440, 3831533885), new $Uint64(22204, 1977800241), new $Uint64(111022, 1299066613), new $Uint64(555111, 2200365769), new $Uint64(2775557, 2411894253), new $Uint64(13877787, 3469536673), new $Uint64(69388939, 167814181), new $Uint64(346944695, 839070905), new $Uint64(1734723475, 4195354525)]); + _Accuracy_index = $toNativeArray($kindUint8, [0, 5, 10, 15]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["go/constant"] = (function() { + var $pkg = {}, $init, fmt, token, math, big, bits, strconv, strings, sync, utf8, Kind, Value, unknownVal, boolVal, stringVal, int64Val, intVal, ratVal, floatVal, complexVal, ptrType, sliceType, sliceType$1, ptrType$1, ptrType$2, ptrType$3, emptyString, emptyString$24ptr, floatVal0, _r, _Kind_index, reverse, newInt, newRat, newFloat, i64toi, i64tor, i64tof, itor, itof, rtof, vtoc, makeInt, makeRat, makeFloat, makeComplex, makeFloatFromLiteral, smallInt, smallFloat64, smallFloat, MakeUnknown, MakeBool, MakeString, MakeInt64, MakeFloat64, MakeFromLiteral, BoolVal, StringVal, Int64Val, Uint64Val, Float32Val, Float64Val, BitLen, Sign, MakeImag, Real, Imag, ToInt, ToFloat, ToComplex, is32bit, is63bit, UnaryOp, ord, match, match0, BinaryOp, add, sub, mul, quo, Shift, cmpZero, Compare; + fmt = $packages["fmt"]; + token = $packages["go/token"]; + math = $packages["math"]; + big = $packages["math/big"]; + bits = $packages["math/bits"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + sync = $packages["sync"]; + utf8 = $packages["unicode/utf8"]; + Kind = $newType(4, $kindInt, "constant.Kind", true, "go/constant", true, null); + Value = $newType(8, $kindInterface, "constant.Value", true, "go/constant", true, null); + unknownVal = $newType(0, $kindStruct, "constant.unknownVal", true, "go/constant", false, function() { this.$val = this; }); + boolVal = $newType(1, $kindBool, "constant.boolVal", true, "go/constant", false, null); + stringVal = $newType(0, $kindStruct, "constant.stringVal", true, "go/constant", false, function(mu_, s_, l_, r_) { + this.$val = this; + if (arguments.length === 0) { + this.mu = new sync.Mutex.ptr(0, 0); + this.s = ""; + this.l = ptrType.nil; + this.r = ptrType.nil; + return; + } + this.mu = mu_; + this.s = s_; + this.l = l_; + this.r = r_; + }); + int64Val = $newType(8, $kindInt64, "constant.int64Val", true, "go/constant", false, null); + intVal = $newType(0, $kindStruct, "constant.intVal", true, "go/constant", false, function(val_) { + this.$val = this; + if (arguments.length === 0) { + this.val = ptrType$2.nil; + return; + } + this.val = val_; + }); + ratVal = $newType(0, $kindStruct, "constant.ratVal", true, "go/constant", false, function(val_) { + this.$val = this; + if (arguments.length === 0) { + this.val = ptrType$3.nil; + return; + } + this.val = val_; + }); + floatVal = $newType(0, $kindStruct, "constant.floatVal", true, "go/constant", false, function(val_) { + this.$val = this; + if (arguments.length === 0) { + this.val = ptrType$1.nil; + return; + } + this.val = val_; + }); + complexVal = $newType(0, $kindStruct, "constant.complexVal", true, "go/constant", false, function(re_, im_) { + this.$val = this; + if (arguments.length === 0) { + this.re = $ifaceNil; + this.im = $ifaceNil; + return; + } + this.re = re_; + this.im = im_; + }); + $pkg.Kind = Kind; + $pkg.Value = Value; + $pkg.unknownVal = unknownVal; + $pkg.boolVal = boolVal; + $pkg.stringVal = stringVal; + $pkg.int64Val = int64Val; + $pkg.intVal = intVal; + $pkg.ratVal = ratVal; + $pkg.floatVal = floatVal; + $pkg.complexVal = complexVal; + $pkg.$finishSetup = function() { + ptrType = $ptrType(stringVal); + sliceType = $sliceType($String); + sliceType$1 = $sliceType($emptyInterface); + ptrType$1 = $ptrType(big.Float); + ptrType$2 = $ptrType(big.Int); + ptrType$3 = $ptrType(big.Rat); + $ptrType(unknownVal).prototype.Kind = function Kind$1() { + return 0; + }; + unknownVal.prototype.Kind = function(...$args) { return this.$val.Kind(...$args); }; + boolVal.prototype.Kind = function Kind$2() { + return 1; + }; + $ptrType(boolVal).prototype.Kind = function(...$args) { return new boolVal(this.$get()).Kind(...$args); }; + $ptrType(stringVal).prototype.Kind = function Kind$3() { + return 2; + }; + int64Val.prototype.Kind = function Kind$4() { + return 3; + }; + $ptrType(int64Val).prototype.Kind = function(...$args) { return this.$get().Kind(...$args); }; + $ptrType(intVal).prototype.Kind = function Kind$5() { + return 3; + }; + intVal.prototype.Kind = function(...$args) { return this.$val.Kind(...$args); }; + $ptrType(ratVal).prototype.Kind = function Kind$6() { + return 4; + }; + ratVal.prototype.Kind = function(...$args) { return this.$val.Kind(...$args); }; + $ptrType(floatVal).prototype.Kind = function Kind$7() { + return 4; + }; + floatVal.prototype.Kind = function(...$args) { return this.$val.Kind(...$args); }; + $ptrType(complexVal).prototype.Kind = function Kind$8() { + return 5; + }; + complexVal.prototype.Kind = function(...$args) { return this.$val.Kind(...$args); }; + $ptrType(unknownVal).prototype.String = function String() { + return "unknown"; + }; + unknownVal.prototype.String = function(...$args) { return this.$val.String(...$args); }; + boolVal.prototype.String = function String$1() { + var x; + x = this.$val; + return strconv.FormatBool((x)); + }; + $ptrType(boolVal).prototype.String = function(...$args) { return new boolVal(this.$get()).String(...$args); }; + $ptrType(stringVal).prototype.String = function String$2() { + var {_r$1, _r$2, _tuple, i, n, s, size, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r$1 = x.string(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = strconv.Quote(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + s = _r$2; + if (utf8.RuneCountInString(s) > 72) { + i = 0; + n = 0; + while (true) { + if (!(n < 69)) { break; } + _tuple = utf8.DecodeRuneInString($substring(s, i)); + size = _tuple[1]; + i = i + (size) >> 0; + n = n + (1) >> 0; + } + s = $substring(s, 0, i) + "..."; + } + $s = -1; return s; + /* */ } return; } var $f = {$blk: String$2, $c: true, $r, _r$1, _r$2, _tuple, i, n, s, size, x, $s};return $f; + }; + $ptrType(stringVal).prototype.string = function string() { + var {_r$1, _r$2, _r$3, s, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + $r = x.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(x.l === ptrType.nil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(x.l === ptrType.nil)) { */ case 2: + _r$1 = x.appendReverse(sliceType.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = reverse(_r$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = strings.Join(_r$2, ""); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + x.s = _r$3; + x.l = ptrType.nil; + x.r = ptrType.nil; + /* } */ case 3: + s = x.s; + $r = x.mu.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return s; + /* */ } return; } var $f = {$blk: string, $c: true, $r, _r$1, _r$2, _r$3, s, x, $s};return $f; + }; + reverse = function reverse$1(x) { + var _tmp, _tmp$1, i, n, x, x$1, x$2; + n = x.$length; + i = 0; + while (true) { + if (!((i + i >> 0) < n)) { break; } + _tmp = (x$1 = (n - 1 >> 0) - i >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + _tmp$1 = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]); + ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = _tmp); + (x$2 = (n - 1 >> 0) - i >> 0, ((x$2 < 0 || x$2 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$2] = _tmp$1)); + i = i + (1) >> 0; + } + return x; + }; + $ptrType(stringVal).prototype.appendReverse = function appendReverse(list) { + var {_r$1, l, list, s, x, y, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + y = x; + /* while (true) { */ case 1: + /* if (!(!(y.r === ptrType.nil))) { break; } */ if(!(!(y.r === ptrType.nil))) { $s = 2; continue; } + $r = y.r.mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = y.r.appendReverse(list); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + list = _r$1; + $r = y.r.mu.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + l = y.l; + /* */ if (!(y === x)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(y === x)) { */ case 6: + $r = y.mu.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + $r = l.mu.Lock(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + y = l; + $s = 1; continue; + case 2: + s = y.s; + /* */ if (!(y === x)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!(y === x)) { */ case 10: + $r = y.mu.Unlock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + $s = -1; return $append(list, s); + /* */ } return; } var $f = {$blk: appendReverse, $c: true, $r, _r$1, l, list, s, x, y, $s};return $f; + }; + int64Val.prototype.String = function String$3() { + var x; + x = this; + return strconv.FormatInt((new $Int64(x.$high, x.$low)), 10); + }; + $ptrType(int64Val).prototype.String = function(...$args) { return this.$get().String(...$args); }; + $ptrType(intVal).prototype.String = function String$4() { + var {$24r, _r$1, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r$1 = x.val.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$4, $c: true, $r, $24r, _r$1, x, $s};return $f; + }; + intVal.prototype.String = function(...$args) { return this.$val.String(...$args); }; + $ptrType(ratVal).prototype.String = function String$5() { + var {$24r, _r$1, _r$2, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r$1 = rtof($clone(x, ratVal)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = $clone(_r$1, floatVal).String(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: String$5, $c: true, $r, $24r, _r$1, _r$2, x, $s};return $f; + }; + ratVal.prototype.String = function(...$args) { return this.$val.String(...$args); }; + $ptrType(floatVal).prototype.String = function String$6() { + var {$24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, am, d, e, exp, f, m, mant, s, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + mant = [mant]; + x = this; + f = x.val; + /* */ if (f.IsInf()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (f.IsInf()) { */ case 1: + _r$1 = f.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$2 = f.Float64(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + x$1 = _tuple[0]; + _r$3 = f.Sign(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if ((_r$3 === 0) === ((x$1 === 0)) && !math.IsInf(x$1, 0)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((_r$3 === 0) === ((x$1 === 0)) && !math.IsInf(x$1, 0)) { */ case 6: + _r$4 = fmt.Sprintf("%.6g", new sliceType$1([new $Float64(x$1)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + s = _r$4; + _r$5 = f.IsInt(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5 && strings.IndexByte(s, 46) < 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!_r$5 && strings.IndexByte(s, 46) < 0) { */ case 10: + _r$6 = fmt.Sprintf("%g", new sliceType$1([new $Float64(x$1)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + s = _r$6; + /* } */ case 11: + $s = -1; return s; + /* } */ case 7: + mant[0] = new big.Float.ptr(0, 0, 0, 0, false, big.nat.nil, 0); + _r$7 = f.MantExp(mant[0]); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + exp = _r$7; + _r$8 = mant[0].Float64(); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tuple$1 = _r$8; + m = _tuple$1[0]; + d = (exp) * 0.3010299956639812; + e = (new $Int64(0, d)); + m = m * (math.Pow(10, d - ($flatten64(e)))); + am = math.Abs(m); + if (am < 0.9999995) { + m = m * (10); + e = (x$2 = new $Int64(0, 1), new $Int64(e.$high - x$2.$high, e.$low - x$2.$low)); + } else if (am >= 10) { + m = m / (10); + e = (x$3 = new $Int64(0, 1), new $Int64(e.$high + x$3.$high, e.$low + x$3.$low)); + } + _r$9 = fmt.Sprintf("%.6ge%+d", new sliceType$1([new $Float64(m), e])); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $24r$1 = _r$9; + $s = 17; case 17: return $24r$1; + /* */ } return; } var $f = {$blk: String$6, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, am, d, e, exp, f, m, mant, s, x, x$1, x$2, x$3, $s};return $f; + }; + floatVal.prototype.String = function(...$args) { return this.$val.String(...$args); }; + $ptrType(complexVal).prototype.String = function String$7() { + var {$24r, _r$1, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r$1 = fmt.Sprintf("(%s + %si)", new sliceType$1([x.re, x.im])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$7, $c: true, $r, $24r, _r$1, x, $s};return $f; + }; + complexVal.prototype.String = function(...$args) { return this.$val.String(...$args); }; + $ptrType(unknownVal).prototype.ExactString = function ExactString() { + var x; + x = this; + return $clone(x, unknownVal).String(); + }; + unknownVal.prototype.ExactString = function(...$args) { return this.$val.ExactString(...$args); }; + boolVal.prototype.ExactString = function ExactString$1() { + var x; + x = this.$val; + return new boolVal(x).String(); + }; + $ptrType(boolVal).prototype.ExactString = function(...$args) { return new boolVal(this.$get()).ExactString(...$args); }; + $ptrType(stringVal).prototype.ExactString = function ExactString$2() { + var {$24r, _r$1, _r$2, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r$1 = x.string(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = strconv.Quote(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: ExactString$2, $c: true, $r, $24r, _r$1, _r$2, x, $s};return $f; + }; + int64Val.prototype.ExactString = function ExactString$3() { + var x; + x = this; + return x.String(); + }; + $ptrType(int64Val).prototype.ExactString = function(...$args) { return this.$get().ExactString(...$args); }; + $ptrType(intVal).prototype.ExactString = function ExactString$4() { + var {$24r, _r$1, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r$1 = $clone(x, intVal).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ExactString$4, $c: true, $r, $24r, _r$1, x, $s};return $f; + }; + intVal.prototype.ExactString = function(...$args) { return this.$val.ExactString(...$args); }; + $ptrType(ratVal).prototype.ExactString = function ExactString$5() { + var {$24r, $24r$1, _r$1, _r$2, r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + r = x.val; + /* */ if (r.IsInt()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (r.IsInt()) { */ case 1: + _r$1 = r.Num().String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$2 = r.String(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = _r$2; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: ExactString$5, $c: true, $r, $24r, $24r$1, _r$1, _r$2, r, x, $s};return $f; + }; + ratVal.prototype.ExactString = function(...$args) { return this.$val.ExactString(...$args); }; + $ptrType(floatVal).prototype.ExactString = function ExactString$6() { + var {$24r, _r$1, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r$1 = x.val.Text(112, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ExactString$6, $c: true, $r, $24r, _r$1, x, $s};return $f; + }; + floatVal.prototype.ExactString = function(...$args) { return this.$val.ExactString(...$args); }; + $ptrType(complexVal).prototype.ExactString = function ExactString$7() { + var {$24r, _arg, _arg$1, _r$1, _r$2, _r$3, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r$1 = x.re.ExactString(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = new $String(_r$1); + _r$2 = x.im.ExactString(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$2); + _r$3 = fmt.Sprintf("(%s + %si)", new sliceType$1([_arg, _arg$1])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: ExactString$7, $c: true, $r, $24r, _arg, _arg$1, _r$1, _r$2, _r$3, x, $s};return $f; + }; + complexVal.prototype.ExactString = function(...$args) { return this.$val.ExactString(...$args); }; + newInt = function newInt$1() { + return new big.Int.ptr(false, big.nat.nil); + }; + newRat = function newRat$1() { + return new big.Rat.ptr(new big.Int.ptr(false, big.nat.nil), new big.Int.ptr(false, big.nat.nil)); + }; + newFloat = function newFloat$1() { + var {$24r, _r$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = new big.Float.ptr(0, 0, 0, 0, false, big.nat.nil, 0).SetPrec(512); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: newFloat$1, $c: true, $r, $24r, _r$1, $s};return $f; + }; + i64toi = function i64toi$1(x) { + var x; + return new intVal.ptr(newInt().SetInt64((new $Int64(x.$high, x.$low)))); + }; + i64tor = function i64tor$1(x) { + var x; + return new ratVal.ptr(newRat().SetInt64((new $Int64(x.$high, x.$low)))); + }; + i64tof = function i64tof$1(x) { + var {$24r, _r$1, _r$2, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = newFloat(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.SetInt64((new $Int64(x.$high, x.$low))); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = new floatVal.ptr(_r$2); + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: i64tof$1, $c: true, $r, $24r, _r$1, _r$2, x, $s};return $f; + }; + itor = function itor$1(x) { + var x; + return new ratVal.ptr(newRat().SetInt(x.val)); + }; + itof = function itof$1(x) { + var {$24r, _r$1, _r$2, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = newFloat(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.SetInt(x.val); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = new floatVal.ptr(_r$2); + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: itof$1, $c: true, $r, $24r, _r$1, _r$2, x, $s};return $f; + }; + rtof = function rtof$1(x) { + var {$24r, _r$1, _r$2, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = newFloat(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.SetRat(x.val); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = new floatVal.ptr(_r$2); + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: rtof$1, $c: true, $r, $24r, _r$1, _r$2, x, $s};return $f; + }; + vtoc = function vtoc$1(x) { + var x; + return new complexVal.ptr(x, new int64Val(0, 0)); + }; + makeInt = function makeInt$1(x) { + var x, x$1, x$2; + if (x.IsInt64()) { + return ((x$1 = x.Int64(), new int64Val(x$1.$high, x$1.$low))); + } + return (x$2 = new intVal.ptr(x), new x$2.constructor.elem(x$2)); + }; + makeRat = function makeRat$1(x) { + var {$24r, _r$1, _r$2, a, b, x, x$1, x$2, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = x.Num(); + b = x.Denom(); + if (smallInt(a) && smallInt(b)) { + $s = -1; return (x$1 = new ratVal.ptr(x), new x$1.constructor.elem(x$1)); + } + _r$1 = newFloat(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.SetRat(x); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = (x$2 = new floatVal.ptr(_r$2), new x$2.constructor.elem(x$2)); + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: makeRat$1, $c: true, $r, $24r, _r$1, _r$2, a, b, x, x$1, x$2, $s};return $f; + }; + makeFloat = function makeFloat$1(x) { + var {_r$1, x, x$1, x$2, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = x.Sign(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1 === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r$1 === 0) { */ case 1: + $s = -1; return new floatVal0.constructor.elem(floatVal0); + /* } */ case 2: + if (x.IsInf()) { + $s = -1; return (x$1 = new unknownVal.ptr(), new x$1.constructor.elem(x$1)); + } + $s = -1; return (x$2 = new floatVal.ptr(x), new x$2.constructor.elem(x$2)); + /* */ } return; } var $f = {$blk: makeFloat$1, $c: true, $r, _r$1, x, x$1, x$2, $s};return $f; + }; + makeComplex = function makeComplex$1(re, im) { + var {_r$1, _r$2, _v, im, re, x, x$1, $s, $r, $c} = $restore(this, {re, im}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = re.Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (_r$1 === 0) { _v = true; $s = 3; continue s; } + _r$2 = im.Kind(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2 === 0; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return (x = new unknownVal.ptr(), new x.constructor.elem(x)); + /* } */ case 2: + $s = -1; return (x$1 = new complexVal.ptr(re, im), new x$1.constructor.elem(x$1)); + /* */ } return; } var $f = {$blk: makeComplex$1, $c: true, $r, _r$1, _r$2, _v, im, re, x, x$1, $s};return $f; + }; + makeFloatFromLiteral = function makeFloatFromLiteral$1(lit) { + var {$24r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, f, lit, ok, ok$1, r, x, $s, $r, $c} = $restore(this, {lit}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = newFloat(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.SetString(lit); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + f = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (ok) { */ case 3: + _r$3 = smallFloat(f); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r$3) { */ case 5: + _r$4 = f.Sign(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4 === 0) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_r$4 === 0) { */ case 8: + lit = "0"; + /* } */ case 9: + _r$5 = newRat().SetString(lit); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$1 = _r$5; + r = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + $s = -1; return (x = new ratVal.ptr(r), new x.constructor.elem(x)); + } + /* } */ case 6: + _r$6 = makeFloat(f); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r = _r$6; + $s = 13; case 13: return $24r; + /* } */ case 4: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: makeFloatFromLiteral$1, $c: true, $r, $24r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, f, lit, ok, ok$1, r, x, $s};return $f; + }; + smallInt = function smallInt$1(x) { + var x; + return x.BitLen() < 4096; + }; + smallFloat64 = function smallFloat64$1(x) { + var _tuple, e, x; + if (math.IsInf(x, 0)) { + return false; + } + _tuple = math.Frexp(x); + e = _tuple[1]; + return -4096 < e && e < 4096; + }; + smallFloat = function smallFloat$1(x) { + var {_r$1, e, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (x.IsInf()) { + $s = -1; return false; + } + _r$1 = x.MantExp(ptrType$1.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + e = _r$1; + $s = -1; return -4096 < e && e < 4096; + /* */ } return; } var $f = {$blk: smallFloat$1, $c: true, $r, _r$1, e, x, $s};return $f; + }; + MakeUnknown = function MakeUnknown$1() { + var x; + return (x = new unknownVal.ptr(), new x.constructor.elem(x)); + }; + $pkg.MakeUnknown = MakeUnknown; + MakeBool = function MakeBool$1(b) { + var b; + return new boolVal((b)); + }; + $pkg.MakeBool = MakeBool; + MakeString = function MakeString$1(s) { + var s; + if (s === "") { + return emptyString; + } + return new stringVal.ptr(new sync.Mutex.ptr(0, 0), s, ptrType.nil, ptrType.nil); + }; + $pkg.MakeString = MakeString; + MakeInt64 = function MakeInt64$1(x) { + var x; + return (new int64Val(x.$high, x.$low)); + }; + $pkg.MakeInt64 = MakeInt64; + MakeFloat64 = function MakeFloat64$1(x) { + var {$24r, $24r$1, _r$1, _r$2, _r$3, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (math.IsInf(x, 0) || math.IsNaN(x)) { + $s = -1; return (x$1 = new unknownVal.ptr(), new x$1.constructor.elem(x$1)); + } + /* */ if (smallFloat64(x)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (smallFloat64(x)) { */ case 1: + _r$1 = newRat().SetFloat64(x + 0); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = (x$2 = new ratVal.ptr(_r$1), new x$2.constructor.elem(x$2)); + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$2 = newFloat(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.SetFloat64(x + 0); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = (x$3 = new floatVal.ptr(_r$3), new x$3.constructor.elem(x$3)); + $s = 7; case 7: return $24r$1; + /* */ } return; } var $f = {$blk: MakeFloat64$1, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, x, x$1, x$2, x$3, $s};return $f; + }; + $pkg.MakeFloat64 = MakeFloat64; + MakeFromLiteral = function MakeFromLiteral$1(lit, tok, zero) { + var {$24r, _1, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _tuple$3, code, err, err$1, err$2, im, lit, n, n$1, ok, s, tok, x, x$1, x$2, x$3, x$4, zero, $s, $r, $c} = $restore(this, {lit, tok, zero}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!((zero === 0))) { + $panic(new $String("MakeFromLiteral called with non-zero last argument")); + } + _1 = tok; + /* */ if (_1 === (5)) { $s = 2; continue; } + /* */ if (_1 === (6)) { $s = 3; continue; } + /* */ if (_1 === (7)) { $s = 4; continue; } + /* */ if (_1 === (8)) { $s = 5; continue; } + /* */ if (_1 === (9)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_1 === (5)) { */ case 2: + _tuple = strconv.ParseInt(lit, 0, 64); + x = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil)) { + $s = -1; return (new int64Val(x.$high, x.$low)); + } + _r$1 = newInt().SetString(lit, 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + x$1 = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok) { + $s = -1; return (x$2 = new intVal.ptr(x$1), new x$2.constructor.elem(x$2)); + } + $s = 8; continue; + /* } else if (_1 === (6)) { */ case 3: + _r$2 = makeFloatFromLiteral(lit); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x$3 = _r$2; + if (!($interfaceIsEqual(x$3, $ifaceNil))) { + $s = -1; return x$3; + } + $s = 8; continue; + /* } else if (_1 === (7)) { */ case 4: + n = lit.length; + /* */ if (n > 0 && (lit.charCodeAt((n - 1 >> 0)) === 105)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (n > 0 && (lit.charCodeAt((n - 1 >> 0)) === 105)) { */ case 11: + _r$3 = makeFloatFromLiteral($substring(lit, 0, (n - 1 >> 0))); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + im = _r$3; + /* */ if (!($interfaceIsEqual(im, $ifaceNil))) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!($interfaceIsEqual(im, $ifaceNil))) { */ case 14: + _r$4 = makeComplex(new int64Val(0, 0), im); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 17; case 17: return $24r; + /* } */ case 15: + /* } */ case 12: + $s = 8; continue; + /* } else if (_1 === (8)) { */ case 5: + n$1 = lit.length; + if (n$1 >= 2) { + _tuple$2 = strconv.UnquoteChar($substring(lit, 1, (n$1 - 1 >> 0)), 39); + code = _tuple$2[0]; + err$1 = _tuple$2[3]; + if ($interfaceIsEqual(err$1, $ifaceNil)) { + $s = -1; return MakeInt64((new $Int64(0, code))); + } + } + $s = 8; continue; + /* } else if (_1 === (9)) { */ case 6: + _tuple$3 = strconv.Unquote(lit); + s = _tuple$3[0]; + err$2 = _tuple$3[1]; + if ($interfaceIsEqual(err$2, $ifaceNil)) { + $s = -1; return MakeString(s); + } + $s = 8; continue; + /* } else { */ case 7: + _r$5 = fmt.Sprintf("%v is not a valid token", new sliceType$1([new token.Token(tok)])); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $panic(new $String(_r$5)); + /* } */ case 8: + case 1: + $s = -1; return (x$4 = new unknownVal.ptr(), new x$4.constructor.elem(x$4)); + /* */ } return; } var $f = {$blk: MakeFromLiteral$1, $c: true, $r, $24r, _1, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _tuple$3, code, err, err$1, err$2, im, lit, n, n$1, ok, s, tok, x, x$1, x$2, x$3, x$4, zero, $s};return $f; + }; + $pkg.MakeFromLiteral = MakeFromLiteral; + BoolVal = function BoolVal$1(x) { + var {_r$1, _ref, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, boolVal, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, boolVal, true)[1]) { */ case 1: + x$1 = _ref.$val; + $s = -1; return (x$1); + /* } else if ($assertType(_ref, unknownVal, true)[1]) { */ case 2: + x$2 = $clone(_ref.$val, unknownVal); + $s = -1; return false; + /* } else { */ case 3: + x$3 = _ref; + _r$1 = fmt.Sprintf("%v not a Bool", new sliceType$1([x$3])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 4: + $s = -1; return false; + /* */ } return; } var $f = {$blk: BoolVal$1, $c: true, $r, _r$1, _ref, x, x$1, x$2, x$3, $s};return $f; + }; + $pkg.BoolVal = BoolVal; + StringVal = function StringVal$1(x) { + var {$24r, _r$1, _r$2, _ref, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, ptrType, true)[1]) { */ case 1: + x$1 = _ref.$val; + _r$1 = x$1.string(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 6; case 6: return $24r; + /* } else if ($assertType(_ref, unknownVal, true)[1]) { */ case 2: + x$2 = $clone(_ref.$val, unknownVal); + $s = -1; return ""; + /* } else { */ case 3: + x$3 = _ref; + _r$2 = fmt.Sprintf("%v not a String", new sliceType$1([x$3])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $panic(new $String(_r$2)); + /* } */ case 4: + $s = -1; return ""; + /* */ } return; } var $f = {$blk: StringVal$1, $c: true, $r, $24r, _r$1, _r$2, _ref, x, x$1, x$2, x$3, $s};return $f; + }; + $pkg.StringVal = StringVal; + Int64Val = function Int64Val$1(x) { + var {_r$1, _ref, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, int64Val, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, intVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref, int64Val, true)[1]) { */ case 1: + x$1 = _ref.$val; + $s = -1; return [(new $Int64(x$1.$high, x$1.$low)), true]; + /* } else if ($assertType(_ref, intVal, true)[1]) { */ case 2: + x$2 = $clone(_ref.$val, intVal); + $s = -1; return [x$2.val.Int64(), false]; + /* } else if ($assertType(_ref, unknownVal, true)[1]) { */ case 3: + x$3 = $clone(_ref.$val, unknownVal); + $s = -1; return [new $Int64(0, 0), false]; + /* } else { */ case 4: + x$4 = _ref; + _r$1 = fmt.Sprintf("%v not an Int", new sliceType$1([x$4])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 5: + $s = -1; return [new $Int64(0, 0), false]; + /* */ } return; } var $f = {$blk: Int64Val$1, $c: true, $r, _r$1, _ref, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + $pkg.Int64Val = Int64Val; + Uint64Val = function Uint64Val$1(x) { + var {_r$1, _ref, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, int64Val, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, intVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref, int64Val, true)[1]) { */ case 1: + x$1 = _ref.$val; + $s = -1; return [(new $Uint64(x$1.$high, x$1.$low)), (x$1.$high > 0 || (x$1.$high === 0 && x$1.$low >= 0))]; + /* } else if ($assertType(_ref, intVal, true)[1]) { */ case 2: + x$2 = $clone(_ref.$val, intVal); + $s = -1; return [x$2.val.Uint64(), x$2.val.IsUint64()]; + /* } else if ($assertType(_ref, unknownVal, true)[1]) { */ case 3: + x$3 = $clone(_ref.$val, unknownVal); + $s = -1; return [new $Uint64(0, 0), false]; + /* } else { */ case 4: + x$4 = _ref; + _r$1 = fmt.Sprintf("%v not an Int", new sliceType$1([x$4])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 5: + $s = -1; return [new $Uint64(0, 0), false]; + /* */ } return; } var $f = {$blk: Uint64Val$1, $c: true, $r, _r$1, _ref, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + $pkg.Uint64Val = Uint64Val; + Float32Val = function Float32Val$1(x) { + var {$24r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _tuple, _tuple$1, acc, acc$1, f, f$1, f$2, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, int64Val, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, intVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ratVal, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, floatVal, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($assertType(_ref, int64Val, true)[1]) { */ case 1: + x$1 = _ref.$val; + f = ($flatten64(x$1)); + $s = -1; return [f, (x$7 = (new int64Val(0, f)), (x$7.$high === x$1.$high && x$7.$low === x$1.$low))]; + /* } else if ($assertType(_ref, intVal, true)[1]) { */ case 2: + x$2 = $clone(_ref.$val, intVal); + _r$1 = newFloat(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.SetInt(x$2.val); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.Float32(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + f$1 = _tuple[0]; + acc = _tuple[1]; + $s = -1; return [f$1, acc === 0]; + /* } else if ($assertType(_ref, ratVal, true)[1]) { */ case 3: + x$3 = $clone(_ref.$val, ratVal); + _r$4 = x$3.val.Float32(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 12; case 12: return $24r; + /* } else if ($assertType(_ref, floatVal, true)[1]) { */ case 4: + x$4 = $clone(_ref.$val, floatVal); + _r$5 = x$4.val.Float32(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$1 = _r$5; + f$2 = _tuple$1[0]; + acc$1 = _tuple$1[1]; + $s = -1; return [f$2, acc$1 === 0]; + /* } else if ($assertType(_ref, unknownVal, true)[1]) { */ case 5: + x$5 = $clone(_ref.$val, unknownVal); + $s = -1; return [0, false]; + /* } else { */ case 6: + x$6 = _ref; + _r$6 = fmt.Sprintf("%v not a Float", new sliceType$1([x$6])); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $panic(new $String(_r$6)); + /* } */ case 7: + $s = -1; return [0, false]; + /* */ } return; } var $f = {$blk: Float32Val$1, $c: true, $r, $24r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _tuple, _tuple$1, acc, acc$1, f, f$1, f$2, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + $pkg.Float32Val = Float32Val; + Float64Val = function Float64Val$1(x) { + var {$24r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _tuple, _tuple$1, acc, acc$1, f, f$1, f$2, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, int64Val, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, intVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ratVal, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, floatVal, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($assertType(_ref, int64Val, true)[1]) { */ case 1: + x$1 = _ref.$val; + f = ($flatten64((new $Int64(x$1.$high, x$1.$low)))); + $s = -1; return [f, (x$7 = (new int64Val(0, f)), (x$7.$high === x$1.$high && x$7.$low === x$1.$low))]; + /* } else if ($assertType(_ref, intVal, true)[1]) { */ case 2: + x$2 = $clone(_ref.$val, intVal); + _r$1 = newFloat(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.SetInt(x$2.val); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.Float64(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + f$1 = _tuple[0]; + acc = _tuple[1]; + $s = -1; return [f$1, acc === 0]; + /* } else if ($assertType(_ref, ratVal, true)[1]) { */ case 3: + x$3 = $clone(_ref.$val, ratVal); + _r$4 = x$3.val.Float64(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 12; case 12: return $24r; + /* } else if ($assertType(_ref, floatVal, true)[1]) { */ case 4: + x$4 = $clone(_ref.$val, floatVal); + _r$5 = x$4.val.Float64(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$1 = _r$5; + f$2 = _tuple$1[0]; + acc$1 = _tuple$1[1]; + $s = -1; return [f$2, acc$1 === 0]; + /* } else if ($assertType(_ref, unknownVal, true)[1]) { */ case 5: + x$5 = $clone(_ref.$val, unknownVal); + $s = -1; return [0, false]; + /* } else { */ case 6: + x$6 = _ref; + _r$6 = fmt.Sprintf("%v not a Float", new sliceType$1([x$6])); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $panic(new $String(_r$6)); + /* } */ case 7: + $s = -1; return [0, false]; + /* */ } return; } var $f = {$blk: Float64Val$1, $c: true, $r, $24r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _tuple, _tuple$1, acc, acc$1, f, f$1, f$2, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + $pkg.Float64Val = Float64Val; + BitLen = function BitLen$1(x) { + var {_r$1, _ref, u, x, x$1, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, int64Val, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, intVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref, int64Val, true)[1]) { */ case 1: + x$1 = _ref.$val; + u = (new $Uint64(x$1.$high, x$1.$low)); + if ((x$1.$high < 0 || (x$1.$high === 0 && x$1.$low < 0))) { + u = ((x$5 = new int64Val(-x$1.$high, -x$1.$low), new $Uint64(x$5.$high, x$5.$low))); + } + $s = -1; return 64 - bits.LeadingZeros64(u) >> 0; + /* } else if ($assertType(_ref, intVal, true)[1]) { */ case 2: + x$2 = $clone(_ref.$val, intVal); + $s = -1; return x$2.val.BitLen(); + /* } else if ($assertType(_ref, unknownVal, true)[1]) { */ case 3: + x$3 = $clone(_ref.$val, unknownVal); + $s = -1; return 0; + /* } else { */ case 4: + x$4 = _ref; + _r$1 = fmt.Sprintf("%v not an Int", new sliceType$1([x$4])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 5: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: BitLen$1, $c: true, $r, _r$1, _ref, u, x, x$1, x$2, x$3, x$4, x$5, $s};return $f; + }; + $pkg.BitLen = BitLen; + Sign = function Sign$1(x) { + var {$24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _ref, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, int64Val, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, intVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ratVal, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, floatVal, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, complexVal, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ($assertType(_ref, int64Val, true)[1]) { */ case 1: + x$1 = _ref.$val; + if ((x$1.$high < 0 || (x$1.$high === 0 && x$1.$low < 0))) { + $s = -1; return -1; + } else if ((x$1.$high > 0 || (x$1.$high === 0 && x$1.$low > 0))) { + $s = -1; return 1; + } + $s = -1; return 0; + /* } else if ($assertType(_ref, intVal, true)[1]) { */ case 2: + x$2 = $clone(_ref.$val, intVal); + $s = -1; return x$2.val.Sign(); + /* } else if ($assertType(_ref, ratVal, true)[1]) { */ case 3: + x$3 = $clone(_ref.$val, ratVal); + $s = -1; return x$3.val.Sign(); + /* } else if ($assertType(_ref, floatVal, true)[1]) { */ case 4: + x$4 = $clone(_ref.$val, floatVal); + _r$1 = x$4.val.Sign(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 10; case 10: return $24r; + /* } else if ($assertType(_ref, complexVal, true)[1]) { */ case 5: + x$5 = $clone(_ref.$val, complexVal); + _r$2 = Sign(x$5.re); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = Sign(x$5.im); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = _r$2 | _r$3; + $s = 13; case 13: return $24r$1; + /* } else if ($assertType(_ref, unknownVal, true)[1]) { */ case 6: + x$6 = $clone(_ref.$val, unknownVal); + $s = -1; return 1; + /* } else { */ case 7: + x$7 = _ref; + _r$4 = fmt.Sprintf("%v not numeric", new sliceType$1([x$7])); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $panic(new $String(_r$4)); + /* } */ case 8: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: Sign$1, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _ref, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + $pkg.Sign = Sign; + MakeImag = function MakeImag$1(x) { + var {$24r, _r$1, _r$2, _ref, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, int64Val, true)[1] || $assertType(_ref, intVal, true)[1] || $assertType(_ref, ratVal, true)[1] || $assertType(_ref, floatVal, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, unknownVal, true)[1]) { */ case 1: + $s = -1; return x; + /* } else if ($assertType(_ref, int64Val, true)[1] || $assertType(_ref, intVal, true)[1] || $assertType(_ref, ratVal, true)[1] || $assertType(_ref, floatVal, true)[1]) { */ case 2: + _r$1 = makeComplex(new int64Val(0, 0), x); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 6; case 6: return $24r; + /* } else { */ case 3: + _r$2 = fmt.Sprintf("%v not Int or Float", new sliceType$1([x])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $panic(new $String(_r$2)); + /* } */ case 4: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: MakeImag$1, $c: true, $r, $24r, _r$1, _r$2, _ref, x, $s};return $f; + }; + $pkg.MakeImag = MakeImag; + Real = function Real$1(x) { + var {_r$1, _ref, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, unknownVal, true)[1] || $assertType(_ref, int64Val, true)[1] || $assertType(_ref, intVal, true)[1] || $assertType(_ref, ratVal, true)[1] || $assertType(_ref, floatVal, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, complexVal, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, unknownVal, true)[1] || $assertType(_ref, int64Val, true)[1] || $assertType(_ref, intVal, true)[1] || $assertType(_ref, ratVal, true)[1] || $assertType(_ref, floatVal, true)[1]) { */ case 1: + x$1 = _ref; + $s = -1; return x$1; + /* } else if ($assertType(_ref, complexVal, true)[1]) { */ case 2: + x$2 = $clone(_ref.$val, complexVal); + $s = -1; return x$2.re; + /* } else { */ case 3: + x$3 = _ref; + _r$1 = fmt.Sprintf("%v not numeric", new sliceType$1([x$3])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 4: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Real$1, $c: true, $r, _r$1, _ref, x, x$1, x$2, x$3, $s};return $f; + }; + $pkg.Real = Real; + Imag = function Imag$1(x) { + var {_r$1, _ref, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, int64Val, true)[1] || $assertType(_ref, intVal, true)[1] || $assertType(_ref, ratVal, true)[1] || $assertType(_ref, floatVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, complexVal, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref, unknownVal, true)[1]) { */ case 1: + x$1 = $clone(_ref.$val, unknownVal); + $s = -1; return new x$1.constructor.elem(x$1); + /* } else if ($assertType(_ref, int64Val, true)[1] || $assertType(_ref, intVal, true)[1] || $assertType(_ref, ratVal, true)[1] || $assertType(_ref, floatVal, true)[1]) { */ case 2: + x$2 = _ref; + $s = -1; return new int64Val(0, 0); + /* } else if ($assertType(_ref, complexVal, true)[1]) { */ case 3: + x$3 = $clone(_ref.$val, complexVal); + $s = -1; return x$3.im; + /* } else { */ case 4: + x$4 = _ref; + _r$1 = fmt.Sprintf("%v not numeric", new sliceType$1([x$4])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 5: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Imag$1, $c: true, $r, _r$1, _ref, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + $pkg.Imag = Imag; + ToInt = function ToInt$1(x) { + var {$24r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$2, acc, acc$1, acc$2, i, re, t, x, x$1, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, int64Val, true)[1] || $assertType(_ref, intVal, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ratVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, floatVal, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, complexVal, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref, int64Val, true)[1] || $assertType(_ref, intVal, true)[1]) { */ case 1: + x$1 = _ref; + $s = -1; return x$1; + /* } else if ($assertType(_ref, ratVal, true)[1]) { */ case 2: + x$2 = $clone(_ref.$val, ratVal); + if (x$2.val.IsInt()) { + $s = -1; return makeInt(x$2.val.Num()); + } + $s = 5; continue; + /* } else if ($assertType(_ref, floatVal, true)[1]) { */ case 3: + x$3 = $clone(_ref.$val, floatVal); + _r$1 = smallFloat(x$3.val); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$1) { */ case 6: + i = newInt(); + _r$2 = x$3.val.Int(i); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + acc = _tuple[1]; + if (acc === 0) { + $s = -1; return makeInt(i); + } + t = new big.Float.ptr(0, 0, 0, 0, false, big.nat.nil, 0); + _r$3 = t.SetPrec(508); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + t.SetMode(2); + _r$4 = t.Set(x$3.val); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + _r$5 = t.Int(i); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$1 = _r$5; + acc$1 = _tuple$1[1]; + if (acc$1 === 0) { + $s = -1; return makeInt(i); + } + t.SetMode(3); + _r$6 = t.Set(x$3.val); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$6; + _r$7 = t.Int(i); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$2 = _r$7; + acc$2 = _tuple$2[1]; + if (acc$2 === 0) { + $s = -1; return makeInt(i); + } + /* } */ case 7: + $s = 5; continue; + /* } else if ($assertType(_ref, complexVal, true)[1]) { */ case 4: + x$4 = $clone(_ref.$val, complexVal); + _r$8 = ToFloat(new x$4.constructor.elem(x$4)); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + re = _r$8; + _r$9 = re.Kind(); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (_r$9 === 4) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_r$9 === 4) { */ case 16: + _r$10 = ToInt(re); /* */ $s = 19; case 19: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $24r = _r$10; + $s = 20; case 20: return $24r; + /* } */ case 17: + /* } */ case 5: + $s = -1; return (x$5 = new unknownVal.ptr(), new x$5.constructor.elem(x$5)); + /* */ } return; } var $f = {$blk: ToInt$1, $c: true, $r, $24r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$2, acc, acc$1, acc$2, i, re, t, x, x$1, x$2, x$3, x$4, x$5, $s};return $f; + }; + $pkg.ToInt = ToInt; + ToFloat = function ToFloat$1(x) { + var {$24r, $24r$1, _r$1, _r$2, _r$3, _ref, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, int64Val, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, intVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ratVal, true)[1] || $assertType(_ref, floatVal, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, complexVal, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref, int64Val, true)[1]) { */ case 1: + x$1 = _ref.$val; + $s = -1; return (x$5 = i64tor(x$1), new x$5.constructor.elem(x$5)); + /* } else if ($assertType(_ref, intVal, true)[1]) { */ case 2: + x$2 = $clone(_ref.$val, intVal); + if (smallInt(x$2.val)) { + $s = -1; return (x$6 = itor($clone(x$2, intVal)), new x$6.constructor.elem(x$6)); + } + _r$1 = itof($clone(x$2, intVal)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = (x$7 = _r$1, new x$7.constructor.elem(x$7)); + $s = 7; case 7: return $24r; + /* } else if ($assertType(_ref, ratVal, true)[1] || $assertType(_ref, floatVal, true)[1]) { */ case 3: + x$3 = _ref; + $s = -1; return x$3; + /* } else if ($assertType(_ref, complexVal, true)[1]) { */ case 4: + x$4 = $clone(_ref.$val, complexVal); + _r$2 = Sign(x$4.im); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2 === 0) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_r$2 === 0) { */ case 8: + _r$3 = ToFloat(x$4.re); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = _r$3; + $s = 12; case 12: return $24r$1; + /* } */ case 9: + /* } */ case 5: + $s = -1; return (x$8 = new unknownVal.ptr(), new x$8.constructor.elem(x$8)); + /* */ } return; } var $f = {$blk: ToFloat$1, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, _ref, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s};return $f; + }; + $pkg.ToFloat = ToFloat; + ToComplex = function ToComplex$1(x) { + var _ref, x, x$1, x$2, x$3, x$4; + _ref = x; + if ($assertType(_ref, int64Val, true)[1] || $assertType(_ref, intVal, true)[1] || $assertType(_ref, ratVal, true)[1] || $assertType(_ref, floatVal, true)[1]) { + x$1 = _ref; + return (x$3 = vtoc(x$1), new x$3.constructor.elem(x$3)); + } else if ($assertType(_ref, complexVal, true)[1]) { + x$2 = $clone(_ref.$val, complexVal); + return new x$2.constructor.elem(x$2); + } + return (x$4 = new unknownVal.ptr(), new x$4.constructor.elem(x$4)); + }; + $pkg.ToComplex = ToComplex; + is32bit = function is32bit$1(x) { + var x; + return (-1 < x.$high || (-1 === x.$high && 2147483648 <= x.$low)) && (x.$high < 0 || (x.$high === 0 && x.$low <= 2147483647)); + }; + is63bit = function is63bit$1(x) { + var x; + return (-1073741824 < x.$high || (-1073741824 === x.$high && 0 <= x.$low)) && (x.$high < 1073741823 || (x.$high === 1073741823 && x.$low <= 4294967295)); + }; + UnaryOp = function UnaryOp$1(op, y, prec) { + var {$24r, $24r$1, $24r$2, _1, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, im, op, prec, re, y, y$1, y$10, y$11, y$12, y$2, y$3, y$4, y$5, y$6, y$7, y$8, y$9, z, z$1, $s, $r, $c} = $restore(this, {op, y, prec}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _1 = op; + /* */ if (_1 === (12)) { $s = 2; continue; } + /* */ if (_1 === (13)) { $s = 3; continue; } + /* */ if (_1 === (19)) { $s = 4; continue; } + /* */ if (_1 === (43)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (12)) { */ case 2: + _ref = y; + if ($assertType(_ref, unknownVal, true)[1] || $assertType(_ref, int64Val, true)[1] || $assertType(_ref, intVal, true)[1] || $assertType(_ref, ratVal, true)[1] || $assertType(_ref, floatVal, true)[1] || $assertType(_ref, complexVal, true)[1]) { + $s = -1; return y; + } + $s = 6; continue; + /* } else if (_1 === (13)) { */ case 3: + _ref$1 = y; + /* */ if ($assertType(_ref$1, unknownVal, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref$1, int64Val, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref$1, intVal, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref$1, ratVal, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref$1, floatVal, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref$1, complexVal, true)[1]) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ($assertType(_ref$1, unknownVal, true)[1]) { */ case 7: + y$1 = $clone(_ref$1.$val, unknownVal); + $s = -1; return new y$1.constructor.elem(y$1); + /* } else if ($assertType(_ref$1, int64Val, true)[1]) { */ case 8: + y$2 = _ref$1.$val; + z = new int64Val(-y$2.$high, -y$2.$low); + if (!((z.$high === y$2.$high && z.$low === y$2.$low))) { + $s = -1; return z; + } + $s = -1; return makeInt(newInt().Neg(big.NewInt((new $Int64(y$2.$high, y$2.$low))))); + /* } else if ($assertType(_ref$1, intVal, true)[1]) { */ case 9: + y$3 = $clone(_ref$1.$val, intVal); + $s = -1; return makeInt(newInt().Neg(y$3.val)); + /* } else if ($assertType(_ref$1, ratVal, true)[1]) { */ case 10: + y$4 = $clone(_ref$1.$val, ratVal); + _r$1 = makeRat(newRat().Neg(y$4.val)); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 15; case 15: return $24r; + /* } else if ($assertType(_ref$1, floatVal, true)[1]) { */ case 11: + y$5 = $clone(_ref$1.$val, floatVal); + _r$2 = newFloat(); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.Neg(y$5.val); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = makeFloat(_r$3); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$1 = _r$4; + $s = 19; case 19: return $24r$1; + /* } else if ($assertType(_ref$1, complexVal, true)[1]) { */ case 12: + y$6 = $clone(_ref$1.$val, complexVal); + _r$5 = UnaryOp(13, y$6.re, 0); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + re = _r$5; + _r$6 = UnaryOp(13, y$6.im, 0); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + im = _r$6; + _r$7 = makeComplex(re, im); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $24r$2 = _r$7; + $s = 23; case 23: return $24r$2; + /* } */ case 13: + $s = 6; continue; + /* } else if (_1 === (19)) { */ case 4: + z$1 = newInt(); + _ref$2 = y; + /* */ if ($assertType(_ref$2, unknownVal, true)[1]) { $s = 24; continue; } + /* */ if ($assertType(_ref$2, int64Val, true)[1]) { $s = 25; continue; } + /* */ if ($assertType(_ref$2, intVal, true)[1]) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if ($assertType(_ref$2, unknownVal, true)[1]) { */ case 24: + y$7 = $clone(_ref$2.$val, unknownVal); + $s = -1; return new y$7.constructor.elem(y$7); + /* } else if ($assertType(_ref$2, int64Val, true)[1]) { */ case 25: + y$8 = _ref$2.$val; + _r$8 = z$1.Not(big.NewInt((new $Int64(y$8.$high, y$8.$low)))); /* */ $s = 29; case 29: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$8; + $s = 28; continue; + /* } else if ($assertType(_ref$2, intVal, true)[1]) { */ case 26: + y$9 = $clone(_ref$2.$val, intVal); + _r$9 = z$1.Not(y$9.val); /* */ $s = 30; case 30: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$9; + $s = 28; continue; + /* } else { */ case 27: + y$10 = _ref$2; + /* goto Error */ $s = 31; continue; + /* } */ case 28: + /* */ if (prec > 0) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (prec > 0) { */ case 32: + _r$10 = z$1.AndNot(z$1, newInt().Lsh(big.NewInt(new $Int64(-1, 4294967295)), prec)); /* */ $s = 34; case 34: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + /* } */ case 33: + $s = -1; return makeInt(z$1); + /* } else if (_1 === (43)) { */ case 5: + _ref$3 = y; + if ($assertType(_ref$3, unknownVal, true)[1]) { + y$11 = $clone(_ref$3.$val, unknownVal); + $s = -1; return new y$11.constructor.elem(y$11); + } else if ($assertType(_ref$3, boolVal, true)[1]) { + y$12 = _ref$3.$val; + $s = -1; return new boolVal(!y$12); + } + /* } */ case 6: + case 1: + /* Error: */ case 31: + _r$11 = fmt.Sprintf("invalid unary operation %s%v", new sliceType$1([new token.Token(op), y])); /* */ $s = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $panic(new $String(_r$11)); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: UnaryOp$1, $c: true, $r, $24r, $24r$1, $24r$2, _1, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, im, op, prec, re, y, y$1, y$10, y$11, y$12, y$2, y$3, y$4, y$5, y$6, y$7, y$8, y$9, z, z$1, $s};return $f; + }; + $pkg.UnaryOp = UnaryOp; + ord = function ord$1(x) { + var _ref, x; + _ref = x; + if ($assertType(_ref, unknownVal, true)[1]) { + return 0; + } else if ($assertType(_ref, boolVal, true)[1] || $assertType(_ref, ptrType, true)[1]) { + return 1; + } else if ($assertType(_ref, int64Val, true)[1]) { + return 2; + } else if ($assertType(_ref, intVal, true)[1]) { + return 3; + } else if ($assertType(_ref, ratVal, true)[1]) { + return 4; + } else if ($assertType(_ref, floatVal, true)[1]) { + return 5; + } else if ($assertType(_ref, complexVal, true)[1]) { + return 6; + } else { + return -1; + } + }; + match = function match$1(x, y) { + var {_$1, _$2, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, ox, oy, x, y, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _$1 = $ifaceNil; + _$2 = $ifaceNil; + _tmp = ord(x); + _tmp$1 = ord(y); + ox = _tmp; + oy = _tmp$1; + /* */ if (ox < oy) { $s = 2; continue; } + /* */ if (ox > oy) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (ox < oy) { */ case 2: + _r$1 = match0(x, y); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + x = _tuple[0]; + y = _tuple[1]; + $s = 4; continue; + /* } else if (ox > oy) { */ case 3: + _r$2 = match0(y, x); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + y = _tuple$1[0]; + x = _tuple$1[1]; + /* } */ case 4: + case 1: + _tmp$2 = x; + _tmp$3 = y; + _$1 = _tmp$2; + _$2 = _tmp$3; + $s = -1; return [_$1, _$2]; + /* */ } return; } var $f = {$blk: match$1, $c: true, $r, _$1, _$2, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, ox, oy, x, y, $s};return $f; + }; + match0 = function match0$1(x, y) { + var {$24r, $24r$1, $24r$2, _$1, _$2, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, _ref$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x1, x1$1, x1$2, x1$3, x1$4, x1$5, y, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _$1 = $ifaceNil; + _$2 = $ifaceNil; + _ref = y; + /* */ if ($assertType(_ref, intVal, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ratVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, floatVal, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, complexVal, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref, intVal, true)[1]) { */ case 1: + _ref$1 = x; + if ($assertType(_ref$1, int64Val, true)[1]) { + x1 = _ref$1.$val; + _tmp = (x$1 = i64toi(x1), new x$1.constructor.elem(x$1)); + _tmp$1 = y; + _$1 = _tmp; + _$2 = _tmp$1; + $s = -1; return [_$1, _$2]; + } + $s = 5; continue; + /* } else if ($assertType(_ref, ratVal, true)[1]) { */ case 2: + _ref$2 = x; + if ($assertType(_ref$2, int64Val, true)[1]) { + x1$1 = _ref$2.$val; + _tmp$2 = (x$2 = i64tor(x1$1), new x$2.constructor.elem(x$2)); + _tmp$3 = y; + _$1 = _tmp$2; + _$2 = _tmp$3; + $s = -1; return [_$1, _$2]; + } else if ($assertType(_ref$2, intVal, true)[1]) { + x1$2 = $clone(_ref$2.$val, intVal); + _tmp$4 = (x$3 = itor($clone(x1$2, intVal)), new x$3.constructor.elem(x$3)); + _tmp$5 = y; + _$1 = _tmp$4; + _$2 = _tmp$5; + $s = -1; return [_$1, _$2]; + } + $s = 5; continue; + /* } else if ($assertType(_ref, floatVal, true)[1]) { */ case 3: + _ref$3 = x; + /* */ if ($assertType(_ref$3, int64Val, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref$3, intVal, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref$3, ratVal, true)[1]) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ($assertType(_ref$3, int64Val, true)[1]) { */ case 6: + x1$3 = _ref$3.$val; + _r$1 = i64tof(x1$3); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tmp$6 = (x$4 = _r$1, new x$4.constructor.elem(x$4)); + _tmp$7 = y; + _$1 = _tmp$6; + _$2 = _tmp$7; + $24r = [_$1, _$2]; + $s = 11; case 11: return $24r; + /* } else if ($assertType(_ref$3, intVal, true)[1]) { */ case 7: + x1$4 = $clone(_ref$3.$val, intVal); + _r$2 = itof($clone(x1$4, intVal)); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tmp$8 = (x$5 = _r$2, new x$5.constructor.elem(x$5)); + _tmp$9 = y; + _$1 = _tmp$8; + _$2 = _tmp$9; + $24r$1 = [_$1, _$2]; + $s = 13; case 13: return $24r$1; + /* } else if ($assertType(_ref$3, ratVal, true)[1]) { */ case 8: + x1$5 = $clone(_ref$3.$val, ratVal); + _r$3 = rtof($clone(x1$5, ratVal)); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tmp$10 = (x$6 = _r$3, new x$6.constructor.elem(x$6)); + _tmp$11 = y; + _$1 = _tmp$10; + _$2 = _tmp$11; + $24r$2 = [_$1, _$2]; + $s = 15; case 15: return $24r$2; + /* } */ case 9: + $s = 5; continue; + /* } else if ($assertType(_ref, complexVal, true)[1]) { */ case 4: + _tmp$12 = (x$7 = vtoc(x), new x$7.constructor.elem(x$7)); + _tmp$13 = y; + _$1 = _tmp$12; + _$2 = _tmp$13; + $s = -1; return [_$1, _$2]; + /* } */ case 5: + _tmp$14 = x; + _tmp$15 = x; + _$1 = _tmp$14; + _$2 = _tmp$15; + $s = -1; return [_$1, _$2]; + /* */ } return; } var $f = {$blk: match0$1, $c: true, $r, $24r, $24r$1, $24r$2, _$1, _$2, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, _ref$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x1, x1$1, x1$2, x1$3, x1$4, x1$5, y, $s};return $f; + }; + BinaryOp = function BinaryOp$1(x_, op, y_) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, _1, _2, _3, _4, _5, _6, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _r$5, _r$50, _r$51, _r$52, _r$53, _r$54, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, a, a$1, a$2, a$3, a$4, ac, ac$1, ad, ad$1, b, b$1, b$2, b$3, b$4, bc, bc$1, bd, bd$1, c, c$1, c$2, c$3, c$4, cc, d, dd, im, op, re, s, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, x_, y, y$1, y$2, y_, $s, $r, $c} = $restore(this, {x_, op, y_}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = match(x_, y_); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + x = _tuple[0]; + y = _tuple[1]; + _ref = x; + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, boolVal, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, int64Val, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, intVal, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ratVal, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, floatVal, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, complexVal, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ($assertType(_ref, unknownVal, true)[1]) { */ case 2: + x$1 = $clone(_ref.$val, unknownVal); + $s = -1; return new x$1.constructor.elem(x$1); + /* } else if ($assertType(_ref, boolVal, true)[1]) { */ case 3: + x$2 = _ref.$val; + y$1 = $assertType(y, boolVal); + _1 = op; + if (_1 === (34)) { + $s = -1; return new boolVal(x$2 && y$1); + } else if (_1 === (35)) { + $s = -1; return new boolVal(x$2 || y$1); + } + $s = 10; continue; + /* } else if ($assertType(_ref, int64Val, true)[1]) { */ case 4: + x$3 = _ref.$val; + a = (new $Int64(x$3.$high, x$3.$low)); + b = ((x$9 = $assertType(y, int64Val), new $Int64(x$9.$high, x$9.$low))); + c = new $Int64(0, 0); + _2 = op; + /* */ if (_2 === (12)) { $s = 12; continue; } + /* */ if (_2 === (13)) { $s = 13; continue; } + /* */ if (_2 === (14)) { $s = 14; continue; } + /* */ if (_2 === (15)) { $s = 15; continue; } + /* */ if (_2 === (26)) { $s = 16; continue; } + /* */ if (_2 === (16)) { $s = 17; continue; } + /* */ if (_2 === (17)) { $s = 18; continue; } + /* */ if (_2 === (18)) { $s = 19; continue; } + /* */ if (_2 === (19)) { $s = 20; continue; } + /* */ if (_2 === (22)) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (_2 === (12)) { */ case 12: + /* */ if (!is63bit(a) || !is63bit(b)) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!is63bit(a) || !is63bit(b)) { */ case 24: + _r$2 = newInt().Add(big.NewInt(a), big.NewInt(b)); /* */ $s = 26; case 26: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = makeInt(_r$2); /* */ $s = 27; case 27: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 28; case 28: return $24r; + /* } */ case 25: + c = new $Int64(a.$high + b.$high, a.$low + b.$low); + $s = 23; continue; + /* } else if (_2 === (13)) { */ case 13: + /* */ if (!is63bit(a) || !is63bit(b)) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (!is63bit(a) || !is63bit(b)) { */ case 29: + _r$4 = newInt().Sub(big.NewInt(a), big.NewInt(b)); /* */ $s = 31; case 31: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = makeInt(_r$4); /* */ $s = 32; case 32: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r$1 = _r$5; + $s = 33; case 33: return $24r$1; + /* } */ case 30: + c = new $Int64(a.$high - b.$high, a.$low - b.$low); + $s = 23; continue; + /* } else if (_2 === (14)) { */ case 14: + /* */ if (!is32bit(a) || !is32bit(b)) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (!is32bit(a) || !is32bit(b)) { */ case 34: + _r$6 = newInt().Mul(big.NewInt(a), big.NewInt(b)); /* */ $s = 36; case 36: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = makeInt(_r$6); /* */ $s = 37; case 37: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $24r$2 = _r$7; + $s = 38; case 38: return $24r$2; + /* } */ case 35: + c = $mul64(a, b); + $s = 23; continue; + /* } else if (_2 === (15)) { */ case 15: + _r$8 = big.NewRat(a, b); /* */ $s = 39; case 39: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$9 = makeRat(_r$8); /* */ $s = 40; case 40: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $24r$3 = _r$9; + $s = 41; case 41: return $24r$3; + /* } else if (_2 === (26)) { */ case 16: + c = $div64(a, b, false); + $s = 23; continue; + /* } else if (_2 === (16)) { */ case 17: + c = $div64(a, b, true); + $s = 23; continue; + /* } else if (_2 === (17)) { */ case 18: + c = new $Int64(a.$high & b.$high, (a.$low & b.$low) >>> 0); + $s = 23; continue; + /* } else if (_2 === (18)) { */ case 19: + c = new $Int64(a.$high | b.$high, (a.$low | b.$low) >>> 0); + $s = 23; continue; + /* } else if (_2 === (19)) { */ case 20: + c = new $Int64(a.$high ^ b.$high, (a.$low ^ b.$low) >>> 0); + $s = 23; continue; + /* } else if (_2 === (22)) { */ case 21: + c = new $Int64(a.$high & ~b.$high, (a.$low & ~b.$low) >>> 0); + $s = 23; continue; + /* } else { */ case 22: + /* goto Error */ $s = 42; continue; + /* } */ case 23: + case 11: + $s = -1; return (new int64Val(c.$high, c.$low)); + /* } else if ($assertType(_ref, intVal, true)[1]) { */ case 5: + x$4 = $clone(_ref.$val, intVal); + a$1 = x$4.val; + b$1 = $assertType(y, intVal).val; + c$1 = newInt(); + _3 = op; + /* */ if (_3 === (12)) { $s = 44; continue; } + /* */ if (_3 === (13)) { $s = 45; continue; } + /* */ if (_3 === (14)) { $s = 46; continue; } + /* */ if (_3 === (15)) { $s = 47; continue; } + /* */ if (_3 === (26)) { $s = 48; continue; } + /* */ if (_3 === (16)) { $s = 49; continue; } + /* */ if (_3 === (17)) { $s = 50; continue; } + /* */ if (_3 === (18)) { $s = 51; continue; } + /* */ if (_3 === (19)) { $s = 52; continue; } + /* */ if (_3 === (22)) { $s = 53; continue; } + /* */ $s = 54; continue; + /* if (_3 === (12)) { */ case 44: + _r$10 = c$1.Add(a$1, b$1); /* */ $s = 56; case 56: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + $s = 55; continue; + /* } else if (_3 === (13)) { */ case 45: + _r$11 = c$1.Sub(a$1, b$1); /* */ $s = 57; case 57: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$11; + $s = 55; continue; + /* } else if (_3 === (14)) { */ case 46: + _r$12 = c$1.Mul(a$1, b$1); /* */ $s = 58; case 58: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$12; + $s = 55; continue; + /* } else if (_3 === (15)) { */ case 47: + _r$13 = newRat().SetFrac(a$1, b$1); /* */ $s = 59; case 59: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$14 = makeRat(_r$13); /* */ $s = 60; case 60: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + $24r$4 = _r$14; + $s = 61; case 61: return $24r$4; + /* } else if (_3 === (26)) { */ case 48: + _r$15 = c$1.Quo(a$1, b$1); /* */ $s = 62; case 62: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _r$15; + $s = 55; continue; + /* } else if (_3 === (16)) { */ case 49: + _r$16 = c$1.Rem(a$1, b$1); /* */ $s = 63; case 63: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _r$16; + $s = 55; continue; + /* } else if (_3 === (17)) { */ case 50: + _r$17 = c$1.And(a$1, b$1); /* */ $s = 64; case 64: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _r$17; + $s = 55; continue; + /* } else if (_3 === (18)) { */ case 51: + _r$18 = c$1.Or(a$1, b$1); /* */ $s = 65; case 65: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _r$18; + $s = 55; continue; + /* } else if (_3 === (19)) { */ case 52: + _r$19 = c$1.Xor(a$1, b$1); /* */ $s = 66; case 66: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _r$19; + $s = 55; continue; + /* } else if (_3 === (22)) { */ case 53: + _r$20 = c$1.AndNot(a$1, b$1); /* */ $s = 67; case 67: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _r$20; + $s = 55; continue; + /* } else { */ case 54: + /* goto Error */ $s = 42; continue; + /* } */ case 55: + case 43: + $s = -1; return makeInt(c$1); + /* } else if ($assertType(_ref, ratVal, true)[1]) { */ case 6: + x$5 = $clone(_ref.$val, ratVal); + a$2 = x$5.val; + b$2 = $assertType(y, ratVal).val; + c$2 = newRat(); + _4 = op; + /* */ if (_4 === (12)) { $s = 69; continue; } + /* */ if (_4 === (13)) { $s = 70; continue; } + /* */ if (_4 === (14)) { $s = 71; continue; } + /* */ if (_4 === (15)) { $s = 72; continue; } + /* */ $s = 73; continue; + /* if (_4 === (12)) { */ case 69: + _r$21 = c$2.Add(a$2, b$2); /* */ $s = 75; case 75: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + _r$21; + $s = 74; continue; + /* } else if (_4 === (13)) { */ case 70: + _r$22 = c$2.Sub(a$2, b$2); /* */ $s = 76; case 76: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$22; + $s = 74; continue; + /* } else if (_4 === (14)) { */ case 71: + _r$23 = c$2.Mul(a$2, b$2); /* */ $s = 77; case 77: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$23; + $s = 74; continue; + /* } else if (_4 === (15)) { */ case 72: + _r$24 = c$2.Quo(a$2, b$2); /* */ $s = 78; case 78: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _r$24; + $s = 74; continue; + /* } else { */ case 73: + /* goto Error */ $s = 42; continue; + /* } */ case 74: + case 68: + _r$25 = makeRat(c$2); /* */ $s = 79; case 79: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + $24r$5 = _r$25; + $s = 80; case 80: return $24r$5; + /* } else if ($assertType(_ref, floatVal, true)[1]) { */ case 7: + x$6 = $clone(_ref.$val, floatVal); + a$3 = x$6.val; + b$3 = $assertType(y, floatVal).val; + _r$26 = newFloat(); /* */ $s = 81; case 81: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + c$3 = _r$26; + _5 = op; + /* */ if (_5 === (12)) { $s = 83; continue; } + /* */ if (_5 === (13)) { $s = 84; continue; } + /* */ if (_5 === (14)) { $s = 85; continue; } + /* */ if (_5 === (15)) { $s = 86; continue; } + /* */ $s = 87; continue; + /* if (_5 === (12)) { */ case 83: + _r$27 = c$3.Add(a$3, b$3); /* */ $s = 89; case 89: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _r$27; + $s = 88; continue; + /* } else if (_5 === (13)) { */ case 84: + _r$28 = c$3.Sub(a$3, b$3); /* */ $s = 90; case 90: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _r$28; + $s = 88; continue; + /* } else if (_5 === (14)) { */ case 85: + _r$29 = c$3.Mul(a$3, b$3); /* */ $s = 91; case 91: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + _r$29; + $s = 88; continue; + /* } else if (_5 === (15)) { */ case 86: + _r$30 = c$3.Quo(a$3, b$3); /* */ $s = 92; case 92: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _r$30; + $s = 88; continue; + /* } else { */ case 87: + /* goto Error */ $s = 42; continue; + /* } */ case 88: + case 82: + _r$31 = makeFloat(c$3); /* */ $s = 93; case 93: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + $24r$6 = _r$31; + $s = 94; case 94: return $24r$6; + /* } else if ($assertType(_ref, complexVal, true)[1]) { */ case 8: + x$7 = $clone(_ref.$val, complexVal); + y$2 = $clone($assertType(y, complexVal), complexVal); + _tmp = x$7.re; + _tmp$1 = x$7.im; + a$4 = _tmp; + b$4 = _tmp$1; + _tmp$2 = y$2.re; + _tmp$3 = y$2.im; + c$4 = _tmp$2; + d = _tmp$3; + _tmp$4 = $ifaceNil; + _tmp$5 = $ifaceNil; + re = _tmp$4; + im = _tmp$5; + _6 = op; + /* */ if (_6 === (12)) { $s = 96; continue; } + /* */ if (_6 === (13)) { $s = 97; continue; } + /* */ if (_6 === (14)) { $s = 98; continue; } + /* */ if (_6 === (15)) { $s = 99; continue; } + /* */ $s = 100; continue; + /* if (_6 === (12)) { */ case 96: + _r$32 = add(a$4, c$4); /* */ $s = 102; case 102: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + re = _r$32; + _r$33 = add(b$4, d); /* */ $s = 103; case 103: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + im = _r$33; + $s = 101; continue; + /* } else if (_6 === (13)) { */ case 97: + _r$34 = sub(a$4, c$4); /* */ $s = 104; case 104: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + re = _r$34; + _r$35 = sub(b$4, d); /* */ $s = 105; case 105: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } + im = _r$35; + $s = 101; continue; + /* } else if (_6 === (14)) { */ case 98: + _r$36 = mul(a$4, c$4); /* */ $s = 106; case 106: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } + ac = _r$36; + _r$37 = mul(b$4, d); /* */ $s = 107; case 107: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; } + bd = _r$37; + _r$38 = mul(b$4, c$4); /* */ $s = 108; case 108: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; } + bc = _r$38; + _r$39 = mul(a$4, d); /* */ $s = 109; case 109: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; } + ad = _r$39; + _r$40 = sub(ac, bd); /* */ $s = 110; case 110: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; } + re = _r$40; + _r$41 = add(bc, ad); /* */ $s = 111; case 111: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; } + im = _r$41; + $s = 101; continue; + /* } else if (_6 === (15)) { */ case 99: + _r$42 = mul(a$4, c$4); /* */ $s = 112; case 112: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; } + ac$1 = _r$42; + _r$43 = mul(b$4, d); /* */ $s = 113; case 113: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; } + bd$1 = _r$43; + _r$44 = mul(b$4, c$4); /* */ $s = 114; case 114: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; } + bc$1 = _r$44; + _r$45 = mul(a$4, d); /* */ $s = 115; case 115: if($c) { $c = false; _r$45 = _r$45.$blk(); } if (_r$45 && _r$45.$blk !== undefined) { break s; } + ad$1 = _r$45; + _r$46 = mul(c$4, c$4); /* */ $s = 116; case 116: if($c) { $c = false; _r$46 = _r$46.$blk(); } if (_r$46 && _r$46.$blk !== undefined) { break s; } + cc = _r$46; + _r$47 = mul(d, d); /* */ $s = 117; case 117: if($c) { $c = false; _r$47 = _r$47.$blk(); } if (_r$47 && _r$47.$blk !== undefined) { break s; } + dd = _r$47; + _r$48 = add(cc, dd); /* */ $s = 118; case 118: if($c) { $c = false; _r$48 = _r$48.$blk(); } if (_r$48 && _r$48.$blk !== undefined) { break s; } + s = _r$48; + _r$49 = add(ac$1, bd$1); /* */ $s = 119; case 119: if($c) { $c = false; _r$49 = _r$49.$blk(); } if (_r$49 && _r$49.$blk !== undefined) { break s; } + re = _r$49; + _r$50 = quo(re, s); /* */ $s = 120; case 120: if($c) { $c = false; _r$50 = _r$50.$blk(); } if (_r$50 && _r$50.$blk !== undefined) { break s; } + re = _r$50; + _r$51 = sub(bc$1, ad$1); /* */ $s = 121; case 121: if($c) { $c = false; _r$51 = _r$51.$blk(); } if (_r$51 && _r$51.$blk !== undefined) { break s; } + im = _r$51; + _r$52 = quo(im, s); /* */ $s = 122; case 122: if($c) { $c = false; _r$52 = _r$52.$blk(); } if (_r$52 && _r$52.$blk !== undefined) { break s; } + im = _r$52; + $s = 101; continue; + /* } else { */ case 100: + /* goto Error */ $s = 42; continue; + /* } */ case 101: + case 95: + _r$53 = makeComplex(re, im); /* */ $s = 123; case 123: if($c) { $c = false; _r$53 = _r$53.$blk(); } if (_r$53 && _r$53.$blk !== undefined) { break s; } + $24r$7 = _r$53; + $s = 124; case 124: return $24r$7; + /* } else if ($assertType(_ref, ptrType, true)[1]) { */ case 9: + x$8 = _ref.$val; + if (op === 12) { + $s = -1; return new stringVal.ptr(new sync.Mutex.ptr(0, 0), "", x$8, $assertType(y, ptrType)); + } + /* } */ case 10: + /* Error: */ case 42: + _r$54 = fmt.Sprintf("invalid binary operation %v %s %v", new sliceType$1([x_, new token.Token(op), y_])); /* */ $s = 125; case 125: if($c) { $c = false; _r$54 = _r$54.$blk(); } if (_r$54 && _r$54.$blk !== undefined) { break s; } + $panic(new $String(_r$54)); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: BinaryOp$1, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, _1, _2, _3, _4, _5, _6, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _r$5, _r$50, _r$51, _r$52, _r$53, _r$54, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, a, a$1, a$2, a$3, a$4, ac, ac$1, ad, ad$1, b, b$1, b$2, b$3, b$4, bc, bc$1, bd, bd$1, c, c$1, c$2, c$3, c$4, cc, d, dd, im, op, re, s, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, x_, y, y$1, y$2, y_, $s};return $f; + }; + $pkg.BinaryOp = BinaryOp; + add = function add$1(x, y) { + var {$24r, _r$1, x, y, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = BinaryOp(x, 12, y); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: add$1, $c: true, $r, $24r, _r$1, x, y, $s};return $f; + }; + sub = function sub$1(x, y) { + var {$24r, _r$1, x, y, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = BinaryOp(x, 13, y); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: sub$1, $c: true, $r, $24r, _r$1, x, y, $s};return $f; + }; + mul = function mul$1(x, y) { + var {$24r, _r$1, x, y, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = BinaryOp(x, 14, y); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: mul$1, $c: true, $r, $24r, _r$1, x, y, $s};return $f; + }; + quo = function quo$1(x, y) { + var {$24r, _r$1, x, y, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = BinaryOp(x, 15, y); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: quo$1, $c: true, $r, $24r, _r$1, x, y, $s};return $f; + }; + Shift = function Shift$1(x, op, s) { + var {$24r, _1, _2, _r$1, _r$2, _r$3, _ref, op, s, x, x$1, x$2, x$3, z, z$1, $s, $r, $c} = $restore(this, {x, op, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, int64Val, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, intVal, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref, unknownVal, true)[1]) { */ case 1: + x$1 = $clone(_ref.$val, unknownVal); + $s = -1; return new x$1.constructor.elem(x$1); + /* } else if ($assertType(_ref, int64Val, true)[1]) { */ case 2: + x$2 = _ref.$val; + if (s === 0) { + $s = -1; return x$2; + } + _1 = op; + if (_1 === (20)) { + z = i64toi(x$2).val; + $s = -1; return makeInt(z.Lsh(z, s)); + } else if (_1 === (21)) { + $s = -1; return $shiftRightInt64(x$2, s); + } + $s = 4; continue; + /* } else if ($assertType(_ref, intVal, true)[1]) { */ case 3: + x$3 = $clone(_ref.$val, intVal); + if (s === 0) { + $s = -1; return new x$3.constructor.elem(x$3); + } + z$1 = newInt(); + _2 = op; + /* */ if (_2 === (20)) { $s = 6; continue; } + /* */ if (_2 === (21)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_2 === (20)) { */ case 6: + $s = -1; return makeInt(z$1.Lsh(x$3.val, s)); + /* } else if (_2 === (21)) { */ case 7: + _r$1 = z$1.Rsh(x$3.val, s); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = makeInt(_r$1); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 11; case 11: return $24r; + /* } */ case 8: + case 5: + /* } */ case 4: + _r$3 = fmt.Sprintf("invalid shift %v %s %d", new sliceType$1([x, new token.Token(op), new $Uint(s)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $panic(new $String(_r$3)); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Shift$1, $c: true, $r, $24r, _1, _2, _r$1, _r$2, _r$3, _ref, op, s, x, x$1, x$2, x$3, z, z$1, $s};return $f; + }; + $pkg.Shift = Shift; + cmpZero = function cmpZero$1(x, op) { + var {_1, _r$1, op, x, $s, $r, $c} = $restore(this, {x, op}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _1 = op; + if (_1 === (39)) { + $s = -1; return x === 0; + } else if (_1 === (44)) { + $s = -1; return !((x === 0)); + } else if (_1 === (40)) { + $s = -1; return x < 0; + } else if (_1 === (45)) { + $s = -1; return x <= 0; + } else if (_1 === (41)) { + $s = -1; return x > 0; + } else if (_1 === (46)) { + $s = -1; return x >= 0; + } + _r$1 = fmt.Sprintf("invalid comparison %v %s 0", new sliceType$1([new $Int(x), new token.Token(op)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + $s = -1; return false; + /* */ } return; } var $f = {$blk: cmpZero$1, $c: true, $r, _1, _r$1, op, x, $s};return $f; + }; + Compare = function Compare$1(x_, op, y_) { + var {$24r, $24r$1, $24r$2, _1, _2, _3, _4, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, im, op, re, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x_, xs, y, y$1, y$2, y$3, y_, ys, $s, $r, $c} = $restore(this, {x_, op, y_}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = match(x_, y_); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + x = _tuple[0]; + y = _tuple[1]; + _ref = x; + /* */ if ($assertType(_ref, unknownVal, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, boolVal, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, int64Val, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, intVal, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ratVal, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, floatVal, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, complexVal, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ($assertType(_ref, unknownVal, true)[1]) { */ case 2: + x$1 = $clone(_ref.$val, unknownVal); + $s = -1; return false; + /* } else if ($assertType(_ref, boolVal, true)[1]) { */ case 3: + x$2 = _ref.$val; + y$1 = $assertType(y, boolVal); + _1 = op; + if (_1 === (39)) { + $s = -1; return x$2 === y$1; + } else if (_1 === (44)) { + $s = -1; return !(x$2 === y$1); + } + $s = 10; continue; + /* } else if ($assertType(_ref, int64Val, true)[1]) { */ case 4: + x$3 = _ref.$val; + y$2 = $assertType(y, int64Val); + _2 = op; + if (_2 === (39)) { + $s = -1; return (x$3.$high === y$2.$high && x$3.$low === y$2.$low); + } else if (_2 === (44)) { + $s = -1; return !((x$3.$high === y$2.$high && x$3.$low === y$2.$low)); + } else if (_2 === (40)) { + $s = -1; return (x$3.$high < y$2.$high || (x$3.$high === y$2.$high && x$3.$low < y$2.$low)); + } else if (_2 === (45)) { + $s = -1; return (x$3.$high < y$2.$high || (x$3.$high === y$2.$high && x$3.$low <= y$2.$low)); + } else if (_2 === (41)) { + $s = -1; return (x$3.$high > y$2.$high || (x$3.$high === y$2.$high && x$3.$low > y$2.$low)); + } else if (_2 === (46)) { + $s = -1; return (x$3.$high > y$2.$high || (x$3.$high === y$2.$high && x$3.$low >= y$2.$low)); + } + $s = 10; continue; + /* } else if ($assertType(_ref, intVal, true)[1]) { */ case 5: + x$4 = $clone(_ref.$val, intVal); + _r$2 = cmpZero(x$4.val.Cmp($assertType(y, intVal).val), op); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 12; case 12: return $24r; + /* } else if ($assertType(_ref, ratVal, true)[1]) { */ case 6: + x$5 = $clone(_ref.$val, ratVal); + _r$3 = x$5.val.Cmp($assertType(y, ratVal).val); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = cmpZero(_r$3, op); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$1 = _r$4; + $s = 15; case 15: return $24r$1; + /* } else if ($assertType(_ref, floatVal, true)[1]) { */ case 7: + x$6 = $clone(_ref.$val, floatVal); + _r$5 = x$6.val.Cmp($assertType(y, floatVal).val); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = cmpZero(_r$5, op); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$2 = _r$6; + $s = 18; case 18: return $24r$2; + /* } else if ($assertType(_ref, complexVal, true)[1]) { */ case 8: + x$7 = $clone(_ref.$val, complexVal); + y$3 = $clone($assertType(y, complexVal), complexVal); + _r$7 = Compare(x$7.re, 39, y$3.re); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + re = _r$7; + _r$8 = Compare(x$7.im, 39, y$3.im); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + im = _r$8; + _3 = op; + if (_3 === (39)) { + $s = -1; return re && im; + } else if (_3 === (44)) { + $s = -1; return !re || !im; + } + $s = 10; continue; + /* } else if ($assertType(_ref, ptrType, true)[1]) { */ case 9: + x$8 = _ref.$val; + _r$9 = x$8.string(); /* */ $s = 21; case 21: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + xs = _r$9; + _r$10 = $assertType(y, ptrType).string(); /* */ $s = 22; case 22: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + ys = _r$10; + _4 = op; + if (_4 === (39)) { + $s = -1; return xs === ys; + } else if (_4 === (44)) { + $s = -1; return !(xs === ys); + } else if (_4 === (40)) { + $s = -1; return xs < ys; + } else if (_4 === (45)) { + $s = -1; return xs <= ys; + } else if (_4 === (41)) { + $s = -1; return xs > ys; + } else if (_4 === (46)) { + $s = -1; return xs >= ys; + } + /* } */ case 10: + _r$11 = fmt.Sprintf("invalid comparison %v %s %v", new sliceType$1([x_, new token.Token(op), y_])); /* */ $s = 23; case 23: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $panic(new $String(_r$11)); + $s = -1; return false; + /* */ } return; } var $f = {$blk: Compare$1, $c: true, $r, $24r, $24r$1, $24r$2, _1, _2, _3, _4, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, im, op, re, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x_, xs, y, y$1, y$2, y$3, y_, ys, $s};return $f; + }; + $pkg.Compare = Compare; + Kind.prototype.String = function String$8() { + var i, x; + i = this.$val; + if (i < 0 || i >= 6) { + return "Kind(" + strconv.FormatInt((new $Int64(0, i)), 10) + ")"; + } + return $substring("UnknownBoolStringIntFloatComplex", ((i < 0 || i >= _Kind_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _Kind_index[i]), (x = i + 1 >> 0, ((x < 0 || x >= _Kind_index.length) ? ($throwRuntimeError("index out of range"), undefined) : _Kind_index[x]))); + }; + $ptrType(Kind).prototype.String = function(...$args) { return new Kind(this.$get()).String(...$args); }; + Kind.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + unknownVal.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ExactString", name: "ExactString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "implementsValue", name: "implementsValue", pkg: "go/constant", typ: $funcType([], [], false)}]; + boolVal.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ExactString", name: "ExactString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "implementsValue", name: "implementsValue", pkg: "go/constant", typ: $funcType([], [], false)}]; + ptrType.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "string", name: "string", pkg: "go/constant", typ: $funcType([], [$String], false)}, {prop: "appendReverse", name: "appendReverse", pkg: "go/constant", typ: $funcType([sliceType], [sliceType], false)}, {prop: "ExactString", name: "ExactString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "implementsValue", name: "implementsValue", pkg: "go/constant", typ: $funcType([], [], false)}]; + int64Val.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ExactString", name: "ExactString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "implementsValue", name: "implementsValue", pkg: "go/constant", typ: $funcType([], [], false)}]; + intVal.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ExactString", name: "ExactString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "implementsValue", name: "implementsValue", pkg: "go/constant", typ: $funcType([], [], false)}]; + ratVal.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ExactString", name: "ExactString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "implementsValue", name: "implementsValue", pkg: "go/constant", typ: $funcType([], [], false)}]; + floatVal.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ExactString", name: "ExactString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "implementsValue", name: "implementsValue", pkg: "go/constant", typ: $funcType([], [], false)}]; + complexVal.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ExactString", name: "ExactString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "implementsValue", name: "implementsValue", pkg: "go/constant", typ: $funcType([], [], false)}]; + Value.init([{prop: "ExactString", name: "ExactString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "implementsValue", name: "implementsValue", pkg: "go/constant", typ: $funcType([], [], false)}]); + unknownVal.init("", []); + stringVal.init("go/constant", [{prop: "mu", name: "mu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "s", name: "s", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "l", name: "l", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "r", name: "r", embedded: false, exported: false, typ: ptrType, tag: ""}]); + intVal.init("go/constant", [{prop: "val", name: "val", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); + ratVal.init("go/constant", [{prop: "val", name: "val", embedded: false, exported: false, typ: ptrType$3, tag: ""}]); + floatVal.init("go/constant", [{prop: "val", name: "val", embedded: false, exported: false, typ: ptrType$1, tag: ""}]); + complexVal.init("go/constant", [{prop: "re", name: "re", embedded: false, exported: false, typ: Value, tag: ""}, {prop: "im", name: "im", embedded: false, exported: false, typ: Value, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = big.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bits.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + emptyString = new stringVal.ptr(new sync.Mutex.ptr(0, 0), "", ptrType.nil, ptrType.nil); + _r = newFloat(); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + floatVal0 = new floatVal.ptr(_r); + _Kind_index = $toNativeArray($kindUint8, [0, 7, 11, 17, 20, 25, 32]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["go/internal/typeparams"] = (function() { + var $pkg = {}, $init, ast, token, IndexExpr, sliceType, ptrType, ptrType$1, ptrType$2, PackIndexExpr, UnpackIndexExpr; + ast = $packages["go/ast"]; + token = $packages["go/token"]; + IndexExpr = $newType(0, $kindStruct, "typeparams.IndexExpr", true, "go/internal/typeparams", true, function(Orig_, IndexListExpr_) { + this.$val = this; + if (arguments.length === 0) { + this.Orig = $ifaceNil; + this.IndexListExpr = ptrType$1.nil; + return; + } + this.Orig = Orig_; + this.IndexListExpr = IndexListExpr_; + }); + $pkg.IndexExpr = IndexExpr; + $pkg.$finishSetup = function() { + sliceType = $sliceType(ast.Expr); + ptrType = $ptrType(ast.IndexExpr); + ptrType$1 = $ptrType(ast.IndexListExpr); + ptrType$2 = $ptrType(IndexExpr); + PackIndexExpr = function PackIndexExpr$1(x, lbrack, exprs, rbrack) { + var _1, exprs, lbrack, rbrack, x; + _1 = exprs.$length; + if (_1 === (0)) { + $panic(new $String("internal error: PackIndexExpr with empty expr slice")); + } else if (_1 === (1)) { + return new ast.IndexExpr.ptr(x, lbrack, (0 >= exprs.$length ? ($throwRuntimeError("index out of range"), undefined) : exprs.$array[exprs.$offset + 0]), rbrack); + } else { + return new ast.IndexListExpr.ptr(x, lbrack, exprs, rbrack); + } + }; + $pkg.PackIndexExpr = PackIndexExpr; + UnpackIndexExpr = function UnpackIndexExpr$1(n) { + var _ref, e, e$1, n; + _ref = n; + if ($assertType(_ref, ptrType, true)[1]) { + e = _ref.$val; + return new IndexExpr.ptr(e, new ast.IndexListExpr.ptr(e.X, e.Lbrack, new sliceType([e.Index]), e.Rbrack)); + } else if ($assertType(_ref, ptrType$1, true)[1]) { + e$1 = _ref.$val; + return new IndexExpr.ptr(e$1, e$1); + } + return ptrType$2.nil; + }; + $pkg.UnpackIndexExpr = UnpackIndexExpr; + IndexExpr.init("", [{prop: "Orig", name: "Orig", embedded: false, exported: true, typ: ast.Expr, tag: ""}, {prop: "IndexListExpr", name: "IndexListExpr", embedded: true, exported: true, typ: ptrType$1, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = ast.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["go/parser"] = (function() { + var $pkg = {}, $init, bytes, errors, fmt, ast, typeparams, scanner, token, io, fs, os, filepath, strings, resolver, parser, bailout, field, parseSpecFunction, Mode, ptrType, ptrType$1, ptrType$2, sliceType, sliceType$1, ptrType$3, interfaceType, sliceType$2, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, ptrType$16, ptrType$17, ptrType$18, ptrType$19, ptrType$20, ptrType$21, ptrType$22, ptrType$23, ptrType$24, sliceType$3, ptrType$25, ptrType$26, ptrType$27, ptrType$28, ptrType$29, ptrType$30, ptrType$31, ptrType$32, ptrType$33, sliceType$4, ptrType$34, ptrType$35, ptrType$36, sliceType$5, ptrType$37, sliceType$6, ptrType$38, ptrType$39, sliceType$7, arrayType, arrayType$1, ptrType$40, ptrType$41, ptrType$42, ptrType$43, ptrType$44, structType, ptrType$45, ptrType$46, ptrType$47, sliceType$8, ptrType$48, sliceType$9, ptrType$49, sliceType$10, sliceType$11, sliceType$12, ptrType$50, ptrType$51, ptrType$53, funcType, mapType, ptrType$54, unresolved, stmtStart, declStart, exprEnd, resolveFile, trace, un, incNestLev, decNestLev, assert, unparen, isTypeSwitchAssert, extractName, isTypeElem, readSource, ParseFile; + bytes = $packages["bytes"]; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + ast = $packages["go/ast"]; + typeparams = $packages["go/internal/typeparams"]; + scanner = $packages["go/scanner"]; + token = $packages["go/token"]; + io = $packages["io"]; + fs = $packages["io/fs"]; + os = $packages["os"]; + filepath = $packages["path/filepath"]; + strings = $packages["strings"]; + resolver = $newType(0, $kindStruct, "parser.resolver", true, "go/parser", false, function(handle_, declErr_, pkgScope_, topScope_, unresolved_, depth_, labelScope_, targetStack_) { + this.$val = this; + if (arguments.length === 0) { + this.handle = ptrType$1.nil; + this.declErr = $throwNilPointerError; + this.pkgScope = ptrType.nil; + this.topScope = ptrType.nil; + this.unresolved = sliceType.nil; + this.depth = 0; + this.labelScope = ptrType.nil; + this.targetStack = sliceType$1.nil; + return; + } + this.handle = handle_; + this.declErr = declErr_; + this.pkgScope = pkgScope_; + this.topScope = topScope_; + this.unresolved = unresolved_; + this.depth = depth_; + this.labelScope = labelScope_; + this.targetStack = targetStack_; + }); + parser = $newType(0, $kindStruct, "parser.parser", true, "go/parser", false, function(file_, errors_, scanner_, mode_, trace_, indent_, comments_, leadComment_, lineComment_, pos_, tok_, lit_, syncPos_, syncCnt_, exprLev_, inRhs_, imports_, nestLev_) { + this.$val = this; + if (arguments.length === 0) { + this.file = ptrType$1.nil; + this.errors = scanner.ErrorList.nil; + this.scanner = new scanner.Scanner.ptr(ptrType$1.nil, "", sliceType$12.nil, $throwNilPointerError, 0, 0, 0, 0, 0, false, 0, 0); + this.mode = 0; + this.trace = false; + this.indent = 0; + this.comments = sliceType$11.nil; + this.leadComment = ptrType$33.nil; + this.lineComment = ptrType$33.nil; + this.pos = 0; + this.tok = 0; + this.lit = ""; + this.syncPos = 0; + this.syncCnt = 0; + this.exprLev = 0; + this.inRhs = false; + this.imports = sliceType$10.nil; + this.nestLev = 0; + return; + } + this.file = file_; + this.errors = errors_; + this.scanner = scanner_; + this.mode = mode_; + this.trace = trace_; + this.indent = indent_; + this.comments = comments_; + this.leadComment = leadComment_; + this.lineComment = lineComment_; + this.pos = pos_; + this.tok = tok_; + this.lit = lit_; + this.syncPos = syncPos_; + this.syncCnt = syncCnt_; + this.exprLev = exprLev_; + this.inRhs = inRhs_; + this.imports = imports_; + this.nestLev = nestLev_; + }); + bailout = $newType(0, $kindStruct, "parser.bailout", true, "go/parser", false, function(pos_, msg_) { + this.$val = this; + if (arguments.length === 0) { + this.pos = 0; + this.msg = ""; + return; + } + this.pos = pos_; + this.msg = msg_; + }); + field = $newType(0, $kindStruct, "parser.field", true, "go/parser", false, function(name_, typ_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ptrType$2.nil; + this.typ = $ifaceNil; + return; + } + this.name = name_; + this.typ = typ_; + }); + parseSpecFunction = $newType(4, $kindFunc, "parser.parseSpecFunction", true, "go/parser", false, null); + Mode = $newType(4, $kindUint, "parser.Mode", true, "go/parser", true, null); + $pkg.resolver = resolver; + $pkg.parser = parser; + $pkg.bailout = bailout; + $pkg.field = field; + $pkg.parseSpecFunction = parseSpecFunction; + $pkg.Mode = Mode; + $pkg.$finishSetup = function() { + ptrType = $ptrType(ast.Scope); + ptrType$1 = $ptrType(token.File); + ptrType$2 = $ptrType(ast.Ident); + sliceType = $sliceType(ptrType$2); + sliceType$1 = $sliceType(sliceType); + ptrType$3 = $ptrType(ast.Object); + interfaceType = $interfaceType([{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}]); + sliceType$2 = $sliceType($emptyInterface); + ptrType$4 = $ptrType(ast.FuncLit); + ptrType$5 = $ptrType(ast.SelectorExpr); + ptrType$6 = $ptrType(ast.StructType); + ptrType$7 = $ptrType(ast.FuncType); + ptrType$8 = $ptrType(ast.CompositeLit); + ptrType$9 = $ptrType(ast.InterfaceType); + ptrType$10 = $ptrType(ast.LabeledStmt); + ptrType$11 = $ptrType(ast.AssignStmt); + ptrType$12 = $ptrType(ast.BranchStmt); + ptrType$13 = $ptrType(ast.BlockStmt); + ptrType$14 = $ptrType(ast.IfStmt); + ptrType$15 = $ptrType(ast.CaseClause); + ptrType$16 = $ptrType(ast.SwitchStmt); + ptrType$17 = $ptrType(ast.TypeSwitchStmt); + ptrType$18 = $ptrType(ast.CommClause); + ptrType$19 = $ptrType(ast.SelectStmt); + ptrType$20 = $ptrType(ast.ForStmt); + ptrType$21 = $ptrType(ast.RangeStmt); + ptrType$22 = $ptrType(ast.GenDecl); + ptrType$23 = $ptrType(ast.FuncDecl); + ptrType$24 = $ptrType(ast.KeyValueExpr); + sliceType$3 = $sliceType(ast.Expr); + ptrType$25 = $ptrType(ast.ValueSpec); + ptrType$26 = $ptrType(ast.TypeSpec); + ptrType$27 = $ptrType(ast.FieldList); + ptrType$28 = $ptrType(ast.StarExpr); + ptrType$29 = $ptrType(ast.IndexExpr); + ptrType$30 = $ptrType(ast.IndexListExpr); + ptrType$31 = $ptrType(scanner.ErrorList); + ptrType$32 = $ptrType(ast.Comment); + ptrType$33 = $ptrType(ast.CommentGroup); + sliceType$4 = $sliceType(ptrType$32); + ptrType$34 = $ptrType(ast.ArrayType); + ptrType$35 = $ptrType(ast.BasicLit); + ptrType$36 = $ptrType(ast.Field); + sliceType$5 = $sliceType(ptrType$36); + ptrType$37 = $ptrType(ast.Ellipsis); + sliceType$6 = $sliceType(field); + ptrType$38 = $ptrType(ast.MapType); + ptrType$39 = $ptrType(ast.ChanType); + sliceType$7 = $sliceType(ast.Stmt); + arrayType = $arrayType(ast.Expr, 3); + arrayType$1 = $arrayType(token.Pos, 2); + ptrType$40 = $ptrType(ast.CallExpr); + ptrType$41 = $ptrType(ast.ParenExpr); + ptrType$42 = $ptrType(ast.BadExpr); + ptrType$43 = $ptrType(ast.ReturnStmt); + ptrType$44 = $ptrType(ast.ExprStmt); + structType = $structType("go/parser", [{prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "lit", name: "lit", embedded: false, exported: false, typ: $String, tag: ""}]); + ptrType$45 = $ptrType(ast.TypeAssertExpr); + ptrType$46 = $ptrType(ast.UnaryExpr); + ptrType$47 = $ptrType(ast.BinaryExpr); + sliceType$8 = $sliceType(ast.Spec); + ptrType$48 = $ptrType(ast.File); + sliceType$9 = $sliceType(ast.Decl); + ptrType$49 = $ptrType(ast.ImportSpec); + sliceType$10 = $sliceType(ptrType$49); + sliceType$11 = $sliceType(ptrType$33); + sliceType$12 = $sliceType($Uint8); + ptrType$50 = $ptrType(bytes.Buffer); + ptrType$51 = $ptrType(token.FileSet); + ptrType$53 = $ptrType(resolver); + funcType = $funcType([token.Pos, $String], [], false); + mapType = $mapType(token.Token, $Bool); + ptrType$54 = $ptrType(parser); + resolveFile = function resolveFile$1(file, handle, declErr) { + var {_i, _i$1, _r, _ref, _ref$1, decl, declErr, file, handle, i, ident, pkgScope, pos, r, x, $s, $r, $c} = $restore(this, {file, handle, declErr}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pkgScope = ast.NewScope(ptrType.nil); + r = new resolver.ptr(handle, declErr, pkgScope, pkgScope, sliceType.nil, 1, ptrType.nil, sliceType$1.nil); + _ref = file.Decls; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + decl = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = ast.Walk(r, decl); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $r = r.closeScope(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + assert(r.topScope === ptrType.nil, "unbalanced scopes"); + assert(r.labelScope === ptrType.nil, "unbalanced label scopes"); + i = 0; + _ref$1 = r.unresolved; + _i$1 = 0; + /* while (true) { */ case 5: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 6; continue; } + ident = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + assert(ident.Obj === unresolved, "object already resolved"); + ident.Obj = r.pkgScope.Lookup(ident.Name); + /* */ if (ident.Obj === ptrType$3.nil) { $s = 7; continue; } + /* */ if (false) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (ident.Obj === ptrType$3.nil) { */ case 7: + (x = r.unresolved, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = ident)); + i = i + (1) >> 0; + $s = 9; continue; + /* } else if (false) { */ case 8: + _r = $assertType(ident.Obj.Decl, interfaceType).Pos(); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + pos = _r; + $r = r.trace("resolved %s@%v to package object %v", new sliceType$2([new $String(ident.Name), new token.Pos(ident.Pos()), new token.Pos(pos)])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + _i$1++; + $s = 5; continue; + case 6: + file.Scope = r.pkgScope; + file.Unresolved = $subslice(r.unresolved, 0, i); + $s = -1; return; + /* */ } return; } var $f = {$blk: resolveFile$1, $c: true, $r, _i, _i$1, _r, _ref, _ref$1, decl, declErr, file, handle, i, ident, pkgScope, pos, r, x, $s};return $f; + }; + $ptrType(resolver).prototype.trace = function trace$1(format, args) { + var {_r, _r$1, args, format, r, $s, $r, $c} = $restore(this, {format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.sprintf(format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = fmt.Println(new sliceType$2([new $String(strings.Repeat(". ", r.depth) + _r)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return; + /* */ } return; } var $f = {$blk: trace$1, $c: true, $r, _r, _r$1, args, format, r, $s};return $f; + }; + $ptrType(resolver).prototype.sprintf = function sprintf(format, args) { + var {$24r, _i, _r, _r$1, _ref, _ref$1, arg, arg$1, args, format, i, r, x, $s, $r, $c} = $restore(this, {format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _ref = args; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = arg; + /* */ if ($assertType(_ref$1, token.Pos, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref$1, token.Pos, true)[1]) { */ case 3: + arg$1 = _ref$1.$val; + _r = r.handle.Position(arg$1); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ((i < 0 || i >= args.$length) ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + i] = (x = _r, new x.constructor.elem(x))); + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + _r$1 = fmt.Sprintf(format, args); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 7; case 7: return $24r; + /* */ } return; } var $f = {$blk: sprintf, $c: true, $r, $24r, _i, _r, _r$1, _ref, _ref$1, arg, arg$1, args, format, i, r, x, $s};return $f; + }; + $ptrType(resolver).prototype.openScope = function openScope(pos) { + var {pos, r, x, $s, $r, $c} = $restore(this, {pos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + r.depth = r.depth + (1) >> 0; + if (r.depth > 1000) { + $panic((x = new bailout.ptr(pos, "exceeded max scope depth during object resolution"), new x.constructor.elem(x))); + } + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = r.trace("opening scope @%v", new sliceType$2([new token.Pos(pos)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + r.topScope = ast.NewScope(r.topScope); + $s = -1; return; + /* */ } return; } var $f = {$blk: openScope, $c: true, $r, pos, r, x, $s};return $f; + }; + $ptrType(resolver).prototype.closeScope = function closeScope() { + var {r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + r.depth = r.depth - (1) >> 0; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = r.trace("closing scope", sliceType$2.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + r.topScope = r.topScope.Outer; + $s = -1; return; + /* */ } return; } var $f = {$blk: closeScope, $c: true, $r, r, $s};return $f; + }; + $ptrType(resolver).prototype.openLabelScope = function openLabelScope() { + var r; + r = this; + r.labelScope = ast.NewScope(r.labelScope); + r.targetStack = $append(r.targetStack, sliceType.nil); + }; + $ptrType(resolver).prototype.closeLabelScope = function closeLabelScope() { + var {_arg, _arg$1, _i, _r, _ref, ident, n, r, scope, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + n = r.targetStack.$length - 1 >> 0; + scope = r.labelScope; + _ref = (x = r.targetStack, ((n < 0 || n >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + n])); + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + ident = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ident.Obj = scope.Lookup(ident.Name); + /* */ if (ident.Obj === ptrType$3.nil && !(r.declErr === $throwNilPointerError)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (ident.Obj === ptrType$3.nil && !(r.declErr === $throwNilPointerError)) { */ case 3: + _arg = ident.Pos(); + _r = fmt.Sprintf("label %s undefined", new sliceType$2([new $String(ident.Name)])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + $r = r.declErr(_arg, _arg$1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + r.targetStack = $subslice(r.targetStack, 0, n); + r.labelScope = r.labelScope.Outer; + $s = -1; return; + /* */ } return; } var $f = {$blk: closeLabelScope, $c: true, $r, _arg, _arg$1, _i, _r, _ref, ident, n, r, scope, x, $s};return $f; + }; + $ptrType(resolver).prototype.declare = function declare(decl, data, scope, kind, idents) { + var {_arg, _arg$1, _i, _r, _r$1, _r$2, _ref, _tuple, alt, data, decl, ident, idents, kind, obj, ok, pos, prevDecl, r, scope, $s, $r, $c} = $restore(this, {decl, data, scope, kind, idents}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _ref = idents; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + ident = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (!(ident.Obj === ptrType$3.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(ident.Obj === ptrType$3.nil)) { */ case 3: + _r = fmt.Sprintf("%v: identifier %s already declared or resolved", new sliceType$2([new token.Pos(ident.Pos()), new $String(ident.Name)])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(new $String(_r)); + /* } */ case 4: + obj = ast.NewObj(kind, ident.Name); + obj.Decl = decl; + obj.Data = data; + _tuple = $assertType(decl, ptrType$2, true); + ok = _tuple[1]; + if (!ok) { + ident.Obj = obj; + } + /* */ if (!(ident.Name === "_")) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(ident.Name === "_")) { */ case 6: + /* */ if (false) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (false) { */ case 8: + $r = r.trace("declaring %s@%v", new sliceType$2([new $String(ident.Name), new token.Pos(ident.Pos())])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + alt = scope.Insert(obj); + /* */ if (!(alt === ptrType$3.nil) && !(r.declErr === $throwNilPointerError)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!(alt === ptrType$3.nil) && !(r.declErr === $throwNilPointerError)) { */ case 11: + prevDecl = ""; + pos = alt.Pos(); + /* */ if (new token.Pos(pos).IsValid()) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (new token.Pos(pos).IsValid()) { */ case 13: + _r$1 = r.sprintf("\n\tprevious declaration at %v", new sliceType$2([new token.Pos(pos)])); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + prevDecl = _r$1; + /* } */ case 14: + _arg = ident.Pos(); + _r$2 = fmt.Sprintf("%s redeclared in this block%s", new sliceType$2([new $String(ident.Name), new $String(prevDecl)])); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = _r$2; + $r = r.declErr(_arg, _arg$1); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + /* } */ case 7: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: declare, $c: true, $r, _arg, _arg$1, _i, _r, _r$1, _r$2, _ref, _tuple, alt, data, decl, ident, idents, kind, obj, ok, pos, prevDecl, r, scope, $s};return $f; + }; + $ptrType(resolver).prototype.shortVarDecl = function shortVarDecl(decl) { + var {_i, _r, _ref, _tuple, alt, decl, ident, isIdent, n, obj, r, x, x$1, $s, $r, $c} = $restore(this, {decl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + n = 0; + _ref = decl.Lhs; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _tuple = $assertType(x, ptrType$2, true); + ident = _tuple[0]; + isIdent = _tuple[1]; + /* */ if (isIdent) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (isIdent) { */ case 3: + assert(ident.Obj === ptrType$3.nil, "identifier already declared or resolved"); + obj = ast.NewObj(4, ident.Name); + obj.Decl = decl; + ident.Obj = obj; + /* */ if (!(ident.Name === "_")) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(ident.Name === "_")) { */ case 5: + /* */ if (false) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (false) { */ case 7: + $r = r.trace("declaring %s@%v", new sliceType$2([new $String(ident.Name), new token.Pos(ident.Pos())])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + alt = r.topScope.Insert(obj); + if (!(alt === ptrType$3.nil)) { + ident.Obj = alt; + } else { + n = n + (1) >> 0; + } + /* } */ case 6: + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + /* */ if ((n === 0) && !(r.declErr === $throwNilPointerError)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ((n === 0) && !(r.declErr === $throwNilPointerError)) { */ case 10: + _r = (x$1 = decl.Lhs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])).Pos(); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = r.declErr(_r, "no new variables on left side of :="); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + $s = -1; return; + /* */ } return; } var $f = {$blk: shortVarDecl, $c: true, $r, _i, _r, _ref, _tuple, alt, decl, ident, isIdent, n, obj, r, x, x$1, $s};return $f; + }; + $ptrType(resolver).prototype.resolve = function resolve(ident, collectUnresolved) { + var {_r, _tuple, collectUnresolved, ident, obj, ok, r, s, $s, $r, $c} = $restore(this, {ident, collectUnresolved}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + /* */ if (!(ident.Obj === ptrType$3.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(ident.Obj === ptrType$3.nil)) { */ case 1: + _r = r.sprintf("%v: identifier %s already declared or resolved", new sliceType$2([new token.Pos(ident.Pos()), new $String(ident.Name)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(new $String(_r)); + /* } */ case 2: + if (ident.Name === "_") { + $s = -1; return; + } + s = r.topScope; + /* while (true) { */ case 4: + /* if (!(!(s === ptrType.nil))) { break; } */ if(!(!(s === ptrType.nil))) { $s = 5; continue; } + obj = s.Lookup(ident.Name); + /* */ if (!(obj === ptrType$3.nil)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(obj === ptrType$3.nil)) { */ case 6: + /* */ if (false) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (false) { */ case 8: + $r = r.trace("resolved %v:%s to %v", new sliceType$2([new token.Pos(ident.Pos()), new $String(ident.Name), obj])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + assert(!(obj.Name === ""), "obj with no name"); + _tuple = $assertType(obj.Decl, ptrType$2, true); + ok = _tuple[1]; + if (!ok) { + ident.Obj = obj; + } + $s = -1; return; + /* } */ case 7: + s = s.Outer; + $s = 4; continue; + case 5: + if (collectUnresolved) { + ident.Obj = unresolved; + r.unresolved = $append(r.unresolved, ident); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: resolve, $c: true, $r, _r, _tuple, collectUnresolved, ident, obj, ok, r, s, $s};return $f; + }; + $ptrType(resolver).prototype.walkExprs = function walkExprs(list) { + var {_i, _ref, list, node, r, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _ref = list; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + node = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = ast.Walk(r, node); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: walkExprs, $c: true, $r, _i, _ref, list, node, r, $s};return $f; + }; + $ptrType(resolver).prototype.walkLHS = function walkLHS(list) { + var {_i, _ref, _tuple, expr, expr$1, list, ok, r, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _ref = list; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + expr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + expr$1 = unparen(expr); + _tuple = $assertType(expr$1, ptrType$2, true); + ok = _tuple[1]; + /* */ if (!ok && !($interfaceIsEqual(expr$1, $ifaceNil))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!ok && !($interfaceIsEqual(expr$1, $ifaceNil))) { */ case 3: + $r = ast.Walk(r, expr$1); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: walkLHS, $c: true, $r, _i, _ref, _tuple, expr, expr$1, list, ok, r, $s};return $f; + }; + $ptrType(resolver).prototype.walkStmts = function walkStmts(list) { + var {_i, _ref, list, r, stmt, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _ref = list; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + stmt = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = ast.Walk(r, stmt); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: walkStmts, $c: true, $r, _i, _ref, list, r, stmt, $s};return $f; + }; + $ptrType(resolver).prototype.Visit = function Visit(node) { + var {$24r, $24r$1, _1, _arg, _arg$1, _i, _i$1, _i$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, as, depth, e, i, ident, kind, kv, lhs, n, n$1, n$10, n$11, n$12, n$13, n$14, n$15, n$16, n$17, n$18, n$19, n$2, n$20, n$21, n$3, n$4, n$5, n$6, n$7, n$8, n$9, node, r, spec, spec$1, spec$2, spec$3, x, x$1, $s, $deferred, $r, $c} = $restore(this, {node}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + r = this; + /* */ if (false && !($interfaceIsEqual(node, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false && !($interfaceIsEqual(node, $ifaceNil))) { */ case 1: + _arg = node; + _r = node.Pos(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = new token.Pos(_r); + $r = r.trace("node %T@%v", new sliceType$2([_arg, _arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _ref = node; + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$6, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 17; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 18; continue; } + /* */ if ($assertType(_ref, ptrType$17, true)[1]) { $s = 19; continue; } + /* */ if ($assertType(_ref, ptrType$18, true)[1]) { $s = 20; continue; } + /* */ if ($assertType(_ref, ptrType$19, true)[1]) { $s = 21; continue; } + /* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 22; continue; } + /* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 23; continue; } + /* */ if ($assertType(_ref, ptrType$22, true)[1]) { $s = 24; continue; } + /* */ if ($assertType(_ref, ptrType$23, true)[1]) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if ($assertType(_ref, ptrType$2, true)[1]) { */ case 5: + n = _ref.$val; + $r = r.resolve(n, true); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$4, true)[1]) { */ case 6: + n$1 = _ref.$val; + _r$1 = n$1.Pos(); /* */ $s = 29; case 29: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = r.openScope(_r$1); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + $r = r.walkFuncType(n$1.Type); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.walkBody(n$1.Body); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 7: + n$2 = _ref.$val; + $r = ast.Walk(r, n$2.X); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$6, true)[1]) { */ case 8: + n$3 = _ref.$val; + $r = r.openScope(n$3.Pos()); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + $r = r.walkFieldList(n$3.Fields, 4); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 9: + n$4 = _ref.$val; + _r$2 = n$4.Pos(); /* */ $s = 36; case 36: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = r.openScope(_r$2); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + $r = r.walkFuncType(n$4); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 10: + n$5 = _ref.$val; + /* */ if (!($interfaceIsEqual(n$5.Type, $ifaceNil))) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (!($interfaceIsEqual(n$5.Type, $ifaceNil))) { */ case 39: + $r = ast.Walk(r, n$5.Type); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 40: + _ref$1 = n$5.Elts; + _i = 0; + /* while (true) { */ case 42: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 43; continue; } + e = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _tuple = $assertType(e, ptrType$24, true); + kv = _tuple[0]; + /* */ if (!(kv === ptrType$24.nil)) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (!(kv === ptrType$24.nil)) { */ case 44: + _tuple$1 = $assertType(kv.Key, ptrType$2, true); + ident = _tuple$1[0]; + /* */ if (!(ident === ptrType$2.nil)) { $s = 47; continue; } + /* */ $s = 48; continue; + /* if (!(ident === ptrType$2.nil)) { */ case 47: + $r = r.resolve(ident, false); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 49; continue; + /* } else { */ case 48: + $r = ast.Walk(r, kv.Key); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 49: + $r = ast.Walk(r, kv.Value); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 46; continue; + /* } else { */ case 45: + $r = ast.Walk(r, e); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 46: + _i++; + $s = 42; continue; + case 43: + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 11: + n$6 = _ref.$val; + $r = r.openScope(n$6.Pos()); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + $r = r.walkFieldList(n$6.Methods, 5); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 12: + n$7 = _ref.$val; + $r = r.declare(n$7, $ifaceNil, r.labelScope, 6, new sliceType([n$7.Label])); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.Walk(r, n$7.Stmt); /* */ $s = 57; case 57: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 13: + n$8 = _ref.$val; + $r = r.walkExprs(n$8.Rhs); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (n$8.Tok === 47) { $s = 59; continue; } + /* */ $s = 60; continue; + /* if (n$8.Tok === 47) { */ case 59: + $r = r.shortVarDecl(n$8); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 61; continue; + /* } else { */ case 60: + $r = r.walkExprs(n$8.Lhs); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 61: + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 14: + n$9 = _ref.$val; + if (!((n$9.Tok === 69)) && !(n$9.Label === ptrType$2.nil)) { + depth = r.targetStack.$length - 1 >> 0; + (x$1 = r.targetStack, ((depth < 0 || depth >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + depth] = $append((x = r.targetStack, ((depth < 0 || depth >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + depth])), n$9.Label))); + } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 15: + n$10 = _ref.$val; + $r = r.openScope(n$10.Pos()); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + $r = r.walkStmts(n$10.List); /* */ $s = 65; case 65: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 16: + n$11 = _ref.$val; + $r = r.openScope(n$11.Pos()); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + /* */ if (!($interfaceIsEqual(n$11.Init, $ifaceNil))) { $s = 67; continue; } + /* */ $s = 68; continue; + /* if (!($interfaceIsEqual(n$11.Init, $ifaceNil))) { */ case 67: + $r = ast.Walk(r, n$11.Init); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 68: + $r = ast.Walk(r, n$11.Cond); /* */ $s = 70; case 70: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.Walk(r, n$11.Body); /* */ $s = 71; case 71: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(n$11.Else, $ifaceNil))) { $s = 72; continue; } + /* */ $s = 73; continue; + /* if (!($interfaceIsEqual(n$11.Else, $ifaceNil))) { */ case 72: + $r = ast.Walk(r, n$11.Else); /* */ $s = 74; case 74: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 73: + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 17: + n$12 = _ref.$val; + $r = r.walkExprs(n$12.List); /* */ $s = 75; case 75: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.openScope(n$12.Pos()); /* */ $s = 76; case 76: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + $r = r.walkStmts(n$12.Body); /* */ $s = 77; case 77: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 18: + n$13 = _ref.$val; + $r = r.openScope(n$13.Pos()); /* */ $s = 78; case 78: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + /* */ if (!($interfaceIsEqual(n$13.Init, $ifaceNil))) { $s = 79; continue; } + /* */ $s = 80; continue; + /* if (!($interfaceIsEqual(n$13.Init, $ifaceNil))) { */ case 79: + $r = ast.Walk(r, n$13.Init); /* */ $s = 81; case 81: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 80: + /* */ if (!($interfaceIsEqual(n$13.Tag, $ifaceNil))) { $s = 82; continue; } + /* */ $s = 83; continue; + /* if (!($interfaceIsEqual(n$13.Tag, $ifaceNil))) { */ case 82: + /* */ if (!($interfaceIsEqual(n$13.Init, $ifaceNil))) { $s = 84; continue; } + /* */ $s = 85; continue; + /* if (!($interfaceIsEqual(n$13.Init, $ifaceNil))) { */ case 84: + _r$3 = n$13.Tag.Pos(); /* */ $s = 86; case 86: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = r.openScope(_r$3); /* */ $s = 87; case 87: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + /* } */ case 85: + $r = ast.Walk(r, n$13.Tag); /* */ $s = 88; case 88: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 83: + /* */ if (!(n$13.Body === ptrType$13.nil)) { $s = 89; continue; } + /* */ $s = 90; continue; + /* if (!(n$13.Body === ptrType$13.nil)) { */ case 89: + $r = r.walkStmts(n$13.Body.List); /* */ $s = 91; case 91: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 90: + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$17, true)[1]) { */ case 19: + n$14 = _ref.$val; + /* */ if (!($interfaceIsEqual(n$14.Init, $ifaceNil))) { $s = 92; continue; } + /* */ $s = 93; continue; + /* if (!($interfaceIsEqual(n$14.Init, $ifaceNil))) { */ case 92: + $r = r.openScope(n$14.Pos()); /* */ $s = 94; case 94: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + $r = ast.Walk(r, n$14.Init); /* */ $s = 95; case 95: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 93: + _r$4 = n$14.Assign.Pos(); /* */ $s = 96; case 96: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $r = r.openScope(_r$4); /* */ $s = 97; case 97: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + $r = ast.Walk(r, n$14.Assign); /* */ $s = 98; case 98: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(n$14.Body === ptrType$13.nil)) { $s = 99; continue; } + /* */ $s = 100; continue; + /* if (!(n$14.Body === ptrType$13.nil)) { */ case 99: + $r = r.walkStmts(n$14.Body.List); /* */ $s = 101; case 101: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 100: + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$18, true)[1]) { */ case 20: + n$15 = _ref.$val; + $r = r.openScope(n$15.Pos()); /* */ $s = 102; case 102: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + /* */ if (!($interfaceIsEqual(n$15.Comm, $ifaceNil))) { $s = 103; continue; } + /* */ $s = 104; continue; + /* if (!($interfaceIsEqual(n$15.Comm, $ifaceNil))) { */ case 103: + $r = ast.Walk(r, n$15.Comm); /* */ $s = 105; case 105: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 104: + $r = r.walkStmts(n$15.Body); /* */ $s = 106; case 106: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$19, true)[1]) { */ case 21: + n$16 = _ref.$val; + /* */ if (!(n$16.Body === ptrType$13.nil)) { $s = 107; continue; } + /* */ $s = 108; continue; + /* if (!(n$16.Body === ptrType$13.nil)) { */ case 107: + $r = r.walkStmts(n$16.Body.List); /* */ $s = 109; case 109: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 108: + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$20, true)[1]) { */ case 22: + n$17 = _ref.$val; + $r = r.openScope(n$17.Pos()); /* */ $s = 110; case 110: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + /* */ if (!($interfaceIsEqual(n$17.Init, $ifaceNil))) { $s = 111; continue; } + /* */ $s = 112; continue; + /* if (!($interfaceIsEqual(n$17.Init, $ifaceNil))) { */ case 111: + $r = ast.Walk(r, n$17.Init); /* */ $s = 113; case 113: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 112: + /* */ if (!($interfaceIsEqual(n$17.Cond, $ifaceNil))) { $s = 114; continue; } + /* */ $s = 115; continue; + /* if (!($interfaceIsEqual(n$17.Cond, $ifaceNil))) { */ case 114: + $r = ast.Walk(r, n$17.Cond); /* */ $s = 116; case 116: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 115: + /* */ if (!($interfaceIsEqual(n$17.Post, $ifaceNil))) { $s = 117; continue; } + /* */ $s = 118; continue; + /* if (!($interfaceIsEqual(n$17.Post, $ifaceNil))) { */ case 117: + $r = ast.Walk(r, n$17.Post); /* */ $s = 119; case 119: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 118: + $r = ast.Walk(r, n$17.Body); /* */ $s = 120; case 120: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 23: + n$18 = _ref.$val; + $r = r.openScope(n$18.Pos()); /* */ $s = 121; case 121: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + $r = ast.Walk(r, n$18.X); /* */ $s = 122; case 122: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + lhs = sliceType$3.nil; + if (!($interfaceIsEqual(n$18.Key, $ifaceNil))) { + lhs = $append(lhs, n$18.Key); + } + if (!($interfaceIsEqual(n$18.Value, $ifaceNil))) { + lhs = $append(lhs, n$18.Value); + } + /* */ if (lhs.$length > 0) { $s = 123; continue; } + /* */ $s = 124; continue; + /* if (lhs.$length > 0) { */ case 123: + /* */ if (n$18.Tok === 47) { $s = 125; continue; } + /* */ $s = 126; continue; + /* if (n$18.Tok === 47) { */ case 125: + as = new ast.AssignStmt.ptr(lhs, n$18.TokPos, 47, new sliceType$3([new ast.UnaryExpr.ptr(0, 79, n$18.X)])); + $r = r.walkLHS(lhs); /* */ $s = 128; case 128: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.shortVarDecl(as); /* */ $s = 129; case 129: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 127; continue; + /* } else { */ case 126: + $r = r.walkExprs(lhs); /* */ $s = 130; case 130: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 127: + /* } */ case 124: + $r = ast.Walk(r, n$18.Body); /* */ $s = 131; case 131: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$22, true)[1]) { */ case 24: + n$19 = _ref.$val; + _1 = n$19.Tok; + /* */ if ((_1 === (64)) || (_1 === (85))) { $s = 133; continue; } + /* */ if (_1 === (84)) { $s = 134; continue; } + /* */ $s = 135; continue; + /* if ((_1 === (64)) || (_1 === (85))) { */ case 133: + _ref$2 = n$19.Specs; + _i$1 = 0; + /* while (true) { */ case 136: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 137; continue; } + i = _i$1; + spec = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + spec$1 = $assertType(spec, ptrType$25); + kind = 2; + if (n$19.Tok === 85) { + kind = 4; + } + $r = r.walkExprs(spec$1.Values); /* */ $s = 138; case 138: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(spec$1.Type, $ifaceNil))) { $s = 139; continue; } + /* */ $s = 140; continue; + /* if (!($interfaceIsEqual(spec$1.Type, $ifaceNil))) { */ case 139: + $r = ast.Walk(r, spec$1.Type); /* */ $s = 141; case 141: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 140: + $r = r.declare(spec$1, new $Int(i), r.topScope, kind, spec$1.Names); /* */ $s = 142; case 142: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 136; continue; + case 137: + $s = 135; continue; + /* } else if (_1 === (84)) { */ case 134: + _ref$3 = n$19.Specs; + _i$2 = 0; + /* while (true) { */ case 143: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 144; continue; } + spec$2 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + spec$3 = $assertType(spec$2, ptrType$26); + $r = r.declare(spec$3, $ifaceNil, r.topScope, 3, new sliceType([spec$3.Name])); /* */ $s = 145; case 145: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(spec$3.TypeParams === ptrType$27.nil)) { $s = 146; continue; } + /* */ $s = 147; continue; + /* if (!(spec$3.TypeParams === ptrType$27.nil)) { */ case 146: + $r = r.openScope(spec$3.Pos()); /* */ $s = 148; case 148: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + $r = r.walkTParams(spec$3.TypeParams); /* */ $s = 149; case 149: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 147: + $r = ast.Walk(r, spec$3.Type); /* */ $s = 150; case 150: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + $s = 143; continue; + case 144: + /* } */ case 135: + case 132: + $s = 27; continue; + /* } else if ($assertType(_ref, ptrType$23, true)[1]) { */ case 25: + n$20 = _ref.$val; + _r$5 = n$20.Pos(); /* */ $s = 151; case 151: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $r = r.openScope(_r$5); /* */ $s = 152; case 152: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r, "closeScope"), []]); + $r = r.walkRecv(n$20.Recv); /* */ $s = 153; case 153: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(n$20.Type.TypeParams === ptrType$27.nil)) { $s = 154; continue; } + /* */ $s = 155; continue; + /* if (!(n$20.Type.TypeParams === ptrType$27.nil)) { */ case 154: + $r = r.walkTParams(n$20.Type.TypeParams); /* */ $s = 156; case 156: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 155: + $r = r.resolveList(n$20.Type.Params); /* */ $s = 157; case 157: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.resolveList(n$20.Type.Results); /* */ $s = 158; case 158: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.declareList(n$20.Recv, 4); /* */ $s = 159; case 159: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.declareList(n$20.Type.Params, 4); /* */ $s = 160; case 160: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.declareList(n$20.Type.Results, 4); /* */ $s = 161; case 161: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.walkBody(n$20.Body); /* */ $s = 162; case 162: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (n$20.Recv === ptrType$27.nil && !(n$20.Name.Name === "init")) { $s = 163; continue; } + /* */ $s = 164; continue; + /* if (n$20.Recv === ptrType$27.nil && !(n$20.Name.Name === "init")) { */ case 163: + $r = r.declare(n$20, $ifaceNil, r.pkgScope, 5, new sliceType([n$20.Name])); /* */ $s = 165; case 165: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 164: + $s = 27; continue; + /* } else { */ case 26: + n$21 = _ref; + $24r = r; + $s = 166; case 166: return $24r; + /* } */ case 27: + $24r$1 = $ifaceNil; + $s = 167; case 167: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Visit, $c: true, $r, $24r, $24r$1, _1, _arg, _arg$1, _i, _i$1, _i$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, as, depth, e, i, ident, kind, kv, lhs, n, n$1, n$10, n$11, n$12, n$13, n$14, n$15, n$16, n$17, n$18, n$19, n$2, n$20, n$21, n$3, n$4, n$5, n$6, n$7, n$8, n$9, node, r, spec, spec$1, spec$2, spec$3, x, x$1, $s, $deferred};return $f; } } + }; + $ptrType(resolver).prototype.walkFuncType = function walkFuncType(typ) { + var {r, typ, $s, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + $r = r.resolveList(typ.Params); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.resolveList(typ.Results); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.declareList(typ.Params, 4); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.declareList(typ.Results, 4); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: walkFuncType, $c: true, $r, r, typ, $s};return $f; + }; + $ptrType(resolver).prototype.resolveList = function resolveList(list) { + var {_i, _ref, f, list, r, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if (list === ptrType$27.nil) { + $s = -1; return; + } + _ref = list.List; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (!($interfaceIsEqual(f.Type, $ifaceNil))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!($interfaceIsEqual(f.Type, $ifaceNil))) { */ case 3: + $r = ast.Walk(r, f.Type); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: resolveList, $c: true, $r, _i, _ref, f, list, r, $s};return $f; + }; + $ptrType(resolver).prototype.declareList = function declareList(list, kind) { + var {_i, _ref, f, kind, list, r, $s, $r, $c} = $restore(this, {list, kind}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if (list === ptrType$27.nil) { + $s = -1; return; + } + _ref = list.List; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = r.declare(f, $ifaceNil, r.topScope, kind, f.Names); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: declareList, $c: true, $r, _i, _ref, f, kind, list, r, $s};return $f; + }; + $ptrType(resolver).prototype.walkRecv = function walkRecv(recv) { + var {_i, _i$1, _i$2, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, declareExprs, expr, expr$1, f, id, ok, ptr, r, recv, resolveExprs, typ, typ$1, typ$2, typ$3, x, $s, $r, $c} = $restore(this, {recv}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if (recv === ptrType$27.nil || (recv.List.$length === 0)) { + $s = -1; return; + } + typ = (x = recv.List, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Type; + _tuple = $assertType(typ, ptrType$28, true); + ptr = _tuple[0]; + ok = _tuple[1]; + if (ok) { + typ = ptr.X; + } + declareExprs = sliceType$3.nil; + resolveExprs = sliceType$3.nil; + _ref = typ; + if ($assertType(_ref, ptrType$29, true)[1]) { + typ$1 = _ref.$val; + declareExprs = new sliceType$3([typ$1.Index]); + resolveExprs = $append(resolveExprs, typ$1.X); + } else if ($assertType(_ref, ptrType$30, true)[1]) { + typ$2 = _ref.$val; + declareExprs = typ$2.Indices; + resolveExprs = $append(resolveExprs, typ$2.X); + } else { + typ$3 = _ref; + resolveExprs = $append(resolveExprs, typ$3); + } + _ref$1 = declareExprs; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 2; continue; } + expr = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _tuple$1 = $assertType(expr, ptrType$2, true); + id = _tuple$1[0]; + /* */ if (!(id === ptrType$2.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(id === ptrType$2.nil)) { */ case 3: + $r = r.declare(expr, $ifaceNil, r.topScope, 3, new sliceType([id])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + /* } else { */ case 4: + resolveExprs = $append(resolveExprs, expr); + /* } */ case 5: + _i++; + $s = 1; continue; + case 2: + _ref$2 = resolveExprs; + _i$1 = 0; + /* while (true) { */ case 7: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 8; continue; } + expr$1 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + /* */ if (!($interfaceIsEqual(expr$1, $ifaceNil))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!($interfaceIsEqual(expr$1, $ifaceNil))) { */ case 9: + $r = ast.Walk(r, expr$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + _i$1++; + $s = 7; continue; + case 8: + _ref$3 = $subslice(recv.List, 1); + _i$2 = 0; + /* while (true) { */ case 12: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 13; continue; } + f = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + /* */ if (!($interfaceIsEqual(f.Type, $ifaceNil))) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!($interfaceIsEqual(f.Type, $ifaceNil))) { */ case 14: + $r = ast.Walk(r, f.Type); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 15: + _i$2++; + $s = 12; continue; + case 13: + $s = -1; return; + /* */ } return; } var $f = {$blk: walkRecv, $c: true, $r, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, declareExprs, expr, expr$1, f, id, ok, ptr, r, recv, resolveExprs, typ, typ$1, typ$2, typ$3, x, $s};return $f; + }; + $ptrType(resolver).prototype.walkFieldList = function walkFieldList(list, kind) { + var {kind, list, r, $s, $r, $c} = $restore(this, {list, kind}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if (list === ptrType$27.nil) { + $s = -1; return; + } + $r = r.resolveList(list); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.declareList(list, kind); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: walkFieldList, $c: true, $r, kind, list, r, $s};return $f; + }; + $ptrType(resolver).prototype.walkTParams = function walkTParams(list) { + var {list, r, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + $r = r.declareList(list, 3); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.resolveList(list); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: walkTParams, $c: true, $r, list, r, $s};return $f; + }; + $ptrType(resolver).prototype.walkBody = function walkBody(body) { + var {body, r, $s, $deferred, $r, $c} = $restore(this, {body}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + r = this; + if (body === ptrType$13.nil) { + $s = -1; return; + } + r.openLabelScope(); + $deferred.push([$methodVal(r, "closeLabelScope"), []]); + $r = r.walkStmts(body.List); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: walkBody, $c: true, $r, body, r, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.init = function init(fset, filename, src, mode) { + var {_r, eh, filename, fset, m, mode, p, src, $s, $r, $c} = $restore(this, {fset, filename, src, mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = [p]; + p[0] = this; + _r = fset.AddFile(filename, -1, src.$length); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p[0].file = _r; + m = 0; + if (!((((mode & 4) >>> 0) === 0))) { + m = 1; + } + eh = (function(p) { return function parser·init·func1(pos, msg) { + var msg, pos; + (p[0].$ptr_errors || (p[0].$ptr_errors = new ptrType$31(function() { return this.$target.errors; }, function($v) { this.$target.errors = $v; }, p[0]))).Add($clone(pos, token.Position), msg); + }; })(p); + $r = p[0].scanner.Init(p[0].file, src, eh, m); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + p[0].mode = mode; + p[0].trace = !((((mode & 8) >>> 0) === 0)); + $r = p[0].next(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: init, $c: true, $r, _r, eh, filename, fset, m, mode, p, src, $s};return $f; + }; + $ptrType(parser).prototype.printTrace = function printTrace(a) { + var {_r, _r$1, _r$2, _r$3, _r$4, a, i, p, pos, $s, $r, $c} = $restore(this, {a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r = p.file.Position(p.pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + pos = $clone(_r, token.Position); + _r$1 = fmt.Printf("%5d:%3d: ", new sliceType$2([new $Int(pos.Line), new $Int(pos.Column)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + i = $imul(2, p.indent); + /* while (true) { */ case 3: + /* if (!(i > 64)) { break; } */ if(!(i > 64)) { $s = 4; continue; } + _r$2 = fmt.Print(new sliceType$2([new $String(". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ")])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + i = i - (64) >> 0; + $s = 3; continue; + case 4: + _r$3 = fmt.Print(new sliceType$2([new $String($substring(". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", 0, i))])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + _r$4 = fmt.Println(a); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + $s = -1; return; + /* */ } return; } var $f = {$blk: printTrace, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, a, i, p, pos, $s};return $f; + }; + trace = function trace$2(p, msg) { + var {msg, p, $s, $r, $c} = $restore(this, {p, msg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = p.printTrace(new sliceType$2([new $String(msg), new $String("(")])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + p.indent = p.indent + (1) >> 0; + $s = -1; return p; + /* */ } return; } var $f = {$blk: trace$2, $c: true, $r, msg, p, $s};return $f; + }; + un = function un$1(p) { + var {p, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p.indent = p.indent - (1) >> 0; + $r = p.printTrace(new sliceType$2([new $String(")")])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: un$1, $c: true, $r, p, $s};return $f; + }; + incNestLev = function incNestLev$1(p) { + var {p, x, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p.nestLev = p.nestLev + (1) >> 0; + /* */ if (p.nestLev > 100000) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.nestLev > 100000) { */ case 1: + $r = p.error(p.pos, "exceeded max nesting depth"); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $panic((x = new bailout.ptr(0, ""), new x.constructor.elem(x))); + /* } */ case 2: + $s = -1; return p; + /* */ } return; } var $f = {$blk: incNestLev$1, $c: true, $r, p, x, $s};return $f; + }; + decNestLev = function decNestLev$1(p) { + var p; + p.nestLev = p.nestLev - (1) >> 0; + }; + $ptrType(parser).prototype.next0 = function next0() { + var {_r, _tuple, p, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (p.trace && new token.Pos(p.pos).IsValid()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace && new token.Pos(p.pos).IsValid()) { */ case 1: + s = new token.Token(p.tok).String(); + /* */ if (new token.Token(p.tok).IsLiteral()) { $s = 4; continue; } + /* */ if ((new token.Token(p.tok).IsOperator()) || (new token.Token(p.tok).IsKeyword())) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (new token.Token(p.tok).IsLiteral()) { */ case 4: + $r = p.printTrace(new sliceType$2([new $String(s), new $String(p.lit)])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + /* } else if ((new token.Token(p.tok).IsOperator()) || (new token.Token(p.tok).IsKeyword())) { */ case 5: + $r = p.printTrace(new sliceType$2([new $String("\"" + s + "\"")])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + /* } else { */ case 6: + $r = p.printTrace(new sliceType$2([new $String(s)])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + case 3: + /* } */ case 2: + _r = p.scanner.Scan(); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + p.pos = _tuple[0]; + p.tok = _tuple[1]; + p.lit = _tuple[2]; + $s = -1; return; + /* */ } return; } var $f = {$blk: next0, $c: true, $r, _r, _tuple, p, s, $s};return $f; + }; + $ptrType(parser).prototype.consumeComment = function consumeComment() { + var {_r, comment, endline, i, p, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + comment = ptrType$32.nil; + endline = 0; + p = this; + _r = p.file.Line(p.pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + endline = _r; + if (p.lit.charCodeAt(1) === 42) { + i = 0; + while (true) { + if (!(i < p.lit.length)) { break; } + if (p.lit.charCodeAt(i) === 10) { + endline = endline + (1) >> 0; + } + i = i + (1) >> 0; + } + } + comment = new ast.Comment.ptr(p.pos, p.lit); + $r = p.next0(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [comment, endline]; + /* */ } return; } var $f = {$blk: consumeComment, $c: true, $r, _r, comment, endline, i, p, $s};return $f; + }; + $ptrType(parser).prototype.consumeCommentGroup = function consumeCommentGroup(n) { + var {_r, _r$1, _r$2, _tuple, _v, comment, comments, endline, list, n, p, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + comments = ptrType$33.nil; + endline = 0; + p = this; + list = sliceType$4.nil; + _r = p.file.Line(p.pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + endline = _r; + /* while (true) { */ case 2: + if (!(p.tok === 2)) { _v = false; $s = 4; continue s; } + _r$1 = p.file.Line(p.pos); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1 <= (endline + n >> 0); case 4: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 3; continue; } + comment = ptrType$32.nil; + _r$2 = p.consumeComment(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + comment = _tuple[0]; + endline = _tuple[1]; + list = $append(list, comment); + $s = 2; continue; + case 3: + comments = new ast.CommentGroup.ptr(list); + p.comments = $append(p.comments, comments); + $s = -1; return [comments, endline]; + /* */ } return; } var $f = {$blk: consumeCommentGroup, $c: true, $r, _r, _r$1, _r$2, _tuple, _v, comment, comments, endline, list, n, p, $s};return $f; + }; + $ptrType(parser).prototype.next = function next() { + var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, comment, endline, p, prev, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + p.leadComment = ptrType$33.nil; + p.lineComment = ptrType$33.nil; + prev = p.pos; + $r = p.next0(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (p.tok === 2) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (p.tok === 2) { */ case 2: + comment = ptrType$33.nil; + endline = 0; + _r = p.file.Line(p.pos); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = p.file.Line(prev); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r === _r$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r === _r$1) { */ case 4: + _r$2 = p.consumeCommentGroup(0); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + comment = _tuple[0]; + endline = _tuple[1]; + _r$3 = p.file.Line(p.pos); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!((_r$3 === endline)) || (p.tok === 57) || (p.tok === 1)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!((_r$3 === endline)) || (p.tok === 57) || (p.tok === 1)) { */ case 9: + p.lineComment = comment; + /* } */ case 10: + /* } */ case 5: + endline = -1; + /* while (true) { */ case 12: + /* if (!(p.tok === 2)) { break; } */ if(!(p.tok === 2)) { $s = 13; continue; } + _r$4 = p.consumeCommentGroup(1); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + comment = _tuple$1[0]; + endline = _tuple$1[1]; + $s = 12; continue; + case 13: + _r$5 = p.file.Line(p.pos); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if ((endline + 1 >> 0) === _r$5) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if ((endline + 1 >> 0) === _r$5) { */ case 15: + p.leadComment = comment; + /* } */ case 16: + /* } */ case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: next, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, comment, endline, p, prev, $s};return $f; + }; + $ptrType(parser).prototype.error = function error(pos, msg) { + var {_r, _r$1, epos, msg, n, p, pos, x, x$1, x$2, $s, $deferred, $r, $c} = $restore(this, {pos, msg}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "error: " + msg); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.file.Position(pos); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + epos = $clone(_r$1, token.Position); + /* */ if (((p.mode & 32) >>> 0) === 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (((p.mode & 32) >>> 0) === 0) { */ case 5: + n = p.errors.$length; + /* */ if (n > 0 && ((x = p.errors, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Pos.Line === epos.Line)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (n > 0 && ((x = p.errors, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Pos.Line === epos.Line)) { */ case 7: + $s = 9; case 9: return; + /* } */ case 8: + if (n > 10) { + $panic((x$2 = new bailout.ptr(0, ""), new x$2.constructor.elem(x$2))); + } + /* } */ case 6: + (p.$ptr_errors || (p.$ptr_errors = new ptrType$31(function() { return this.$target.errors; }, function($v) { this.$target.errors = $v; }, p))).Add($clone(epos, token.Position), msg); + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: error, $c: true, $r, _r, _r$1, epos, msg, n, p, pos, x, x$1, x$2, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.errorExpected = function errorExpected(pos, msg) { + var {msg, p, pos, $s, $r, $c} = $restore(this, {pos, msg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + msg = "expected " + msg; + if (pos === p.pos) { + if ((p.tok === 57) && p.lit === "\n") { + msg = msg + (", found newline"); + } else if (new token.Token(p.tok).IsLiteral()) { + msg = msg + (", found " + p.lit); + } else { + msg = msg + (", found '" + new token.Token(p.tok).String() + "'"); + } + } + $r = p.error(pos, msg); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: errorExpected, $c: true, $r, msg, p, pos, $s};return $f; + }; + $ptrType(parser).prototype.expect = function expect(tok) { + var {p, pos, tok, $s, $r, $c} = $restore(this, {tok}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + pos = p.pos; + /* */ if (!((p.tok === tok))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((p.tok === tok))) { */ case 1: + $r = p.errorExpected(pos, "'" + new token.Token(tok).String() + "'"); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $r = p.next(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return pos; + /* */ } return; } var $f = {$blk: expect, $c: true, $r, p, pos, tok, $s};return $f; + }; + $ptrType(parser).prototype.expect2 = function expect2(tok) { + var {p, pos, tok, $s, $r, $c} = $restore(this, {tok}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pos = 0; + p = this; + /* */ if (p.tok === tok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.tok === tok) { */ case 1: + pos = p.pos; + $s = 3; continue; + /* } else { */ case 2: + $r = p.errorExpected(p.pos, "'" + new token.Token(tok).String() + "'"); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $r = p.next(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return pos; + /* */ } return; } var $f = {$blk: expect2, $c: true, $r, p, pos, tok, $s};return $f; + }; + $ptrType(parser).prototype.expectClosing = function expectClosing(tok, context) { + var {$24r, _r, context, p, tok, $s, $r, $c} = $restore(this, {tok, context}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (!((p.tok === tok)) && (p.tok === 57) && p.lit === "\n") { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((p.tok === tok)) && (p.tok === 57) && p.lit === "\n") { */ case 1: + $r = p.error(p.pos, "missing ',' before newline in " + context); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.next(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _r = p.expect(tok); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 6; case 6: return $24r; + /* */ } return; } var $f = {$blk: expectClosing, $c: true, $r, $24r, _r, context, p, tok, $s};return $f; + }; + $ptrType(parser).prototype.expectSemi = function expectSemi() { + var {_1, comment, p, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + comment = ptrType$33.nil; + p = this; + /* */ if (!((p.tok === 54)) && !((p.tok === 56))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((p.tok === 54)) && !((p.tok === 56))) { */ case 1: + _1 = p.tok; + /* */ if (_1 === (52)) { $s = 4; continue; } + /* */ if (_1 === (57)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (52)) { */ case 4: + $r = p.errorExpected(p.pos, "';'"); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (p.lit === ";") { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (p.lit === ";") { */ case 9: + $r = p.next(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + comment = p.lineComment; + $s = 11; continue; + /* } else { */ case 10: + comment = p.lineComment; + $r = p.next(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + comment = comment; + $s = -1; return comment; + /* } else if (_1 === (57)) { */ case 5: + /* */ if (p.lit === ";") { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (p.lit === ";") { */ case 14: + $r = p.next(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + comment = p.lineComment; + $s = 16; continue; + /* } else { */ case 15: + comment = p.lineComment; + $r = p.next(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 16: + comment = comment; + $s = -1; return comment; + /* } else { */ case 6: + $r = p.errorExpected(p.pos, "';'"); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.advance(stmtStart); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + case 3: + /* } */ case 2: + comment = ptrType$33.nil; + $s = -1; return comment; + /* */ } return; } var $f = {$blk: expectSemi, $c: true, $r, _1, comment, p, $s};return $f; + }; + $ptrType(parser).prototype.atComma = function atComma(context, follow) { + var {context, follow, msg, p, $s, $r, $c} = $restore(this, {context, follow}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + if (p.tok === 52) { + $s = -1; return true; + } + /* */ if (!((p.tok === follow))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((p.tok === follow))) { */ case 1: + msg = "missing ','"; + if ((p.tok === 57) && p.lit === "\n") { + msg = msg + (" before newline"); + } + $r = p.error(p.pos, msg + " in " + context); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return true; + /* } */ case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: atComma, $c: true, $r, context, follow, msg, p, $s};return $f; + }; + assert = function assert$1(cond, msg) { + var cond, msg; + if (!cond) { + $panic(new $String("go/parser internal error: " + msg)); + } + }; + $ptrType(parser).prototype.advance = function advance(to) { + var {_entry, p, to, $s, $r, $c} = $restore(this, {to}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + /* while (true) { */ case 1: + /* if (!(!((p.tok === 1)))) { break; } */ if(!(!((p.tok === 1)))) { $s = 2; continue; } + if ((_entry = $mapIndex(to,token.Token.keyFor(p.tok)), _entry !== undefined ? _entry.v : false)) { + if ((p.pos === p.syncPos) && p.syncCnt < 10) { + p.syncCnt = p.syncCnt + (1) >> 0; + $s = -1; return; + } + if (p.pos > p.syncPos) { + p.syncPos = p.pos; + p.syncCnt = 0; + $s = -1; return; + } + } + $r = p.next(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: advance, $c: true, $r, _entry, p, to, $s};return $f; + }; + $ptrType(parser).prototype.safePos = function safePos(pos) { + var {_r, p, pos, res, $s, $deferred, $r, $c} = $restore(this, {pos}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = [p]; + res = [res]; + res[0] = 0; + p[0] = this; + $deferred.push([(function(p, res) { return function parser·safePos·func1() { + if (!($interfaceIsEqual($recover(), $ifaceNil))) { + res[0] = (((p[0].file.Base() + p[0].file.Size() >> 0) >> 0)); + } + }; })(p, res), []]); + _r = p[0].file.Offset(pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $unused(_r); + res[0] = pos; + $s = -1; return res[0]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return res[0]; } if($curGoroutine.asleep) { var $f = {$blk: safePos, $c: true, $r, _r, p, pos, res, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseIdent = function parseIdent() { + var {_r, name, p, pos, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + pos = p.pos; + name = "_"; + /* */ if (p.tok === 4) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.tok === 4) { */ case 1: + name = p.lit; + $r = p.next(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 3; continue; + /* } else { */ case 2: + _r = p.expect(4); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* } */ case 3: + $s = -1; return new ast.Ident.ptr(pos, name, ptrType$3.nil); + /* */ } return; } var $f = {$blk: parseIdent, $c: true, $r, _r, name, p, pos, $s};return $f; + }; + $ptrType(parser).prototype.parseIdentList = function parseIdentList() { + var {$24r, _r, _r$1, _r$2, list, p, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + list = sliceType.nil; + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "IdentList"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.parseIdent(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + list = $append(list, _r$1); + /* while (true) { */ case 5: + /* if (!(p.tok === 52)) { break; } */ if(!(p.tok === 52)) { $s = 6; continue; } + $r = p.next(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = p.parseIdent(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + list = $append(list, _r$2); + $s = 5; continue; + case 6: + $24r = list; + $s = 9; case 9: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return list; } if($curGoroutine.asleep) { var $f = {$blk: parseIdentList, $c: true, $r, $24r, _r, _r$1, _r$2, list, p, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseExprList = function parseExprList() { + var {$24r, _r, _r$1, _r$2, list, p, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + list = sliceType$3.nil; + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "ExpressionList"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.parseExpr(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + list = $append(list, _r$1); + /* while (true) { */ case 5: + /* if (!(p.tok === 52)) { break; } */ if(!(p.tok === 52)) { $s = 6; continue; } + $r = p.next(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = p.parseExpr(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + list = $append(list, _r$2); + $s = 5; continue; + case 6: + $24r = list; + $s = 9; case 9: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return list; } if($curGoroutine.asleep) { var $f = {$blk: parseExprList, $c: true, $r, $24r, _r, _r$1, _r$2, list, p, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseList = function parseList(inRhs) { + var {_r, inRhs, list, old, p, $s, $r, $c} = $restore(this, {inRhs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + old = p.inRhs; + p.inRhs = inRhs; + _r = p.parseExprList(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + list = _r; + p.inRhs = old; + $s = -1; return list; + /* */ } return; } var $f = {$blk: parseList, $c: true, $r, _r, inRhs, list, old, p, $s};return $f; + }; + $ptrType(parser).prototype.parseType = function parseType() { + var {$24r, $24r$1, _r, _r$1, p, pos, typ, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "Type"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.tryIdentOrType(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ = _r$1; + /* */ if ($interfaceIsEqual(typ, $ifaceNil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($interfaceIsEqual(typ, $ifaceNil)) { */ case 5: + pos = p.pos; + $r = p.errorExpected(pos, "type"); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.advance(exprEnd); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r = new ast.BadExpr.ptr(pos, p.pos); + $s = 9; case 9: return $24r; + /* } */ case 6: + $24r$1 = typ; + $s = 10; case 10: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseType, $c: true, $r, $24r, $24r$1, _r, _r$1, p, pos, typ, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseQualifiedIdent = function parseQualifiedIdent(ident) { + var {$24r, _r, _r$1, _r$2, ident, p, typ, $s, $deferred, $r, $c} = $restore(this, {ident}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "QualifiedIdent"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.parseTypeName(ident); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ = _r$1; + /* */ if (p.tok === 50) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (p.tok === 50) { */ case 5: + _r$2 = p.parseTypeInstance(typ); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + typ = _r$2; + /* } */ case 6: + $24r = typ; + $s = 8; case 8: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseQualifiedIdent, $c: true, $r, $24r, _r, _r$1, _r$2, ident, p, typ, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseTypeName = function parseTypeName(ident) { + var {$24r, $24r$1, _r, _r$1, _r$2, ident, p, sel, $s, $deferred, $r, $c} = $restore(this, {ident}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "TypeName"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* */ if (ident === ptrType$2.nil) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (ident === ptrType$2.nil) { */ case 4: + _r$1 = p.parseIdent(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ident = _r$1; + /* } */ case 5: + /* */ if (p.tok === 53) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (p.tok === 53) { */ case 7: + $r = p.next(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = p.parseIdent(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + sel = _r$2; + $24r = new ast.SelectorExpr.ptr(ident, sel); + $s = 11; case 11: return $24r; + /* } */ case 8: + $24r$1 = ident; + $s = 12; case 12: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseTypeName, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, ident, p, sel, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseArrayType = function parseArrayType(lbrack, len) { + var {$24r, _r, _r$1, _r$2, _r$3, elt, lbrack, len, p, $s, $deferred, $r, $c} = $restore(this, {lbrack, len}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "ArrayType"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* */ if ($interfaceIsEqual(len, $ifaceNil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($interfaceIsEqual(len, $ifaceNil)) { */ case 4: + p.exprLev = p.exprLev + (1) >> 0; + /* */ if (p.tok === 48) { $s = 6; continue; } + /* */ if (!((p.tok === 55))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (p.tok === 48) { */ case 6: + len = new ast.Ellipsis.ptr(p.pos, $ifaceNil); + $r = p.next(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 8; continue; + /* } else if (!((p.tok === 55))) { */ case 7: + _r$1 = p.parseRhs(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + len = _r$1; + /* } */ case 8: + p.exprLev = p.exprLev - (1) >> 0; + /* } */ case 5: + /* */ if (p.tok === 52) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (p.tok === 52) { */ case 11: + $r = p.error(p.pos, "unexpected comma; expecting ]"); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.next(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + _r$2 = p.expect(55); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _r$3 = p.parseType(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + elt = _r$3; + $24r = new ast.ArrayType.ptr(lbrack, len, elt); + $s = 17; case 17: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$34.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseArrayType, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, elt, lbrack, len, p, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseArrayFieldOrTypeInstance = function parseArrayFieldOrTypeInstance(x) { + var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, args, comma, elt, elt$1, lbrack, p, rbrack, trailingComma, x, $s, $deferred, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "ArrayFieldOrTypeInstance"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(50); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + lbrack = _r$1; + trailingComma = 0; + args = sliceType$3.nil; + /* */ if (!((p.tok === 55))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((p.tok === 55))) { */ case 5: + p.exprLev = p.exprLev + (1) >> 0; + _r$2 = p.parseRhs(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + args = $append(args, _r$2); + /* while (true) { */ case 8: + /* if (!(p.tok === 52)) { break; } */ if(!(p.tok === 52)) { $s = 9; continue; } + comma = p.pos; + $r = p.next(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (p.tok === 55) { + trailingComma = comma; + /* break; */ $s = 9; continue; + } + _r$3 = p.parseRhs(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + args = $append(args, _r$3); + $s = 8; continue; + case 9: + p.exprLev = p.exprLev - (1) >> 0; + /* } */ case 6: + _r$4 = p.expect(55); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + rbrack = _r$4; + /* */ if (args.$length === 0) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (args.$length === 0) { */ case 13: + _r$5 = p.parseType(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + elt = _r$5; + $24r = [x, new ast.ArrayType.ptr(lbrack, $ifaceNil, elt)]; + $s = 16; case 16: return $24r; + /* } */ case 14: + /* */ if (args.$length === 1) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (args.$length === 1) { */ case 17: + _r$6 = p.tryIdentOrType(); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + elt$1 = _r$6; + /* */ if (!($interfaceIsEqual(elt$1, $ifaceNil))) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (!($interfaceIsEqual(elt$1, $ifaceNil))) { */ case 20: + /* */ if (new token.Pos(trailingComma).IsValid()) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (new token.Pos(trailingComma).IsValid()) { */ case 22: + $r = p.error(trailingComma, "unexpected comma; expecting ]"); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 23: + $24r$1 = [x, new ast.ArrayType.ptr(lbrack, (0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), elt$1)]; + $s = 25; case 25: return $24r$1; + /* } */ case 21: + /* } */ case 18: + $24r$2 = [ptrType$2.nil, typeparams.PackIndexExpr(x, lbrack, args, rbrack)]; + $s = 26; case 26: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [ptrType$2.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseArrayFieldOrTypeInstance, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, args, comma, elt, elt$1, lbrack, p, rbrack, trailingComma, x, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseFieldDecl = function parseFieldDecl() { + var {$24r, _1, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, comment, doc, field$1, name, names, p, pos, star, star$1, tag, typ, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "FieldDecl"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + doc = p.leadComment; + names = sliceType.nil; + typ = $ifaceNil; + _1 = p.tok; + /* */ if (_1 === (4)) { $s = 5; continue; } + /* */ if (_1 === (14)) { $s = 6; continue; } + /* */ if (_1 === (49)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_1 === (4)) { */ case 5: + _r$1 = p.parseIdent(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + name = _r$1; + /* */ if ((p.tok === 53) || (p.tok === 9) || (p.tok === 57) || (p.tok === 56)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if ((p.tok === 53) || (p.tok === 9) || (p.tok === 57) || (p.tok === 56)) { */ case 11: + typ = name; + /* */ if (p.tok === 53) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (p.tok === 53) { */ case 14: + _r$2 = p.parseQualifiedIdent(name); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + typ = _r$2; + /* } */ case 15: + $s = 13; continue; + /* } else { */ case 12: + names = new sliceType([name]); + /* while (true) { */ case 17: + /* if (!(p.tok === 52)) { break; } */ if(!(p.tok === 52)) { $s = 18; continue; } + $r = p.next(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = p.parseIdent(); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + names = $append(names, _r$3); + $s = 17; continue; + case 18: + /* */ if ((names.$length === 1) && (p.tok === 50)) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if ((names.$length === 1) && (p.tok === 50)) { */ case 21: + _r$4 = p.parseArrayFieldOrTypeInstance(name); /* */ $s = 24; case 24: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple = _r$4; + name = _tuple[0]; + typ = _tuple[1]; + if (name === ptrType$2.nil) { + names = sliceType.nil; + } + $s = 23; continue; + /* } else { */ case 22: + _r$5 = p.parseType(); /* */ $s = 25; case 25: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + typ = _r$5; + /* } */ case 23: + /* } */ case 13: + $s = 9; continue; + /* } else if (_1 === (14)) { */ case 6: + star = p.pos; + $r = p.next(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (p.tok === 49) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (p.tok === 49) { */ case 27: + $r = p.error(p.pos, "cannot parenthesize embedded type"); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.next(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$6 = p.parseQualifiedIdent(ptrType$2.nil); /* */ $s = 32; case 32: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + typ = _r$6; + /* */ if (p.tok === 54) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (p.tok === 54) { */ case 33: + $r = p.next(); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 34: + $s = 29; continue; + /* } else { */ case 28: + _r$7 = p.parseQualifiedIdent(ptrType$2.nil); /* */ $s = 36; case 36: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + typ = _r$7; + /* } */ case 29: + typ = new ast.StarExpr.ptr(star, typ); + $s = 9; continue; + /* } else if (_1 === (49)) { */ case 7: + $r = p.error(p.pos, "cannot parenthesize embedded type"); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.next(); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (p.tok === 14) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (p.tok === 14) { */ case 39: + star$1 = p.pos; + $r = p.next(); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$8 = p.parseQualifiedIdent(ptrType$2.nil); /* */ $s = 43; case 43: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + typ = new ast.StarExpr.ptr(star$1, _r$8); + $s = 41; continue; + /* } else { */ case 40: + _r$9 = p.parseQualifiedIdent(ptrType$2.nil); /* */ $s = 44; case 44: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + typ = _r$9; + /* } */ case 41: + /* */ if (p.tok === 54) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if (p.tok === 54) { */ case 45: + $r = p.next(); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 46: + $s = 9; continue; + /* } else { */ case 8: + pos = p.pos; + $r = p.errorExpected(pos, "field name or embedded type"); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.advance(exprEnd); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + typ = new ast.BadExpr.ptr(pos, p.pos); + /* } */ case 9: + case 4: + tag = ptrType$35.nil; + /* */ if (p.tok === 9) { $s = 50; continue; } + /* */ $s = 51; continue; + /* if (p.tok === 9) { */ case 50: + tag = new ast.BasicLit.ptr(p.pos, p.tok, p.lit); + $r = p.next(); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 51: + _r$10 = p.expectSemi(); /* */ $s = 53; case 53: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + comment = _r$10; + field$1 = new ast.Field.ptr(doc, names, typ, tag, comment); + $24r = field$1; + $s = 54; case 54: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$36.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseFieldDecl, $c: true, $r, $24r, _1, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, comment, doc, field$1, name, names, p, pos, star, star$1, tag, typ, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseStructType = function parseStructType() { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, lbrace, list, p, pos, rbrace, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "StructType"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(82); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _r$2 = p.expect(51); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + lbrace = _r$2; + list = sliceType$5.nil; + /* while (true) { */ case 6: + /* if (!((p.tok === 4) || (p.tok === 14) || (p.tok === 49))) { break; } */ if(!((p.tok === 4) || (p.tok === 14) || (p.tok === 49))) { $s = 7; continue; } + _r$3 = p.parseFieldDecl(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + list = $append(list, _r$3); + $s = 6; continue; + case 7: + _r$4 = p.expect(56); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + rbrace = _r$4; + $24r = new ast.StructType.ptr(pos, new ast.FieldList.ptr(lbrace, list, rbrace), false); + $s = 10; case 10: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$6.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseStructType, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, lbrace, list, p, pos, rbrace, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parsePointerType = function parsePointerType() { + var {$24r, _r, _r$1, _r$2, base, p, star, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "PointerType"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(14); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + star = _r$1; + _r$2 = p.parseType(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + base = _r$2; + $24r = new ast.StarExpr.ptr(star, base); + $s = 6; case 6: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$28.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parsePointerType, $c: true, $r, $24r, _r, _r$1, _r$2, base, p, star, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseDotsType = function parseDotsType() { + var {$24r, _r, _r$1, _r$2, elt, p, pos, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "DotsType"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(48); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _r$2 = p.parseType(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + elt = _r$2; + $24r = new ast.Ellipsis.ptr(pos, elt); + $s = 6; case 6: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$37.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseDotsType, $c: true, $r, $24r, _r, _r$1, _r$2, elt, p, pos, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseParamDecl = function parseParamDecl(name, typeSetsOK) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _1, _2, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, f, name, p, ptok, typeSetsOK, $s, $deferred, $r, $c} = $restore(this, {name, typeSetsOK}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + f = new field.ptr(ptrType$2.nil, $ifaceNil); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "ParamDeclOrNil"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + ptok = p.tok; + /* */ if (!(name === ptrType$2.nil)) { $s = 4; continue; } + /* */ if (typeSetsOK && (p.tok === 88)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(name === ptrType$2.nil)) { */ case 4: + p.tok = 4; + $s = 6; continue; + /* } else if (typeSetsOK && (p.tok === 88)) { */ case 5: + _r$1 = p.embeddedElem($ifaceNil); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + field.copy(f, new field.ptr(ptrType$2.nil, _r$1)); + $24r = f; + $s = 8; case 8: return $24r; + /* } */ case 6: + _1 = p.tok; + /* */ if (_1 === (4)) { $s = 10; continue; } + /* */ if ((_1 === (14)) || (_1 === (36)) || (_1 === (71)) || (_1 === (50)) || (_1 === (63)) || (_1 === (77)) || (_1 === (82)) || (_1 === (76)) || (_1 === (49))) { $s = 11; continue; } + /* */ if (_1 === (48)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (_1 === (4)) { */ case 10: + /* */ if (!(name === ptrType$2.nil)) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!(name === ptrType$2.nil)) { */ case 15: + f.name = name; + p.tok = ptok; + $s = 17; continue; + /* } else { */ case 16: + _r$2 = p.parseIdent(); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + f.name = _r$2; + /* } */ case 17: + _2 = p.tok; + /* */ if ((_2 === (4)) || (_2 === (14)) || (_2 === (36)) || (_2 === (71)) || (_2 === (63)) || (_2 === (77)) || (_2 === (82)) || (_2 === (76)) || (_2 === (49))) { $s = 20; continue; } + /* */ if (_2 === (50)) { $s = 21; continue; } + /* */ if (_2 === (48)) { $s = 22; continue; } + /* */ if (_2 === (53)) { $s = 23; continue; } + /* */ if (_2 === (88)) { $s = 24; continue; } + /* */ if (_2 === (18)) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if ((_2 === (4)) || (_2 === (14)) || (_2 === (36)) || (_2 === (71)) || (_2 === (63)) || (_2 === (77)) || (_2 === (82)) || (_2 === (76)) || (_2 === (49))) { */ case 20: + _r$3 = p.parseType(); /* */ $s = 27; case 27: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + f.typ = _r$3; + $s = 26; continue; + /* } else if (_2 === (50)) { */ case 21: + _r$4 = p.parseArrayFieldOrTypeInstance(f.name); /* */ $s = 28; case 28: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple = _r$4; + f.name = _tuple[0]; + f.typ = _tuple[1]; + $s = 26; continue; + /* } else if (_2 === (48)) { */ case 22: + _r$5 = p.parseDotsType(); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + f.typ = _r$5; + $24r$1 = f; + $s = 30; case 30: return $24r$1; + /* } else if (_2 === (53)) { */ case 23: + _r$6 = p.parseQualifiedIdent(f.name); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + f.typ = _r$6; + f.name = ptrType$2.nil; + $s = 26; continue; + /* } else if (_2 === (88)) { */ case 24: + /* */ if (typeSetsOK) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (typeSetsOK) { */ case 32: + _r$7 = p.embeddedElem($ifaceNil); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + f.typ = _r$7; + $24r$2 = f; + $s = 35; case 35: return $24r$2; + /* } */ case 33: + $s = 26; continue; + /* } else if (_2 === (18)) { */ case 25: + /* */ if (typeSetsOK) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (typeSetsOK) { */ case 36: + _r$8 = p.embeddedElem(f.name); /* */ $s = 38; case 38: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + f.typ = _r$8; + f.name = ptrType$2.nil; + $24r$3 = f; + $s = 39; case 39: return $24r$3; + /* } */ case 37: + /* } */ case 26: + case 19: + $s = 14; continue; + /* } else if ((_1 === (14)) || (_1 === (36)) || (_1 === (71)) || (_1 === (50)) || (_1 === (63)) || (_1 === (77)) || (_1 === (82)) || (_1 === (76)) || (_1 === (49))) { */ case 11: + _r$9 = p.parseType(); /* */ $s = 40; case 40: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + f.typ = _r$9; + $s = 14; continue; + /* } else if (_1 === (48)) { */ case 12: + _r$10 = p.parseDotsType(); /* */ $s = 41; case 41: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + f.typ = _r$10; + $24r$4 = f; + $s = 42; case 42: return $24r$4; + /* } else { */ case 13: + $r = p.errorExpected(p.pos, "')'"); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.advance(exprEnd); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 14: + case 9: + /* */ if (typeSetsOK && (p.tok === 18) && !($interfaceIsEqual(f.typ, $ifaceNil))) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if (typeSetsOK && (p.tok === 18) && !($interfaceIsEqual(f.typ, $ifaceNil))) { */ case 45: + _r$11 = p.embeddedElem(f.typ); /* */ $s = 47; case 47: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + f.typ = _r$11; + /* } */ case 46: + $24r$5 = f; + $s = 48; case 48: return $24r$5; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return f; } if($curGoroutine.asleep) { var $f = {$blk: parseParamDecl, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _1, _2, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, f, name, p, ptok, typeSetsOK, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseParameterList = function parseParameterList(name0, typ0, closing) { + var {$24r, $24r$1, $24r$2, _i, _i$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, addParams, closing, i, i$1, list, missingName, n, name0, named, names, ok, p, par, par$1, par$2, par$3, par$4, params, pos, tparams, typ, typ$1, typ$2, typ0, typeSetsOK, $s, $deferred, $r, $c} = $restore(this, {name0, typ0, closing}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + names = [names]; + params = [params]; + typ = [typ]; + params[0] = sliceType$5.nil; + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "ParameterList"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + tparams = closing === 55; + typeSetsOK = tparams; + pos = p.pos; + if (!(name0 === ptrType$2.nil)) { + pos = name0.Pos(); + } + list = sliceType$6.nil; + named = 0; + /* while (true) { */ case 4: + /* if (!(!(name0 === ptrType$2.nil) || !((p.tok === closing)) && !((p.tok === 1)))) { break; } */ if(!(!(name0 === ptrType$2.nil) || !((p.tok === closing)) && !((p.tok === 1)))) { $s = 5; continue; } + par = new field.ptr(ptrType$2.nil, $ifaceNil); + /* */ if (!($interfaceIsEqual(typ0, $ifaceNil))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!($interfaceIsEqual(typ0, $ifaceNil))) { */ case 6: + /* */ if (typeSetsOK) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (typeSetsOK) { */ case 9: + _r$1 = p.embeddedElem(typ0); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ0 = _r$1; + /* } */ case 10: + field.copy(par, new field.ptr(name0, typ0)); + $s = 8; continue; + /* } else { */ case 7: + _r$2 = p.parseParamDecl(name0, typeSetsOK); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + field.copy(par, _r$2); + /* } */ case 8: + name0 = ptrType$2.nil; + typ0 = $ifaceNil; + if (!(par.name === ptrType$2.nil) || !($interfaceIsEqual(par.typ, $ifaceNil))) { + list = $append(list, par); + if (!(par.name === ptrType$2.nil) && !($interfaceIsEqual(par.typ, $ifaceNil))) { + named = named + (1) >> 0; + } + } + _r$3 = p.atComma("parameter list", closing); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!_r$3) { */ case 13: + /* break; */ $s = 5; continue; + /* } */ case 14: + $r = p.next(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 4; continue; + case 5: + /* */ if (list.$length === 0) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (list.$length === 0) { */ case 17: + $24r = params[0]; + $s = 19; case 19: return $24r; + /* } */ case 18: + /* */ if (named === 0) { $s = 20; continue; } + /* */ if (!((named === list.$length))) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (named === 0) { */ case 20: + i = 0; + while (true) { + if (!(i < list.$length)) { break; } + par$1 = ((i < 0 || i >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + i]); + typ$1 = par$1.name; + if (!(typ$1 === ptrType$2.nil)) { + par$1.typ = typ$1; + par$1.name = ptrType$2.nil; + } + i = i + (1) >> 0; + } + /* */ if (tparams) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (tparams) { */ case 23: + $r = p.error(pos, "type parameters must be named"); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 24: + $s = 22; continue; + /* } else if (!((named === list.$length))) { */ case 21: + ok = true; + typ$2 = $ifaceNil; + missingName = pos; + i$1 = list.$length - 1 >> 0; + /* while (true) { */ case 26: + /* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 27; continue; } + par$2 = ((i$1 < 0 || i$1 >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + i$1]); + /* */ if (!($interfaceIsEqual(par$2.typ, $ifaceNil))) { $s = 28; continue; } + /* */ if (!($interfaceIsEqual(typ$2, $ifaceNil))) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (!($interfaceIsEqual(par$2.typ, $ifaceNil))) { */ case 28: + typ$2 = par$2.typ; + /* */ if (par$2.name === ptrType$2.nil) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (par$2.name === ptrType$2.nil) { */ case 32: + ok = false; + _r$4 = par$2.typ.Pos(); /* */ $s = 34; case 34: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + missingName = _r$4; + n = ast.NewIdent("_"); + _r$5 = typ$2.Pos(); /* */ $s = 35; case 35: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + n.NamePos = _r$5; + par$2.name = n; + /* } */ case 33: + $s = 31; continue; + /* } else if (!($interfaceIsEqual(typ$2, $ifaceNil))) { */ case 29: + par$2.typ = typ$2; + $s = 31; continue; + /* } else { */ case 30: + ok = false; + missingName = par$2.name.Pos(); + par$2.typ = new ast.BadExpr.ptr(par$2.name.Pos(), p.pos); + /* } */ case 31: + i$1 = i$1 - (1) >> 0; + $s = 26; continue; + case 27: + /* */ if (!ok) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (!ok) { */ case 36: + /* */ if (tparams) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (tparams) { */ case 38: + $r = p.error(missingName, "type parameters must be named"); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 40; continue; + /* } else { */ case 39: + $r = p.error(pos, "mixed named and unnamed parameters"); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 40: + /* } */ case 37: + /* } */ case 22: + /* */ if (named === 0) { $s = 43; continue; } + /* */ $s = 44; continue; + /* if (named === 0) { */ case 43: + _ref = list; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + par$3 = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), field); + assert(!($interfaceIsEqual(par$3.typ, $ifaceNil)), "nil type in unnamed parameter list"); + params[0] = $append(params[0], new ast.Field.ptr(ptrType$33.nil, sliceType.nil, par$3.typ, ptrType$35.nil, ptrType$33.nil)); + _i++; + } + $24r$1 = params[0]; + $s = 45; case 45: return $24r$1; + /* } */ case 44: + names[0] = sliceType.nil; + typ[0] = $ifaceNil; + addParams = (function(names, params, typ) { return function parser·parseParameterList·func1() { + var field$1; + assert(!($interfaceIsEqual(typ[0], $ifaceNil)), "nil type in named parameter list"); + field$1 = new ast.Field.ptr(ptrType$33.nil, names[0], typ[0], ptrType$35.nil, ptrType$33.nil); + params[0] = $append(params[0], field$1); + names[0] = sliceType.nil; + }; })(names, params, typ); + _ref$1 = list; + _i$1 = 0; + /* while (true) { */ case 46: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 47; continue; } + par$4 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), field); + /* */ if (!($interfaceIsEqual(par$4.typ, typ[0]))) { $s = 48; continue; } + /* */ $s = 49; continue; + /* if (!($interfaceIsEqual(par$4.typ, typ[0]))) { */ case 48: + /* */ if (names[0].$length > 0) { $s = 50; continue; } + /* */ $s = 51; continue; + /* if (names[0].$length > 0) { */ case 50: + $r = addParams(); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 51: + typ[0] = par$4.typ; + /* } */ case 49: + names[0] = $append(names[0], par$4.name); + _i$1++; + $s = 46; continue; + case 47: + /* */ if (names[0].$length > 0) { $s = 53; continue; } + /* */ $s = 54; continue; + /* if (names[0].$length > 0) { */ case 53: + $r = addParams(); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 54: + $24r$2 = params[0]; + $s = 56; case 56: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return params[0]; } if($curGoroutine.asleep) { var $f = {$blk: parseParameterList, $c: true, $r, $24r, $24r$1, $24r$2, _i, _i$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, addParams, closing, i, i$1, list, missingName, n, name0, named, names, ok, p, par, par$1, par$2, par$3, par$4, params, pos, tparams, typ, typ$1, typ$2, typ0, typeSetsOK, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseParameters = function parseParameters(acceptTParams) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, acceptTParams, fields, list, opening, opening$1, p, params, rbrack, rparen, tparams, $s, $deferred, $r, $c} = $restore(this, {acceptTParams}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + tparams = ptrType$27.nil; + params = ptrType$27.nil; + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "Parameters"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* */ if (acceptTParams && (p.tok === 50)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (acceptTParams && (p.tok === 50)) { */ case 4: + opening = p.pos; + $r = p.next(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = p.parseParameterList(ptrType$2.nil, $ifaceNil, 55); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + list = _r$1; + _r$2 = p.expect(55); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + rbrack = _r$2; + tparams = new ast.FieldList.ptr(opening, list, rbrack); + /* */ if (tparams.NumFields() === 0) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (tparams.NumFields() === 0) { */ case 9: + $r = p.error(tparams.Closing, "empty type parameter list"); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tparams = ptrType$27.nil; + /* } */ case 10: + /* } */ case 5: + _r$3 = p.expect(49); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + opening$1 = _r$3; + fields = sliceType$5.nil; + /* */ if (!((p.tok === 54))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!((p.tok === 54))) { */ case 13: + _r$4 = p.parseParameterList(ptrType$2.nil, $ifaceNil, 54); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + fields = _r$4; + /* } */ case 14: + _r$5 = p.expect(54); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + rparen = _r$5; + params = new ast.FieldList.ptr(opening$1, fields, rparen); + $24r = [tparams, params]; + $s = 17; case 17: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [tparams, params]; } if($curGoroutine.asleep) { var $f = {$blk: parseParameters, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, acceptTParams, fields, list, opening, opening$1, p, params, rbrack, rparen, tparams, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseResult = function parseResult() { + var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _tuple, list, p, results, typ, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "Result"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* */ if (p.tok === 49) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (p.tok === 49) { */ case 4: + _r$1 = p.parseParameters(false); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + results = _tuple[1]; + $24r = results; + $s = 7; case 7: return $24r; + /* } */ case 5: + _r$2 = p.tryIdentOrType(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + typ = _r$2; + /* */ if (!($interfaceIsEqual(typ, $ifaceNil))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!($interfaceIsEqual(typ, $ifaceNil))) { */ case 9: + list = $makeSlice(sliceType$5, 1); + (0 >= list.$length ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + 0] = new ast.Field.ptr(ptrType$33.nil, sliceType.nil, typ, ptrType$35.nil, ptrType$33.nil)); + $24r$1 = new ast.FieldList.ptr(0, list, 0); + $s = 11; case 11: return $24r$1; + /* } */ case 10: + $24r$2 = ptrType$27.nil; + $s = 12; case 12: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$27.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseResult, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _tuple, list, p, results, typ, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseFuncType = function parseFuncType() { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, p, params, pos, results, tparams, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "FuncType"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(71); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _r$2 = p.parseParameters(true); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + tparams = _tuple[0]; + params = _tuple[1]; + /* */ if (!(tparams === ptrType$27.nil)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(tparams === ptrType$27.nil)) { */ case 6: + _r$3 = tparams.Pos(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = p.error(_r$3, "function type must have no type parameters"); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + _r$4 = p.parseResult(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + results = _r$4; + $24r = new ast.FuncType.ptr(pos, ptrType$27.nil, params, results); + $s = 11; case 11: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$7.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseFuncType, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, p, params, pos, results, tparams, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseMethodSpec = function parseMethodSpec() { + var {$24r, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, doc, ident, idents, lbrack, list, name0, p, params, params$1, rbrack, results, results$1, typ, x, x$1, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "MethodSpec"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + doc = p.leadComment; + idents = sliceType.nil; + typ = $ifaceNil; + _r$1 = p.parseTypeName(ptrType$2.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + x = _r$1; + _tuple = $assertType(x, ptrType$2, true); + ident = _tuple[0]; + /* */ if (!(ident === ptrType$2.nil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(ident === ptrType$2.nil)) { */ case 5: + /* */ if ((p.tok === 50)) { $s = 9; continue; } + /* */ if ((p.tok === 49)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ((p.tok === 50)) { */ case 9: + lbrack = p.pos; + $r = p.next(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + p.exprLev = p.exprLev + (1) >> 0; + _r$2 = p.parseExpr(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x$1 = _r$2; + p.exprLev = p.exprLev - (1) >> 0; + _tuple$1 = $assertType(x$1, ptrType$2, true); + name0 = _tuple$1[0]; + /* */ if (!(name0 === ptrType$2.nil) && !((p.tok === 52)) && !((p.tok === 55))) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!(name0 === ptrType$2.nil) && !((p.tok === 52)) && !((p.tok === 55))) { */ case 15: + _r$3 = p.parseParameterList(name0, $ifaceNil, 55); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $unused(_r$3); + _r$4 = p.expect(55); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $unused(_r$4); + $r = p.error(lbrack, "interface method must have no type parameters"); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$5 = p.parseParameters(false); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$2 = _r$5; + params = _tuple$2[1]; + _r$6 = p.parseResult(); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + results = _r$6; + idents = new sliceType([ident]); + typ = new ast.FuncType.ptr(0, ptrType$27.nil, params, results); + $s = 17; continue; + /* } else { */ case 16: + list = new sliceType$3([x$1]); + _r$7 = p.atComma("type argument list", 55); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (_r$7) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (_r$7) { */ case 23: + p.exprLev = p.exprLev + (1) >> 0; + $r = p.next(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* while (true) { */ case 27: + /* if (!(!((p.tok === 55)) && !((p.tok === 1)))) { break; } */ if(!(!((p.tok === 55)) && !((p.tok === 1)))) { $s = 28; continue; } + _r$8 = p.parseType(); /* */ $s = 29; case 29: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + list = $append(list, _r$8); + _r$9 = p.atComma("type argument list", 55); /* */ $s = 32; case 32: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (!_r$9) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (!_r$9) { */ case 30: + /* break; */ $s = 28; continue; + /* } */ case 31: + $r = p.next(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 27; continue; + case 28: + p.exprLev = p.exprLev - (1) >> 0; + /* } */ case 24: + _r$10 = p.expectClosing(55, "type argument list"); /* */ $s = 34; case 34: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + rbrack = _r$10; + typ = typeparams.PackIndexExpr(ident, lbrack, list, rbrack); + /* } */ case 17: + $s = 12; continue; + /* } else if ((p.tok === 49)) { */ case 10: + _r$11 = p.parseParameters(false); /* */ $s = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$3 = _r$11; + params$1 = _tuple$3[1]; + _r$12 = p.parseResult(); /* */ $s = 36; case 36: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + results$1 = _r$12; + idents = new sliceType([ident]); + typ = new ast.FuncType.ptr(0, ptrType$27.nil, params$1, results$1); + $s = 12; continue; + /* } else { */ case 11: + typ = x; + /* } */ case 12: + case 8: + $s = 7; continue; + /* } else { */ case 6: + typ = x; + /* */ if (p.tok === 50) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if (p.tok === 50) { */ case 37: + _r$13 = p.parseTypeInstance(typ); /* */ $s = 39; case 39: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + typ = _r$13; + /* } */ case 38: + /* } */ case 7: + $24r = new ast.Field.ptr(doc, idents, typ, ptrType$35.nil, ptrType$33.nil); + $s = 40; case 40: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$36.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseMethodSpec, $c: true, $r, $24r, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, doc, ident, idents, lbrack, list, name0, p, params, params$1, rbrack, results, results$1, typ, x, x$1, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.embeddedElem = function embeddedElem(x) { + var {$24r, _r, _r$1, _r$2, p, t, x, $s, $deferred, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "EmbeddedElem"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* */ if ($interfaceIsEqual(x, $ifaceNil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($interfaceIsEqual(x, $ifaceNil)) { */ case 4: + _r$1 = p.embeddedTerm(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + x = _r$1; + /* } */ case 5: + /* while (true) { */ case 7: + /* if (!(p.tok === 18)) { break; } */ if(!(p.tok === 18)) { $s = 8; continue; } + t = new ast.BinaryExpr.ptr($ifaceNil, 0, 0, $ifaceNil); + t.OpPos = p.pos; + t.Op = 18; + $r = p.next(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + t.X = x; + _r$2 = p.embeddedTerm(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + t.Y = _r$2; + x = t; + $s = 7; continue; + case 8: + $24r = x; + $s = 11; case 11: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: embeddedElem, $c: true, $r, $24r, _r, _r$1, _r$2, p, t, x, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.embeddedTerm = function embeddedTerm() { + var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, p, pos, t, t$1, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "EmbeddedTerm"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* */ if (p.tok === 88) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (p.tok === 88) { */ case 4: + t = new ast.UnaryExpr.ptr(0, 0, $ifaceNil); + t.OpPos = p.pos; + t.Op = 88; + $r = p.next(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = p.parseType(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + t.X = _r$1; + $24r = t; + $s = 8; case 8: return $24r; + /* } */ case 5: + _r$2 = p.tryIdentOrType(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + t$1 = _r$2; + /* */ if ($interfaceIsEqual(t$1, $ifaceNil)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ($interfaceIsEqual(t$1, $ifaceNil)) { */ case 10: + pos = p.pos; + $r = p.errorExpected(pos, "~ term or type"); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.advance(exprEnd); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r$1 = new ast.BadExpr.ptr(pos, p.pos); + $s = 14; case 14: return $24r$1; + /* } */ case 11: + $24r$2 = t$1; + $s = 15; case 15: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: embeddedTerm, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, p, pos, t, t$1, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseInterfaceType = function parseInterfaceType() { + var {$24r, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, comment, comment$1, f, lbrace, list, p, pos, rbrace, t, typ, typ$1, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "InterfaceType"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(76); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _r$2 = p.expect(51); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + lbrace = _r$2; + list = sliceType$5.nil; + /* while (true) { */ case 6: + /* */ if ((p.tok === 4)) { $s = 9; continue; } + /* */ if ((p.tok === 88)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ((p.tok === 4)) { */ case 9: + _r$3 = p.parseMethodSpec(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + f = _r$3; + /* */ if (f.Names === sliceType.nil) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (f.Names === sliceType.nil) { */ case 14: + _r$4 = p.embeddedElem(f.Type); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + f.Type = _r$4; + /* } */ case 15: + _r$5 = p.expectSemi(); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + f.Comment = _r$5; + list = $append(list, f); + $s = 12; continue; + /* } else if ((p.tok === 88)) { */ case 10: + _r$6 = p.embeddedElem($ifaceNil); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + typ = _r$6; + _r$7 = p.expectSemi(); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + comment = _r$7; + list = $append(list, new ast.Field.ptr(ptrType$33.nil, sliceType.nil, typ, ptrType$35.nil, comment)); + $s = 12; continue; + /* } else { */ case 11: + _r$8 = p.tryIdentOrType(); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + t = _r$8; + /* */ if (!($interfaceIsEqual(t, $ifaceNil))) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!($interfaceIsEqual(t, $ifaceNil))) { */ case 21: + _r$9 = p.embeddedElem(t); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + typ$1 = _r$9; + _r$10 = p.expectSemi(); /* */ $s = 25; case 25: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + comment$1 = _r$10; + list = $append(list, new ast.Field.ptr(ptrType$33.nil, sliceType.nil, typ$1, ptrType$35.nil, comment$1)); + $s = 23; continue; + /* } else { */ case 22: + /* break parseElements; */ $s = 7; continue s; + /* } */ case 23: + /* } */ case 12: + case 8: + $s = 6; continue; + case 7: + _r$11 = p.expect(56); /* */ $s = 26; case 26: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + rbrace = _r$11; + $24r = new ast.InterfaceType.ptr(pos, new ast.FieldList.ptr(lbrace, list, rbrace), false); + $s = 27; case 27: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$9.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseInterfaceType, $c: true, $r, $24r, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, comment, comment$1, f, lbrace, list, p, pos, rbrace, t, typ, typ$1, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseMapType = function parseMapType() { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, key, p, pos, value, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "MapType"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(77); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _r$2 = p.expect(50); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _r$3 = p.parseType(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + key = _r$3; + _r$4 = p.expect(55); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + _r$5 = p.parseType(); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + value = _r$5; + $24r = new ast.MapType.ptr(pos, key, value); + $s = 9; case 9: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$38.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseMapType, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, key, p, pos, value, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseChanType = function parseChanType() { + var {$24r, _r, _r$1, _r$2, _r$3, arrow, dir, p, pos, value, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "ChanType"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + pos = p.pos; + dir = 3; + arrow = 0; + /* */ if (p.tok === 63) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (p.tok === 63) { */ case 4: + $r = p.next(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (p.tok === 36) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (p.tok === 36) { */ case 8: + arrow = p.pos; + $r = p.next(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + dir = 1; + /* } */ case 9: + $s = 6; continue; + /* } else { */ case 5: + _r$1 = p.expect(36); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + arrow = _r$1; + _r$2 = p.expect(63); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + dir = 2; + /* } */ case 6: + _r$3 = p.parseType(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + value = _r$3; + $24r = new ast.ChanType.ptr(pos, arrow, dir, value); + $s = 14; case 14: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$39.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseChanType, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, arrow, dir, p, pos, value, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseTypeInstance = function parseTypeInstance(typ) { + var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, closing, list, opening, p, typ, $s, $deferred, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "TypeInstance"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(50); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + opening = _r$1; + p.exprLev = p.exprLev + (1) >> 0; + list = sliceType$3.nil; + /* while (true) { */ case 5: + /* if (!(!((p.tok === 55)) && !((p.tok === 1)))) { break; } */ if(!(!((p.tok === 55)) && !((p.tok === 1)))) { $s = 6; continue; } + _r$2 = p.parseType(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + list = $append(list, _r$2); + _r$3 = p.atComma("type argument list", 55); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!_r$3) { */ case 8: + /* break; */ $s = 6; continue; + /* } */ case 9: + $r = p.next(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + case 6: + p.exprLev = p.exprLev - (1) >> 0; + _r$4 = p.expectClosing(55, "type argument list"); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + closing = _r$4; + /* */ if (list.$length === 0) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (list.$length === 0) { */ case 13: + $r = p.errorExpected(closing, "type argument list"); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r = new ast.IndexExpr.ptr(typ, opening, new ast.BadExpr.ptr(opening + 1 >> 0, closing), closing); + $s = 16; case 16: return $24r; + /* } */ case 14: + $24r$1 = typeparams.PackIndexExpr(typ, opening, list, closing); + $s = 17; case 17: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseTypeInstance, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, closing, list, opening, p, typ, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.tryIdentOrType = function tryIdentOrType() { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, _1, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, lbrack, lparen, p, rparen, typ, typ$1, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + _r = incNestLev(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([decNestLev, [_r]]); + _1 = p.tok; + /* */ if (_1 === (4)) { $s = 3; continue; } + /* */ if (_1 === (50)) { $s = 4; continue; } + /* */ if (_1 === (82)) { $s = 5; continue; } + /* */ if (_1 === (14)) { $s = 6; continue; } + /* */ if (_1 === (71)) { $s = 7; continue; } + /* */ if (_1 === (76)) { $s = 8; continue; } + /* */ if (_1 === (77)) { $s = 9; continue; } + /* */ if ((_1 === (63)) || (_1 === (36))) { $s = 10; continue; } + /* */ if (_1 === (49)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_1 === (4)) { */ case 3: + _r$1 = p.parseTypeName(ptrType$2.nil); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ = _r$1; + /* */ if (p.tok === 50) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (p.tok === 50) { */ case 14: + _r$2 = p.parseTypeInstance(typ); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + typ = _r$2; + /* } */ case 15: + $s = -1; return typ; + /* } else if (_1 === (50)) { */ case 4: + _r$3 = p.expect(50); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + lbrack = _r$3; + _r$4 = p.parseArrayType(lbrack, $ifaceNil); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 19; case 19: return $24r; + /* } else if (_1 === (82)) { */ case 5: + _r$5 = p.parseStructType(); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r$1 = _r$5; + $s = 21; case 21: return $24r$1; + /* } else if (_1 === (14)) { */ case 6: + _r$6 = p.parsePointerType(); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$2 = _r$6; + $s = 23; case 23: return $24r$2; + /* } else if (_1 === (71)) { */ case 7: + _r$7 = p.parseFuncType(); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $24r$3 = _r$7; + $s = 25; case 25: return $24r$3; + /* } else if (_1 === (76)) { */ case 8: + _r$8 = p.parseInterfaceType(); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $24r$4 = _r$8; + $s = 27; case 27: return $24r$4; + /* } else if (_1 === (77)) { */ case 9: + _r$9 = p.parseMapType(); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $24r$5 = _r$9; + $s = 29; case 29: return $24r$5; + /* } else if ((_1 === (63)) || (_1 === (36))) { */ case 10: + _r$10 = p.parseChanType(); /* */ $s = 30; case 30: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $24r$6 = _r$10; + $s = 31; case 31: return $24r$6; + /* } else if (_1 === (49)) { */ case 11: + lparen = p.pos; + $r = p.next(); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$11 = p.parseType(); /* */ $s = 33; case 33: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + typ$1 = _r$11; + _r$12 = p.expect(54); /* */ $s = 34; case 34: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + rparen = _r$12; + $s = -1; return new ast.ParenExpr.ptr(lparen, typ$1, rparen); + /* } */ case 12: + case 2: + $s = -1; return $ifaceNil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: tryIdentOrType, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, _1, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, lbrack, lparen, p, rparen, typ, typ$1, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseStmtList = function parseStmtList() { + var {$24r, _r, _r$1, list, p, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + list = sliceType$7.nil; + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "StatementList"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* while (true) { */ case 4: + /* if (!(!((p.tok === 62)) && !((p.tok === 66)) && !((p.tok === 56)) && !((p.tok === 1)))) { break; } */ if(!(!((p.tok === 62)) && !((p.tok === 66)) && !((p.tok === 56)) && !((p.tok === 1)))) { $s = 5; continue; } + _r$1 = p.parseStmt(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + list = $append(list, _r$1); + $s = 4; continue; + case 5: + $24r = list; + $s = 7; case 7: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return list; } if($curGoroutine.asleep) { var $f = {$blk: parseStmtList, $c: true, $r, $24r, _r, _r$1, list, p, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseBody = function parseBody() { + var {$24r, _r, _r$1, _r$2, _r$3, lbrace, list, p, rbrace, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "Body"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(51); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + lbrace = _r$1; + _r$2 = p.parseStmtList(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + list = _r$2; + _r$3 = p.expect2(56); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + rbrace = _r$3; + $24r = new ast.BlockStmt.ptr(lbrace, list, rbrace); + $s = 7; case 7: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$13.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseBody, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, lbrace, list, p, rbrace, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseBlockStmt = function parseBlockStmt() { + var {$24r, _r, _r$1, _r$2, _r$3, lbrace, list, p, rbrace, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "BlockStmt"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(51); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + lbrace = _r$1; + _r$2 = p.parseStmtList(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + list = _r$2; + _r$3 = p.expect2(56); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + rbrace = _r$3; + $24r = new ast.BlockStmt.ptr(lbrace, list, rbrace); + $s = 7; case 7: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$13.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseBlockStmt, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, lbrace, list, p, rbrace, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseFuncTypeOrLit = function parseFuncTypeOrLit() { + var {$24r, $24r$1, _r, _r$1, _r$2, body, p, typ, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "FuncTypeOrLit"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.parseFuncType(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ = _r$1; + /* */ if (!((p.tok === 51))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((p.tok === 51))) { */ case 5: + $24r = typ; + $s = 7; case 7: return $24r; + /* } */ case 6: + p.exprLev = p.exprLev + (1) >> 0; + _r$2 = p.parseBody(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + body = _r$2; + p.exprLev = p.exprLev - (1) >> 0; + $24r$1 = new ast.FuncLit.ptr(typ, body); + $s = 9; case 9: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseFuncTypeOrLit, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, body, p, typ, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseOperand = function parseOperand() { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, isIdent, lparen, p, pos, rparen, typ, x, x$1, x$2, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "Operand"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _1 = p.tok; + /* */ if (_1 === (4)) { $s = 5; continue; } + /* */ if ((_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9))) { $s = 6; continue; } + /* */ if (_1 === (49)) { $s = 7; continue; } + /* */ if (_1 === (71)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === (4)) { */ case 5: + _r$1 = p.parseIdent(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + x = _r$1; + $24r = x; + $s = 11; case 11: return $24r; + /* } else if ((_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9))) { */ case 6: + x$1 = new ast.BasicLit.ptr(p.pos, p.tok, p.lit); + $r = p.next(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r$1 = x$1; + $s = 13; case 13: return $24r$1; + /* } else if (_1 === (49)) { */ case 7: + lparen = p.pos; + $r = p.next(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + p.exprLev = p.exprLev + (1) >> 0; + _r$2 = p.parseRhs(); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x$2 = _r$2; + p.exprLev = p.exprLev - (1) >> 0; + _r$3 = p.expect(54); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + rparen = _r$3; + $24r$2 = new ast.ParenExpr.ptr(lparen, x$2, rparen); + $s = 17; case 17: return $24r$2; + /* } else if (_1 === (71)) { */ case 8: + _r$4 = p.parseFuncTypeOrLit(); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$3 = _r$4; + $s = 19; case 19: return $24r$3; + /* } */ case 9: + case 4: + _r$5 = p.tryIdentOrType(); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + typ = _r$5; + /* */ if (!($interfaceIsEqual(typ, $ifaceNil))) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!($interfaceIsEqual(typ, $ifaceNil))) { */ case 21: + _tuple = $assertType(typ, ptrType$2, true); + isIdent = _tuple[1]; + assert(!isIdent, "type cannot be identifier"); + $24r$4 = typ; + $s = 23; case 23: return $24r$4; + /* } */ case 22: + pos = p.pos; + $r = p.errorExpected(pos, "operand"); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.advance(stmtStart); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r$5 = new ast.BadExpr.ptr(pos, p.pos); + $s = 26; case 26: return $24r$5; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseOperand, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, isIdent, lparen, p, pos, rparen, typ, x, x$1, x$2, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseSelector = function parseSelector(x) { + var {$24r, _r, _r$1, p, sel, x, $s, $deferred, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "Selector"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.parseIdent(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + sel = _r$1; + $24r = new ast.SelectorExpr.ptr(x, sel); + $s = 5; case 5: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseSelector, $c: true, $r, $24r, _r, _r$1, p, sel, x, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseTypeAssertion = function parseTypeAssertion(x) { + var {$24r, _r, _r$1, _r$2, _r$3, lparen, p, rparen, typ, x, $s, $deferred, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "TypeAssertion"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(49); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + lparen = _r$1; + typ = $ifaceNil; + /* */ if (p.tok === 84) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (p.tok === 84) { */ case 5: + $r = p.next(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + /* } else { */ case 6: + _r$2 = p.parseType(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + typ = _r$2; + /* } */ case 7: + _r$3 = p.expect(54); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + rparen = _r$3; + $24r = new ast.TypeAssertExpr.ptr(x, lparen, typ, rparen); + $s = 11; case 11: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseTypeAssertion, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, lparen, p, rparen, typ, x, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseIndexOrSliceOrInstance = function parseIndexOrSliceOrInstance(x) { + var {$24r, $24r$1, $24r$2, $24r$3, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, args, colons, index, lbrack, ncolons, p, rbrack, rbrack$1, slice3, x, $s, $deferred, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "parseIndexOrSliceOrInstance"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(50); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + lbrack = _r$1; + /* */ if (p.tok === 55) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (p.tok === 55) { */ case 5: + $r = p.errorExpected(p.pos, "operand"); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + rbrack = p.pos; + $r = p.next(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r = new ast.IndexExpr.ptr(x, lbrack, new ast.BadExpr.ptr(rbrack, rbrack), rbrack); + $s = 9; case 9: return $24r; + /* } */ case 6: + p.exprLev = p.exprLev + (1) >> 0; + args = sliceType$3.nil; + index = arrayType.zero(); + colons = arrayType$1.zero(); + /* */ if (!((p.tok === 58))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!((p.tok === 58))) { */ case 10: + _r$2 = p.parseRhs(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + index[0] = _r$2; + /* } */ case 11: + ncolons = 0; + _1 = p.tok; + /* */ if (_1 === (58)) { $s = 14; continue; } + /* */ if (_1 === (52)) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (_1 === (58)) { */ case 14: + /* while (true) { */ case 17: + /* if (!((p.tok === 58) && ncolons < 2)) { break; } */ if(!((p.tok === 58) && ncolons < 2)) { $s = 18; continue; } + ((ncolons < 0 || ncolons >= colons.length) ? ($throwRuntimeError("index out of range"), undefined) : colons[ncolons] = p.pos); + ncolons = ncolons + (1) >> 0; + $r = p.next(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!((p.tok === 58)) && !((p.tok === 55)) && !((p.tok === 1))) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (!((p.tok === 58)) && !((p.tok === 55)) && !((p.tok === 1))) { */ case 20: + _r$3 = p.parseRhs(); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ((ncolons < 0 || ncolons >= index.length) ? ($throwRuntimeError("index out of range"), undefined) : index[ncolons] = _r$3); + /* } */ case 21: + $s = 17; continue; + case 18: + $s = 16; continue; + /* } else if (_1 === (52)) { */ case 15: + args = $append(args, index[0]); + /* while (true) { */ case 23: + /* if (!(p.tok === 52)) { break; } */ if(!(p.tok === 52)) { $s = 24; continue; } + $r = p.next(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!((p.tok === 55)) && !((p.tok === 1))) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!((p.tok === 55)) && !((p.tok === 1))) { */ case 26: + _r$4 = p.parseType(); /* */ $s = 28; case 28: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + args = $append(args, _r$4); + /* } */ case 27: + $s = 23; continue; + case 24: + /* } */ case 16: + case 13: + p.exprLev = p.exprLev - (1) >> 0; + _r$5 = p.expect(55); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + rbrack$1 = _r$5; + /* */ if (ncolons > 0) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (ncolons > 0) { */ case 30: + slice3 = false; + /* */ if (ncolons === 2) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (ncolons === 2) { */ case 32: + slice3 = true; + /* */ if ($interfaceIsEqual(index[1], $ifaceNil)) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if ($interfaceIsEqual(index[1], $ifaceNil)) { */ case 34: + $r = p.error(colons[0], "middle index required in 3-index slice"); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + index[1] = new ast.BadExpr.ptr(colons[0] + 1 >> 0, colons[1]); + /* } */ case 35: + /* */ if ($interfaceIsEqual(index[2], $ifaceNil)) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if ($interfaceIsEqual(index[2], $ifaceNil)) { */ case 37: + $r = p.error(colons[1], "final index required in 3-index slice"); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + index[2] = new ast.BadExpr.ptr(colons[1] + 1 >> 0, rbrack$1); + /* } */ case 38: + /* } */ case 33: + $24r$1 = new ast.SliceExpr.ptr(x, lbrack, index[0], index[1], index[2], slice3, rbrack$1); + $s = 40; case 40: return $24r$1; + /* } */ case 31: + /* */ if (args.$length === 0) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if (args.$length === 0) { */ case 41: + $24r$2 = new ast.IndexExpr.ptr(x, lbrack, index[0], rbrack$1); + $s = 43; case 43: return $24r$2; + /* } */ case 42: + $24r$3 = typeparams.PackIndexExpr(x, lbrack, args, rbrack$1); + $s = 44; case 44: return $24r$3; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseIndexOrSliceOrInstance, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, args, colons, index, lbrack, ncolons, p, rbrack, rbrack$1, slice3, x, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseCallOrConversion = function parseCallOrConversion(fun) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, ellipsis, fun, list, lparen, p, rparen, $s, $deferred, $r, $c} = $restore(this, {fun}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "CallOrConversion"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(49); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + lparen = _r$1; + p.exprLev = p.exprLev + (1) >> 0; + list = sliceType$3.nil; + ellipsis = 0; + /* while (true) { */ case 5: + /* if (!(!((p.tok === 54)) && !((p.tok === 1)) && !new token.Pos(ellipsis).IsValid())) { break; } */ if(!(!((p.tok === 54)) && !((p.tok === 1)) && !new token.Pos(ellipsis).IsValid())) { $s = 6; continue; } + _r$2 = p.parseRhs(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + list = $append(list, _r$2); + /* */ if (p.tok === 48) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (p.tok === 48) { */ case 8: + ellipsis = p.pos; + $r = p.next(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + _r$3 = p.atComma("argument list", 54); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!_r$3) { */ case 11: + /* break; */ $s = 6; continue; + /* } */ case 12: + $r = p.next(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + case 6: + p.exprLev = p.exprLev - (1) >> 0; + _r$4 = p.expectClosing(54, "argument list"); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + rparen = _r$4; + $24r = new ast.CallExpr.ptr(fun, lparen, list, ellipsis, rparen); + $s = 16; case 16: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$40.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseCallOrConversion, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, ellipsis, fun, list, lparen, p, rparen, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseValue = function parseValue() { + var {$24r, $24r$1, _r, _r$1, _r$2, p, x, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "Element"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* */ if (p.tok === 51) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (p.tok === 51) { */ case 4: + _r$1 = p.parseLiteralValue($ifaceNil); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 7; case 7: return $24r; + /* } */ case 5: + _r$2 = p.parseExpr(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = _r$2; + $24r$1 = x; + $s = 9; case 9: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseValue, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, p, x, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseElement = function parseElement() { + var {$24r, _r, _r$1, _r$2, colon, p, x, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "Element"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.parseValue(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + x = _r$1; + /* */ if (p.tok === 58) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (p.tok === 58) { */ case 5: + colon = p.pos; + $r = p.next(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = p.parseValue(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = new ast.KeyValueExpr.ptr(x, colon, _r$2); + /* } */ case 6: + $24r = x; + $s = 9; case 9: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseElement, $c: true, $r, $24r, _r, _r$1, _r$2, colon, p, x, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseElementList = function parseElementList() { + var {$24r, _r, _r$1, _r$2, list, p, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + list = sliceType$3.nil; + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "ElementList"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* while (true) { */ case 4: + /* if (!(!((p.tok === 56)) && !((p.tok === 1)))) { break; } */ if(!(!((p.tok === 56)) && !((p.tok === 1)))) { $s = 5; continue; } + _r$1 = p.parseElement(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + list = $append(list, _r$1); + _r$2 = p.atComma("composite literal", 56); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!_r$2) { */ case 7: + /* break; */ $s = 5; continue; + /* } */ case 8: + $r = p.next(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 4; continue; + case 5: + $24r = list; + $s = 11; case 11: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return list; } if($curGoroutine.asleep) { var $f = {$blk: parseElementList, $c: true, $r, $24r, _r, _r$1, _r$2, list, p, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseLiteralValue = function parseLiteralValue(typ) { + var {$24r, _r, _r$1, _r$2, _r$3, elts, lbrace, p, rbrace, typ, $s, $deferred, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "LiteralValue"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(51); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + lbrace = _r$1; + elts = sliceType$3.nil; + p.exprLev = p.exprLev + (1) >> 0; + /* */ if (!((p.tok === 56))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((p.tok === 56))) { */ case 5: + _r$2 = p.parseElementList(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + elts = _r$2; + /* } */ case 6: + p.exprLev = p.exprLev - (1) >> 0; + _r$3 = p.expectClosing(56, "composite literal"); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + rbrace = _r$3; + $24r = new ast.CompositeLit.ptr(typ, lbrace, elts, rbrace, false); + $s = 9; case 9: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseLiteralValue, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, elts, lbrace, p, rbrace, typ, $s, $deferred};return $f; } } + }; + unparen = function unparen$1(x) { + var _tuple, isParen, p, x; + _tuple = $assertType(x, ptrType$41, true); + p = _tuple[0]; + isParen = _tuple[1]; + if (isParen) { + x = unparen(p.X); + } + return x; + }; + $ptrType(parser).prototype.parsePrimaryExpr = function parsePrimaryExpr(x) { + var {$24r, $24r$1, $24r$2, $24r$3, _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, n, p, pos, sel, t, x, $s, $deferred, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + n = [n]; + p = [p]; + p[0] = this; + /* */ if (p[0].trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p[0].trace) { */ case 1: + _r = trace(p[0], "PrimaryExpr"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* */ if ($interfaceIsEqual(x, $ifaceNil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($interfaceIsEqual(x, $ifaceNil)) { */ case 4: + _r$1 = p[0].parseOperand(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + x = _r$1; + /* } */ case 5: + n[0] = 0; + $deferred.push([(function(n, p) { return function parser·parsePrimaryExpr·func1() { + p[0].nestLev = p[0].nestLev - (n[0]) >> 0; + }; })(n, p), []]); + n[0] = 1; + /* while (true) { */ case 7: + _r$2 = incNestLev(p[0]); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _1 = p[0].tok; + /* */ if (_1 === (53)) { $s = 11; continue; } + /* */ if (_1 === (50)) { $s = 12; continue; } + /* */ if (_1 === (49)) { $s = 13; continue; } + /* */ if (_1 === (51)) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_1 === (53)) { */ case 11: + $r = p[0].next(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _2 = p[0].tok; + /* */ if (_2 === (4)) { $s = 19; continue; } + /* */ if (_2 === (49)) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (_2 === (4)) { */ case 19: + _r$3 = p[0].parseSelector(x); /* */ $s = 23; case 23: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + x = _r$3; + $s = 22; continue; + /* } else if (_2 === (49)) { */ case 20: + _r$4 = p[0].parseTypeAssertion(x); /* */ $s = 24; case 24: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + x = _r$4; + $s = 22; continue; + /* } else { */ case 21: + pos = p[0].pos; + $r = p[0].errorExpected(pos, "selector or type assertion"); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!((p[0].tok === 56))) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!((p[0].tok === 56))) { */ case 26: + $r = p[0].next(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 27: + sel = new ast.Ident.ptr(pos, "_", ptrType$3.nil); + x = new ast.SelectorExpr.ptr(x, sel); + /* } */ case 22: + case 18: + $s = 16; continue; + /* } else if (_1 === (50)) { */ case 12: + _r$5 = p[0].parseIndexOrSliceOrInstance(x); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + x = _r$5; + $s = 16; continue; + /* } else if (_1 === (49)) { */ case 13: + _r$6 = p[0].parseCallOrConversion(x); /* */ $s = 30; case 30: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + x = _r$6; + $s = 16; continue; + /* } else if (_1 === (51)) { */ case 14: + t = unparen(x); + _ref = t; + /* */ if ($assertType(_ref, ptrType$42, true)[1] || $assertType(_ref, ptrType$2, true)[1] || $assertType(_ref, ptrType$5, true)[1]) { $s = 31; continue; } + /* */ if ($assertType(_ref, ptrType$29, true)[1] || $assertType(_ref, ptrType$30, true)[1]) { $s = 32; continue; } + /* */ if ($assertType(_ref, ptrType$34, true)[1] || $assertType(_ref, ptrType$6, true)[1] || $assertType(_ref, ptrType$38, true)[1]) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if ($assertType(_ref, ptrType$42, true)[1] || $assertType(_ref, ptrType$2, true)[1] || $assertType(_ref, ptrType$5, true)[1]) { */ case 31: + /* */ if (p[0].exprLev < 0) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (p[0].exprLev < 0) { */ case 36: + $24r = x; + $s = 38; case 38: return $24r; + /* } */ case 37: + $s = 35; continue; + /* } else if ($assertType(_ref, ptrType$29, true)[1] || $assertType(_ref, ptrType$30, true)[1]) { */ case 32: + /* */ if (p[0].exprLev < 0) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (p[0].exprLev < 0) { */ case 39: + $24r$1 = x; + $s = 41; case 41: return $24r$1; + /* } */ case 40: + $s = 35; continue; + /* } else if ($assertType(_ref, ptrType$34, true)[1] || $assertType(_ref, ptrType$6, true)[1] || $assertType(_ref, ptrType$38, true)[1]) { */ case 33: + $s = 35; continue; + /* } else { */ case 34: + $24r$2 = x; + $s = 42; case 42: return $24r$2; + /* } */ case 35: + /* */ if (!($interfaceIsEqual(t, x))) { $s = 43; continue; } + /* */ $s = 44; continue; + /* if (!($interfaceIsEqual(t, x))) { */ case 43: + _r$7 = t.Pos(); /* */ $s = 45; case 45: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $r = p[0].error(_r$7, "cannot parenthesize type in composite literal"); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 44: + _r$8 = p[0].parseLiteralValue(x); /* */ $s = 47; case 47: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + x = _r$8; + $s = 16; continue; + /* } else { */ case 15: + $24r$3 = x; + $s = 48; case 48: return $24r$3; + /* } */ case 16: + case 10: + n[0] = n[0] + (1) >> 0; + $s = 7; continue; + case 8: + $s = -1; return $ifaceNil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parsePrimaryExpr, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, n, p, pos, sel, t, x, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseUnaryExpr = function parseUnaryExpr() { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tuple, _tuple$1, arrow, dir, ok, op, p, pos, pos$1, typ, x, x$1, x$2, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + _r = incNestLev(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([decNestLev, [_r]]); + /* */ if (p.trace) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (p.trace) { */ case 2: + _r$1 = trace(p, "UnaryExpr"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $deferred.push([un, [_r$1]]); + /* } */ case 3: + _1 = p.tok; + /* */ if ((_1 === (12)) || (_1 === (13)) || (_1 === (43)) || (_1 === (19)) || (_1 === (17)) || (_1 === (88))) { $s = 6; continue; } + /* */ if (_1 === (36)) { $s = 7; continue; } + /* */ if (_1 === (14)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ((_1 === (12)) || (_1 === (13)) || (_1 === (43)) || (_1 === (19)) || (_1 === (17)) || (_1 === (88))) { */ case 6: + _tmp = p.pos; + _tmp$1 = p.tok; + pos = _tmp; + op = _tmp$1; + $r = p.next(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = p.parseUnaryExpr(); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = _r$2; + $24r = new ast.UnaryExpr.ptr(pos, op, x); + $s = 12; case 12: return $24r; + /* } else if (_1 === (36)) { */ case 7: + arrow = p.pos; + $r = p.next(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = p.parseUnaryExpr(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + x$1 = _r$3; + _tuple = $assertType(x$1, ptrType$39, true); + typ = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (ok) { */ case 15: + dir = 1; + /* while (true) { */ case 17: + /* if (!(ok && (dir === 1))) { break; } */ if(!(ok && (dir === 1))) { $s = 18; continue; } + /* */ if (typ.Dir === 2) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (typ.Dir === 2) { */ case 19: + $r = p.errorExpected(typ.Arrow, "'chan'"); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 20: + _tmp$2 = typ.Arrow; + _tmp$3 = arrow; + _tmp$4 = arrow; + arrow = _tmp$2; + typ.Begin = _tmp$3; + typ.Arrow = _tmp$4; + _tmp$5 = typ.Dir; + _tmp$6 = 2; + dir = _tmp$5; + typ.Dir = _tmp$6; + _tuple$1 = $assertType(typ.Value, ptrType$39, true); + typ = _tuple$1[0]; + ok = _tuple$1[1]; + $s = 17; continue; + case 18: + /* */ if (dir === 1) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (dir === 1) { */ case 22: + $r = p.errorExpected(arrow, "channel type"); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 23: + $24r$1 = x$1; + $s = 25; case 25: return $24r$1; + /* } */ case 16: + $24r$2 = new ast.UnaryExpr.ptr(arrow, 36, x$1); + $s = 26; case 26: return $24r$2; + /* } else if (_1 === (14)) { */ case 8: + pos$1 = p.pos; + $r = p.next(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$4 = p.parseUnaryExpr(); /* */ $s = 28; case 28: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + x$2 = _r$4; + $24r$3 = new ast.StarExpr.ptr(pos$1, x$2); + $s = 29; case 29: return $24r$3; + /* } */ case 9: + case 5: + _r$5 = p.parsePrimaryExpr($ifaceNil); /* */ $s = 30; case 30: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r$4 = _r$5; + $s = 31; case 31: return $24r$4; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseUnaryExpr, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tuple, _tuple$1, arrow, dir, ok, op, p, pos, pos$1, typ, x, x$1, x$2, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.tokPrec = function tokPrec() { + var p, tok; + p = this; + tok = p.tok; + if (p.inRhs && (tok === 42)) { + tok = 39; + } + return [tok, new token.Token(tok).Precedence()]; + }; + $ptrType(parser).prototype.parseBinaryExpr = function parseBinaryExpr(x, prec1) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, n, op, oprec, p, pos, prec1, x, y, $s, $deferred, $r, $c} = $restore(this, {x, prec1}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + n = [n]; + p = [p]; + p[0] = this; + /* */ if (p[0].trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p[0].trace) { */ case 1: + _r = trace(p[0], "BinaryExpr"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* */ if ($interfaceIsEqual(x, $ifaceNil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($interfaceIsEqual(x, $ifaceNil)) { */ case 4: + _r$1 = p[0].parseUnaryExpr(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + x = _r$1; + /* } */ case 5: + n[0] = 0; + $deferred.push([(function(n, p) { return function parser·parseBinaryExpr·func1() { + p[0].nestLev = p[0].nestLev - (n[0]) >> 0; + }; })(n, p), []]); + n[0] = 1; + /* while (true) { */ case 7: + _r$2 = incNestLev(p[0]); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _tuple = p[0].tokPrec(); + op = _tuple[0]; + oprec = _tuple[1]; + /* */ if (oprec < prec1) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (oprec < prec1) { */ case 10: + $24r = x; + $s = 12; case 12: return $24r; + /* } */ case 11: + _r$3 = p[0].expect(op); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + pos = _r$3; + _r$4 = p[0].parseBinaryExpr($ifaceNil, oprec + 1 >> 0); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + y = _r$4; + x = new ast.BinaryExpr.ptr(x, pos, op, y); + n[0] = n[0] + (1) >> 0; + $s = 7; continue; + case 8: + $s = -1; return $ifaceNil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseBinaryExpr, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, n, op, oprec, p, pos, prec1, x, y, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseExpr = function parseExpr() { + var {$24r, _r, _r$1, p, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "Expression"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.parseBinaryExpr($ifaceNil, 1); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 5; case 5: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseExpr, $c: true, $r, $24r, _r, _r$1, p, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseRhs = function parseRhs() { + var {_r, old, p, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + old = p.inRhs; + p.inRhs = true; + _r = p.parseExpr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x = _r; + p.inRhs = old; + $s = -1; return x; + /* */ } return; } var $f = {$blk: parseRhs, $c: true, $r, _r, old, p, x, $s};return $f; + }; + $ptrType(parser).prototype.parseSimpleStmt = function parseSimpleStmt(mode) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tuple, arrow, colon, isIdent, isRange, label, mode, p, pos, pos$1, s, stmt, tok, x, y, y$1, $s, $deferred, $r, $c} = $restore(this, {mode}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "SimpleStmt"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.parseList(false); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + x = _r$1; + _1 = p.tok; + /* */ if ((_1 === (47)) || (_1 === (42)) || (_1 === (23)) || (_1 === (24)) || (_1 === (25)) || (_1 === (26)) || (_1 === (27)) || (_1 === (28)) || (_1 === (29)) || (_1 === (30)) || (_1 === (31)) || (_1 === (32)) || (_1 === (33))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ((_1 === (47)) || (_1 === (42)) || (_1 === (23)) || (_1 === (24)) || (_1 === (25)) || (_1 === (26)) || (_1 === (27)) || (_1 === (28)) || (_1 === (29)) || (_1 === (30)) || (_1 === (31)) || (_1 === (32)) || (_1 === (33))) { */ case 6: + _tmp = p.pos; + _tmp$1 = p.tok; + pos = _tmp; + tok = _tmp$1; + $r = p.next(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + y = sliceType$3.nil; + isRange = false; + /* */ if ((mode === 2) && (p.tok === 79) && ((tok === 47) || (tok === 42))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ((mode === 2) && (p.tok === 79) && ((tok === 47) || (tok === 42))) { */ case 9: + pos$1 = p.pos; + $r = p.next(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = p.parseRhs(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + y = new sliceType$3([new ast.UnaryExpr.ptr(pos$1, 79, _r$2)]); + isRange = true; + $s = 11; continue; + /* } else { */ case 10: + _r$3 = p.parseList(true); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + y = _r$3; + /* } */ case 11: + $24r = [new ast.AssignStmt.ptr(x, pos, tok, y), isRange]; + $s = 15; case 15: return $24r; + /* } */ case 7: + case 5: + /* */ if (x.$length > 1) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (x.$length > 1) { */ case 16: + _r$4 = (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]).Pos(); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $r = p.errorExpected(_r$4, "1 expression"); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 17: + _2 = p.tok; + /* */ if (_2 === (58)) { $s = 21; continue; } + /* */ if (_2 === (36)) { $s = 22; continue; } + /* */ if ((_2 === (37)) || (_2 === (38))) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (_2 === (58)) { */ case 21: + colon = p.pos; + $r = p.next(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple = $assertType((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]), ptrType$2, true); + label = _tuple[0]; + isIdent = _tuple[1]; + /* */ if ((mode === 1) && isIdent) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if ((mode === 1) && isIdent) { */ case 26: + _r$5 = p.parseStmt(); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + stmt = new ast.LabeledStmt.ptr(label, colon, _r$5); + $24r$1 = [stmt, false]; + $s = 29; case 29: return $24r$1; + /* } */ case 27: + $r = p.error(colon, "illegal label declaration"); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$6 = (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]).Pos(); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$2 = [new ast.BadStmt.ptr(_r$6, colon + 1 >> 0), false]; + $s = 32; case 32: return $24r$2; + /* } else if (_2 === (36)) { */ case 22: + arrow = p.pos; + $r = p.next(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$7 = p.parseRhs(); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + y$1 = _r$7; + $24r$3 = [new ast.SendStmt.ptr((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]), arrow, y$1), false]; + $s = 35; case 35: return $24r$3; + /* } else if ((_2 === (37)) || (_2 === (38))) { */ case 23: + s = new ast.IncDecStmt.ptr((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]), p.pos, p.tok); + $r = p.next(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r$4 = [s, false]; + $s = 37; case 37: return $24r$4; + /* } */ case 24: + case 20: + $24r$5 = [new ast.ExprStmt.ptr((0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), false]; + $s = 38; case 38: return $24r$5; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, false]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseSimpleStmt, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tuple, arrow, colon, isIdent, isRange, label, mode, p, pos, pos$1, s, stmt, tok, x, y, y$1, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseCallExpr = function parseCallExpr(callType) { + var {_arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, call, callType, isBad, isCall, p, t, x, $s, $r, $c} = $restore(this, {callType}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r = p.parseRhs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x = _r; + t = unparen(x); + /* */ if (!($interfaceIsEqual(t, x))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(t, x))) { */ case 2: + _r$1 = x.Pos(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = _r$1; + _r$2 = fmt.Sprintf("expression in %s must not be parenthesized", new sliceType$2([new $String(callType)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = _r$2; + $r = p.error(_arg, _arg$1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x = t; + /* } */ case 3: + _tuple = $assertType(x, ptrType$40, true); + call = _tuple[0]; + isCall = _tuple[1]; + if (isCall) { + $s = -1; return call; + } + _tuple$1 = $assertType(x, ptrType$42, true); + isBad = _tuple$1[1]; + /* */ if (!isBad) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!isBad) { */ case 7: + _r$3 = x.End(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = p.safePos(_r$3); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$2 = _r$4; + _r$5 = fmt.Sprintf("expression in %s must be function call", new sliceType$2([new $String(callType)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$3 = _r$5; + $r = p.error(_arg$2, _arg$3); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + $s = -1; return ptrType$40.nil; + /* */ } return; } var $f = {$blk: parseCallExpr, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, call, callType, isBad, isCall, p, t, x, $s};return $f; + }; + $ptrType(parser).prototype.parseGoStmt = function parseGoStmt() { + var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, call, p, pos, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "GoStmt"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(72); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _r$2 = p.parseCallExpr("go"); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + call = _r$2; + _r$3 = p.expectSemi(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + /* */ if (call === ptrType$40.nil) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (call === ptrType$40.nil) { */ case 7: + $24r = new ast.BadStmt.ptr(pos, pos + 2 >> 0); + $s = 9; case 9: return $24r; + /* } */ case 8: + $24r$1 = new ast.GoStmt.ptr(pos, call); + $s = 10; case 10: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseGoStmt, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, call, p, pos, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseDeferStmt = function parseDeferStmt() { + var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, call, p, pos, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "DeferStmt"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(67); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _r$2 = p.parseCallExpr("defer"); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + call = _r$2; + _r$3 = p.expectSemi(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + /* */ if (call === ptrType$40.nil) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (call === ptrType$40.nil) { */ case 7: + $24r = new ast.BadStmt.ptr(pos, pos + 5 >> 0); + $s = 9; case 9: return $24r; + /* } */ case 8: + $24r$1 = new ast.DeferStmt.ptr(pos, call); + $s = 10; case 10: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseDeferStmt, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, call, p, pos, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseReturnStmt = function parseReturnStmt() { + var {$24r, _r, _r$1, _r$2, _r$3, p, pos, x, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "ReturnStmt"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + pos = p.pos; + _r$1 = p.expect(80); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + x = sliceType$3.nil; + /* */ if (!((p.tok === 57)) && !((p.tok === 56))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((p.tok === 57)) && !((p.tok === 56))) { */ case 5: + _r$2 = p.parseList(true); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = _r$2; + /* } */ case 6: + _r$3 = p.expectSemi(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + $24r = new ast.ReturnStmt.ptr(pos, x); + $s = 9; case 9: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$43.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseReturnStmt, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, p, pos, x, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseBranchStmt = function parseBranchStmt(tok) { + var {$24r, _r, _r$1, _r$2, _r$3, label, p, pos, tok, $s, $deferred, $r, $c} = $restore(this, {tok}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "BranchStmt"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(tok); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + label = ptrType$2.nil; + /* */ if (!((tok === 69)) && (p.tok === 4)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((tok === 69)) && (p.tok === 4)) { */ case 5: + _r$2 = p.parseIdent(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + label = _r$2; + /* } */ case 6: + _r$3 = p.expectSemi(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + $24r = new ast.BranchStmt.ptr(pos, tok, label); + $s = 9; case 9: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$12.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseBranchStmt, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, label, p, pos, tok, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.makeExpr = function makeExpr(s, want) { + var {$24r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, es, found, isAss, isExpr, p, s, want, $s, $r, $c} = $restore(this, {s, want}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + if ($interfaceIsEqual(s, $ifaceNil)) { + $s = -1; return $ifaceNil; + } + _tuple = $assertType(s, ptrType$44, true); + es = _tuple[0]; + isExpr = _tuple[1]; + if (isExpr) { + $s = -1; return es.X; + } + found = "simple statement"; + _tuple$1 = $assertType(s, ptrType$11, true); + isAss = _tuple$1[1]; + if (isAss) { + found = "assignment"; + } + _r = s.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = _r; + _r$1 = fmt.Sprintf("expected %s, found %s (missing parentheses around composite literal?)", new sliceType$2([new $String(want), new $String(found)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = _r$1; + $r = p.error(_arg, _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = s.Pos(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = s.End(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = p.safePos(_r$3); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = new ast.BadExpr.ptr(_r$2, _r$4); + $s = 7; case 7: return $24r; + /* */ } return; } var $f = {$blk: makeExpr, $c: true, $r, $24r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, es, found, isAss, isExpr, p, s, want, $s};return $f; + }; + $ptrType(parser).prototype.parseIfHeader = function parseIfHeader() { + var {_r, _r$1, _r$2, _r$3, _tuple, _tuple$1, cond, condStmt, init$1, p, prevLev, semi, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + init$1 = $ifaceNil; + cond = $ifaceNil; + p = this; + /* */ if (p.tok === 51) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.tok === 51) { */ case 1: + $r = p.error(p.pos, "missing condition in if statement"); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + cond = new ast.BadExpr.ptr(p.pos, p.pos); + $s = -1; return [init$1, cond]; + /* } */ case 2: + prevLev = p.exprLev; + p.exprLev = -1; + /* */ if (!((p.tok === 57))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!((p.tok === 57))) { */ case 4: + /* */ if (p.tok === 85) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (p.tok === 85) { */ case 6: + $r = p.next(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.error(p.pos, "var declaration not allowed in if initializer"); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + _r = p.parseSimpleStmt(0); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + init$1 = _tuple[0]; + /* } */ case 5: + condStmt = $ifaceNil; + semi = new structType.ptr(0, ""); + /* */ if (!((p.tok === 51))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!((p.tok === 51))) { */ case 11: + /* */ if (p.tok === 57) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (p.tok === 57) { */ case 14: + semi.pos = p.pos; + semi.lit = p.lit; + $r = p.next(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 16; continue; + /* } else { */ case 15: + _r$1 = p.expect(57); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 16: + /* */ if (!((p.tok === 51))) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (!((p.tok === 51))) { */ case 19: + _r$2 = p.parseSimpleStmt(0); /* */ $s = 21; case 21: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + condStmt = _tuple$1[0]; + /* } */ case 20: + $s = 13; continue; + /* } else { */ case 12: + condStmt = init$1; + init$1 = $ifaceNil; + /* } */ case 13: + /* */ if (!($interfaceIsEqual(condStmt, $ifaceNil))) { $s = 22; continue; } + /* */ if (new token.Pos(semi.pos).IsValid()) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (!($interfaceIsEqual(condStmt, $ifaceNil))) { */ case 22: + _r$3 = p.makeExpr(condStmt, "boolean expression"); /* */ $s = 25; case 25: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + cond = _r$3; + $s = 24; continue; + /* } else if (new token.Pos(semi.pos).IsValid()) { */ case 23: + /* */ if (semi.lit === "\n") { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (semi.lit === "\n") { */ case 26: + $r = p.error(semi.pos, "unexpected newline, expecting { after if clause"); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 28; continue; + /* } else { */ case 27: + $r = p.error(semi.pos, "missing condition in if statement"); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 28: + /* } */ case 24: + if ($interfaceIsEqual(cond, $ifaceNil)) { + cond = new ast.BadExpr.ptr(p.pos, p.pos); + } + p.exprLev = prevLev; + $s = -1; return [init$1, cond]; + /* */ } return; } var $f = {$blk: parseIfHeader, $c: true, $r, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, cond, condStmt, init$1, p, prevLev, semi, $s};return $f; + }; + $ptrType(parser).prototype.parseIfStmt = function parseIfStmt() { + var {$24r, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, body, cond, else_, init$1, p, pos, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + _r = incNestLev(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([decNestLev, [_r]]); + /* */ if (p.trace) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (p.trace) { */ case 2: + _r$1 = trace(p, "IfStmt"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $deferred.push([un, [_r$1]]); + /* } */ case 3: + _r$2 = p.expect(74); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + pos = _r$2; + _r$3 = p.parseIfHeader(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + init$1 = _tuple[0]; + cond = _tuple[1]; + _r$4 = p.parseBlockStmt(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + body = _r$4; + else_ = $ifaceNil; + /* */ if (p.tok === 68) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (p.tok === 68) { */ case 8: + $r = p.next(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _1 = p.tok; + /* */ if (_1 === (74)) { $s = 13; continue; } + /* */ if (_1 === (51)) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_1 === (74)) { */ case 13: + _r$5 = p.parseIfStmt(); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + else_ = _r$5; + $s = 16; continue; + /* } else if (_1 === (51)) { */ case 14: + _r$6 = p.parseBlockStmt(); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + else_ = _r$6; + _r$7 = p.expectSemi(); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + $s = 16; continue; + /* } else { */ case 15: + $r = p.errorExpected(p.pos, "if statement or block"); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + else_ = new ast.BadStmt.ptr(p.pos, p.pos); + /* } */ case 16: + case 12: + $s = 10; continue; + /* } else { */ case 9: + _r$8 = p.expectSemi(); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$8; + /* } */ case 10: + $24r = new ast.IfStmt.ptr(pos, init$1, cond, body, else_); + $s = 22; case 22: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$14.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseIfStmt, $c: true, $r, $24r, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, body, cond, else_, init$1, p, pos, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseCaseClause = function parseCaseClause() { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, body, colon, list, p, pos, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "CaseClause"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + pos = p.pos; + list = sliceType$3.nil; + /* */ if (p.tok === 62) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (p.tok === 62) { */ case 4: + $r = p.next(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = p.parseList(true); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + list = _r$1; + $s = 6; continue; + /* } else { */ case 5: + _r$2 = p.expect(66); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* } */ case 6: + _r$3 = p.expect(58); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + colon = _r$3; + _r$4 = p.parseStmtList(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + body = _r$4; + $24r = new ast.CaseClause.ptr(pos, list, colon, body); + $s = 12; case 12: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$15.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseCaseClause, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, body, colon, list, p, pos, $s, $deferred};return $f; } } + }; + isTypeSwitchAssert = function isTypeSwitchAssert$1(x) { + var _tuple, a, ok, x; + _tuple = $assertType(x, ptrType$45, true); + a = _tuple[0]; + ok = _tuple[1]; + return ok && $interfaceIsEqual(a.Type, $ifaceNil); + }; + $ptrType(parser).prototype.isTypeSwitchGuard = function isTypeSwitchGuard(s) { + var {_1, _ref, p, s, t, t$1, x, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _ref = s; + /* */ if ($assertType(_ref, ptrType$44, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, ptrType$44, true)[1]) { */ case 1: + t = _ref.$val; + $s = -1; return isTypeSwitchAssert(t.X); + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 2: + t$1 = _ref.$val; + /* */ if ((t$1.Lhs.$length === 1) && (t$1.Rhs.$length === 1) && isTypeSwitchAssert((x = t$1.Rhs, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((t$1.Lhs.$length === 1) && (t$1.Rhs.$length === 1) && isTypeSwitchAssert((x = t$1.Rhs, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])))) { */ case 4: + _1 = t$1.Tok; + /* */ if (_1 === (42)) { $s = 7; continue; } + /* */ if (_1 === (47)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === (42)) { */ case 7: + $r = p.error(t$1.TokPos, "expected ':=', found '='"); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return true; + /* } else if (_1 === (47)) { */ case 8: + $s = -1; return true; + /* } */ case 9: + case 6: + /* } */ case 5: + /* } */ case 3: + $s = -1; return false; + /* */ } return; } var $f = {$blk: isTypeSwitchGuard, $c: true, $r, _1, _ref, p, s, t, t$1, x, $s};return $f; + }; + $ptrType(parser).prototype.parseSwitchStmt = function parseSwitchStmt() { + var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, body, lbrace, list, p, pos, prevLev, rbrace, s1, s2, typeSwitch, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "SwitchStmt"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(83); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _tmp = $ifaceNil; + _tmp$1 = $ifaceNil; + s1 = _tmp; + s2 = _tmp$1; + /* */ if (!((p.tok === 51))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((p.tok === 51))) { */ case 5: + prevLev = p.exprLev; + p.exprLev = -1; + /* */ if (!((p.tok === 57))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((p.tok === 57))) { */ case 7: + _r$2 = p.parseSimpleStmt(0); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + s2 = _tuple[0]; + /* } */ case 8: + /* */ if (p.tok === 57) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (p.tok === 57) { */ case 10: + $r = p.next(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s1 = s2; + s2 = $ifaceNil; + /* */ if (!((p.tok === 51))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!((p.tok === 51))) { */ case 13: + _r$3 = p.parseSimpleStmt(0); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = _r$3; + s2 = _tuple$1[0]; + /* } */ case 14: + /* } */ case 11: + p.exprLev = prevLev; + /* } */ case 6: + _r$4 = p.isTypeSwitchGuard(s2); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + typeSwitch = _r$4; + _r$5 = p.expect(51); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + lbrace = _r$5; + list = sliceType$7.nil; + /* while (true) { */ case 18: + /* if (!((p.tok === 62) || (p.tok === 66))) { break; } */ if(!((p.tok === 62) || (p.tok === 66))) { $s = 19; continue; } + _r$6 = p.parseCaseClause(); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + list = $append(list, _r$6); + $s = 18; continue; + case 19: + _r$7 = p.expect(56); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + rbrace = _r$7; + _r$8 = p.expectSemi(); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$8; + body = new ast.BlockStmt.ptr(lbrace, list, rbrace); + /* */ if (typeSwitch) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (typeSwitch) { */ case 23: + $24r = new ast.TypeSwitchStmt.ptr(pos, s1, s2, body); + $s = 25; case 25: return $24r; + /* } */ case 24: + _r$9 = p.makeExpr(s2, "switch expression"); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $24r$1 = new ast.SwitchStmt.ptr(pos, s1, _r$9, body); + $s = 27; case 27: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseSwitchStmt, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, body, lbrace, list, p, pos, prevLev, rbrace, s1, s2, typeSwitch, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseCommClause = function parseCommClause() { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, arrow, body, colon, comm, lhs, p, pos, pos$1, rhs, rhs$1, tok, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "CommClause"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + pos = p.pos; + comm = $ifaceNil; + /* */ if (p.tok === 62) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (p.tok === 62) { */ case 4: + $r = p.next(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = p.parseList(false); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + lhs = _r$1; + /* */ if (p.tok === 36) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (p.tok === 36) { */ case 9: + /* */ if (lhs.$length > 1) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (lhs.$length > 1) { */ case 12: + _r$2 = (0 >= lhs.$length ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + 0]).Pos(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = p.errorExpected(_r$2, "1 expression"); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 13: + arrow = p.pos; + $r = p.next(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = p.parseRhs(); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + rhs = _r$3; + comm = new ast.SendStmt.ptr((0 >= lhs.$length ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + 0]), arrow, rhs); + $s = 11; continue; + /* } else { */ case 10: + tok = p.tok; + /* */ if ((tok === 42) || (tok === 47)) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if ((tok === 42) || (tok === 47)) { */ case 18: + /* */ if (lhs.$length > 2) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (lhs.$length > 2) { */ case 21: + _r$4 = (0 >= lhs.$length ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + 0]).Pos(); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $r = p.errorExpected(_r$4, "1 or 2 expressions"); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + lhs = $subslice(lhs, 0, 2); + /* } */ case 22: + pos$1 = p.pos; + $r = p.next(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$5 = p.parseRhs(); /* */ $s = 26; case 26: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + rhs$1 = _r$5; + comm = new ast.AssignStmt.ptr(lhs, pos$1, tok, new sliceType$3([rhs$1])); + $s = 20; continue; + /* } else { */ case 19: + /* */ if (lhs.$length > 1) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (lhs.$length > 1) { */ case 27: + _r$6 = (0 >= lhs.$length ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + 0]).Pos(); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $r = p.errorExpected(_r$6, "1 expression"); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 28: + comm = new ast.ExprStmt.ptr((0 >= lhs.$length ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + 0])); + /* } */ case 20: + /* } */ case 11: + $s = 6; continue; + /* } else { */ case 5: + _r$7 = p.expect(66); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + /* } */ case 6: + _r$8 = p.expect(58); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + colon = _r$8; + _r$9 = p.parseStmtList(); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + body = _r$9; + $24r = new ast.CommClause.ptr(pos, comm, colon, body); + $s = 34; case 34: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$18.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseCommClause, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, arrow, body, colon, comm, lhs, p, pos, pos$1, rhs, rhs$1, tok, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseSelectStmt = function parseSelectStmt() { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, body, lbrace, list, p, pos, rbrace, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "SelectStmt"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(81); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _r$2 = p.expect(51); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + lbrace = _r$2; + list = sliceType$7.nil; + /* while (true) { */ case 6: + /* if (!((p.tok === 62) || (p.tok === 66))) { break; } */ if(!((p.tok === 62) || (p.tok === 66))) { $s = 7; continue; } + _r$3 = p.parseCommClause(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + list = $append(list, _r$3); + $s = 6; continue; + case 7: + _r$4 = p.expect(56); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + rbrace = _r$4; + _r$5 = p.expectSemi(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + body = new ast.BlockStmt.ptr(lbrace, list, rbrace); + $24r = new ast.SelectStmt.ptr(pos, body); + $s = 11; case 11: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$19.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseSelectStmt, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, body, lbrace, list, p, pos, rbrace, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseForStmt = function parseForStmt() { + var {$24r, $24r$1, $24r$2, _1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tuple, _tuple$1, _tuple$2, as, body, isRange, key, p, pos, pos$1, prevLev, s1, s2, s3, value, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, y, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "ForStmt"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.expect(70); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _tmp = $ifaceNil; + _tmp$1 = $ifaceNil; + _tmp$2 = $ifaceNil; + s1 = _tmp; + s2 = _tmp$1; + s3 = _tmp$2; + isRange = false; + /* */ if (!((p.tok === 51))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!((p.tok === 51))) { */ case 5: + prevLev = p.exprLev; + p.exprLev = -1; + /* */ if (!((p.tok === 57))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((p.tok === 57))) { */ case 7: + /* */ if (p.tok === 79) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (p.tok === 79) { */ case 9: + pos$1 = p.pos; + $r = p.next(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = p.parseRhs(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + y = new sliceType$3([new ast.UnaryExpr.ptr(pos$1, 79, _r$2)]); + s2 = new ast.AssignStmt.ptr(sliceType$3.nil, 0, 0, y); + isRange = true; + $s = 11; continue; + /* } else { */ case 10: + _r$3 = p.parseSimpleStmt(2); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + s2 = _tuple[0]; + isRange = _tuple[1]; + /* } */ case 11: + /* } */ case 8: + /* */ if (!isRange && (p.tok === 57)) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!isRange && (p.tok === 57)) { */ case 15: + $r = p.next(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s1 = s2; + s2 = $ifaceNil; + /* */ if (!((p.tok === 57))) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!((p.tok === 57))) { */ case 18: + _r$4 = p.parseSimpleStmt(0); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + s2 = _tuple$1[0]; + /* } */ case 19: + _r$5 = p.expectSemi(); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + /* */ if (!((p.tok === 51))) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!((p.tok === 51))) { */ case 22: + _r$6 = p.parseSimpleStmt(0); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$2 = _r$6; + s3 = _tuple$2[0]; + /* } */ case 23: + /* } */ case 16: + p.exprLev = prevLev; + /* } */ case 6: + _r$7 = p.parseBlockStmt(); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + body = _r$7; + _r$8 = p.expectSemi(); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$8; + /* */ if (isRange) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (isRange) { */ case 27: + as = $assertType(s2, ptrType$11); + _tmp$3 = $ifaceNil; + _tmp$4 = $ifaceNil; + key = _tmp$3; + value = _tmp$4; + _1 = as.Lhs.$length; + /* */ if (_1 === (0)) { $s = 30; continue; } + /* */ if (_1 === (1)) { $s = 31; continue; } + /* */ if (_1 === (2)) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (_1 === (0)) { */ case 30: + $s = 34; continue; + /* } else if (_1 === (1)) { */ case 31: + key = (x = as.Lhs, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + $s = 34; continue; + /* } else if (_1 === (2)) { */ case 32: + _tmp$5 = (x$1 = as.Lhs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); + _tmp$6 = (x$2 = as.Lhs, (1 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 1])); + key = _tmp$5; + value = _tmp$6; + $s = 34; continue; + /* } else { */ case 33: + _r$9 = (x$3 = as.Lhs, x$4 = as.Lhs.$length - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + x$4])).Pos(); /* */ $s = 35; case 35: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $r = p.errorExpected(_r$9, "at most 2 expressions"); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$10 = body.End(); /* */ $s = 37; case 37: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = p.safePos(_r$10); /* */ $s = 38; case 38: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $24r = new ast.BadStmt.ptr(pos, _r$11); + $s = 39; case 39: return $24r; + /* } */ case 34: + case 29: + x$6 = $assertType((x$5 = as.Rhs, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0])), ptrType$46).X; + _r$12 = (x$7 = as.Rhs, (0 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 0])).Pos(); /* */ $s = 40; case 40: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $24r$1 = new ast.RangeStmt.ptr(pos, key, value, as.TokPos, as.Tok, _r$12, x$6, body); + $s = 41; case 41: return $24r$1; + /* } */ case 28: + _r$13 = p.makeExpr(s2, "boolean or range expression"); /* */ $s = 42; case 42: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + $24r$2 = new ast.ForStmt.ptr(pos, s1, _r$13, s3, body); + $s = 43; case 43: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseForStmt, $c: true, $r, $24r, $24r$1, $24r$2, _1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tuple, _tuple$1, _tuple$2, as, body, isRange, key, p, pos, pos$1, prevLev, s1, s2, s3, value, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, y, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseStmt = function parseStmt() { + var {$24r, _1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, isLabeledStmt, p, pos, s, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + s = $ifaceNil; + p = this; + _r = incNestLev(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([decNestLev, [_r]]); + /* */ if (p.trace) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (p.trace) { */ case 2: + _r$1 = trace(p, "Statement"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $deferred.push([un, [_r$1]]); + /* } */ case 3: + _1 = p.tok; + /* */ if ((_1 === (64)) || (_1 === (84)) || (_1 === (85))) { $s = 6; continue; } + /* */ if ((_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (71)) || (_1 === (49)) || (_1 === (50)) || (_1 === (82)) || (_1 === (77)) || (_1 === (63)) || (_1 === (76)) || (_1 === (12)) || (_1 === (13)) || (_1 === (14)) || (_1 === (17)) || (_1 === (19)) || (_1 === (36)) || (_1 === (43))) { $s = 7; continue; } + /* */ if (_1 === (72)) { $s = 8; continue; } + /* */ if (_1 === (67)) { $s = 9; continue; } + /* */ if (_1 === (80)) { $s = 10; continue; } + /* */ if ((_1 === (61)) || (_1 === (65)) || (_1 === (73)) || (_1 === (69))) { $s = 11; continue; } + /* */ if (_1 === (51)) { $s = 12; continue; } + /* */ if (_1 === (74)) { $s = 13; continue; } + /* */ if (_1 === (83)) { $s = 14; continue; } + /* */ if (_1 === (81)) { $s = 15; continue; } + /* */ if (_1 === (70)) { $s = 16; continue; } + /* */ if (_1 === (57)) { $s = 17; continue; } + /* */ if (_1 === (56)) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if ((_1 === (64)) || (_1 === (84)) || (_1 === (85))) { */ case 6: + _r$2 = p.parseDecl(stmtStart); /* */ $s = 21; case 21: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + s = new ast.DeclStmt.ptr(_r$2); + $s = 20; continue; + /* } else if ((_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (71)) || (_1 === (49)) || (_1 === (50)) || (_1 === (82)) || (_1 === (77)) || (_1 === (63)) || (_1 === (76)) || (_1 === (12)) || (_1 === (13)) || (_1 === (14)) || (_1 === (17)) || (_1 === (19)) || (_1 === (36)) || (_1 === (43))) { */ case 7: + _r$3 = p.parseSimpleStmt(1); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + s = _tuple[0]; + _tuple$1 = $assertType(s, ptrType$10, true); + isLabeledStmt = _tuple$1[1]; + /* */ if (!isLabeledStmt) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (!isLabeledStmt) { */ case 23: + _r$4 = p.expectSemi(); /* */ $s = 25; case 25: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + /* } */ case 24: + $s = 20; continue; + /* } else if (_1 === (72)) { */ case 8: + _r$5 = p.parseGoStmt(); /* */ $s = 26; case 26: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + s = _r$5; + $s = 20; continue; + /* } else if (_1 === (67)) { */ case 9: + _r$6 = p.parseDeferStmt(); /* */ $s = 27; case 27: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + s = _r$6; + $s = 20; continue; + /* } else if (_1 === (80)) { */ case 10: + _r$7 = p.parseReturnStmt(); /* */ $s = 28; case 28: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + s = _r$7; + $s = 20; continue; + /* } else if ((_1 === (61)) || (_1 === (65)) || (_1 === (73)) || (_1 === (69))) { */ case 11: + _r$8 = p.parseBranchStmt(p.tok); /* */ $s = 29; case 29: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + s = _r$8; + $s = 20; continue; + /* } else if (_1 === (51)) { */ case 12: + _r$9 = p.parseBlockStmt(); /* */ $s = 30; case 30: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + s = _r$9; + _r$10 = p.expectSemi(); /* */ $s = 31; case 31: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + $s = 20; continue; + /* } else if (_1 === (74)) { */ case 13: + _r$11 = p.parseIfStmt(); /* */ $s = 32; case 32: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + s = _r$11; + $s = 20; continue; + /* } else if (_1 === (83)) { */ case 14: + _r$12 = p.parseSwitchStmt(); /* */ $s = 33; case 33: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + s = _r$12; + $s = 20; continue; + /* } else if (_1 === (81)) { */ case 15: + _r$13 = p.parseSelectStmt(); /* */ $s = 34; case 34: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + s = _r$13; + $s = 20; continue; + /* } else if (_1 === (70)) { */ case 16: + _r$14 = p.parseForStmt(); /* */ $s = 35; case 35: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + s = _r$14; + $s = 20; continue; + /* } else if (_1 === (57)) { */ case 17: + s = new ast.EmptyStmt.ptr(p.pos, p.lit === "\n"); + $r = p.next(); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if (_1 === (56)) { */ case 18: + s = new ast.EmptyStmt.ptr(p.pos, true); + $s = 20; continue; + /* } else { */ case 19: + pos = p.pos; + $r = p.errorExpected(pos, "statement"); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.advance(stmtStart); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + s = new ast.BadStmt.ptr(pos, p.pos); + /* } */ case 20: + case 5: + $24r = s; + $s = 39; case 39: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return s; } if($curGoroutine.asleep) { var $f = {$blk: parseStmt, $c: true, $r, $24r, _1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, isLabeledStmt, p, pos, s, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseImportSpec = function parseImportSpec(doc, param, param$1) { + var {$24r, _1, _r, _r$1, _r$2, comment, doc, ident, p, param, param$1, path, pos, spec, $s, $deferred, $r, $c} = $restore(this, {doc, param, param$1}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "ImportSpec"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + ident = ptrType$2.nil; + _1 = p.tok; + /* */ if (_1 === (4)) { $s = 5; continue; } + /* */ if (_1 === (53)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_1 === (4)) { */ case 5: + _r$1 = p.parseIdent(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ident = _r$1; + $s = 7; continue; + /* } else if (_1 === (53)) { */ case 6: + ident = new ast.Ident.ptr(p.pos, ".", ptrType$3.nil); + $r = p.next(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + case 4: + pos = p.pos; + path = ""; + /* */ if (p.tok === 9) { $s = 10; continue; } + /* */ if (new token.Token(p.tok).IsLiteral()) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (p.tok === 9) { */ case 10: + path = p.lit; + $r = p.next(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + /* } else if (new token.Token(p.tok).IsLiteral()) { */ case 11: + $r = p.error(pos, "import path must be a string"); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.next(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + /* } else { */ case 12: + $r = p.error(pos, "missing import path"); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.advance(exprEnd); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 13: + _r$2 = p.expectSemi(); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + comment = _r$2; + spec = new ast.ImportSpec.ptr(doc, ident, new ast.BasicLit.ptr(pos, 9, path), comment, 0); + p.imports = $append(p.imports, spec); + $24r = spec; + $s = 20; case 20: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseImportSpec, $c: true, $r, $24r, _1, _r, _r$1, _r$2, comment, doc, ident, p, param, param$1, path, pos, spec, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseValueSpec = function parseValueSpec(doc, keyword, iota) { + var {$24r, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, comment, doc, idents, iota, keyword, p, spec, typ, values, $s, $deferred, $r, $c} = $restore(this, {doc, keyword, iota}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, new token.Token(keyword).String() + "Spec"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.parseIdentList(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + idents = _r$1; + typ = $ifaceNil; + values = sliceType$3.nil; + _1 = keyword; + /* */ if (_1 === (64)) { $s = 6; continue; } + /* */ if (_1 === (85)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_1 === (64)) { */ case 6: + /* */ if (!((p.tok === 1)) && !((p.tok === 57)) && !((p.tok === 54))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!((p.tok === 1)) && !((p.tok === 57)) && !((p.tok === 54))) { */ case 10: + _r$2 = p.tryIdentOrType(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + typ = _r$2; + /* */ if (p.tok === 42) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (p.tok === 42) { */ case 13: + $r = p.next(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = p.parseList(true); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + values = _r$3; + /* } */ case 14: + /* } */ case 11: + $s = 9; continue; + /* } else if (_1 === (85)) { */ case 7: + /* */ if (!((p.tok === 42))) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (!((p.tok === 42))) { */ case 17: + _r$4 = p.parseType(); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + typ = _r$4; + /* } */ case 18: + /* */ if (p.tok === 42) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (p.tok === 42) { */ case 20: + $r = p.next(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$5 = p.parseList(true); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + values = _r$5; + /* } */ case 21: + $s = 9; continue; + /* } else { */ case 8: + $panic(new $String("unreachable")); + /* } */ case 9: + case 5: + _r$6 = p.expectSemi(); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + comment = _r$6; + spec = new ast.ValueSpec.ptr(doc, idents, typ, values, comment); + $24r = spec; + $s = 25; case 25: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseValueSpec, $c: true, $r, $24r, _1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, comment, doc, idents, iota, keyword, p, spec, typ, values, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseGenericType = function parseGenericType(spec, openPos, name0, typ0) { + var {_r, _r$1, _r$2, _r$3, closePos, list, name0, openPos, p, spec, typ0, $s, $deferred, $r, $c} = $restore(this, {spec, openPos, name0, typ0}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "parseGenericType"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.parseParameterList(name0, typ0, 55); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + list = _r$1; + _r$2 = p.expect(55); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + closePos = _r$2; + spec.TypeParams = new ast.FieldList.ptr(openPos, list, closePos); + /* */ if (p.tok === 42) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (p.tok === 42) { */ case 6: + spec.Assign = p.pos; + $r = p.next(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + _r$3 = p.parseType(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + spec.Type = _r$3; + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseGenericType, $c: true, $r, _r, _r$1, _r$2, _r$3, closePos, list, name0, openPos, p, spec, typ0, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseTypeSpec = function parseTypeSpec(doc, param, param$1) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, doc, lbrack, lhs, name, p, param, param$1, pname, ptype, spec, x, $s, $deferred, $r, $c} = $restore(this, {doc, param, param$1}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "TypeSpec"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + _r$1 = p.parseIdent(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + name = _r$1; + spec = new ast.TypeSpec.ptr(doc, name, ptrType$27.nil, 0, $ifaceNil, ptrType$33.nil); + /* */ if (p.tok === 50) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (p.tok === 50) { */ case 5: + lbrack = p.pos; + $r = p.next(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (p.tok === 4) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (p.tok === 4) { */ case 9: + _r$2 = p.parseIdent(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + x = _r$2; + /* */ if (!((p.tok === 50))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!((p.tok === 50))) { */ case 13: + p.exprLev = p.exprLev + (1) >> 0; + _r$3 = p.parsePrimaryExpr(x); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + lhs = _r$3; + _r$4 = p.parseBinaryExpr(lhs, 1); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + x = _r$4; + p.exprLev = p.exprLev - (1) >> 0; + /* } */ case 14: + _tuple = extractName(x, p.tok === 52); + pname = _tuple[0]; + ptype = _tuple[1]; + /* */ if (!(pname === ptrType$2.nil) && (!($interfaceIsEqual(ptype, $ifaceNil)) || !((p.tok === 55)))) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (!(pname === ptrType$2.nil) && (!($interfaceIsEqual(ptype, $ifaceNil)) || !((p.tok === 55)))) { */ case 17: + $r = p.parseGenericType(spec, lbrack, pname, ptype); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 19; continue; + /* } else { */ case 18: + _r$5 = p.parseArrayType(lbrack, x); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + spec.Type = _r$5; + /* } */ case 19: + $s = 11; continue; + /* } else { */ case 10: + _r$6 = p.parseArrayType(lbrack, $ifaceNil); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + spec.Type = _r$6; + /* } */ case 11: + $s = 7; continue; + /* } else { */ case 6: + /* */ if (p.tok === 42) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (p.tok === 42) { */ case 23: + spec.Assign = p.pos; + $r = p.next(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 24: + _r$7 = p.parseType(); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + spec.Type = _r$7; + /* } */ case 7: + _r$8 = p.expectSemi(); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + spec.Comment = _r$8; + $24r = spec; + $s = 28; case 28: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseTypeSpec, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, doc, lbrack, lhs, name, p, param, param$1, pname, ptype, spec, x, $s, $deferred};return $f; } } + }; + extractName = function extractName$1(x, force) { + var _1, _ref, _tuple, _tuple$1, _tuple$2, force, lhs, name, name$1, name$2, op, x, x$1, x$2, x$3, x$4, x$5; + _ref = x; + if ($assertType(_ref, ptrType$2, true)[1]) { + x$1 = _ref.$val; + return [x$1, $ifaceNil]; + } else if ($assertType(_ref, ptrType$47, true)[1]) { + x$2 = _ref.$val; + _1 = x$2.Op; + if (_1 === (14)) { + _tuple = $assertType(x$2.X, ptrType$2, true); + name = _tuple[0]; + if (!(name === ptrType$2.nil) && (force || isTypeElem(x$2.Y))) { + return [name, new ast.StarExpr.ptr(x$2.OpPos, x$2.Y)]; + } + } else if (_1 === (18)) { + _tuple$1 = extractName(x$2.X, force || isTypeElem(x$2.Y)); + name$1 = _tuple$1[0]; + lhs = _tuple$1[1]; + if (!(name$1 === ptrType$2.nil) && !($interfaceIsEqual(lhs, $ifaceNil))) { + op = $clone(x$2, ast.BinaryExpr); + op.X = lhs; + return [name$1, op]; + } + } + } else if ($assertType(_ref, ptrType$40, true)[1]) { + x$3 = _ref.$val; + _tuple$2 = $assertType(x$3.Fun, ptrType$2, true); + name$2 = _tuple$2[0]; + if (!(name$2 === ptrType$2.nil)) { + if ((x$3.Args.$length === 1) && (x$3.Ellipsis === 0) && (force || isTypeElem((x$4 = x$3.Args, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0]))))) { + return [name$2, (x$5 = x$3.Args, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))]; + } + } + } + return [ptrType$2.nil, x]; + }; + isTypeElem = function isTypeElem$1(x) { + var _ref, x, x$1, x$2, x$3, x$4; + _ref = x; + if ($assertType(_ref, ptrType$34, true)[1] || $assertType(_ref, ptrType$6, true)[1] || $assertType(_ref, ptrType$7, true)[1] || $assertType(_ref, ptrType$9, true)[1] || $assertType(_ref, ptrType$38, true)[1] || $assertType(_ref, ptrType$39, true)[1]) { + x$1 = _ref; + return true; + } else if ($assertType(_ref, ptrType$47, true)[1]) { + x$2 = _ref.$val; + return isTypeElem(x$2.X) || isTypeElem(x$2.Y); + } else if ($assertType(_ref, ptrType$46, true)[1]) { + x$3 = _ref.$val; + return x$3.Op === 88; + } else if ($assertType(_ref, ptrType$41, true)[1]) { + x$4 = _ref.$val; + return isTypeElem(x$4.X); + } + return false; + }; + $ptrType(parser).prototype.parseGenDecl = function parseGenDecl(keyword, f) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, doc, f, iota, keyword, list, lparen, p, pos, rparen, $s, $deferred, $r, $c} = $restore(this, {keyword, f}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "GenDecl(" + new token.Token(keyword).String() + ")"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + doc = p.leadComment; + _r$1 = p.expect(keyword); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _tmp = 0; + _tmp$1 = 0; + lparen = _tmp; + rparen = _tmp$1; + list = sliceType$8.nil; + /* */ if (p.tok === 49) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (p.tok === 49) { */ case 5: + lparen = p.pos; + $r = p.next(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + iota = 0; + /* while (true) { */ case 9: + /* if (!(!((p.tok === 54)) && !((p.tok === 1)))) { break; } */ if(!(!((p.tok === 54)) && !((p.tok === 1)))) { $s = 10; continue; } + _r$2 = f(p.leadComment, keyword, iota); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + list = $append(list, _r$2); + iota = iota + (1) >> 0; + $s = 9; continue; + case 10: + _r$3 = p.expect(54); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + rparen = _r$3; + _r$4 = p.expectSemi(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + $s = 7; continue; + /* } else { */ case 6: + _r$5 = f(ptrType$33.nil, keyword, 0); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + list = $append(list, _r$5); + /* } */ case 7: + $24r = new ast.GenDecl.ptr(doc, pos, keyword, lparen, list, rparen); + $s = 15; case 15: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$22.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseGenDecl, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, doc, f, iota, keyword, list, lparen, p, pos, rparen, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseFuncDecl = function parseFuncDecl() { + var {$24r, _1, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, body, decl, doc, ident, p, params, pos, recv, results, tparams, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "FunctionDecl"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + doc = p.leadComment; + _r$1 = p.expect(71); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + recv = ptrType$27.nil; + /* */ if (p.tok === 49) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (p.tok === 49) { */ case 5: + _r$2 = p.parseParameters(false); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + recv = _tuple[1]; + /* } */ case 6: + _r$3 = p.parseIdent(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ident = _r$3; + _r$4 = p.parseParameters(true); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + tparams = _tuple$1[0]; + params = _tuple$1[1]; + /* */ if (!(recv === ptrType$27.nil) && !(tparams === ptrType$27.nil)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!(recv === ptrType$27.nil) && !(tparams === ptrType$27.nil)) { */ case 10: + $r = p.error(tparams.Opening, "method must have no type parameters"); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tparams = ptrType$27.nil; + /* } */ case 11: + _r$5 = p.parseResult(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + results = _r$5; + body = ptrType$13.nil; + _1 = p.tok; + /* */ if (_1 === (51)) { $s = 15; continue; } + /* */ if (_1 === (57)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_1 === (51)) { */ case 15: + _r$6 = p.parseBody(); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + body = _r$6; + _r$7 = p.expectSemi(); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + $s = 18; continue; + /* } else if (_1 === (57)) { */ case 16: + $r = p.next(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (p.tok === 51) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (p.tok === 51) { */ case 22: + $r = p.error(p.pos, "unexpected semicolon or newline before {"); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$8 = p.parseBody(); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + body = _r$8; + _r$9 = p.expectSemi(); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$9; + /* } */ case 23: + $s = 18; continue; + /* } else { */ case 17: + _r$10 = p.expectSemi(); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + /* } */ case 18: + case 14: + decl = new ast.FuncDecl.ptr(doc, recv, ident, new ast.FuncType.ptr(pos, tparams, params, results), body); + $24r = decl; + $s = 28; case 28: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$23.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseFuncDecl, $c: true, $r, $24r, _1, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, body, decl, doc, ident, p, params, pos, recv, results, tparams, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseDecl = function parseDecl(sync) { + var {$24r, $24r$1, $24r$2, _1, _r, _r$1, _r$2, f, p, pos, sync, $s, $deferred, $r, $c} = $restore(this, {sync}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "Declaration"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + f = $throwNilPointerError; + _1 = p.tok; + /* */ if (_1 === (75)) { $s = 5; continue; } + /* */ if ((_1 === (64)) || (_1 === (85))) { $s = 6; continue; } + /* */ if (_1 === (84)) { $s = 7; continue; } + /* */ if (_1 === (71)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === (75)) { */ case 5: + f = $methodVal(p, "parseImportSpec"); + $s = 10; continue; + /* } else if ((_1 === (64)) || (_1 === (85))) { */ case 6: + f = $methodVal(p, "parseValueSpec"); + $s = 10; continue; + /* } else if (_1 === (84)) { */ case 7: + f = $methodVal(p, "parseTypeSpec"); + $s = 10; continue; + /* } else if (_1 === (71)) { */ case 8: + _r$1 = p.parseFuncDecl(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 12; case 12: return $24r; + /* } else { */ case 9: + pos = p.pos; + $r = p.errorExpected(pos, "declaration"); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = p.advance(sync); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r$1 = new ast.BadDecl.ptr(pos, p.pos); + $s = 15; case 15: return $24r$1; + /* } */ case 10: + case 4: + _r$2 = p.parseGenDecl(p.tok, f); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$2 = _r$2; + $s = 17; case 17: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseDecl, $c: true, $r, $24r, $24r$1, $24r$2, _1, _r, _r$1, _r$2, f, p, pos, sync, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseFile = function parseFile() { + var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, declErr, decls, doc, f, ident, p, pos, prev, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + /* */ if (p.trace) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.trace) { */ case 1: + _r = trace(p, "File"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $deferred.push([un, [_r]]); + /* } */ case 2: + /* */ if (!((p.errors.Len() === 0))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!((p.errors.Len() === 0))) { */ case 4: + $24r = ptrType$48.nil; + $s = 6; case 6: return $24r; + /* } */ case 5: + doc = p.leadComment; + _r$1 = p.expect(78); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos = _r$1; + _r$2 = p.parseIdent(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ident = _r$2; + /* */ if (ident.Name === "_" && !((((p.mode & 16) >>> 0) === 0))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (ident.Name === "_" && !((((p.mode & 16) >>> 0) === 0))) { */ case 9: + $r = p.error(p.pos, "invalid package name _"); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + _r$3 = p.expectSemi(); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + /* */ if (!((p.errors.Len() === 0))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!((p.errors.Len() === 0))) { */ case 13: + $24r$1 = ptrType$48.nil; + $s = 15; case 15: return $24r$1; + /* } */ case 14: + decls = sliceType$9.nil; + /* */ if (((p.mode & 1) >>> 0) === 0) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (((p.mode & 1) >>> 0) === 0) { */ case 16: + /* while (true) { */ case 18: + /* if (!(p.tok === 75)) { break; } */ if(!(p.tok === 75)) { $s = 19; continue; } + _r$4 = p.parseGenDecl(75, $methodVal(p, "parseImportSpec")); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + decls = $append(decls, _r$4); + $s = 18; continue; + case 19: + /* */ if (((p.mode & 2) >>> 0) === 0) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (((p.mode & 2) >>> 0) === 0) { */ case 21: + prev = 75; + /* while (true) { */ case 23: + /* if (!(!((p.tok === 1)))) { break; } */ if(!(!((p.tok === 1)))) { $s = 24; continue; } + /* */ if ((p.tok === 75) && !((prev === 75))) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if ((p.tok === 75) && !((prev === 75))) { */ case 25: + $r = p.error(p.pos, "imports must appear before other declarations"); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 26: + prev = p.tok; + _r$5 = p.parseDecl(declStart); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + decls = $append(decls, _r$5); + $s = 23; continue; + case 24: + /* } */ case 22: + /* } */ case 17: + f = new ast.File.ptr(doc, pos, ident, decls, ((p.file.Base() >> 0)), (((p.file.Base() + p.file.Size() >> 0) >> 0)), ptrType.nil, p.imports, sliceType.nil, p.comments); + declErr = $throwNilPointerError; + if (!((((p.mode & 16) >>> 0) === 0))) { + declErr = $methodVal(p, "error"); + } + /* */ if (((p.mode & 64) >>> 0) === 0) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (((p.mode & 64) >>> 0) === 0) { */ case 29: + $r = resolveFile(f, p.file, declErr); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 30: + $24r$2 = f; + $s = 32; case 32: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$48.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: parseFile, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, declErr, decls, doc, f, ident, p, pos, prev, $s, $deferred};return $f; } } + }; + readSource = function readSource$1(filename, src) { + var {$24r, $24r$1, _r, _r$1, _ref, filename, s, s$1, s$2, s$3, src, $s, $r, $c} = $restore(this, {filename, src}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!($interfaceIsEqual(src, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(src, $ifaceNil))) { */ case 1: + _ref = src; + /* */ if ($assertType(_ref, $String, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, sliceType$12, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$50, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, io.Reader, true)[1]) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ($assertType(_ref, $String, true)[1]) { */ case 3: + s = _ref.$val; + $s = -1; return [(new sliceType$12($stringToBytes(s))), $ifaceNil]; + /* } else if ($assertType(_ref, sliceType$12, true)[1]) { */ case 4: + s$1 = _ref.$val; + $s = -1; return [s$1, $ifaceNil]; + /* } else if ($assertType(_ref, ptrType$50, true)[1]) { */ case 5: + s$2 = _ref.$val; + if (!(s$2 === ptrType$50.nil)) { + $s = -1; return [s$2.Bytes(), $ifaceNil]; + } + $s = 7; continue; + /* } else if ($assertType(_ref, io.Reader, true)[1]) { */ case 6: + s$3 = _ref; + _r = io.ReadAll(s$3); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 9; case 9: return $24r; + /* } */ case 7: + $s = -1; return [sliceType$12.nil, errors.New("invalid source")]; + /* } */ case 2: + _r$1 = os.ReadFile(filename); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 11; case 11: return $24r$1; + /* */ } return; } var $f = {$blk: readSource$1, $c: true, $r, $24r, $24r$1, _r, _r$1, _ref, filename, s, s$1, s$2, s$3, src, $s};return $f; + }; + ParseFile = function ParseFile$1(fset, filename, src, mode) { + var {$24r, _r, _r$1, _tmp, _tmp$1, _tuple, err, f, filename, fset, mode, p, src, text, $s, $deferred, $r, $c} = $restore(this, {fset, filename, src, mode}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + err = [err]; + f = [f]; + p = [p]; + f[0] = ptrType$48.nil; + err[0] = $ifaceNil; + if (fset === ptrType$51.nil) { + $panic(new $String("parser.ParseFile: no token.FileSet provided (fset == nil)")); + } + _r = readSource(filename, src); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + text = _tuple[0]; + err[0] = _tuple[1]; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + _tmp = ptrType$48.nil; + _tmp$1 = err[0]; + f[0] = _tmp; + err[0] = _tmp$1; + $s = -1; return [f[0], err[0]]; + } + p[0] = new parser.ptr(ptrType$1.nil, scanner.ErrorList.nil, new scanner.Scanner.ptr(ptrType$1.nil, "", sliceType$12.nil, $throwNilPointerError, 0, 0, 0, 0, 0, false, 0, 0), 0, false, 0, sliceType$11.nil, ptrType$33.nil, ptrType$33.nil, 0, 0, "", 0, 0, 0, false, sliceType$10.nil, 0); + $deferred.push([(function(err, f, p) { return function ParseFile·func1() { + var {_r$1, _tuple$1, bail, e, ok, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = $recover(); + /* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 1: + _tuple$1 = $assertType(e, bailout, true); + bail = $clone(_tuple$1[0], bailout); + ok = _tuple$1[1]; + /* */ if (!ok) { $s = 3; continue; } + /* */ if (!(bail.msg === "")) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!ok) { */ case 3: + $panic(e); + $s = 5; continue; + /* } else if (!(bail.msg === "")) { */ case 4: + _r$1 = p[0].file.Position(bail.pos); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = (p[0].$ptr_errors || (p[0].$ptr_errors = new ptrType$31(function() { return this.$target.errors; }, function($v) { this.$target.errors = $v; }, p[0]))).Add($clone(_r$1, token.Position), bail.msg); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + /* } */ case 2: + if (f[0] === ptrType$48.nil) { + f[0] = new ast.File.ptr(ptrType$33.nil, 0, new ast.Ident.ptr(0, "", ptrType$3.nil), sliceType$9.nil, 0, 0, ast.NewScope(ptrType.nil), sliceType$10.nil, sliceType.nil, sliceType$11.nil); + } + $r = p[0].errors.Sort(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + err[0] = p[0].errors.Err(); + $s = -1; return; + /* */ } return; } var $f = {$blk: ParseFile·func1, $c: true, $r, _r$1, _tuple$1, bail, e, ok, $s};return $f; + }; })(err, f, p), []]); + $r = p[0].init(fset, filename, text, mode); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = p[0].parseFile(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + f[0] = _r$1; + $24r = [f[0], err[0]]; + $s = 4; case 4: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [f[0], err[0]]; } if($curGoroutine.asleep) { var $f = {$blk: ParseFile$1, $c: true, $r, $24r, _r, _r$1, _tmp, _tmp$1, _tuple, err, f, filename, fset, mode, p, src, text, $s, $deferred};return $f; } } + }; + $pkg.ParseFile = ParseFile; + ptrType$53.methods = [{prop: "trace", name: "trace", pkg: "go/parser", typ: $funcType([$String, sliceType$2], [], true)}, {prop: "sprintf", name: "sprintf", pkg: "go/parser", typ: $funcType([$String, sliceType$2], [$String], true)}, {prop: "openScope", name: "openScope", pkg: "go/parser", typ: $funcType([token.Pos], [], false)}, {prop: "closeScope", name: "closeScope", pkg: "go/parser", typ: $funcType([], [], false)}, {prop: "openLabelScope", name: "openLabelScope", pkg: "go/parser", typ: $funcType([], [], false)}, {prop: "closeLabelScope", name: "closeLabelScope", pkg: "go/parser", typ: $funcType([], [], false)}, {prop: "declare", name: "declare", pkg: "go/parser", typ: $funcType([$emptyInterface, $emptyInterface, ptrType, ast.ObjKind, sliceType], [], true)}, {prop: "shortVarDecl", name: "shortVarDecl", pkg: "go/parser", typ: $funcType([ptrType$11], [], false)}, {prop: "resolve", name: "resolve", pkg: "go/parser", typ: $funcType([ptrType$2, $Bool], [], false)}, {prop: "walkExprs", name: "walkExprs", pkg: "go/parser", typ: $funcType([sliceType$3], [], false)}, {prop: "walkLHS", name: "walkLHS", pkg: "go/parser", typ: $funcType([sliceType$3], [], false)}, {prop: "walkStmts", name: "walkStmts", pkg: "go/parser", typ: $funcType([sliceType$7], [], false)}, {prop: "Visit", name: "Visit", pkg: "", typ: $funcType([ast.Node], [ast.Visitor], false)}, {prop: "walkFuncType", name: "walkFuncType", pkg: "go/parser", typ: $funcType([ptrType$7], [], false)}, {prop: "resolveList", name: "resolveList", pkg: "go/parser", typ: $funcType([ptrType$27], [], false)}, {prop: "declareList", name: "declareList", pkg: "go/parser", typ: $funcType([ptrType$27, ast.ObjKind], [], false)}, {prop: "walkRecv", name: "walkRecv", pkg: "go/parser", typ: $funcType([ptrType$27], [], false)}, {prop: "walkFieldList", name: "walkFieldList", pkg: "go/parser", typ: $funcType([ptrType$27, ast.ObjKind], [], false)}, {prop: "walkTParams", name: "walkTParams", pkg: "go/parser", typ: $funcType([ptrType$27], [], false)}, {prop: "walkBody", name: "walkBody", pkg: "go/parser", typ: $funcType([ptrType$13], [], false)}]; + ptrType$54.methods = [{prop: "init", name: "init", pkg: "go/parser", typ: $funcType([ptrType$51, $String, sliceType$12, Mode], [], false)}, {prop: "printTrace", name: "printTrace", pkg: "go/parser", typ: $funcType([sliceType$2], [], true)}, {prop: "next0", name: "next0", pkg: "go/parser", typ: $funcType([], [], false)}, {prop: "consumeComment", name: "consumeComment", pkg: "go/parser", typ: $funcType([], [ptrType$32, $Int], false)}, {prop: "consumeCommentGroup", name: "consumeCommentGroup", pkg: "go/parser", typ: $funcType([$Int], [ptrType$33, $Int], false)}, {prop: "next", name: "next", pkg: "go/parser", typ: $funcType([], [], false)}, {prop: "error", name: "error", pkg: "go/parser", typ: $funcType([token.Pos, $String], [], false)}, {prop: "errorExpected", name: "errorExpected", pkg: "go/parser", typ: $funcType([token.Pos, $String], [], false)}, {prop: "expect", name: "expect", pkg: "go/parser", typ: $funcType([token.Token], [token.Pos], false)}, {prop: "expect2", name: "expect2", pkg: "go/parser", typ: $funcType([token.Token], [token.Pos], false)}, {prop: "expectClosing", name: "expectClosing", pkg: "go/parser", typ: $funcType([token.Token, $String], [token.Pos], false)}, {prop: "expectSemi", name: "expectSemi", pkg: "go/parser", typ: $funcType([], [ptrType$33], false)}, {prop: "atComma", name: "atComma", pkg: "go/parser", typ: $funcType([$String, token.Token], [$Bool], false)}, {prop: "advance", name: "advance", pkg: "go/parser", typ: $funcType([mapType], [], false)}, {prop: "safePos", name: "safePos", pkg: "go/parser", typ: $funcType([token.Pos], [token.Pos], false)}, {prop: "parseIdent", name: "parseIdent", pkg: "go/parser", typ: $funcType([], [ptrType$2], false)}, {prop: "parseIdentList", name: "parseIdentList", pkg: "go/parser", typ: $funcType([], [sliceType], false)}, {prop: "parseExprList", name: "parseExprList", pkg: "go/parser", typ: $funcType([], [sliceType$3], false)}, {prop: "parseList", name: "parseList", pkg: "go/parser", typ: $funcType([$Bool], [sliceType$3], false)}, {prop: "parseType", name: "parseType", pkg: "go/parser", typ: $funcType([], [ast.Expr], false)}, {prop: "parseQualifiedIdent", name: "parseQualifiedIdent", pkg: "go/parser", typ: $funcType([ptrType$2], [ast.Expr], false)}, {prop: "parseTypeName", name: "parseTypeName", pkg: "go/parser", typ: $funcType([ptrType$2], [ast.Expr], false)}, {prop: "parseArrayType", name: "parseArrayType", pkg: "go/parser", typ: $funcType([token.Pos, ast.Expr], [ptrType$34], false)}, {prop: "parseArrayFieldOrTypeInstance", name: "parseArrayFieldOrTypeInstance", pkg: "go/parser", typ: $funcType([ptrType$2], [ptrType$2, ast.Expr], false)}, {prop: "parseFieldDecl", name: "parseFieldDecl", pkg: "go/parser", typ: $funcType([], [ptrType$36], false)}, {prop: "parseStructType", name: "parseStructType", pkg: "go/parser", typ: $funcType([], [ptrType$6], false)}, {prop: "parsePointerType", name: "parsePointerType", pkg: "go/parser", typ: $funcType([], [ptrType$28], false)}, {prop: "parseDotsType", name: "parseDotsType", pkg: "go/parser", typ: $funcType([], [ptrType$37], false)}, {prop: "parseParamDecl", name: "parseParamDecl", pkg: "go/parser", typ: $funcType([ptrType$2, $Bool], [field], false)}, {prop: "parseParameterList", name: "parseParameterList", pkg: "go/parser", typ: $funcType([ptrType$2, ast.Expr, token.Token], [sliceType$5], false)}, {prop: "parseParameters", name: "parseParameters", pkg: "go/parser", typ: $funcType([$Bool], [ptrType$27, ptrType$27], false)}, {prop: "parseResult", name: "parseResult", pkg: "go/parser", typ: $funcType([], [ptrType$27], false)}, {prop: "parseFuncType", name: "parseFuncType", pkg: "go/parser", typ: $funcType([], [ptrType$7], false)}, {prop: "parseMethodSpec", name: "parseMethodSpec", pkg: "go/parser", typ: $funcType([], [ptrType$36], false)}, {prop: "embeddedElem", name: "embeddedElem", pkg: "go/parser", typ: $funcType([ast.Expr], [ast.Expr], false)}, {prop: "embeddedTerm", name: "embeddedTerm", pkg: "go/parser", typ: $funcType([], [ast.Expr], false)}, {prop: "parseInterfaceType", name: "parseInterfaceType", pkg: "go/parser", typ: $funcType([], [ptrType$9], false)}, {prop: "parseMapType", name: "parseMapType", pkg: "go/parser", typ: $funcType([], [ptrType$38], false)}, {prop: "parseChanType", name: "parseChanType", pkg: "go/parser", typ: $funcType([], [ptrType$39], false)}, {prop: "parseTypeInstance", name: "parseTypeInstance", pkg: "go/parser", typ: $funcType([ast.Expr], [ast.Expr], false)}, {prop: "tryIdentOrType", name: "tryIdentOrType", pkg: "go/parser", typ: $funcType([], [ast.Expr], false)}, {prop: "parseStmtList", name: "parseStmtList", pkg: "go/parser", typ: $funcType([], [sliceType$7], false)}, {prop: "parseBody", name: "parseBody", pkg: "go/parser", typ: $funcType([], [ptrType$13], false)}, {prop: "parseBlockStmt", name: "parseBlockStmt", pkg: "go/parser", typ: $funcType([], [ptrType$13], false)}, {prop: "parseFuncTypeOrLit", name: "parseFuncTypeOrLit", pkg: "go/parser", typ: $funcType([], [ast.Expr], false)}, {prop: "parseOperand", name: "parseOperand", pkg: "go/parser", typ: $funcType([], [ast.Expr], false)}, {prop: "parseSelector", name: "parseSelector", pkg: "go/parser", typ: $funcType([ast.Expr], [ast.Expr], false)}, {prop: "parseTypeAssertion", name: "parseTypeAssertion", pkg: "go/parser", typ: $funcType([ast.Expr], [ast.Expr], false)}, {prop: "parseIndexOrSliceOrInstance", name: "parseIndexOrSliceOrInstance", pkg: "go/parser", typ: $funcType([ast.Expr], [ast.Expr], false)}, {prop: "parseCallOrConversion", name: "parseCallOrConversion", pkg: "go/parser", typ: $funcType([ast.Expr], [ptrType$40], false)}, {prop: "parseValue", name: "parseValue", pkg: "go/parser", typ: $funcType([], [ast.Expr], false)}, {prop: "parseElement", name: "parseElement", pkg: "go/parser", typ: $funcType([], [ast.Expr], false)}, {prop: "parseElementList", name: "parseElementList", pkg: "go/parser", typ: $funcType([], [sliceType$3], false)}, {prop: "parseLiteralValue", name: "parseLiteralValue", pkg: "go/parser", typ: $funcType([ast.Expr], [ast.Expr], false)}, {prop: "parsePrimaryExpr", name: "parsePrimaryExpr", pkg: "go/parser", typ: $funcType([ast.Expr], [ast.Expr], false)}, {prop: "parseUnaryExpr", name: "parseUnaryExpr", pkg: "go/parser", typ: $funcType([], [ast.Expr], false)}, {prop: "tokPrec", name: "tokPrec", pkg: "go/parser", typ: $funcType([], [token.Token, $Int], false)}, {prop: "parseBinaryExpr", name: "parseBinaryExpr", pkg: "go/parser", typ: $funcType([ast.Expr, $Int], [ast.Expr], false)}, {prop: "parseExpr", name: "parseExpr", pkg: "go/parser", typ: $funcType([], [ast.Expr], false)}, {prop: "parseRhs", name: "parseRhs", pkg: "go/parser", typ: $funcType([], [ast.Expr], false)}, {prop: "parseSimpleStmt", name: "parseSimpleStmt", pkg: "go/parser", typ: $funcType([$Int], [ast.Stmt, $Bool], false)}, {prop: "parseCallExpr", name: "parseCallExpr", pkg: "go/parser", typ: $funcType([$String], [ptrType$40], false)}, {prop: "parseGoStmt", name: "parseGoStmt", pkg: "go/parser", typ: $funcType([], [ast.Stmt], false)}, {prop: "parseDeferStmt", name: "parseDeferStmt", pkg: "go/parser", typ: $funcType([], [ast.Stmt], false)}, {prop: "parseReturnStmt", name: "parseReturnStmt", pkg: "go/parser", typ: $funcType([], [ptrType$43], false)}, {prop: "parseBranchStmt", name: "parseBranchStmt", pkg: "go/parser", typ: $funcType([token.Token], [ptrType$12], false)}, {prop: "makeExpr", name: "makeExpr", pkg: "go/parser", typ: $funcType([ast.Stmt, $String], [ast.Expr], false)}, {prop: "parseIfHeader", name: "parseIfHeader", pkg: "go/parser", typ: $funcType([], [ast.Stmt, ast.Expr], false)}, {prop: "parseIfStmt", name: "parseIfStmt", pkg: "go/parser", typ: $funcType([], [ptrType$14], false)}, {prop: "parseCaseClause", name: "parseCaseClause", pkg: "go/parser", typ: $funcType([], [ptrType$15], false)}, {prop: "isTypeSwitchGuard", name: "isTypeSwitchGuard", pkg: "go/parser", typ: $funcType([ast.Stmt], [$Bool], false)}, {prop: "parseSwitchStmt", name: "parseSwitchStmt", pkg: "go/parser", typ: $funcType([], [ast.Stmt], false)}, {prop: "parseCommClause", name: "parseCommClause", pkg: "go/parser", typ: $funcType([], [ptrType$18], false)}, {prop: "parseSelectStmt", name: "parseSelectStmt", pkg: "go/parser", typ: $funcType([], [ptrType$19], false)}, {prop: "parseForStmt", name: "parseForStmt", pkg: "go/parser", typ: $funcType([], [ast.Stmt], false)}, {prop: "parseStmt", name: "parseStmt", pkg: "go/parser", typ: $funcType([], [ast.Stmt], false)}, {prop: "parseImportSpec", name: "parseImportSpec", pkg: "go/parser", typ: $funcType([ptrType$33, token.Token, $Int], [ast.Spec], false)}, {prop: "parseValueSpec", name: "parseValueSpec", pkg: "go/parser", typ: $funcType([ptrType$33, token.Token, $Int], [ast.Spec], false)}, {prop: "parseGenericType", name: "parseGenericType", pkg: "go/parser", typ: $funcType([ptrType$26, token.Pos, ptrType$2, ast.Expr], [], false)}, {prop: "parseTypeSpec", name: "parseTypeSpec", pkg: "go/parser", typ: $funcType([ptrType$33, token.Token, $Int], [ast.Spec], false)}, {prop: "parseGenDecl", name: "parseGenDecl", pkg: "go/parser", typ: $funcType([token.Token, parseSpecFunction], [ptrType$22], false)}, {prop: "parseFuncDecl", name: "parseFuncDecl", pkg: "go/parser", typ: $funcType([], [ptrType$23], false)}, {prop: "parseDecl", name: "parseDecl", pkg: "go/parser", typ: $funcType([mapType], [ast.Decl], false)}, {prop: "parseFile", name: "parseFile", pkg: "go/parser", typ: $funcType([], [ptrType$48], false)}]; + resolver.init("go/parser", [{prop: "handle", name: "handle", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "declErr", name: "declErr", embedded: false, exported: false, typ: funcType, tag: ""}, {prop: "pkgScope", name: "pkgScope", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "topScope", name: "topScope", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "unresolved", name: "unresolved", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "depth", name: "depth", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "labelScope", name: "labelScope", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "targetStack", name: "targetStack", embedded: false, exported: false, typ: sliceType$1, tag: ""}]); + parser.init("go/parser", [{prop: "file", name: "file", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "errors", name: "errors", embedded: false, exported: false, typ: scanner.ErrorList, tag: ""}, {prop: "scanner", name: "scanner", embedded: false, exported: false, typ: scanner.Scanner, tag: ""}, {prop: "mode", name: "mode", embedded: false, exported: false, typ: Mode, tag: ""}, {prop: "trace", name: "trace", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "indent", name: "indent", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "comments", name: "comments", embedded: false, exported: false, typ: sliceType$11, tag: ""}, {prop: "leadComment", name: "leadComment", embedded: false, exported: false, typ: ptrType$33, tag: ""}, {prop: "lineComment", name: "lineComment", embedded: false, exported: false, typ: ptrType$33, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "tok", name: "tok", embedded: false, exported: false, typ: token.Token, tag: ""}, {prop: "lit", name: "lit", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "syncPos", name: "syncPos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "syncCnt", name: "syncCnt", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "exprLev", name: "exprLev", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "inRhs", name: "inRhs", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "imports", name: "imports", embedded: false, exported: false, typ: sliceType$10, tag: ""}, {prop: "nestLev", name: "nestLev", embedded: false, exported: false, typ: $Int, tag: ""}]); + bailout.init("go/parser", [{prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "msg", name: "msg", embedded: false, exported: false, typ: $String, tag: ""}]); + field.init("go/parser", [{prop: "name", name: "name", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: ast.Expr, tag: ""}]); + parseSpecFunction.init([ptrType$33, token.Token, $Int], [ast.Spec], false); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typeparams.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = scanner.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fs.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = filepath.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + unresolved = new ast.Object.ptr(0, "", $ifaceNil, $ifaceNil, $ifaceNil); + stmtStart = $makeMap(token.Token.keyFor, [{ k: 61, v: true }, { k: 64, v: true }, { k: 65, v: true }, { k: 67, v: true }, { k: 69, v: true }, { k: 70, v: true }, { k: 72, v: true }, { k: 73, v: true }, { k: 74, v: true }, { k: 80, v: true }, { k: 81, v: true }, { k: 83, v: true }, { k: 84, v: true }, { k: 85, v: true }]); + declStart = $makeMap(token.Token.keyFor, [{ k: 75, v: true }, { k: 64, v: true }, { k: 84, v: true }, { k: 85, v: true }]); + exprEnd = $makeMap(token.Token.keyFor, [{ k: 52, v: true }, { k: 58, v: true }, { k: 57, v: true }, { k: 54, v: true }, { k: 55, v: true }, { k: 56, v: true }]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/types/errors"] = (function() { + var $pkg = {}, $init, Code; + Code = $newType(4, $kindInt, "errors.Code", true, "internal/types/errors", true, null); + $pkg.Code = Code; + $pkg.$finishSetup = function() { + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["regexp/syntax"] = (function() { + var $pkg = {}, $init, sort, strconv, strings, unicode, utf8, Regexp, Op, Prog, InstOp, EmptyOp, Inst, Error, ErrorCode, Flags, parser, charGroup, ranges, patchList, frag, compiler, sliceType, sliceType$1, sliceType$2, sliceType$3, ptrType, sliceType$4, arrayType, arrayType$1, ptrType$1, sliceType$5, ptrType$2, ptrType$3, ptrType$4, sliceType$6, ptrType$5, ptrType$6, ptrType$7, mapType, mapType$1, ptrType$8, instOpNames, code1, code2, code3, perlGroup, code4, code5, code6, code7, code8, code9, code10, code11, code12, code13, code14, code15, code16, code17, posixGroup, anyTable, _Op_index_0, anyRuneNotNL, anyRune, simplify1, writeRegexp, escape, IsWordChar, bw, dumpProg, u32, dumpInst, minFoldRune, repeatIsValid, cleanAlt, literalRegexp, Parse, parse, isValidCaptureName, isCharClass, matchRune, mergeCharClass, unicodeTable, cleanClass, appendLiteral, appendRange, appendFoldedRange, appendClass, appendFoldedClass, appendNegatedClass, appendTable, appendNegatedTable, negateClass, checkUTF8, nextRune, isalnum, unhex, makePatchList, Compile; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + Regexp = $newType(0, $kindStruct, "syntax.Regexp", true, "regexp/syntax", true, function(Op_, Flags_, Sub_, Sub0_, Rune_, Rune0_, Min_, Max_, Cap_, Name_) { + this.$val = this; + if (arguments.length === 0) { + this.Op = 0; + this.Flags = 0; + this.Sub = sliceType$4.nil; + this.Sub0 = arrayType.zero(); + this.Rune = sliceType$1.nil; + this.Rune0 = arrayType$1.zero(); + this.Min = 0; + this.Max = 0; + this.Cap = 0; + this.Name = ""; + return; + } + this.Op = Op_; + this.Flags = Flags_; + this.Sub = Sub_; + this.Sub0 = Sub0_; + this.Rune = Rune_; + this.Rune0 = Rune0_; + this.Min = Min_; + this.Max = Max_; + this.Cap = Cap_; + this.Name = Name_; + }); + Op = $newType(1, $kindUint8, "syntax.Op", true, "regexp/syntax", true, null); + Prog = $newType(0, $kindStruct, "syntax.Prog", true, "regexp/syntax", true, function(Inst_, Start_, NumCap_) { + this.$val = this; + if (arguments.length === 0) { + this.Inst = sliceType$6.nil; + this.Start = 0; + this.NumCap = 0; + return; + } + this.Inst = Inst_; + this.Start = Start_; + this.NumCap = NumCap_; + }); + InstOp = $newType(1, $kindUint8, "syntax.InstOp", true, "regexp/syntax", true, null); + EmptyOp = $newType(1, $kindUint8, "syntax.EmptyOp", true, "regexp/syntax", true, null); + Inst = $newType(0, $kindStruct, "syntax.Inst", true, "regexp/syntax", true, function(Op_, Out_, Arg_, Rune_) { + this.$val = this; + if (arguments.length === 0) { + this.Op = 0; + this.Out = 0; + this.Arg = 0; + this.Rune = sliceType$1.nil; + return; + } + this.Op = Op_; + this.Out = Out_; + this.Arg = Arg_; + this.Rune = Rune_; + }); + Error = $newType(0, $kindStruct, "syntax.Error", true, "regexp/syntax", true, function(Code_, Expr_) { + this.$val = this; + if (arguments.length === 0) { + this.Code = ""; + this.Expr = ""; + return; + } + this.Code = Code_; + this.Expr = Expr_; + }); + ErrorCode = $newType(8, $kindString, "syntax.ErrorCode", true, "regexp/syntax", true, null); + Flags = $newType(2, $kindUint16, "syntax.Flags", true, "regexp/syntax", true, null); + parser = $newType(0, $kindStruct, "syntax.parser", true, "regexp/syntax", false, function(flags_, stack_, free_, numCap_, wholeRegexp_, tmpClass_, numRegexp_, numRunes_, repeats_, height_, size_) { + this.$val = this; + if (arguments.length === 0) { + this.flags = 0; + this.stack = sliceType$4.nil; + this.free = ptrType.nil; + this.numCap = 0; + this.wholeRegexp = ""; + this.tmpClass = sliceType$1.nil; + this.numRegexp = 0; + this.numRunes = 0; + this.repeats = new $Int64(0, 0); + this.height = false; + this.size = false; + return; + } + this.flags = flags_; + this.stack = stack_; + this.free = free_; + this.numCap = numCap_; + this.wholeRegexp = wholeRegexp_; + this.tmpClass = tmpClass_; + this.numRegexp = numRegexp_; + this.numRunes = numRunes_; + this.repeats = repeats_; + this.height = height_; + this.size = size_; + }); + charGroup = $newType(0, $kindStruct, "syntax.charGroup", true, "regexp/syntax", false, function(sign_, class$1_) { + this.$val = this; + if (arguments.length === 0) { + this.sign = 0; + this.class$1 = sliceType$1.nil; + return; + } + this.sign = sign_; + this.class$1 = class$1_; + }); + ranges = $newType(0, $kindStruct, "syntax.ranges", true, "regexp/syntax", false, function(p_) { + this.$val = this; + if (arguments.length === 0) { + this.p = ptrType$2.nil; + return; + } + this.p = p_; + }); + patchList = $newType(0, $kindStruct, "syntax.patchList", true, "regexp/syntax", false, function(head_, tail_) { + this.$val = this; + if (arguments.length === 0) { + this.head = 0; + this.tail = 0; + return; + } + this.head = head_; + this.tail = tail_; + }); + frag = $newType(0, $kindStruct, "syntax.frag", true, "regexp/syntax", false, function(i_, out_, nullable_) { + this.$val = this; + if (arguments.length === 0) { + this.i = 0; + this.out = new patchList.ptr(0, 0); + this.nullable = false; + return; + } + this.i = i_; + this.out = out_; + this.nullable = nullable_; + }); + compiler = $newType(0, $kindStruct, "syntax.compiler", true, "regexp/syntax", false, function(p_) { + this.$val = this; + if (arguments.length === 0) { + this.p = ptrType$4.nil; + return; + } + this.p = p_; + }); + $pkg.Regexp = Regexp; + $pkg.Op = Op; + $pkg.Prog = Prog; + $pkg.InstOp = InstOp; + $pkg.EmptyOp = EmptyOp; + $pkg.Inst = Inst; + $pkg.Error = Error; + $pkg.ErrorCode = ErrorCode; + $pkg.Flags = Flags; + $pkg.parser = parser; + $pkg.charGroup = charGroup; + $pkg.ranges = ranges; + $pkg.patchList = patchList; + $pkg.frag = frag; + $pkg.compiler = compiler; + $pkg.$finishSetup = function() { + sliceType = $sliceType($String); + sliceType$1 = $sliceType($Int32); + sliceType$2 = $sliceType(unicode.Range16); + sliceType$3 = $sliceType(unicode.Range32); + ptrType = $ptrType(Regexp); + sliceType$4 = $sliceType(ptrType); + arrayType = $arrayType(ptrType, 1); + arrayType$1 = $arrayType($Int32, 2); + ptrType$1 = $ptrType(strings.Builder); + sliceType$5 = $sliceType($Uint8); + ptrType$2 = $ptrType(sliceType$1); + ptrType$3 = $ptrType(unicode.RangeTable); + ptrType$4 = $ptrType(Prog); + sliceType$6 = $sliceType(Inst); + ptrType$5 = $ptrType(Inst); + ptrType$6 = $ptrType(Error); + ptrType$7 = $ptrType(parser); + mapType = $mapType(ptrType, $Int); + mapType$1 = $mapType(ptrType, $Int64); + ptrType$8 = $ptrType(compiler); + $ptrType(Regexp).prototype.Simplify = function Simplify() { + var _1, _i, _ref, i, i$1, i$2, i$3, nre, nre$1, nre2, nsub, prefix, re, sub, sub$1, sub$2, suffix, x, x$1; + re = this; + if (re === ptrType.nil) { + return ptrType.nil; + } + _1 = re.Op; + if ((_1 === (13)) || (_1 === (18)) || (_1 === (19))) { + nre = re; + _ref = re.Sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + nsub = sub.Simplify(); + if (nre === re && !(nsub === sub)) { + nre = new Regexp.ptr(0, 0, sliceType$4.nil, arrayType.zero(), sliceType$1.nil, arrayType$1.zero(), 0, 0, 0, ""); + Regexp.copy(nre, re); + nre.Rune = sliceType$1.nil; + nre.Sub = $appendSlice($subslice(new sliceType$4(nre.Sub0), 0, 0), $subslice(re.Sub, 0, i)); + } + if (!(nre === re)) { + nre.Sub = $append(nre.Sub, nsub); + } + _i++; + } + return nre; + } else if ((_1 === (14)) || (_1 === (15)) || (_1 === (16))) { + sub$1 = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Simplify(); + return simplify1(re.Op, re.Flags, sub$1, re); + } else if (_1 === (17)) { + if ((re.Min === 0) && (re.Max === 0)) { + return new Regexp.ptr(2, 0, sliceType$4.nil, arrayType.zero(), sliceType$1.nil, arrayType$1.zero(), 0, 0, 0, ""); + } + sub$2 = (x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])).Simplify(); + if (re.Max === -1) { + if (re.Min === 0) { + return simplify1(14, re.Flags, sub$2, ptrType.nil); + } + if (re.Min === 1) { + return simplify1(15, re.Flags, sub$2, ptrType.nil); + } + nre$1 = new Regexp.ptr(18, 0, sliceType$4.nil, arrayType.zero(), sliceType$1.nil, arrayType$1.zero(), 0, 0, 0, ""); + nre$1.Sub = $subslice(new sliceType$4(nre$1.Sub0), 0, 0); + i$1 = 0; + while (true) { + if (!(i$1 < (re.Min - 1 >> 0))) { break; } + nre$1.Sub = $append(nre$1.Sub, sub$2); + i$1 = i$1 + (1) >> 0; + } + nre$1.Sub = $append(nre$1.Sub, simplify1(15, re.Flags, sub$2, ptrType.nil)); + return nre$1; + } + if ((re.Min === 1) && (re.Max === 1)) { + return sub$2; + } + prefix = ptrType.nil; + if (re.Min > 0) { + prefix = new Regexp.ptr(18, 0, sliceType$4.nil, arrayType.zero(), sliceType$1.nil, arrayType$1.zero(), 0, 0, 0, ""); + prefix.Sub = $subslice(new sliceType$4(prefix.Sub0), 0, 0); + i$2 = 0; + while (true) { + if (!(i$2 < re.Min)) { break; } + prefix.Sub = $append(prefix.Sub, sub$2); + i$2 = i$2 + (1) >> 0; + } + } + if (re.Max > re.Min) { + suffix = simplify1(16, re.Flags, sub$2, ptrType.nil); + i$3 = re.Min + 1 >> 0; + while (true) { + if (!(i$3 < re.Max)) { break; } + nre2 = new Regexp.ptr(18, 0, sliceType$4.nil, arrayType.zero(), sliceType$1.nil, arrayType$1.zero(), 0, 0, 0, ""); + nre2.Sub = $append($subslice(new sliceType$4(nre2.Sub0), 0, 0), sub$2, suffix); + suffix = simplify1(16, re.Flags, nre2, ptrType.nil); + i$3 = i$3 + (1) >> 0; + } + if (prefix === ptrType.nil) { + return suffix; + } + prefix.Sub = $append(prefix.Sub, suffix); + } + if (!(prefix === ptrType.nil)) { + return prefix; + } + return new Regexp.ptr(1, 0, sliceType$4.nil, arrayType.zero(), sliceType$1.nil, arrayType$1.zero(), 0, 0, 0, ""); + } + return re; + }; + simplify1 = function simplify1$1(op, flags, sub, re) { + var flags, op, re, sub, x; + if (sub.Op === 2) { + return sub; + } + if ((op === sub.Op) && (((flags & 32) >>> 0) === ((sub.Flags & 32) >>> 0))) { + return sub; + } + if (!(re === ptrType.nil) && (re.Op === op) && (((re.Flags & 32) >>> 0) === ((flags & 32) >>> 0)) && sub === (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))) { + return re; + } + re = new Regexp.ptr(op, flags, sliceType$4.nil, arrayType.zero(), sliceType$1.nil, arrayType$1.zero(), 0, 0, 0, ""); + re.Sub = $append($subslice(new sliceType$4(re.Sub0), 0, 0), sub); + return re; + }; + $ptrType(Regexp).prototype.Equal = function Equal(y) { + var _1, _i, _i$1, _ref, _ref$1, i, i$1, r, sub, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y; + x = this; + if (x === ptrType.nil || y === ptrType.nil) { + return x === y; + } + if (!((x.Op === y.Op))) { + return false; + } + _1 = x.Op; + if (_1 === (10)) { + if (!((((x.Flags & 256) >>> 0) === ((y.Flags & 256) >>> 0)))) { + return false; + } + } else if ((_1 === (3)) || (_1 === (4))) { + if (!((x.Rune.$length === y.Rune.$length))) { + return false; + } + _ref = x.Rune; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + r = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((r === (x$1 = y.Rune, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i]))))) { + return false; + } + _i++; + } + } else if ((_1 === (19)) || (_1 === (18))) { + if (!((x.Sub.$length === y.Sub.$length))) { + return false; + } + _ref$1 = x.Sub; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + sub = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (!sub.Equal((x$2 = y.Sub, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1])))) { + return false; + } + _i$1++; + } + } else if ((_1 === (14)) || (_1 === (15)) || (_1 === (16))) { + if (!((((x.Flags & 32) >>> 0) === ((y.Flags & 32) >>> 0))) || !(x$3 = x.Sub, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])).Equal((x$4 = y.Sub, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])))) { + return false; + } + } else if (_1 === (17)) { + if (!((((x.Flags & 32) >>> 0) === ((y.Flags & 32) >>> 0))) || !((x.Min === y.Min)) || !((x.Max === y.Max)) || !(x$5 = x.Sub, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0])).Equal((x$6 = y.Sub, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0])))) { + return false; + } + } else if (_1 === (13)) { + if (!((x.Cap === y.Cap)) || !(x.Name === y.Name) || !(x$7 = x.Sub, (0 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 0])).Equal((x$8 = y.Sub, (0 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 0])))) { + return false; + } + } + return true; + }; + writeRegexp = function writeRegexp$1(b, re) { + var _1, _2, _i, _i$1, _i$2, _r, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$2, _tmp$3, b, hi, hi$1, i, i$1, i$2, lo, lo$1, r, re, sub, sub$1, sub$2, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + switch (0) { default: + _1 = re.Op; + if (_1 === (1)) { + b.WriteString("[^\\x00-\\x{10FFFF}]"); + } else if (_1 === (2)) { + b.WriteString("(?:)"); + } else if (_1 === (3)) { + if (!((((re.Flags & 1) >>> 0) === 0))) { + b.WriteString("(?i:"); + } + _ref = re.Rune; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + r = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + escape(b, r, false); + _i++; + } + if (!((((re.Flags & 1) >>> 0) === 0))) { + b.WriteString(")"); + } + } else if (_1 === (4)) { + if (!(((_r = re.Rune.$length % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) { + b.WriteString("[invalid char class]"); + break; + } + b.WriteRune(91); + if (re.Rune.$length === 0) { + b.WriteString("^\\x00-\\x{10FFFF}"); + } else if (((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 0) && ((x$1 = re.Rune, x$2 = re.Rune.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) === 1114111) && re.Rune.$length > 2) { + b.WriteRune(94); + i = 1; + while (true) { + if (!(i < (re.Rune.$length - 1 >> 0))) { break; } + _tmp = (x$3 = re.Rune, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i])) + 1 >> 0; + _tmp$1 = (x$4 = re.Rune, x$5 = i + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])) - 1 >> 0; + lo = _tmp; + hi = _tmp$1; + escape(b, lo, lo === 45); + if (!((lo === hi))) { + b.WriteRune(45); + escape(b, hi, hi === 45); + } + i = i + (2) >> 0; + } + } else { + i$1 = 0; + while (true) { + if (!(i$1 < re.Rune.$length)) { break; } + _tmp$2 = (x$6 = re.Rune, ((i$1 < 0 || i$1 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i$1])); + _tmp$3 = (x$7 = re.Rune, x$8 = i$1 + 1 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8])); + lo$1 = _tmp$2; + hi$1 = _tmp$3; + escape(b, lo$1, lo$1 === 45); + if (!((lo$1 === hi$1))) { + b.WriteRune(45); + escape(b, hi$1, hi$1 === 45); + } + i$1 = i$1 + (2) >> 0; + } + } + b.WriteRune(93); + } else if (_1 === (5)) { + b.WriteString("(?-s:.)"); + } else if (_1 === (6)) { + b.WriteString("(?s:.)"); + } else if (_1 === (7)) { + b.WriteString("(?m:^)"); + } else if (_1 === (8)) { + b.WriteString("(?m:$)"); + } else if (_1 === (9)) { + b.WriteString("\\A"); + } else if (_1 === (10)) { + if (!((((re.Flags & 256) >>> 0) === 0))) { + b.WriteString("(?-m:$)"); + } else { + b.WriteString("\\z"); + } + } else if (_1 === (11)) { + b.WriteString("\\b"); + } else if (_1 === (12)) { + b.WriteString("\\B"); + } else if (_1 === (13)) { + if (!(re.Name === "")) { + b.WriteString("(?P<"); + b.WriteString(re.Name); + b.WriteRune(62); + } else { + b.WriteRune(40); + } + if (!(((x$9 = re.Sub, (0 >= x$9.$length ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + 0])).Op === 2))) { + writeRegexp(b, (x$10 = re.Sub, (0 >= x$10.$length ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + 0]))); + } + b.WriteRune(41); + } else if ((_1 === (14)) || (_1 === (15)) || (_1 === (16)) || (_1 === (17))) { + sub = (x$11 = re.Sub, (0 >= x$11.$length ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + 0])); + if (sub.Op > 13 || (sub.Op === 3) && sub.Rune.$length > 1) { + b.WriteString("(?:"); + writeRegexp(b, sub); + b.WriteString(")"); + } else { + writeRegexp(b, sub); + } + _2 = re.Op; + if (_2 === (14)) { + b.WriteRune(42); + } else if (_2 === (15)) { + b.WriteRune(43); + } else if (_2 === (16)) { + b.WriteRune(63); + } else if (_2 === (17)) { + b.WriteRune(123); + b.WriteString(strconv.Itoa(re.Min)); + if (!((re.Max === re.Min))) { + b.WriteRune(44); + if (re.Max >= 0) { + b.WriteString(strconv.Itoa(re.Max)); + } + } + b.WriteRune(125); + } + if (!((((re.Flags & 32) >>> 0) === 0))) { + b.WriteRune(63); + } + } else if (_1 === (18)) { + _ref$1 = re.Sub; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + sub$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (sub$1.Op === 19) { + b.WriteString("(?:"); + writeRegexp(b, sub$1); + b.WriteString(")"); + } else { + writeRegexp(b, sub$1); + } + _i$1++; + } + } else if (_1 === (19)) { + _ref$2 = re.Sub; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$2 = _i$2; + sub$2 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + if (i$2 > 0) { + b.WriteRune(124); + } + writeRegexp(b, sub$2); + _i$2++; + } + } else { + b.WriteString("> 0))) + ">"); + } + } + }; + $ptrType(Regexp).prototype.String = function String() { + var b, re; + re = this; + b = new strings.Builder.ptr(ptrType$1.nil, sliceType$5.nil); + writeRegexp(b, re); + return b.String(); + }; + escape = function escape$1(b, r, force) { + var _1, b, force, r, s; + if (unicode.IsPrint(r)) { + if (strings.ContainsRune("\\.+*?()|[]{}^$", r) || force) { + b.WriteRune(92); + } + b.WriteRune(r); + return; + } + switch (0) { default: + _1 = r; + if (_1 === (7)) { + b.WriteString("\\a"); + } else if (_1 === (12)) { + b.WriteString("\\f"); + } else if (_1 === (10)) { + b.WriteString("\\n"); + } else if (_1 === (13)) { + b.WriteString("\\r"); + } else if (_1 === (9)) { + b.WriteString("\\t"); + } else if (_1 === (11)) { + b.WriteString("\\v"); + } else { + if (r < 256) { + b.WriteString("\\x"); + s = strconv.FormatInt((new $Int64(0, r)), 16); + if (s.length === 1) { + b.WriteRune(48); + } + b.WriteString(s); + break; + } + b.WriteString("\\x{"); + b.WriteString(strconv.FormatInt((new $Int64(0, r)), 16)); + b.WriteString("}"); + } + } + }; + $ptrType(Regexp).prototype.MaxCap = function MaxCap() { + var _i, _ref, m, n, re, sub; + re = this; + m = 0; + if (re.Op === 13) { + m = re.Cap; + } + _ref = re.Sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + n = sub.MaxCap(); + if (m < n) { + m = n; + } + _i++; + } + return m; + }; + $ptrType(Regexp).prototype.CapNames = function CapNames() { + var names, re; + re = this; + names = $makeSlice(sliceType, (re.MaxCap() + 1 >> 0)); + re.capNames(names); + return names; + }; + $ptrType(Regexp).prototype.capNames = function capNames(names) { + var _i, _ref, names, re, sub, x; + re = this; + if (re.Op === 13) { + (x = re.Cap, ((x < 0 || x >= names.$length) ? ($throwRuntimeError("index out of range"), undefined) : names.$array[names.$offset + x] = re.Name)); + } + _ref = re.Sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + sub.capNames(names); + _i++; + } + }; + InstOp.prototype.String = function String$1() { + var i; + i = this.$val; + if (((i >>> 0)) >= ((instOpNames.$length >>> 0))) { + return ""; + } + return ((i < 0 || i >= instOpNames.$length) ? ($throwRuntimeError("index out of range"), undefined) : instOpNames.$array[instOpNames.$offset + i]); + }; + $ptrType(InstOp).prototype.String = function(...$args) { return new InstOp(this.$get()).String(...$args); }; + IsWordChar = function IsWordChar$1(r) { + var r; + return 65 <= r && r <= 90 || 97 <= r && r <= 122 || 48 <= r && r <= 57 || (r === 95); + }; + $pkg.IsWordChar = IsWordChar; + $ptrType(Prog).prototype.String = function String$2() { + var b, p; + p = this; + b = new strings.Builder.ptr(ptrType$1.nil, sliceType$5.nil); + dumpProg(b, p); + return b.String(); + }; + $ptrType(Prog).prototype.skipNop = function skipNop(pc) { + var i, p, pc, x, x$1, x$2; + p = this; + i = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); + while (true) { + if (!((i.Op === 6) || (i.Op === 2))) { break; } + i = (x$1 = p.Inst, x$2 = i.Out, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])); + } + return i; + }; + $ptrType(Inst).prototype.op = function op() { + var _1, i, op$1; + i = this; + op$1 = i.Op; + _1 = op$1; + if ((_1 === (8)) || (_1 === (9)) || (_1 === (10))) { + op$1 = 7; + } + return op$1; + }; + $ptrType(Prog).prototype.Prefix = function Prefix() { + var _tmp, _tmp$1, _tmp$2, _tmp$3, buf, complete, i, p, prefix, x, x$1; + prefix = ""; + complete = false; + p = this; + i = p.skipNop(((p.Start >>> 0))); + if (!((i.op() === 7)) || !((i.Rune.$length === 1))) { + _tmp = ""; + _tmp$1 = i.Op === 4; + prefix = _tmp; + complete = _tmp$1; + return [prefix, complete]; + } + buf = new strings.Builder.ptr(ptrType$1.nil, sliceType$5.nil); + while (true) { + if (!((i.op() === 7) && (i.Rune.$length === 1) && (((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0) && !(((x = i.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 65533)))) { break; } + buf.WriteRune((x$1 = i.Rune, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]))); + i = p.skipNop(i.Out); + } + _tmp$2 = buf.String(); + _tmp$3 = i.Op === 4; + prefix = _tmp$2; + complete = _tmp$3; + return [prefix, complete]; + }; + $ptrType(Prog).prototype.StartCond = function StartCond() { + var _1, flag, i, p, pc, x, x$1; + p = this; + flag = 0; + pc = ((p.Start >>> 0)); + i = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); + Loop: + while (true) { + _1 = i.Op; + if (_1 === (3)) { + flag = (flag | (((i.Arg << 24 >>> 24)))) >>> 0; + } else if (_1 === (5)) { + return 255; + } else if ((_1 === (2)) || (_1 === (6))) { + } else { + break Loop; + } + pc = i.Out; + i = (x$1 = p.Inst, ((pc < 0 || pc >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + pc])); + } + return flag; + }; + $ptrType(Inst).prototype.MatchRune = function MatchRune(r) { + var i, r; + i = this; + return !((i.MatchRunePos(r) === -1)); + }; + $ptrType(Inst).prototype.MatchRunePos = function MatchRunePos(r) { + var _1, _q, _q$1, _q$2, c, hi, i, j, lo, m, r, r0, r1, rune, x, x$1, x$2; + i = this; + rune = i.Rune; + _1 = rune.$length; + if (_1 === (0)) { + return -1; + } else if (_1 === (1)) { + r0 = (0 >= rune.$length ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + 0]); + if (r === r0) { + return 0; + } + if (!((((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { + r1 = unicode.SimpleFold(r0); + while (true) { + if (!(!((r1 === r0)))) { break; } + if (r === r1) { + return 0; + } + r1 = unicode.SimpleFold(r1); + } + } + return -1; + } else if (_1 === (2)) { + if (r >= (0 >= rune.$length ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + 0]) && r <= (1 >= rune.$length ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + 1])) { + return 0; + } + return -1; + } else if ((_1 === (4)) || (_1 === (6)) || (_1 === (8))) { + j = 0; + while (true) { + if (!(j < rune.$length)) { break; } + if (r < ((j < 0 || j >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + j])) { + return -1; + } + if (r <= (x = j + 1 >> 0, ((x < 0 || x >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + x]))) { + return (_q = j / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + } + j = j + (2) >> 0; + } + return -1; + } + lo = 0; + hi = (_q$1 = rune.$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); + while (true) { + if (!(lo < hi)) { break; } + m = lo + (_q$2 = ((hi - lo >> 0)) / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + c = (x$1 = $imul(2, m), ((x$1 < 0 || x$1 >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + x$1])); + if (c <= r) { + if (r <= (x$2 = ($imul(2, m)) + 1 >> 0, ((x$2 < 0 || x$2 >= rune.$length) ? ($throwRuntimeError("index out of range"), undefined) : rune.$array[rune.$offset + x$2]))) { + return m; + } + lo = m + 1 >> 0; + } else { + hi = m; + } + } + return -1; + }; + $ptrType(Inst).prototype.MatchEmptyWidth = function MatchEmptyWidth(before, after) { + var _1, after, before, i; + i = this; + _1 = ((i.Arg << 24 >>> 24)); + if (_1 === (1)) { + return (before === 10) || (before === -1); + } else if (_1 === (2)) { + return (after === 10) || (after === -1); + } else if (_1 === (4)) { + return before === -1; + } else if (_1 === (8)) { + return after === -1; + } else if (_1 === (16)) { + return !(IsWordChar(before) === IsWordChar(after)); + } else if (_1 === (32)) { + return IsWordChar(before) === IsWordChar(after); + } + $panic(new $String("unknown empty width arg")); + }; + $ptrType(Inst).prototype.String = function String$3() { + var b, i; + i = this; + b = new strings.Builder.ptr(ptrType$1.nil, sliceType$5.nil); + dumpInst(b, i); + return b.String(); + }; + bw = function bw$1(b, args) { + var _i, _ref, args, b, s; + _ref = args; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + b.WriteString(s); + _i++; + } + }; + dumpProg = function dumpProg$1(b, p) { + var _i, _ref, b, i, j, p, pc, x; + _ref = p.Inst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + j = _i; + i = (x = p.Inst, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); + pc = strconv.Itoa(j); + if (pc.length < 3) { + b.WriteString($substring(" ", pc.length)); + } + if (j === p.Start) { + pc = pc + ("*"); + } + bw(b, new sliceType([pc, "\t"])); + dumpInst(b, i); + bw(b, new sliceType(["\n"])); + _i++; + } + }; + u32 = function u32$1(i) { + var i; + return strconv.FormatUint((new $Uint64(0, i)), 10); + }; + dumpInst = function dumpInst$1(b, i) { + var _1, b, i; + _1 = i.Op; + if (_1 === (0)) { + bw(b, new sliceType(["alt -> ", u32(i.Out), ", ", u32(i.Arg)])); + } else if (_1 === (1)) { + bw(b, new sliceType(["altmatch -> ", u32(i.Out), ", ", u32(i.Arg)])); + } else if (_1 === (2)) { + bw(b, new sliceType(["cap ", u32(i.Arg), " -> ", u32(i.Out)])); + } else if (_1 === (3)) { + bw(b, new sliceType(["empty ", u32(i.Arg), " -> ", u32(i.Out)])); + } else if (_1 === (4)) { + bw(b, new sliceType(["match"])); + } else if (_1 === (5)) { + bw(b, new sliceType(["fail"])); + } else if (_1 === (6)) { + bw(b, new sliceType(["nop -> ", u32(i.Out)])); + } else if (_1 === (7)) { + if (i.Rune === sliceType$1.nil) { + bw(b, new sliceType(["rune "])); + } + bw(b, new sliceType(["rune ", strconv.QuoteToASCII(($runesToString(i.Rune)))])); + if (!((((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { + bw(b, new sliceType(["/i"])); + } + bw(b, new sliceType([" -> ", u32(i.Out)])); + } else if (_1 === (8)) { + bw(b, new sliceType(["rune1 ", strconv.QuoteToASCII(($runesToString(i.Rune))), " -> ", u32(i.Out)])); + } else if (_1 === (9)) { + bw(b, new sliceType(["any -> ", u32(i.Out)])); + } else if (_1 === (10)) { + bw(b, new sliceType(["anynotnl -> ", u32(i.Out)])); + } + }; + $ptrType(Error).prototype.Error = function Error$1() { + var e; + e = this; + return "error parsing regexp: " + new ErrorCode(e.Code).String() + ": `" + e.Expr + "`"; + }; + ErrorCode.prototype.String = function String$4() { + var e; + e = this.$val; + return (e); + }; + $ptrType(ErrorCode).prototype.String = function(...$args) { return new ErrorCode(this.$get()).String(...$args); }; + $ptrType(parser).prototype.newRegexp = function newRegexp(op$1) { + var op$1, p, re; + p = this; + re = p.free; + if (!(re === ptrType.nil)) { + p.free = re.Sub0[0]; + Regexp.copy(re, new Regexp.ptr(0, 0, sliceType$4.nil, arrayType.zero(), sliceType$1.nil, arrayType$1.zero(), 0, 0, 0, "")); + } else { + re = new Regexp.ptr(0, 0, sliceType$4.nil, arrayType.zero(), sliceType$1.nil, arrayType$1.zero(), 0, 0, 0, ""); + p.numRegexp = p.numRegexp + (1) >> 0; + } + re.Op = op$1; + return re; + }; + $ptrType(parser).prototype.reuse = function reuse(re) { + var p, re; + p = this; + if (!(p.height === false)) { + $mapDelete(p.height, ptrType.keyFor(re)); + } + re.Sub0[0] = p.free; + p.free = re; + }; + $ptrType(parser).prototype.checkLimits = function checkLimits(re) { + var p, re; + p = this; + if (p.numRunes > 33554432) { + $panic(new ErrorCode("expression too large")); + } + p.checkSize(re); + p.checkHeight(re); + }; + $ptrType(parser).prototype.checkSize = function checkSize(re) { + var _i, _ref, n, p, re, re$1, x, x$1, x$2, x$3, x$4, x$5; + p = this; + if (p.size === false) { + if ((x = p.repeats, (x.$high === 0 && x.$low === 0))) { + p.repeats = new $Int64(0, 1); + } + if (re.Op === 17) { + n = re.Max; + if (n === -1) { + n = re.Min; + } + if (n <= 0) { + n = 1; + } + if ((x$1 = (new $Int64(0, n)), x$2 = $div64(new $Int64(0, 3355443), p.repeats, false), (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) { + p.repeats = new $Int64(0, 3355443); + } else { + p.repeats = $mul64(p.repeats, ((new $Int64(0, n)))); + } + } + if ((x$3 = (new $Int64(0, p.numRegexp)), x$4 = $div64(new $Int64(0, 3355443), p.repeats, false), (x$3.$high < x$4.$high || (x$3.$high === x$4.$high && x$3.$low < x$4.$low)))) { + return; + } + p.size = new $global.Map(); + _ref = p.stack; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + re$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + p.checkSize(re$1); + _i++; + } + } + if ((x$5 = p.calcSize(re, true), (x$5.$high > 0 || (x$5.$high === 0 && x$5.$low > 3355443)))) { + $panic(new ErrorCode("expression too large")); + } + }; + $ptrType(parser).prototype.calcSize = function calcSize(re, force) { + var _1, _entry, _i, _i$1, _key, _ref, _ref$1, _tuple, force, ok, p, re, size, size$1, sub, sub$1, sub$2, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + p = this; + if (!force) { + _tuple = (_entry = $mapIndex(p.size,ptrType.keyFor(re)), _entry !== undefined ? [_entry.v, true] : [new $Int64(0, 0), false]); + size = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return size; + } + } + size$1 = new $Int64(0, 0); + switch (0) { default: + _1 = re.Op; + if (_1 === (3)) { + size$1 = (new $Int64(0, re.Rune.$length)); + } else if ((_1 === (13)) || (_1 === (14))) { + size$1 = (x = p.calcSize((x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), false), new $Int64(0 + x.$high, 2 + x.$low)); + } else if ((_1 === (15)) || (_1 === (16))) { + size$1 = (x$2 = p.calcSize((x$3 = re.Sub, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), false), new $Int64(0 + x$2.$high, 1 + x$2.$low)); + } else if (_1 === (18)) { + _ref = re.Sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + size$1 = (x$4 = p.calcSize(sub, false), new $Int64(size$1.$high + x$4.$high, size$1.$low + x$4.$low)); + _i++; + } + } else if (_1 === (19)) { + _ref$1 = re.Sub; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + sub$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + size$1 = (x$5 = p.calcSize(sub$1, false), new $Int64(size$1.$high + x$5.$high, size$1.$low + x$5.$low)); + _i$1++; + } + if (re.Sub.$length > 1) { + size$1 = (x$6 = (x$7 = (new $Int64(0, re.Sub.$length)), new $Int64(x$7.$high - 0, x$7.$low - 1)), new $Int64(size$1.$high + x$6.$high, size$1.$low + x$6.$low)); + } + } else if (_1 === (17)) { + sub$2 = p.calcSize((x$8 = re.Sub, (0 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 0])), false); + if (re.Max === -1) { + if (re.Min === 0) { + size$1 = new $Int64(0 + sub$2.$high, 2 + sub$2.$low); + } else { + size$1 = (x$9 = $mul64((new $Int64(0, re.Min)), sub$2), new $Int64(0 + x$9.$high, 1 + x$9.$low)); + } + break; + } + size$1 = (x$10 = $mul64((new $Int64(0, re.Max)), sub$2), x$11 = (new $Int64(0, (re.Max - re.Min >> 0))), new $Int64(x$10.$high + x$11.$high, x$10.$low + x$11.$low)); + } + } + if ((size$1.$high < 0 || (size$1.$high === 0 && size$1.$low < 1))) { + size$1 = new $Int64(0, 1); + } + _key = re; (p.size || $throwRuntimeError("assignment to entry in nil map")).set(ptrType.keyFor(_key), { k: _key, v: size$1 }); + return size$1; + }; + $ptrType(parser).prototype.checkHeight = function checkHeight(re) { + var _i, _ref, p, re, re$1; + p = this; + if (p.numRegexp < 1000) { + return; + } + if (p.height === false) { + p.height = new $global.Map(); + _ref = p.stack; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + re$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + p.checkHeight(re$1); + _i++; + } + } + if (p.calcHeight(re, true) > 1000) { + $panic(new ErrorCode("expression nests too deeply")); + } + }; + $ptrType(parser).prototype.calcHeight = function calcHeight(re, force) { + var _entry, _i, _key, _ref, _tuple, force, h, h$1, hsub, ok, p, re, sub; + p = this; + if (!force) { + _tuple = (_entry = $mapIndex(p.height,ptrType.keyFor(re)), _entry !== undefined ? [_entry.v, true] : [0, false]); + h = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return h; + } + } + h$1 = 1; + _ref = re.Sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + hsub = p.calcHeight(sub, false); + if (h$1 < (1 + hsub >> 0)) { + h$1 = 1 + hsub >> 0; + } + _i++; + } + _key = re; (p.height || $throwRuntimeError("assignment to entry in nil map")).set(ptrType.keyFor(_key), { k: _key, v: h$1 }); + return h$1; + }; + $ptrType(parser).prototype.push = function push(re) { + var p, re, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + p = this; + p.numRunes = p.numRunes + (re.Rune.$length) >> 0; + if ((re.Op === 4) && (re.Rune.$length === 2) && ((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === (x$1 = re.Rune, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])))) { + if (p.maybeConcat((x$16 = re.Rune, (0 >= x$16.$length ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + 0])), (p.flags & ~1) << 16 >>> 16)) { + return ptrType.nil; + } + re.Op = 3; + re.Rune = $subslice(re.Rune, 0, 1); + re.Flags = (p.flags & ~1) << 16 >>> 16; + } else if ((re.Op === 4) && (re.Rune.$length === 4) && ((x$2 = re.Rune, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])) === (x$3 = re.Rune, (1 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 1]))) && ((x$4 = re.Rune, (2 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 2])) === (x$5 = re.Rune, (3 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 3]))) && (unicode.SimpleFold((x$6 = re.Rune, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0]))) === (x$7 = re.Rune, (2 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 2]))) && (unicode.SimpleFold((x$8 = re.Rune, (2 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 2]))) === (x$9 = re.Rune, (0 >= x$9.$length ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + 0]))) || (re.Op === 4) && (re.Rune.$length === 2) && (((x$10 = re.Rune, (0 >= x$10.$length ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + 0])) + 1 >> 0) === (x$11 = re.Rune, (1 >= x$11.$length ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + 1]))) && (unicode.SimpleFold((x$12 = re.Rune, (0 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 0]))) === (x$13 = re.Rune, (1 >= x$13.$length ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + 1]))) && (unicode.SimpleFold((x$14 = re.Rune, (1 >= x$14.$length ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + 1]))) === (x$15 = re.Rune, (0 >= x$15.$length ? ($throwRuntimeError("index out of range"), undefined) : x$15.$array[x$15.$offset + 0])))) { + if (p.maybeConcat((x$17 = re.Rune, (0 >= x$17.$length ? ($throwRuntimeError("index out of range"), undefined) : x$17.$array[x$17.$offset + 0])), (p.flags | 1) >>> 0)) { + return ptrType.nil; + } + re.Op = 3; + re.Rune = $subslice(re.Rune, 0, 1); + re.Flags = (p.flags | 1) >>> 0; + } else { + p.maybeConcat(-1, 0); + } + p.stack = $append(p.stack, re); + p.checkLimits(re); + return re; + }; + $ptrType(parser).prototype.maybeConcat = function maybeConcat(r, flags) { + var flags, n, p, r, re1, re2, x, x$1, x$2, x$3, x$4; + p = this; + n = p.stack.$length; + if (n < 2) { + return false; + } + re1 = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + re2 = (x$2 = p.stack, x$3 = n - 2 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])); + if (!((re1.Op === 3)) || !((re2.Op === 3)) || !((((re1.Flags & 1) >>> 0) === ((re2.Flags & 1) >>> 0)))) { + return false; + } + re2.Rune = $appendSlice(re2.Rune, re1.Rune); + if (r >= 0) { + re1.Rune = $subslice(new sliceType$1(re1.Rune0), 0, 1); + (x$4 = re1.Rune, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0] = r)); + re1.Flags = flags; + return true; + } + p.stack = $subslice(p.stack, 0, (n - 1 >> 0)); + p.reuse(re1); + return false; + }; + $ptrType(parser).prototype.literal = function literal(r) { + var p, r, re; + p = this; + re = p.newRegexp(3); + re.Flags = p.flags; + if (!((((p.flags & 1) >>> 0) === 0))) { + r = minFoldRune(r); + } + re.Rune0[0] = r; + re.Rune = $subslice(new sliceType$1(re.Rune0), 0, 1); + p.push(re); + }; + minFoldRune = function minFoldRune$1(r) { + var min, r, r0; + if (r < 65 || r > 125251) { + return r; + } + min = r; + r0 = r; + r = unicode.SimpleFold(r); + while (true) { + if (!(!((r === r0)))) { break; } + if (min > r) { + min = r; + } + r = unicode.SimpleFold(r); + } + return min; + }; + $ptrType(parser).prototype.op = function op$1(op$2) { + var op$2, p, re; + p = this; + re = p.newRegexp(op$2); + re.Flags = p.flags; + return p.push(re); + }; + $ptrType(parser).prototype.repeat = function repeat(op$2, min, max, before, after, lastRepeat) { + var after, before, flags, lastRepeat, max, min, n, op$2, p, re, sub, x, x$1, x$2, x$3, x$4; + p = this; + flags = p.flags; + if (!((((p.flags & 64) >>> 0) === 0))) { + if (after.length > 0 && (after.charCodeAt(0) === 63)) { + after = $substring(after, 1); + flags = (flags ^ (32)) << 16 >>> 16; + } + if (!(lastRepeat === "")) { + return ["", new Error.ptr("invalid nested repetition operator", $substring(lastRepeat, 0, (lastRepeat.length - after.length >> 0)))]; + } + } + n = p.stack.$length; + if (n === 0) { + return ["", new Error.ptr("missing argument to repetition operator", $substring(before, 0, (before.length - after.length >> 0)))]; + } + sub = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (sub.Op >= 128) { + return ["", new Error.ptr("missing argument to repetition operator", $substring(before, 0, (before.length - after.length >> 0)))]; + } + re = p.newRegexp(op$2); + re.Min = min; + re.Max = max; + re.Flags = flags; + re.Sub = $subslice(new sliceType$4(re.Sub0), 0, 1); + (x$2 = re.Sub, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0] = sub)); + (x$3 = p.stack, x$4 = n - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + x$4] = re)); + p.checkLimits(re); + if ((op$2 === 17) && (min >= 2 || max >= 2) && !repeatIsValid(re, 1000)) { + return ["", new Error.ptr("invalid repeat count", $substring(before, 0, (before.length - after.length >> 0)))]; + } + return [after, $ifaceNil]; + }; + repeatIsValid = function repeatIsValid$1(re, n) { + var _i, _q, _ref, m, n, re, sub; + if (re.Op === 17) { + m = re.Max; + if (m === 0) { + return true; + } + if (m < 0) { + m = re.Min; + } + if (m > n) { + return false; + } + if (m > 0) { + n = (_q = n / (m), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + } + } + _ref = re.Sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!repeatIsValid(sub, n)) { + return false; + } + _i++; + } + return true; + }; + $ptrType(parser).prototype.concat = function concat() { + var {$24r, _r, _r$1, i, p, subs, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + p.maybeConcat(-1, 0); + i = p.stack.$length; + while (true) { + if (!(i > 0 && (x = p.stack, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op < 128)) { break; } + i = i - (1) >> 0; + } + subs = $subslice(p.stack, i); + p.stack = $subslice(p.stack, 0, i); + if (subs.$length === 0) { + $s = -1; return p.push(p.newRegexp(2)); + } + _r = p.collapse(subs, 18); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = p.push(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: concat, $c: true, $r, $24r, _r, _r$1, i, p, subs, x, x$1, $s};return $f; + }; + $ptrType(parser).prototype.alternate = function alternate() { + var {$24r, _r, _r$1, i, p, subs, x, x$1, x$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + i = p.stack.$length; + while (true) { + if (!(i > 0 && (x = p.stack, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op < 128)) { break; } + i = i - (1) >> 0; + } + subs = $subslice(p.stack, i); + p.stack = $subslice(p.stack, 0, i); + /* */ if (subs.$length > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (subs.$length > 0) { */ case 1: + $r = cleanAlt((x$2 = subs.$length - 1 >> 0, ((x$2 < 0 || x$2 >= subs.$length) ? ($throwRuntimeError("index out of range"), undefined) : subs.$array[subs.$offset + x$2]))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + if (subs.$length === 0) { + $s = -1; return p.push(p.newRegexp(1)); + } + _r = p.collapse(subs, 19); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = p.push(_r); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 6; case 6: return $24r; + /* */ } return; } var $f = {$blk: alternate, $c: true, $r, $24r, _r, _r$1, i, p, subs, x, x$1, x$2, $s};return $f; + }; + cleanAlt = function cleanAlt$1(re) { + var {_1, _r, re, x, x$1, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {re}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _1 = re.Op; + /* */ if (_1 === (4)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_1 === (4)) { */ case 2: + _r = cleanClass((re.$ptr_Rune || (re.$ptr_Rune = new ptrType$2(function() { return this.$target.Rune; }, function($v) { this.$target.Rune = $v; }, re)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + re.Rune = _r; + if ((re.Rune.$length === 2) && ((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === 0) && ((x$1 = re.Rune, (1 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 1])) === 1114111)) { + re.Rune = sliceType$1.nil; + re.Op = 6; + $s = -1; return; + } + if ((re.Rune.$length === 4) && ((x$2 = re.Rune, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])) === 0) && ((x$3 = re.Rune, (1 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 1])) === 9) && ((x$4 = re.Rune, (2 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 2])) === 11) && ((x$5 = re.Rune, (3 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 3])) === 1114111)) { + re.Rune = sliceType$1.nil; + re.Op = 5; + $s = -1; return; + } + if ((re.Rune.$capacity - re.Rune.$length >> 0) > 100) { + re.Rune = $appendSlice($subslice(new sliceType$1(re.Rune0), 0, 0), re.Rune); + } + /* } */ case 3: + case 1: + $s = -1; return; + /* */ } return; } var $f = {$blk: cleanAlt$1, $c: true, $r, _1, _r, re, x, x$1, x$2, x$3, x$4, x$5, $s};return $f; + }; + $ptrType(parser).prototype.collapse = function collapse(subs, op$2) { + var {_i, _r, _ref, old, op$2, p, re, sub, subs, x, $s, $r, $c} = $restore(this, {subs, op$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + if (subs.$length === 1) { + $s = -1; return (0 >= subs.$length ? ($throwRuntimeError("index out of range"), undefined) : subs.$array[subs.$offset + 0]); + } + re = p.newRegexp(op$2); + re.Sub = $subslice(new sliceType$4(re.Sub0), 0, 0); + _ref = subs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sub = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (sub.Op === op$2) { + re.Sub = $appendSlice(re.Sub, sub.Sub); + p.reuse(sub); + } else { + re.Sub = $append(re.Sub, sub); + } + _i++; + } + /* */ if (op$2 === 19) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (op$2 === 19) { */ case 1: + _r = p.factor(re.Sub); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + re.Sub = _r; + if (re.Sub.$length === 1) { + old = re; + re = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + p.reuse(old); + } + /* } */ case 2: + $s = -1; return re; + /* */ } return; } var $f = {$blk: collapse, $c: true, $r, _i, _r, _ref, old, op$2, p, re, sub, subs, x, $s};return $f; + }; + $ptrType(parser).prototype.factor = function factor(sub) { + var {_i, _r, _r$1, _ref, _tmp, _tmp$1, _tuple, first, i, i$1, i$2, i$3, ifirst, iflags, istr, j, j$1, j$2, j$3, max, out, p, prefix, prefix$1, re, re$1, reuse$1, same, start, str, strflags, sub, suffix, suffix$1, x, x$1, $s, $r, $c} = $restore(this, {sub}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + if (sub.$length < 2) { + $s = -1; return sub; + } + str = sliceType$1.nil; + strflags = 0; + start = 0; + out = $subslice(sub, 0, 0); + i = 0; + /* while (true) { */ case 1: + /* if (!(i <= sub.$length)) { break; } */ if(!(i <= sub.$length)) { $s = 2; continue; } + istr = sliceType$1.nil; + iflags = 0; + if (i < sub.$length) { + _tuple = p.leadingString(((i < 0 || i >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i])); + istr = _tuple[0]; + iflags = _tuple[1]; + if (iflags === strflags) { + same = 0; + while (true) { + if (!(same < str.$length && same < istr.$length && (((same < 0 || same >= str.$length) ? ($throwRuntimeError("index out of range"), undefined) : str.$array[str.$offset + same]) === ((same < 0 || same >= istr.$length) ? ($throwRuntimeError("index out of range"), undefined) : istr.$array[istr.$offset + same])))) { break; } + same = same + (1) >> 0; + } + if (same > 0) { + str = $subslice(str, 0, same); + i = i + (1) >> 0; + /* continue; */ $s = 1; continue; + } + } + } + /* */ if (i === start) { $s = 3; continue; } + /* */ if (i === (start + 1 >> 0)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (i === start) { */ case 3: + $s = 6; continue; + /* } else if (i === (start + 1 >> 0)) { */ case 4: + out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); + $s = 6; continue; + /* } else { */ case 5: + prefix = p.newRegexp(3); + prefix.Flags = strflags; + prefix.Rune = $appendSlice($subslice(prefix.Rune, 0, 0), str); + j = start; + while (true) { + if (!(j < i)) { break; } + ((j < 0 || j >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j] = p.removeLeadingString(((j < 0 || j >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j]), str.$length)); + p.checkLimits(((j < 0 || j >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j])); + j = j + (1) >> 0; + } + _r = p.collapse($subslice(sub, start, i), 19); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + suffix = _r; + re = p.newRegexp(18); + re.Sub = $append($subslice(re.Sub, 0, 0), prefix, suffix); + out = $append(out, re); + /* } */ case 6: + start = i; + str = istr; + strflags = iflags; + i = i + (1) >> 0; + $s = 1; continue; + case 2: + sub = out; + start = 0; + out = $subslice(sub, 0, 0); + first = ptrType.nil; + i$1 = 0; + /* while (true) { */ case 8: + /* if (!(i$1 <= sub.$length)) { break; } */ if(!(i$1 <= sub.$length)) { $s = 9; continue; } + ifirst = ptrType.nil; + if (i$1 < sub.$length) { + ifirst = p.leadingRegexp(((i$1 < 0 || i$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$1])); + if (!(first === ptrType.nil) && first.Equal(ifirst) && (isCharClass(first) || ((first.Op === 17) && (first.Min === first.Max) && isCharClass((x = first.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])))))) { + i$1 = i$1 + (1) >> 0; + /* continue; */ $s = 8; continue; + } + } + /* */ if (i$1 === start) { $s = 10; continue; } + /* */ if (i$1 === (start + 1 >> 0)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (i$1 === start) { */ case 10: + $s = 13; continue; + /* } else if (i$1 === (start + 1 >> 0)) { */ case 11: + out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); + $s = 13; continue; + /* } else { */ case 12: + prefix$1 = first; + j$1 = start; + while (true) { + if (!(j$1 < i$1)) { break; } + reuse$1 = !((j$1 === start)); + ((j$1 < 0 || j$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$1] = p.removeLeadingRegexp(((j$1 < 0 || j$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$1]), reuse$1)); + p.checkLimits(((j$1 < 0 || j$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$1])); + j$1 = j$1 + (1) >> 0; + } + _r$1 = p.collapse($subslice(sub, start, i$1), 19); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + suffix$1 = _r$1; + re$1 = p.newRegexp(18); + re$1.Sub = $append($subslice(re$1.Sub, 0, 0), prefix$1, suffix$1); + out = $append(out, re$1); + /* } */ case 13: + start = i$1; + first = ifirst; + i$1 = i$1 + (1) >> 0; + $s = 8; continue; + case 9: + sub = out; + start = 0; + out = $subslice(sub, 0, 0); + i$2 = 0; + /* while (true) { */ case 15: + /* if (!(i$2 <= sub.$length)) { break; } */ if(!(i$2 <= sub.$length)) { $s = 16; continue; } + if (i$2 < sub.$length && isCharClass(((i$2 < 0 || i$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$2]))) { + i$2 = i$2 + (1) >> 0; + /* continue; */ $s = 15; continue; + } + /* */ if (i$2 === start) { $s = 17; continue; } + /* */ if (i$2 === (start + 1 >> 0)) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (i$2 === start) { */ case 17: + $s = 20; continue; + /* } else if (i$2 === (start + 1 >> 0)) { */ case 18: + out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); + $s = 20; continue; + /* } else { */ case 19: + max = start; + j$2 = start + 1 >> 0; + while (true) { + if (!(j$2 < i$2)) { break; } + if (((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]).Op < ((j$2 < 0 || j$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$2]).Op || (((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]).Op === ((j$2 < 0 || j$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$2]).Op) && ((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]).Rune.$length < ((j$2 < 0 || j$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$2]).Rune.$length) { + max = j$2; + } + j$2 = j$2 + (1) >> 0; + } + _tmp = ((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max]); + _tmp$1 = ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start]); + ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start] = _tmp); + ((max < 0 || max >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + max] = _tmp$1); + j$3 = start + 1 >> 0; + while (true) { + if (!(j$3 < i$2)) { break; } + mergeCharClass(((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start]), ((j$3 < 0 || j$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$3])); + p.reuse(((j$3 < 0 || j$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + j$3])); + j$3 = j$3 + (1) >> 0; + } + $r = cleanAlt(((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + out = $append(out, ((start < 0 || start >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + start])); + /* } */ case 20: + if (i$2 < sub.$length) { + out = $append(out, ((i$2 < 0 || i$2 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$2])); + } + start = i$2 + 1 >> 0; + i$2 = i$2 + (1) >> 0; + $s = 15; continue; + case 16: + sub = out; + start = 0; + out = $subslice(sub, 0, 0); + _ref = sub; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i$3 = _i; + if ((i$3 + 1 >> 0) < sub.$length && (((i$3 < 0 || i$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$3]).Op === 2) && ((x$1 = i$3 + 1 >> 0, ((x$1 < 0 || x$1 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + x$1])).Op === 2)) { + _i++; + continue; + } + out = $append(out, ((i$3 < 0 || i$3 >= sub.$length) ? ($throwRuntimeError("index out of range"), undefined) : sub.$array[sub.$offset + i$3])); + _i++; + } + sub = out; + $s = -1; return sub; + /* */ } return; } var $f = {$blk: factor, $c: true, $r, _i, _r, _r$1, _ref, _tmp, _tmp$1, _tuple, first, i, i$1, i$2, i$3, ifirst, iflags, istr, j, j$1, j$2, j$3, max, out, p, prefix, prefix$1, re, re$1, reuse$1, same, start, str, strflags, sub, suffix, suffix$1, x, x$1, $s};return $f; + }; + $ptrType(parser).prototype.leadingString = function leadingString(re) { + var p, re, x; + p = this; + if ((re.Op === 18) && re.Sub.$length > 0) { + re = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + } + if (!((re.Op === 3))) { + return [sliceType$1.nil, 0]; + } + return [re.Rune, (re.Flags & 1) >>> 0]; + }; + $ptrType(parser).prototype.removeLeadingString = function removeLeadingString(re, n) { + var _1, n, old, p, re, sub, x, x$1, x$2; + p = this; + if ((re.Op === 18) && re.Sub.$length > 0) { + sub = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + sub = p.removeLeadingString(sub, n); + (x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = sub)); + if (sub.Op === 2) { + p.reuse(sub); + _1 = re.Sub.$length; + if ((_1 === (0)) || (_1 === (1))) { + re.Op = 2; + re.Sub = sliceType$4.nil; + } else if (_1 === (2)) { + old = re; + re = (x$2 = re.Sub, (1 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 1])); + p.reuse(old); + } else { + $copySlice(re.Sub, $subslice(re.Sub, 1)); + re.Sub = $subslice(re.Sub, 0, (re.Sub.$length - 1 >> 0)); + } + } + return re; + } + if (re.Op === 3) { + re.Rune = $subslice(re.Rune, 0, $copySlice(re.Rune, $subslice(re.Rune, n))); + if (re.Rune.$length === 0) { + re.Op = 2; + } + } + return re; + }; + $ptrType(parser).prototype.leadingRegexp = function leadingRegexp(re) { + var p, re, sub, x; + p = this; + if (re.Op === 2) { + return ptrType.nil; + } + if ((re.Op === 18) && re.Sub.$length > 0) { + sub = (x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + if (sub.Op === 2) { + return ptrType.nil; + } + return sub; + } + return re; + }; + $ptrType(parser).prototype.removeLeadingRegexp = function removeLeadingRegexp(re, reuse$1) { + var _1, old, p, re, reuse$1, x, x$1; + p = this; + if ((re.Op === 18) && re.Sub.$length > 0) { + if (reuse$1) { + p.reuse((x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); + } + re.Sub = $subslice(re.Sub, 0, $copySlice(re.Sub, $subslice(re.Sub, 1))); + _1 = re.Sub.$length; + if (_1 === (0)) { + re.Op = 2; + re.Sub = sliceType$4.nil; + } else if (_1 === (1)) { + old = re; + re = (x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); + p.reuse(old); + } + return re; + } + if (reuse$1) { + p.reuse(re); + } + return p.newRegexp(2); + }; + literalRegexp = function literalRegexp$1(s, flags) { + var _i, _ref, _rune, c, flags, re, s; + re = new Regexp.ptr(3, 0, sliceType$4.nil, arrayType.zero(), sliceType$1.nil, arrayType$1.zero(), 0, 0, 0, ""); + re.Flags = flags; + re.Rune = $subslice(new sliceType$1(re.Rune0), 0, 0); + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + c = _rune[0]; + if (re.Rune.$length >= re.Rune.$capacity) { + re.Rune = (new sliceType$1($stringToRunes(s))); + break; + } + re.Rune = $append(re.Rune, c); + _i += _rune[1]; + } + return re; + }; + Parse = function Parse$1(s, flags) { + var {$24r, _r, flags, s, $s, $r, $c} = $restore(this, {s, flags}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = parse(s, flags); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Parse$1, $c: true, $r, $24r, _r, flags, s, $s};return $f; + }; + $pkg.Parse = Parse; + parse = function parse$1(s, flags) { + var {_, _2, _3, _4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _struct, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, after, after$1, before, before$1, c, c$1, err, err$1, err$2, err$3, flags, lastRepeat, lit, max, min, n, ok, op$2, p, r, r$1, re, repeat$1, rest, rest$1, rest$2, s, t, x, $s, $deferred, $r, $c} = $restore(this, {s, flags}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + err = [err]; + s = [s]; + _ = ptrType.nil; + err[0] = $ifaceNil; + $deferred.push([(function(err, s) { return function parse·func1() { + var _1, r; + r = $recover(); + _1 = r; + if ($interfaceIsEqual(_1, $ifaceNil)) { + } else if ($interfaceIsEqual(_1, new ErrorCode(("expression too large")))) { + err[0] = new Error.ptr("expression too large", s[0]); + } else if ($interfaceIsEqual(_1, new ErrorCode(("expression nests too deeply")))) { + err[0] = new Error.ptr("expression nests too deeply", s[0]); + } else { + $panic(r); + } + }; })(err, s), []]); + if (!((((flags & 2) >>> 0) === 0))) { + err$1 = checkUTF8(s[0]); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp = ptrType.nil; + _tmp$1 = err$1; + _ = _tmp; + err[0] = _tmp$1; + $s = -1; return [_, err[0]]; + } + _tmp$2 = literalRegexp(s[0], flags); + _tmp$3 = $ifaceNil; + _ = _tmp$2; + err[0] = _tmp$3; + $s = -1; return [_, err[0]]; + } + p = new parser.ptr(0, sliceType$4.nil, ptrType.nil, 0, "", sliceType$1.nil, 0, 0, new $Int64(0, 0), false, false); + c = 0; + op$2 = 0; + lastRepeat = ""; + p.flags = flags; + p.wholeRegexp = s[0]; + t = s[0]; + /* while (true) { */ case 1: + /* if (!(!(t === ""))) { break; } */ if(!(!(t === ""))) { $s = 2; continue; } + repeat$1 = ""; + _2 = t.charCodeAt(0); + /* */ if (_2 === (40)) { $s = 4; continue; } + /* */ if (_2 === (124)) { $s = 5; continue; } + /* */ if (_2 === (41)) { $s = 6; continue; } + /* */ if (_2 === (94)) { $s = 7; continue; } + /* */ if (_2 === (36)) { $s = 8; continue; } + /* */ if (_2 === (46)) { $s = 9; continue; } + /* */ if (_2 === (91)) { $s = 10; continue; } + /* */ if ((_2 === (42)) || (_2 === (43)) || (_2 === (63))) { $s = 11; continue; } + /* */ if (_2 === (123)) { $s = 12; continue; } + /* */ if (_2 === (92)) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_2 === (40)) { */ case 4: + if (!((((p.flags & 64) >>> 0) === 0)) && t.length >= 2 && (t.charCodeAt(1) === 63)) { + _tuple = p.parsePerlFlags(t); + t = _tuple[0]; + err[0] = _tuple[1]; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + _tmp$4 = ptrType.nil; + _tmp$5 = err[0]; + _ = _tmp$4; + err[0] = _tmp$5; + $s = -1; return [_, err[0]]; + } + /* break; */ $s = 3; continue; + } + p.numCap = p.numCap + (1) >> 0; + p.op(128).Cap = p.numCap; + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_2 === (124)) { */ case 5: + _r = p.parseVerticalBar(); /* */ $s = 16; case 16: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err[0] = _r; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + _tmp$6 = ptrType.nil; + _tmp$7 = err[0]; + _ = _tmp$6; + err[0] = _tmp$7; + $s = -1; return [_, err[0]]; + } + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_2 === (41)) { */ case 6: + _r$1 = p.parseRightParen(); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err[0] = _r$1; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + _tmp$8 = ptrType.nil; + _tmp$9 = err[0]; + _ = _tmp$8; + err[0] = _tmp$9; + $s = -1; return [_, err[0]]; + } + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_2 === (94)) { */ case 7: + if (!((((p.flags & 16) >>> 0) === 0))) { + p.op(9); + } else { + p.op(7); + } + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_2 === (36)) { */ case 8: + if (!((((p.flags & 16) >>> 0) === 0))) { + _struct = p.op(10); + _struct.Flags = (_struct.Flags | (256)) >>> 0; + } else { + p.op(8); + } + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_2 === (46)) { */ case 9: + if (!((((p.flags & 8) >>> 0) === 0))) { + p.op(6); + } else { + p.op(5); + } + t = $substring(t, 1); + $s = 15; continue; + /* } else if (_2 === (91)) { */ case 10: + _r$2 = p.parseClass(t); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + t = _tuple$1[0]; + err[0] = _tuple$1[1]; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + _tmp$10 = ptrType.nil; + _tmp$11 = err[0]; + _ = _tmp$10; + err[0] = _tmp$11; + $s = -1; return [_, err[0]]; + } + $s = 15; continue; + /* } else if ((_2 === (42)) || (_2 === (43)) || (_2 === (63))) { */ case 11: + before = t; + _3 = t.charCodeAt(0); + if (_3 === (42)) { + op$2 = 14; + } else if (_3 === (43)) { + op$2 = 15; + } else if (_3 === (63)) { + op$2 = 16; + } + after = $substring(t, 1); + _tuple$2 = p.repeat(op$2, 0, 0, before, after, lastRepeat); + after = _tuple$2[0]; + err[0] = _tuple$2[1]; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + _tmp$12 = ptrType.nil; + _tmp$13 = err[0]; + _ = _tmp$12; + err[0] = _tmp$13; + $s = -1; return [_, err[0]]; + } + repeat$1 = before; + t = after; + $s = 15; continue; + /* } else if (_2 === (123)) { */ case 12: + op$2 = 17; + before$1 = t; + _tuple$3 = p.parseRepeat(t); + min = _tuple$3[0]; + max = _tuple$3[1]; + after$1 = _tuple$3[2]; + ok = _tuple$3[3]; + if (!ok) { + p.literal(123); + t = $substring(t, 1); + /* break; */ $s = 3; continue; + } + if (min < 0 || min > 1000 || max > 1000 || max >= 0 && min > max) { + _tmp$14 = ptrType.nil; + _tmp$15 = new Error.ptr("invalid repeat count", $substring(before$1, 0, (before$1.length - after$1.length >> 0))); + _ = _tmp$14; + err[0] = _tmp$15; + $s = -1; return [_, err[0]]; + } + _tuple$4 = p.repeat(op$2, min, max, before$1, after$1, lastRepeat); + after$1 = _tuple$4[0]; + err[0] = _tuple$4[1]; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + _tmp$16 = ptrType.nil; + _tmp$17 = err[0]; + _ = _tmp$16; + err[0] = _tmp$17; + $s = -1; return [_, err[0]]; + } + repeat$1 = before$1; + t = after$1; + $s = 15; continue; + /* } else if (_2 === (92)) { */ case 13: + if (!((((p.flags & 64) >>> 0) === 0)) && t.length >= 2) { + _4 = t.charCodeAt(1); + if (_4 === (65)) { + p.op(9); + t = $substring(t, 2); + /* break BigSwitch; */ $s = 3; continue s; + } else if (_4 === (98)) { + p.op(11); + t = $substring(t, 2); + /* break BigSwitch; */ $s = 3; continue s; + } else if (_4 === (66)) { + p.op(12); + t = $substring(t, 2); + /* break BigSwitch; */ $s = 3; continue s; + } else if (_4 === (67)) { + _tmp$18 = ptrType.nil; + _tmp$19 = new Error.ptr("invalid escape sequence", $substring(t, 0, 2)); + _ = _tmp$18; + err[0] = _tmp$19; + $s = -1; return [_, err[0]]; + } else if (_4 === (81)) { + lit = ""; + _tuple$5 = strings.Cut($substring(t, 2), "\\E"); + lit = _tuple$5[0]; + t = _tuple$5[1]; + while (true) { + if (!(!(lit === ""))) { break; } + _tuple$6 = nextRune(lit); + c$1 = _tuple$6[0]; + rest = _tuple$6[1]; + err$2 = _tuple$6[2]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + _tmp$20 = ptrType.nil; + _tmp$21 = err$2; + _ = _tmp$20; + err[0] = _tmp$21; + $s = -1; return [_, err[0]]; + } + p.literal(c$1); + lit = rest; + } + /* break BigSwitch; */ $s = 3; continue s; + } else if (_4 === (122)) { + p.op(10); + t = $substring(t, 2); + /* break BigSwitch; */ $s = 3; continue s; + } + } + re = p.newRegexp(4); + re.Flags = p.flags; + /* */ if (t.length >= 2 && ((t.charCodeAt(1) === 112) || (t.charCodeAt(1) === 80))) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (t.length >= 2 && ((t.charCodeAt(1) === 112) || (t.charCodeAt(1) === 80))) { */ case 19: + _r$3 = p.parseUnicodeClass(t, $subslice(new sliceType$1(re.Rune0), 0, 0)); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$7 = _r$3; + r = _tuple$7[0]; + rest$1 = _tuple$7[1]; + err$3 = _tuple$7[2]; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + _tmp$22 = ptrType.nil; + _tmp$23 = err$3; + _ = _tmp$22; + err[0] = _tmp$23; + $s = -1; return [_, err[0]]; + } + if (!(r === sliceType$1.nil)) { + re.Rune = r; + t = rest$1; + p.push(re); + /* break BigSwitch; */ $s = 3; continue s; + } + /* } */ case 20: + _r$4 = p.parsePerlClassEscape(t, $subslice(new sliceType$1(re.Rune0), 0, 0)); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$8 = _r$4; + r$1 = _tuple$8[0]; + rest$2 = _tuple$8[1]; + if (!(r$1 === sliceType$1.nil)) { + re.Rune = r$1; + t = rest$2; + p.push(re); + /* break BigSwitch; */ $s = 3; continue s; + } + p.reuse(re); + _tuple$9 = p.parseEscape(t); + c = _tuple$9[0]; + t = _tuple$9[1]; + err[0] = _tuple$9[2]; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + _tmp$24 = ptrType.nil; + _tmp$25 = err[0]; + _ = _tmp$24; + err[0] = _tmp$25; + $s = -1; return [_, err[0]]; + } + p.literal(c); + $s = 15; continue; + /* } else { */ case 14: + _tuple$10 = nextRune(t); + c = _tuple$10[0]; + t = _tuple$10[1]; + err[0] = _tuple$10[2]; + if (!($interfaceIsEqual(err[0], $ifaceNil))) { + _tmp$26 = ptrType.nil; + _tmp$27 = err[0]; + _ = _tmp$26; + err[0] = _tmp$27; + $s = -1; return [_, err[0]]; + } + p.literal(c); + /* } */ case 15: + case 3: + lastRepeat = repeat$1; + $s = 1; continue; + case 2: + _r$5 = p.concat(); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + _r$6 = p.swapVerticalBar(); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (_r$6) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (_r$6) { */ case 24: + p.stack = $subslice(p.stack, 0, (p.stack.$length - 1 >> 0)); + /* } */ case 25: + _r$7 = p.alternate(); /* */ $s = 27; case 27: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + n = p.stack.$length; + if (!((n === 1))) { + _tmp$28 = ptrType.nil; + _tmp$29 = new Error.ptr("missing closing )", s[0]); + _ = _tmp$28; + err[0] = _tmp$29; + $s = -1; return [_, err[0]]; + } + _tmp$30 = (x = p.stack, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + _tmp$31 = $ifaceNil; + _ = _tmp$30; + err[0] = _tmp$31; + $s = -1; return [_, err[0]]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [_, err[0]]; } if($curGoroutine.asleep) { var $f = {$blk: parse$1, $c: true, $r, _, _2, _3, _4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _struct, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$10, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, after, after$1, before, before$1, c, c$1, err, err$1, err$2, err$3, flags, lastRepeat, lit, max, min, n, ok, op$2, p, r, r$1, re, repeat$1, rest, rest$1, rest$2, s, t, x, $s, $deferred};return $f; } } + }; + $ptrType(parser).prototype.parseRepeat = function parseRepeat(s) { + var _tuple, _tuple$1, max, min, ok, ok1, p, rest, s; + min = 0; + max = 0; + rest = ""; + ok = false; + p = this; + if (s === "" || !((s.charCodeAt(0) === 123))) { + return [min, max, rest, ok]; + } + s = $substring(s, 1); + ok1 = false; + _tuple = p.parseInt(s); + min = _tuple[0]; + s = _tuple[1]; + ok1 = _tuple[2]; + if (!ok1) { + return [min, max, rest, ok]; + } + if (s === "") { + return [min, max, rest, ok]; + } + if (!((s.charCodeAt(0) === 44))) { + max = min; + } else { + s = $substring(s, 1); + if (s === "") { + return [min, max, rest, ok]; + } + if (s.charCodeAt(0) === 125) { + max = -1; + } else { + _tuple$1 = p.parseInt(s); + max = _tuple$1[0]; + s = _tuple$1[1]; + ok1 = _tuple$1[2]; + if (!ok1) { + return [min, max, rest, ok]; + } else if (max < 0) { + min = -1; + } + } + } + if (s === "" || !((s.charCodeAt(0) === 125))) { + return [min, max, rest, ok]; + } + rest = $substring(s, 1); + ok = true; + return [min, max, rest, ok]; + }; + $ptrType(parser).prototype.parsePerlFlags = function parsePerlFlags(s) { + var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, c, capture, end, err, flags, name, p, re, rest, s, sawFlag, sign, t; + rest = ""; + err = $ifaceNil; + p = this; + t = s; + if (t.length > 4 && (t.charCodeAt(2) === 80) && (t.charCodeAt(3) === 60)) { + end = strings.IndexRune(t, 62); + if (end < 0) { + err = checkUTF8(t); + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = ""; + _tmp$1 = err; + rest = _tmp; + err = _tmp$1; + return [rest, err]; + } + _tmp$2 = ""; + _tmp$3 = new Error.ptr("invalid named capture", s); + rest = _tmp$2; + err = _tmp$3; + return [rest, err]; + } + capture = $substring(t, 0, (end + 1 >> 0)); + name = $substring(t, 4, end); + err = checkUTF8(name); + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$4 = ""; + _tmp$5 = err; + rest = _tmp$4; + err = _tmp$5; + return [rest, err]; + } + if (!isValidCaptureName(name)) { + _tmp$6 = ""; + _tmp$7 = new Error.ptr("invalid named capture", capture); + rest = _tmp$6; + err = _tmp$7; + return [rest, err]; + } + p.numCap = p.numCap + (1) >> 0; + re = p.op(128); + re.Cap = p.numCap; + re.Name = name; + _tmp$8 = $substring(t, (end + 1 >> 0)); + _tmp$9 = $ifaceNil; + rest = _tmp$8; + err = _tmp$9; + return [rest, err]; + } + c = 0; + t = $substring(t, 2); + flags = p.flags; + sign = 1; + sawFlag = false; + Loop: + while (true) { + if (!(!(t === ""))) { break; } + _tuple = nextRune(t); + c = _tuple[0]; + t = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$10 = ""; + _tmp$11 = err; + rest = _tmp$10; + err = _tmp$11; + return [rest, err]; + } + _1 = c; + if (_1 === (105)) { + flags = (flags | (1)) >>> 0; + sawFlag = true; + } else if (_1 === (109)) { + flags = (flags & ~(16)) << 16 >>> 16; + sawFlag = true; + } else if (_1 === (115)) { + flags = (flags | (8)) >>> 0; + sawFlag = true; + } else if (_1 === (85)) { + flags = (flags | (32)) >>> 0; + sawFlag = true; + } else if (_1 === (45)) { + if (sign < 0) { + break Loop; + } + sign = -1; + flags = ~flags << 16 >>> 16; + sawFlag = false; + } else if ((_1 === (58)) || (_1 === (41))) { + if (sign < 0) { + if (!sawFlag) { + break Loop; + } + flags = ~flags << 16 >>> 16; + } + if (c === 58) { + p.op(128); + } + p.flags = flags; + _tmp$12 = t; + _tmp$13 = $ifaceNil; + rest = _tmp$12; + err = _tmp$13; + return [rest, err]; + } else { + break Loop; + } + } + _tmp$14 = ""; + _tmp$15 = new Error.ptr("invalid or unsupported Perl syntax", $substring(s, 0, (s.length - t.length >> 0))); + rest = _tmp$14; + err = _tmp$15; + return [rest, err]; + }; + isValidCaptureName = function isValidCaptureName$1(name) { + var _i, _ref, _rune, c, name; + if (name === "") { + return false; + } + _ref = name; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + c = _rune[0]; + if (!((c === 95)) && !isalnum(c)) { + return false; + } + _i += _rune[1]; + } + return true; + }; + $ptrType(parser).prototype.parseInt = function parseInt(s) { + var i, n, ok, p, rest, s, t; + n = 0; + rest = ""; + ok = false; + p = this; + if (s === "" || s.charCodeAt(0) < 48 || 57 < s.charCodeAt(0)) { + return [n, rest, ok]; + } + if (s.length >= 2 && (s.charCodeAt(0) === 48) && 48 <= s.charCodeAt(1) && s.charCodeAt(1) <= 57) { + return [n, rest, ok]; + } + t = s; + while (true) { + if (!(!(s === "") && 48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57)) { break; } + s = $substring(s, 1); + } + rest = s; + ok = true; + t = $substring(t, 0, (t.length - s.length >> 0)); + i = 0; + while (true) { + if (!(i < t.length)) { break; } + if (n >= 100000000) { + n = -1; + break; + } + n = (($imul(n, 10)) + ((t.charCodeAt(i) >> 0)) >> 0) - 48 >> 0; + i = i + (1) >> 0; + } + return [n, rest, ok]; + }; + isCharClass = function isCharClass$1(re) { + var re; + return (re.Op === 3) && (re.Rune.$length === 1) || (re.Op === 4) || (re.Op === 5) || (re.Op === 6); + }; + matchRune = function matchRune$1(re, r) { + var _1, i, r, re, x, x$1, x$2, x$3; + _1 = re.Op; + if (_1 === (3)) { + return (re.Rune.$length === 1) && ((x = re.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])) === r); + } else if (_1 === (4)) { + i = 0; + while (true) { + if (!(i < re.Rune.$length)) { break; } + if ((x$1 = re.Rune, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])) <= r && r <= (x$2 = re.Rune, x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3]))) { + return true; + } + i = i + (2) >> 0; + } + return false; + } else if (_1 === (5)) { + return !((r === 10)); + } else if (_1 === (6)) { + return true; + } + return false; + }; + $ptrType(parser).prototype.parseVerticalBar = function parseVerticalBar() { + var {_r, _r$1, p, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r = p.concat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + _r$1 = p.swapVerticalBar(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!_r$1) { */ case 2: + p.op(129); + /* } */ case 3: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: parseVerticalBar, $c: true, $r, _r, _r$1, p, $s};return $f; + }; + mergeCharClass = function mergeCharClass$1(dst, src) { + var _1, dst, src, x, x$1, x$2, x$3, x$4; + switch (0) { default: + _1 = dst.Op; + if (_1 === (6)) { + } else if (_1 === (5)) { + if (matchRune(src, 10)) { + dst.Op = 6; + } + } else if (_1 === (4)) { + if (src.Op === 3) { + dst.Rune = appendLiteral(dst.Rune, (x = src.Rune, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), src.Flags); + } else { + dst.Rune = appendClass(dst.Rune, src.Rune); + } + } else if (_1 === (3)) { + if (((x$1 = src.Rune, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) === (x$2 = dst.Rune, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))) && (src.Flags === dst.Flags)) { + break; + } + dst.Op = 4; + dst.Rune = appendLiteral($subslice(dst.Rune, 0, 0), (x$3 = dst.Rune, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), dst.Flags); + dst.Rune = appendLiteral(dst.Rune, (x$4 = src.Rune, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])), src.Flags); + } + } + }; + $ptrType(parser).prototype.swapVerticalBar = function swapVerticalBar() { + var {_tmp, _tmp$1, n, p, re1, re1$1, re2, re3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + n = p.stack.$length; + if (n >= 3 && ((x = p.stack, x$1 = n - 2 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op === 129) && isCharClass((x$2 = p.stack, x$3 = n - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3]))) && isCharClass((x$4 = p.stack, x$5 = n - 3 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])))) { + re1 = (x$6 = p.stack, x$7 = n - 1 >> 0, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])); + re3 = (x$8 = p.stack, x$9 = n - 3 >> 0, ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9])); + if (re1.Op > re3.Op) { + _tmp = re3; + _tmp$1 = re1; + re1 = _tmp; + re3 = _tmp$1; + (x$10 = p.stack, x$11 = n - 3 >> 0, ((x$11 < 0 || x$11 >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + x$11] = re3)); + } + mergeCharClass(re3, re1); + p.reuse(re1); + p.stack = $subslice(p.stack, 0, (n - 1 >> 0)); + $s = -1; return true; + } + /* */ if (n >= 2) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (n >= 2) { */ case 1: + re1$1 = (x$12 = p.stack, x$13 = n - 1 >> 0, ((x$13 < 0 || x$13 >= x$12.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + x$13])); + re2 = (x$14 = p.stack, x$15 = n - 2 >> 0, ((x$15 < 0 || x$15 >= x$14.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + x$15])); + /* */ if (re2.Op === 129) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (re2.Op === 129) { */ case 3: + /* */ if (n >= 3) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (n >= 3) { */ case 5: + $r = cleanAlt((x$16 = p.stack, x$17 = n - 3 >> 0, ((x$17 < 0 || x$17 >= x$16.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + x$17]))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + (x$18 = p.stack, x$19 = n - 2 >> 0, ((x$19 < 0 || x$19 >= x$18.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$18.$array[x$18.$offset + x$19] = re1$1)); + (x$20 = p.stack, x$21 = n - 1 >> 0, ((x$21 < 0 || x$21 >= x$20.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$20.$array[x$20.$offset + x$21] = re2)); + $s = -1; return true; + /* } */ case 4: + /* } */ case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: swapVerticalBar, $c: true, $r, _tmp, _tmp$1, n, p, re1, re1$1, re2, re3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s};return $f; + }; + $ptrType(parser).prototype.parseRightParen = function parseRightParen() { + var {_r, _r$1, _r$2, n, p, re1, re2, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r = p.concat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + _r$1 = p.swapVerticalBar(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_r$1) { */ case 2: + p.stack = $subslice(p.stack, 0, (p.stack.$length - 1 >> 0)); + /* } */ case 3: + _r$2 = p.alternate(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + n = p.stack.$length; + if (n < 2) { + $s = -1; return new Error.ptr("unexpected )", p.wholeRegexp); + } + re1 = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + re2 = (x$2 = p.stack, x$3 = n - 2 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])); + p.stack = $subslice(p.stack, 0, (n - 2 >> 0)); + if (!((re2.Op === 128))) { + $s = -1; return new Error.ptr("unexpected )", p.wholeRegexp); + } + p.flags = re2.Flags; + if (re2.Cap === 0) { + p.push(re1); + } else { + re2.Op = 13; + re2.Sub = $subslice(new sliceType$4(re2.Sub0), 0, 1); + (x$4 = re2.Sub, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0] = re1)); + p.push(re2); + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: parseRightParen, $c: true, $r, _r, _r$1, _r$2, n, p, re1, re2, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + $ptrType(parser).prototype.parseEscape = function parseEscape(s) { + var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, c, err, i, nhex, p, r, rest, s, t, v, x, y; + r = 0; + rest = ""; + err = $ifaceNil; + p = this; + t = $substring(s, 1); + if (t === "") { + _tmp = 0; + _tmp$1 = ""; + _tmp$2 = new Error.ptr("trailing backslash at end of expression", ""); + r = _tmp; + rest = _tmp$1; + err = _tmp$2; + return [r, rest, err]; + } + _tuple = nextRune(t); + c = _tuple[0]; + t = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$3 = 0; + _tmp$4 = ""; + _tmp$5 = err; + r = _tmp$3; + rest = _tmp$4; + err = _tmp$5; + return [r, rest, err]; + } + Switch: + switch (0) { default: + _1 = c; + if ((_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55))) { + if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { + break; + } + r = c - 48 >> 0; + i = 1; + while (true) { + if (!(i < 3)) { break; } + if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { + break; + } + r = (($imul(r, 8)) + ((t.charCodeAt(0) >> 0)) >> 0) - 48 >> 0; + t = $substring(t, 1); + i = i + (1) >> 0; + } + _tmp$6 = r; + _tmp$7 = t; + _tmp$8 = $ifaceNil; + r = _tmp$6; + rest = _tmp$7; + err = _tmp$8; + return [r, rest, err]; + } else if (_1 === (48)) { + r = c - 48 >> 0; + i = 1; + while (true) { + if (!(i < 3)) { break; } + if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) { + break; + } + r = (($imul(r, 8)) + ((t.charCodeAt(0) >> 0)) >> 0) - 48 >> 0; + t = $substring(t, 1); + i = i + (1) >> 0; + } + _tmp$9 = r; + _tmp$10 = t; + _tmp$11 = $ifaceNil; + r = _tmp$9; + rest = _tmp$10; + err = _tmp$11; + return [r, rest, err]; + } else if (_1 === (120)) { + if (t === "") { + break; + } + _tuple$1 = nextRune(t); + c = _tuple$1[0]; + t = _tuple$1[1]; + err = _tuple$1[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$12 = 0; + _tmp$13 = ""; + _tmp$14 = err; + r = _tmp$12; + rest = _tmp$13; + err = _tmp$14; + return [r, rest, err]; + } + if (c === 123) { + nhex = 0; + r = 0; + while (true) { + if (t === "") { + break Switch; + } + _tuple$2 = nextRune(t); + c = _tuple$2[0]; + t = _tuple$2[1]; + err = _tuple$2[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$15 = 0; + _tmp$16 = ""; + _tmp$17 = err; + r = _tmp$15; + rest = _tmp$16; + err = _tmp$17; + return [r, rest, err]; + } + if (c === 125) { + break; + } + v = unhex(c); + if (v < 0) { + break Switch; + } + r = ($imul(r, 16)) + v >> 0; + if (r > 1114111) { + break Switch; + } + nhex = nhex + (1) >> 0; + } + if (nhex === 0) { + break Switch; + } + _tmp$18 = r; + _tmp$19 = t; + _tmp$20 = $ifaceNil; + r = _tmp$18; + rest = _tmp$19; + err = _tmp$20; + return [r, rest, err]; + } + x = unhex(c); + _tuple$3 = nextRune(t); + c = _tuple$3[0]; + t = _tuple$3[1]; + err = _tuple$3[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$21 = 0; + _tmp$22 = ""; + _tmp$23 = err; + r = _tmp$21; + rest = _tmp$22; + err = _tmp$23; + return [r, rest, err]; + } + y = unhex(c); + if (x < 0 || y < 0) { + break; + } + _tmp$24 = ($imul(x, 16)) + y >> 0; + _tmp$25 = t; + _tmp$26 = $ifaceNil; + r = _tmp$24; + rest = _tmp$25; + err = _tmp$26; + return [r, rest, err]; + } else if (_1 === (97)) { + _tmp$27 = 7; + _tmp$28 = t; + _tmp$29 = err; + r = _tmp$27; + rest = _tmp$28; + err = _tmp$29; + return [r, rest, err]; + } else if (_1 === (102)) { + _tmp$30 = 12; + _tmp$31 = t; + _tmp$32 = err; + r = _tmp$30; + rest = _tmp$31; + err = _tmp$32; + return [r, rest, err]; + } else if (_1 === (110)) { + _tmp$33 = 10; + _tmp$34 = t; + _tmp$35 = err; + r = _tmp$33; + rest = _tmp$34; + err = _tmp$35; + return [r, rest, err]; + } else if (_1 === (114)) { + _tmp$36 = 13; + _tmp$37 = t; + _tmp$38 = err; + r = _tmp$36; + rest = _tmp$37; + err = _tmp$38; + return [r, rest, err]; + } else if (_1 === (116)) { + _tmp$39 = 9; + _tmp$40 = t; + _tmp$41 = err; + r = _tmp$39; + rest = _tmp$40; + err = _tmp$41; + return [r, rest, err]; + } else if (_1 === (118)) { + _tmp$42 = 11; + _tmp$43 = t; + _tmp$44 = err; + r = _tmp$42; + rest = _tmp$43; + err = _tmp$44; + return [r, rest, err]; + } else if (c < 128 && !isalnum(c)) { + _tmp$45 = c; + _tmp$46 = t; + _tmp$47 = $ifaceNil; + r = _tmp$45; + rest = _tmp$46; + err = _tmp$47; + return [r, rest, err]; + } + } + _tmp$48 = 0; + _tmp$49 = ""; + _tmp$50 = new Error.ptr("invalid escape sequence", $substring(s, 0, (s.length - t.length >> 0))); + r = _tmp$48; + rest = _tmp$49; + err = _tmp$50; + return [r, rest, err]; + }; + $ptrType(parser).prototype.parseClassChar = function parseClassChar(s, wholeClass) { + var _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, err, p, r, rest, s, wholeClass; + r = 0; + rest = ""; + err = $ifaceNil; + p = this; + if (s === "") { + _tmp = 0; + _tmp$1 = ""; + _tmp$2 = new Error.ptr("missing closing ]", wholeClass); + r = _tmp; + rest = _tmp$1; + err = _tmp$2; + return [r, rest, err]; + } + if (s.charCodeAt(0) === 92) { + _tuple = p.parseEscape(s); + r = _tuple[0]; + rest = _tuple[1]; + err = _tuple[2]; + return [r, rest, err]; + } + _tuple$1 = nextRune(s); + r = _tuple$1[0]; + rest = _tuple$1[1]; + err = _tuple$1[2]; + return [r, rest, err]; + }; + $ptrType(parser).prototype.parsePerlClassEscape = function parsePerlClassEscape(s, r) { + var {$24r, _entry, _r, _tmp, _tmp$1, g, out, p, r, rest, s, $s, $r, $c} = $restore(this, {s, r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = sliceType$1.nil; + rest = ""; + p = this; + if ((((p.flags & 64) >>> 0) === 0) || s.length < 2 || !((s.charCodeAt(0) === 92))) { + $s = -1; return [out, rest]; + } + g = $clone((_entry = $mapIndex(perlGroup,$String.keyFor($substring(s, 0, 2))), _entry !== undefined ? _entry.v : new charGroup.ptr(0, sliceType$1.nil)), charGroup); + if (g.sign === 0) { + $s = -1; return [out, rest]; + } + _r = p.appendGroup(r, $clone(g, charGroup)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp = _r; + _tmp$1 = $substring(s, 2); + out = _tmp; + rest = _tmp$1; + $24r = [out, rest]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: parsePerlClassEscape, $c: true, $r, $24r, _entry, _r, _tmp, _tmp$1, g, out, p, r, rest, s, $s};return $f; + }; + $ptrType(parser).prototype.parseNamedClass = function parseNamedClass(s, r) { + var {$24r, _entry, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, err, g, i, name, out, p, r, rest, s, $s, $r, $c} = $restore(this, {s, r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = sliceType$1.nil; + rest = ""; + err = $ifaceNil; + p = this; + if (s.length < 2 || !((s.charCodeAt(0) === 91)) || !((s.charCodeAt(1) === 58))) { + $s = -1; return [out, rest, err]; + } + i = strings.Index($substring(s, 2), ":]"); + if (i < 0) { + $s = -1; return [out, rest, err]; + } + i = i + (2) >> 0; + _tmp = $substring(s, 0, (i + 2 >> 0)); + _tmp$1 = $substring(s, (i + 2 >> 0)); + name = _tmp; + s = _tmp$1; + g = $clone((_entry = $mapIndex(posixGroup,$String.keyFor(name)), _entry !== undefined ? _entry.v : new charGroup.ptr(0, sliceType$1.nil)), charGroup); + if (g.sign === 0) { + _tmp$2 = sliceType$1.nil; + _tmp$3 = ""; + _tmp$4 = new Error.ptr("invalid character class range", name); + out = _tmp$2; + rest = _tmp$3; + err = _tmp$4; + $s = -1; return [out, rest, err]; + } + _r = p.appendGroup(r, $clone(g, charGroup)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp$5 = _r; + _tmp$6 = s; + _tmp$7 = $ifaceNil; + out = _tmp$5; + rest = _tmp$6; + err = _tmp$7; + $24r = [out, rest, err]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: parseNamedClass, $c: true, $r, $24r, _entry, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, err, g, i, name, out, p, r, rest, s, $s};return $f; + }; + $ptrType(parser).prototype.appendGroup = function appendGroup(r, g) { + var {_r, g, p, r, tmp, $s, $r, $c} = $restore(this, {r, g}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (((p.flags & 1) >>> 0) === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (((p.flags & 1) >>> 0) === 0) { */ case 1: + if (g.sign < 0) { + r = appendNegatedClass(r, g.class$1); + } else { + r = appendClass(r, g.class$1); + } + $s = 3; continue; + /* } else { */ case 2: + tmp = $subslice(p.tmpClass, 0, 0); + tmp = appendFoldedClass(tmp, g.class$1); + p.tmpClass = tmp; + _r = cleanClass((p.$ptr_tmpClass || (p.$ptr_tmpClass = new ptrType$2(function() { return this.$target.tmpClass; }, function($v) { this.$target.tmpClass = $v; }, p)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tmp = _r; + if (g.sign < 0) { + r = appendNegatedClass(r, tmp); + } else { + r = appendClass(r, tmp); + } + /* } */ case 3: + $s = -1; return r; + /* */ } return; } var $f = {$blk: appendGroup, $c: true, $r, _r, g, p, r, tmp, $s};return $f; + }; + unicodeTable = function unicodeTable$1(name) { + var _entry, _entry$1, _entry$2, _entry$3, name, t, t$1; + if (name === "Any") { + return [anyTable, anyTable]; + } + t = (_entry = $mapIndex(unicode.Categories,$String.keyFor(name)), _entry !== undefined ? _entry.v : ptrType$3.nil); + if (!(t === ptrType$3.nil)) { + return [t, (_entry$1 = $mapIndex(unicode.FoldCategory,$String.keyFor(name)), _entry$1 !== undefined ? _entry$1.v : ptrType$3.nil)]; + } + t$1 = (_entry$2 = $mapIndex(unicode.Scripts,$String.keyFor(name)), _entry$2 !== undefined ? _entry$2.v : ptrType$3.nil); + if (!(t$1 === ptrType$3.nil)) { + return [t$1, (_entry$3 = $mapIndex(unicode.FoldScript,$String.keyFor(name)), _entry$3 !== undefined ? _entry$3.v : ptrType$3.nil)]; + } + return [ptrType$3.nil, ptrType$3.nil]; + }; + $ptrType(parser).prototype.parseUnicodeClass = function parseUnicodeClass(s, r) { + var {_r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, end, err, fold, name, out, p, r, rest, s, seq, sign, t, tab, tmp, $s, $r, $c} = $restore(this, {s, r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = sliceType$1.nil; + rest = ""; + err = $ifaceNil; + p = this; + if ((((p.flags & 128) >>> 0) === 0) || s.length < 2 || !((s.charCodeAt(0) === 92)) || !((s.charCodeAt(1) === 112)) && !((s.charCodeAt(1) === 80))) { + $s = -1; return [out, rest, err]; + } + sign = 1; + if (s.charCodeAt(1) === 80) { + sign = -1; + } + t = $substring(s, 2); + _tuple = nextRune(t); + c = _tuple[0]; + t = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [out, rest, err]; + } + _tmp = ""; + _tmp$1 = ""; + seq = _tmp; + name = _tmp$1; + if (!((c === 123))) { + seq = $substring(s, 0, (s.length - t.length >> 0)); + name = $substring(seq, 2); + } else { + end = strings.IndexRune(s, 125); + if (end < 0) { + err = checkUTF8(s); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [out, rest, err]; + } + _tmp$2 = sliceType$1.nil; + _tmp$3 = ""; + _tmp$4 = new Error.ptr("invalid character class range", s); + out = _tmp$2; + rest = _tmp$3; + err = _tmp$4; + $s = -1; return [out, rest, err]; + } + _tmp$5 = $substring(s, 0, (end + 1 >> 0)); + _tmp$6 = $substring(s, (end + 1 >> 0)); + seq = _tmp$5; + t = _tmp$6; + name = $substring(s, 3, end); + err = checkUTF8(name); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [out, rest, err]; + } + } + if (!(name === "") && (name.charCodeAt(0) === 94)) { + sign = -sign; + name = $substring(name, 1); + } + _tuple$1 = unicodeTable(name); + tab = _tuple$1[0]; + fold = _tuple$1[1]; + if (tab === ptrType$3.nil) { + _tmp$7 = sliceType$1.nil; + _tmp$8 = ""; + _tmp$9 = new Error.ptr("invalid character class range", seq); + out = _tmp$7; + rest = _tmp$8; + err = _tmp$9; + $s = -1; return [out, rest, err]; + } + /* */ if ((((p.flags & 1) >>> 0) === 0) || fold === ptrType$3.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((((p.flags & 1) >>> 0) === 0) || fold === ptrType$3.nil) { */ case 1: + if (sign > 0) { + r = appendTable(r, tab); + } else { + r = appendNegatedTable(r, tab); + } + $s = 3; continue; + /* } else { */ case 2: + tmp = $subslice(p.tmpClass, 0, 0); + tmp = appendTable(tmp, tab); + tmp = appendTable(tmp, fold); + p.tmpClass = tmp; + _r = cleanClass((p.$ptr_tmpClass || (p.$ptr_tmpClass = new ptrType$2(function() { return this.$target.tmpClass; }, function($v) { this.$target.tmpClass = $v; }, p)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tmp = _r; + if (sign > 0) { + r = appendClass(r, tmp); + } else { + r = appendNegatedClass(r, tmp); + } + /* } */ case 3: + _tmp$10 = r; + _tmp$11 = t; + _tmp$12 = $ifaceNil; + out = _tmp$10; + rest = _tmp$11; + err = _tmp$12; + $s = -1; return [out, rest, err]; + /* */ } return; } var $f = {$blk: parseUnicodeClass, $c: true, $r, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, end, err, fold, name, out, p, r, rest, s, seq, sign, t, tab, tmp, $s};return $f; + }; + $ptrType(parser).prototype.parseClass = function parseClass(s) { + var {_r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, class$1, err, err$1, err$2, first, hi, lo, nclass, nclass$1, nclass$2, nt, nt$1, nt$2, p, re, rest, rng, s, sign, size, t, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rest = ""; + err = $ifaceNil; + p = this; + t = $substring(s, 1); + re = p.newRegexp(4); + re.Flags = p.flags; + re.Rune = $subslice(new sliceType$1(re.Rune0), 0, 0); + sign = 1; + if (!(t === "") && (t.charCodeAt(0) === 94)) { + sign = -1; + t = $substring(t, 1); + if (((p.flags & 4) >>> 0) === 0) { + re.Rune = $append(re.Rune, 10, 10); + } + } + class$1 = re.Rune; + first = true; + /* while (true) { */ case 1: + /* if (!(t === "" || !((t.charCodeAt(0) === 93)) || first)) { break; } */ if(!(t === "" || !((t.charCodeAt(0) === 93)) || first)) { $s = 2; continue; } + if (!(t === "") && (t.charCodeAt(0) === 45) && (((p.flags & 64) >>> 0) === 0) && !first && ((t.length === 1) || !((t.charCodeAt(1) === 93)))) { + _tuple = utf8.DecodeRuneInString($substring(t, 1)); + size = _tuple[1]; + _tmp = ""; + _tmp$1 = new Error.ptr("invalid character class range", $substring(t, 0, (1 + size >> 0))); + rest = _tmp; + err = _tmp$1; + $s = -1; return [rest, err]; + } + first = false; + /* */ if (t.length > 2 && (t.charCodeAt(0) === 91) && (t.charCodeAt(1) === 58)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (t.length > 2 && (t.charCodeAt(0) === 91) && (t.charCodeAt(1) === 58)) { */ case 3: + _r = p.parseNamedClass(t, class$1); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + nclass = _tuple$1[0]; + nt = _tuple$1[1]; + err$1 = _tuple$1[2]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + _tmp$2 = ""; + _tmp$3 = err$1; + rest = _tmp$2; + err = _tmp$3; + $s = -1; return [rest, err]; + } + if (!(nclass === sliceType$1.nil)) { + _tmp$4 = nclass; + _tmp$5 = nt; + class$1 = _tmp$4; + t = _tmp$5; + /* continue; */ $s = 1; continue; + } + /* } */ case 4: + _r$1 = p.parseUnicodeClass(t, class$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$2 = _r$1; + nclass$1 = _tuple$2[0]; + nt$1 = _tuple$2[1]; + err$2 = _tuple$2[2]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + _tmp$6 = ""; + _tmp$7 = err$2; + rest = _tmp$6; + err = _tmp$7; + $s = -1; return [rest, err]; + } + if (!(nclass$1 === sliceType$1.nil)) { + _tmp$8 = nclass$1; + _tmp$9 = nt$1; + class$1 = _tmp$8; + t = _tmp$9; + /* continue; */ $s = 1; continue; + } + _r$2 = p.parsePerlClassEscape(t, class$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$3 = _r$2; + nclass$2 = _tuple$3[0]; + nt$2 = _tuple$3[1]; + if (!(nclass$2 === sliceType$1.nil)) { + _tmp$10 = nclass$2; + _tmp$11 = nt$2; + class$1 = _tmp$10; + t = _tmp$11; + /* continue; */ $s = 1; continue; + } + rng = t; + _tmp$12 = 0; + _tmp$13 = 0; + lo = _tmp$12; + hi = _tmp$13; + _tuple$4 = p.parseClassChar(t, s); + lo = _tuple$4[0]; + t = _tuple$4[1]; + err$2 = _tuple$4[2]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + _tmp$14 = ""; + _tmp$15 = err$2; + rest = _tmp$14; + err = _tmp$15; + $s = -1; return [rest, err]; + } + hi = lo; + if (t.length >= 2 && (t.charCodeAt(0) === 45) && !((t.charCodeAt(1) === 93))) { + t = $substring(t, 1); + _tuple$5 = p.parseClassChar(t, s); + hi = _tuple$5[0]; + t = _tuple$5[1]; + err$2 = _tuple$5[2]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + _tmp$16 = ""; + _tmp$17 = err$2; + rest = _tmp$16; + err = _tmp$17; + $s = -1; return [rest, err]; + } + if (hi < lo) { + rng = $substring(rng, 0, (rng.length - t.length >> 0)); + _tmp$18 = ""; + _tmp$19 = new Error.ptr("invalid character class range", rng); + rest = _tmp$18; + err = _tmp$19; + $s = -1; return [rest, err]; + } + } + if (((p.flags & 1) >>> 0) === 0) { + class$1 = appendRange(class$1, lo, hi); + } else { + class$1 = appendFoldedRange(class$1, lo, hi); + } + $s = 1; continue; + case 2: + t = $substring(t, 1); + re.Rune = class$1; + _r$3 = cleanClass((re.$ptr_Rune || (re.$ptr_Rune = new ptrType$2(function() { return this.$target.Rune; }, function($v) { this.$target.Rune = $v; }, re)))); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + class$1 = _r$3; + if (sign < 0) { + class$1 = negateClass(class$1); + } + re.Rune = class$1; + p.push(re); + _tmp$20 = t; + _tmp$21 = $ifaceNil; + rest = _tmp$20; + err = _tmp$21; + $s = -1; return [rest, err]; + /* */ } return; } var $f = {$blk: parseClass, $c: true, $r, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, class$1, err, err$1, err$2, first, hi, lo, nclass, nclass$1, nclass$2, nt, nt$1, nt$2, p, re, rest, rng, s, sign, size, t, $s};return $f; + }; + cleanClass = function cleanClass$1(rp) { + var {_tmp, _tmp$1, hi, i, lo, r, rp, w, x, x$1, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {rp}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = sort.Sort((x = new ranges.ptr(rp), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + r = rp.$get(); + if (r.$length < 2) { + $s = -1; return r; + } + w = 2; + i = 2; + while (true) { + if (!(i < r.$length)) { break; } + _tmp = ((i < 0 || i >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + i]); + _tmp$1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$1])); + lo = _tmp; + hi = _tmp$1; + if (lo <= ((x$2 = w - 1 >> 0, ((x$2 < 0 || x$2 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$2])) + 1 >> 0)) { + if (hi > (x$3 = w - 1 >> 0, ((x$3 < 0 || x$3 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$3]))) { + (x$4 = w - 1 >> 0, ((x$4 < 0 || x$4 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$4] = hi)); + } + i = i + (2) >> 0; + continue; + } + ((w < 0 || w >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + w] = lo); + (x$5 = w + 1 >> 0, ((x$5 < 0 || x$5 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$5] = hi)); + w = w + (2) >> 0; + i = i + (2) >> 0; + } + $s = -1; return $subslice(r, 0, w); + /* */ } return; } var $f = {$blk: cleanClass$1, $c: true, $r, _tmp, _tmp$1, hi, i, lo, r, rp, w, x, x$1, x$2, x$3, x$4, x$5, $s};return $f; + }; + appendLiteral = function appendLiteral$1(r, x, flags) { + var flags, r, x; + if (!((((flags & 1) >>> 0) === 0))) { + return appendFoldedRange(r, x, x); + } + return appendRange(r, x, x); + }; + appendRange = function appendRange$1(r, lo, hi) { + var _tmp, _tmp$1, hi, i, lo, n, r, rhi, rlo, x, x$1, x$2, x$3; + n = r.$length; + i = 2; + while (true) { + if (!(i <= 4)) { break; } + if (n >= i) { + _tmp = (x = n - i >> 0, ((x < 0 || x >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x])); + _tmp$1 = (x$1 = (n - i >> 0) + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$1])); + rlo = _tmp; + rhi = _tmp$1; + if (lo <= (rhi + 1 >> 0) && rlo <= (hi + 1 >> 0)) { + if (lo < rlo) { + (x$2 = n - i >> 0, ((x$2 < 0 || x$2 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$2] = lo)); + } + if (hi > rhi) { + (x$3 = (n - i >> 0) + 1 >> 0, ((x$3 < 0 || x$3 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$3] = hi)); + } + return r; + } + } + i = i + (2) >> 0; + } + return $append(r, lo, hi); + }; + appendFoldedRange = function appendFoldedRange$1(r, lo, hi) { + var c, f, hi, lo, r; + if (lo <= 65 && hi >= 125251) { + return appendRange(r, lo, hi); + } + if (hi < 65 || lo > 125251) { + return appendRange(r, lo, hi); + } + if (lo < 65) { + r = appendRange(r, lo, 64); + lo = 65; + } + if (hi > 125251) { + r = appendRange(r, 125252, hi); + hi = 125251; + } + c = lo; + while (true) { + if (!(c <= hi)) { break; } + r = appendRange(r, c, c); + f = unicode.SimpleFold(c); + while (true) { + if (!(!((f === c)))) { break; } + r = appendRange(r, f, f); + f = unicode.SimpleFold(f); + } + c = c + (1) >> 0; + } + return r; + }; + appendClass = function appendClass$1(r, x) { + var i, r, x, x$1; + i = 0; + while (true) { + if (!(i < x.$length)) { break; } + r = appendRange(r, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]))); + i = i + (2) >> 0; + } + return r; + }; + appendFoldedClass = function appendFoldedClass$1(r, x) { + var i, r, x, x$1; + i = 0; + while (true) { + if (!(i < x.$length)) { break; } + r = appendFoldedRange(r, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]), (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]))); + i = i + (2) >> 0; + } + return r; + }; + appendNegatedClass = function appendNegatedClass$1(r, x) { + var _tmp, _tmp$1, hi, i, lo, nextLo, r, x, x$1; + nextLo = 0; + i = 0; + while (true) { + if (!(i < x.$length)) { break; } + _tmp = ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]); + _tmp$1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + lo = _tmp; + hi = _tmp$1; + if (nextLo <= (lo - 1 >> 0)) { + r = appendRange(r, nextLo, lo - 1 >> 0); + } + nextLo = hi + 1 >> 0; + i = i + (2) >> 0; + } + if (nextLo <= 1114111) { + r = appendRange(r, nextLo, 1114111); + } + return r; + }; + appendTable = function appendTable$1(r, x) { + var _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, c$1, hi, hi$1, lo, lo$1, r, stride, stride$1, x, xr, xr$1; + _ref = x.R16; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + xr = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), unicode.Range16); + _tmp = ((xr.Lo >> 0)); + _tmp$1 = ((xr.Hi >> 0)); + _tmp$2 = ((xr.Stride >> 0)); + lo = _tmp; + hi = _tmp$1; + stride = _tmp$2; + if (stride === 1) { + r = appendRange(r, lo, hi); + _i++; + continue; + } + c = lo; + while (true) { + if (!(c <= hi)) { break; } + r = appendRange(r, c, c); + c = c + (stride) >> 0; + } + _i++; + } + _ref$1 = x.R32; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + xr$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), unicode.Range32); + _tmp$3 = ((xr$1.Lo >> 0)); + _tmp$4 = ((xr$1.Hi >> 0)); + _tmp$5 = ((xr$1.Stride >> 0)); + lo$1 = _tmp$3; + hi$1 = _tmp$4; + stride$1 = _tmp$5; + if (stride$1 === 1) { + r = appendRange(r, lo$1, hi$1); + _i$1++; + continue; + } + c$1 = lo$1; + while (true) { + if (!(c$1 <= hi$1)) { break; } + r = appendRange(r, c$1, c$1); + c$1 = c$1 + (stride$1) >> 0; + } + _i$1++; + } + return r; + }; + appendNegatedTable = function appendNegatedTable$1(r, x) { + var _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, c$1, hi, hi$1, lo, lo$1, nextLo, r, stride, stride$1, x, xr, xr$1; + nextLo = 0; + _ref = x.R16; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + xr = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), unicode.Range16); + _tmp = ((xr.Lo >> 0)); + _tmp$1 = ((xr.Hi >> 0)); + _tmp$2 = ((xr.Stride >> 0)); + lo = _tmp; + hi = _tmp$1; + stride = _tmp$2; + if (stride === 1) { + if (nextLo <= (lo - 1 >> 0)) { + r = appendRange(r, nextLo, lo - 1 >> 0); + } + nextLo = hi + 1 >> 0; + _i++; + continue; + } + c = lo; + while (true) { + if (!(c <= hi)) { break; } + if (nextLo <= (c - 1 >> 0)) { + r = appendRange(r, nextLo, c - 1 >> 0); + } + nextLo = c + 1 >> 0; + c = c + (stride) >> 0; + } + _i++; + } + _ref$1 = x.R32; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + xr$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), unicode.Range32); + _tmp$3 = ((xr$1.Lo >> 0)); + _tmp$4 = ((xr$1.Hi >> 0)); + _tmp$5 = ((xr$1.Stride >> 0)); + lo$1 = _tmp$3; + hi$1 = _tmp$4; + stride$1 = _tmp$5; + if (stride$1 === 1) { + if (nextLo <= (lo$1 - 1 >> 0)) { + r = appendRange(r, nextLo, lo$1 - 1 >> 0); + } + nextLo = hi$1 + 1 >> 0; + _i$1++; + continue; + } + c$1 = lo$1; + while (true) { + if (!(c$1 <= hi$1)) { break; } + if (nextLo <= (c$1 - 1 >> 0)) { + r = appendRange(r, nextLo, c$1 - 1 >> 0); + } + nextLo = c$1 + 1 >> 0; + c$1 = c$1 + (stride$1) >> 0; + } + _i$1++; + } + if (nextLo <= 1114111) { + r = appendRange(r, nextLo, 1114111); + } + return r; + }; + negateClass = function negateClass$1(r) { + var _tmp, _tmp$1, hi, i, lo, nextLo, r, w, x, x$1; + nextLo = 0; + w = 0; + i = 0; + while (true) { + if (!(i < r.$length)) { break; } + _tmp = ((i < 0 || i >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + i]); + _tmp$1 = (x = i + 1 >> 0, ((x < 0 || x >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x])); + lo = _tmp; + hi = _tmp$1; + if (nextLo <= (lo - 1 >> 0)) { + ((w < 0 || w >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + w] = nextLo); + (x$1 = w + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + x$1] = (lo - 1 >> 0))); + w = w + (2) >> 0; + } + nextLo = hi + 1 >> 0; + i = i + (2) >> 0; + } + r = $subslice(r, 0, w); + if (nextLo <= 1114111) { + r = $append(r, nextLo, 1114111); + } + return r; + }; + $ptrType(ranges).prototype.Less = function Less(i, j) { + var i, j, p, ra, x, x$1; + ra = this; + p = ra.p.$get(); + i = $imul(i, (2)); + j = $imul(j, (2)); + return ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]) || (((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) === ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j])) && (x = i + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])) > (x$1 = j + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])); + }; + ranges.prototype.Less = function(...$args) { return this.$val.Less(...$args); }; + $ptrType(ranges).prototype.Len = function Len() { + var _q, ra; + ra = this; + return (_q = ra.p.$get().$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + }; + ranges.prototype.Len = function(...$args) { return this.$val.Len(...$args); }; + $ptrType(ranges).prototype.Swap = function Swap(i, j) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, i, j, p, ra, x, x$1, x$2, x$3; + ra = this; + p = ra.p.$get(); + i = $imul(i, (2)); + j = $imul(j, (2)); + _tmp = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); + _tmp$1 = (x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x])); + _tmp$2 = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); + _tmp$3 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$1])); + ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i] = _tmp); + (x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$2] = _tmp$1)); + ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j] = _tmp$2); + (x$3 = j + 1 >> 0, ((x$3 < 0 || x$3 >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + x$3] = _tmp$3)); + }; + ranges.prototype.Swap = function(...$args) { return this.$val.Swap(...$args); }; + checkUTF8 = function checkUTF8$1(s) { + var _tuple, rune, s, size; + while (true) { + if (!(!(s === ""))) { break; } + _tuple = utf8.DecodeRuneInString(s); + rune = _tuple[0]; + size = _tuple[1]; + if ((rune === 65533) && (size === 1)) { + return new Error.ptr("invalid UTF-8", s); + } + s = $substring(s, size); + } + return $ifaceNil; + }; + nextRune = function nextRune$1(s) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, err, s, size, t; + c = 0; + t = ""; + err = $ifaceNil; + _tuple = utf8.DecodeRuneInString(s); + c = _tuple[0]; + size = _tuple[1]; + if ((c === 65533) && (size === 1)) { + _tmp = 0; + _tmp$1 = ""; + _tmp$2 = new Error.ptr("invalid UTF-8", s); + c = _tmp; + t = _tmp$1; + err = _tmp$2; + return [c, t, err]; + } + _tmp$3 = c; + _tmp$4 = $substring(s, size); + _tmp$5 = $ifaceNil; + c = _tmp$3; + t = _tmp$4; + err = _tmp$5; + return [c, t, err]; + }; + isalnum = function isalnum$1(c) { + var c; + return 48 <= c && c <= 57 || 65 <= c && c <= 90 || 97 <= c && c <= 122; + }; + unhex = function unhex$1(c) { + var c; + if (48 <= c && c <= 57) { + return c - 48 >> 0; + } + if (97 <= c && c <= 102) { + return (c - 97 >> 0) + 10 >> 0; + } + if (65 <= c && c <= 70) { + return (c - 65 >> 0) + 10 >> 0; + } + return -1; + }; + Op.prototype.String = function String$5() { + var i, x; + i = this.$val; + if (1 <= i && i <= 19) { + i = i - (1) << 24 >>> 24; + return $substring("NoMatchEmptyMatchLiteralCharClassAnyCharNotNLAnyCharBeginLineEndLineBeginTextEndTextWordBoundaryNoWordBoundaryCaptureStarPlusQuestRepeatConcatAlternate", ((i < 0 || i >= _Op_index_0.length) ? ($throwRuntimeError("index out of range"), undefined) : _Op_index_0[i]), (x = i + 1 << 24 >>> 24, ((x < 0 || x >= _Op_index_0.length) ? ($throwRuntimeError("index out of range"), undefined) : _Op_index_0[x]))); + } else if ((i === 128)) { + return "opPseudo"; + } else { + return "Op(" + strconv.FormatInt((new $Int64(0, i)), 10) + ")"; + } + }; + $ptrType(Op).prototype.String = function(...$args) { return new Op(this.$get()).String(...$args); }; + makePatchList = function makePatchList$1(n) { + var n; + return new patchList.ptr(n, n); + }; + $ptrType(patchList).prototype.patch = function patch(p, val) { + var head, i, l, p, val, x, x$1; + l = this; + head = l.head; + while (true) { + if (!(!((head === 0)))) { break; } + i = (x = p.Inst, x$1 = head >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (((head & 1) >>> 0) === 0) { + head = i.Out; + i.Out = val; + } else { + head = i.Arg; + i.Arg = val; + } + } + }; + patchList.prototype.patch = function(...$args) { return this.$val.patch(...$args); }; + $ptrType(patchList).prototype.append = function append(p, l2) { + var i, l1, l2, p, x, x$1; + l1 = this; + if (l1.head === 0) { + return l2; + } + if (l2.head === 0) { + return l1; + } + i = (x = p.Inst, x$1 = l1.tail >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (((l1.tail & 1) >>> 0) === 0) { + i.Out = l2.head; + } else { + i.Arg = l2.head; + } + return new patchList.ptr(l1.head, l2.tail); + }; + patchList.prototype.append = function(...$args) { return this.$val.append(...$args); }; + Compile = function Compile$1(re) { + var c, f, re; + c = new compiler.ptr(ptrType$4.nil); + c.init(); + f = $clone(c.compile(re), frag); + $clone(f.out, patchList).patch(c.p, c.inst(4).i); + c.p.Start = ((f.i >> 0)); + return [c.p, $ifaceNil]; + }; + $pkg.Compile = Compile; + $ptrType(compiler).prototype.init = function init() { + var c; + c = this; + c.p = new Prog.ptr(sliceType$6.nil, 0, 0); + c.p.NumCap = 2; + c.inst(5); + }; + $ptrType(compiler).prototype.compile = function compile(re) { + var _1, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, bra, c, f, f$1, f$2, f1, i, j, ket, re, sub, sub$1, sub$2, x, x$1, x$2, x$3; + c = this; + _1 = re.Op; + if (_1 === (1)) { + return c.fail(); + } else if (_1 === (2)) { + return c.nop(); + } else if (_1 === (3)) { + if (re.Rune.$length === 0) { + return c.nop(); + } + f = new frag.ptr(0, new patchList.ptr(0, 0), false); + _ref = re.Rune; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + j = _i; + f1 = $clone(c.rune($subslice(re.Rune, j, (j + 1 >> 0)), re.Flags), frag); + if (j === 0) { + frag.copy(f, f1); + } else { + frag.copy(f, c.cat($clone(f, frag), $clone(f1, frag))); + } + _i++; + } + return f; + } else if (_1 === (4)) { + return c.rune(re.Rune, re.Flags); + } else if (_1 === (5)) { + return c.rune(anyRuneNotNL, 0); + } else if (_1 === (6)) { + return c.rune(anyRune, 0); + } else if (_1 === (7)) { + return c.empty(1); + } else if (_1 === (8)) { + return c.empty(2); + } else if (_1 === (9)) { + return c.empty(4); + } else if (_1 === (10)) { + return c.empty(8); + } else if (_1 === (11)) { + return c.empty(16); + } else if (_1 === (12)) { + return c.empty(32); + } else if (_1 === (13)) { + bra = $clone(c.cap((((re.Cap << 1 >> 0) >>> 0))), frag); + sub = $clone(c.compile((x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))), frag); + ket = $clone(c.cap(((((re.Cap << 1 >> 0) | 1) >>> 0))), frag); + return c.cat($clone(c.cat($clone(bra, frag), $clone(sub, frag)), frag), $clone(ket, frag)); + } else if (_1 === (14)) { + return c.star($clone(c.compile((x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]))), frag), !((((re.Flags & 32) >>> 0) === 0))); + } else if (_1 === (15)) { + return c.plus($clone(c.compile((x$2 = re.Sub, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))), frag), !((((re.Flags & 32) >>> 0) === 0))); + } else if (_1 === (16)) { + return c.quest($clone(c.compile((x$3 = re.Sub, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0]))), frag), !((((re.Flags & 32) >>> 0) === 0))); + } else if (_1 === (18)) { + if (re.Sub.$length === 0) { + return c.nop(); + } + f$1 = new frag.ptr(0, new patchList.ptr(0, 0), false); + _ref$1 = re.Sub; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i = _i$1; + sub$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (i === 0) { + frag.copy(f$1, c.compile(sub$1)); + } else { + frag.copy(f$1, c.cat($clone(f$1, frag), $clone(c.compile(sub$1), frag))); + } + _i$1++; + } + return f$1; + } else if (_1 === (19)) { + f$2 = new frag.ptr(0, new patchList.ptr(0, 0), false); + _ref$2 = re.Sub; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + sub$2 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + frag.copy(f$2, c.alt($clone(f$2, frag), $clone(c.compile(sub$2), frag))); + _i$2++; + } + return f$2; + } + $panic(new $String("regexp: unhandled case in compile")); + }; + $ptrType(compiler).prototype.inst = function inst(op$2) { + var c, f, op$2; + c = this; + f = new frag.ptr(((c.p.Inst.$length >>> 0)), new patchList.ptr(0, 0), true); + c.p.Inst = $append(c.p.Inst, new Inst.ptr(op$2, 0, 0, sliceType$1.nil)); + return f; + }; + $ptrType(compiler).prototype.nop = function nop() { + var c, f; + c = this; + f = $clone(c.inst(6), frag); + patchList.copy(f.out, makePatchList(f.i << 1 >>> 0)); + return f; + }; + $ptrType(compiler).prototype.fail = function fail() { + var c; + c = this; + return new frag.ptr(0, new patchList.ptr(0, 0), false); + }; + $ptrType(compiler).prototype.cap = function cap(arg) { + var arg, c, f, x, x$1; + c = this; + f = $clone(c.inst(2), frag); + patchList.copy(f.out, makePatchList(f.i << 1 >>> 0)); + (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Arg = arg; + if (c.p.NumCap < (((arg >> 0)) + 1 >> 0)) { + c.p.NumCap = ((arg >> 0)) + 1 >> 0; + } + return f; + }; + $ptrType(compiler).prototype.cat = function cat(f1, f2) { + var c, f1, f2; + c = this; + if ((f1.i === 0) || (f2.i === 0)) { + return new frag.ptr(0, new patchList.ptr(0, 0), false); + } + $clone(f1.out, patchList).patch(c.p, f2.i); + return new frag.ptr(f1.i, $clone(f2.out, patchList), f1.nullable && f2.nullable); + }; + $ptrType(compiler).prototype.alt = function alt(f1, f2) { + var c, f, f1, f2, i, x, x$1; + c = this; + if (f1.i === 0) { + return f2; + } + if (f2.i === 0) { + return f1; + } + f = $clone(c.inst(0), frag); + i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + i.Out = f1.i; + i.Arg = f2.i; + patchList.copy(f.out, $clone(f1.out, patchList).append(c.p, $clone(f2.out, patchList))); + f.nullable = f1.nullable || f2.nullable; + return f; + }; + $ptrType(compiler).prototype.quest = function quest(f1, nongreedy) { + var c, f, f1, i, nongreedy, x, x$1; + c = this; + f = $clone(c.inst(0), frag); + i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (nongreedy) { + i.Arg = f1.i; + patchList.copy(f.out, makePatchList(f.i << 1 >>> 0)); + } else { + i.Out = f1.i; + patchList.copy(f.out, makePatchList(((f.i << 1 >>> 0) | 1) >>> 0)); + } + patchList.copy(f.out, $clone(f.out, patchList).append(c.p, $clone(f1.out, patchList))); + return f; + }; + $ptrType(compiler).prototype.loop = function loop(f1, nongreedy) { + var c, f, f1, i, nongreedy, x, x$1; + c = this; + f = $clone(c.inst(0), frag); + i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (nongreedy) { + i.Arg = f1.i; + patchList.copy(f.out, makePatchList(f.i << 1 >>> 0)); + } else { + i.Out = f1.i; + patchList.copy(f.out, makePatchList(((f.i << 1 >>> 0) | 1) >>> 0)); + } + $clone(f1.out, patchList).patch(c.p, f.i); + return f; + }; + $ptrType(compiler).prototype.star = function star(f1, nongreedy) { + var c, f1, nongreedy; + c = this; + if (f1.nullable) { + return c.quest($clone(c.plus($clone(f1, frag), nongreedy), frag), nongreedy); + } + return c.loop($clone(f1, frag), nongreedy); + }; + $ptrType(compiler).prototype.plus = function plus(f1, nongreedy) { + var c, f1, nongreedy; + c = this; + return new frag.ptr(f1.i, $clone(c.loop($clone(f1, frag), nongreedy).out, patchList), f1.nullable); + }; + $ptrType(compiler).prototype.empty = function empty(op$2) { + var c, f, op$2, x, x$1; + c = this; + f = $clone(c.inst(3), frag); + (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Arg = ((op$2 >>> 0)); + patchList.copy(f.out, makePatchList(f.i << 1 >>> 0)); + return f; + }; + $ptrType(compiler).prototype.rune = function rune(r, flags) { + var c, f, flags, i, r, x, x$1; + c = this; + f = $clone(c.inst(7), frag); + f.nullable = false; + i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + i.Rune = r; + flags = (flags & (1)) >>> 0; + if (!((r.$length === 1)) || (unicode.SimpleFold((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0])) === (0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]))) { + flags = (flags & ~(1)) << 16 >>> 16; + } + i.Arg = ((flags >>> 0)); + patchList.copy(f.out, makePatchList(f.i << 1 >>> 0)); + if ((((flags & 1) >>> 0) === 0) && ((r.$length === 1) || (r.$length === 2) && ((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]) === (1 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 1])))) { + i.Op = 8; + } else if ((r.$length === 2) && ((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]) === 0) && ((1 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 1]) === 1114111)) { + i.Op = 9; + } else if ((r.$length === 4) && ((0 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 0]) === 0) && ((1 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 1]) === 9) && ((2 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 2]) === 11) && ((3 >= r.$length ? ($throwRuntimeError("index out of range"), undefined) : r.$array[r.$offset + 3]) === 1114111)) { + i.Op = 10; + } + return f; + }; + ptrType.methods = [{prop: "Simplify", name: "Simplify", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ptrType], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MaxCap", name: "MaxCap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CapNames", name: "CapNames", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "capNames", name: "capNames", pkg: "regexp/syntax", typ: $funcType([sliceType], [], false)}]; + Op.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$4.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "skipNop", name: "skipNop", pkg: "regexp/syntax", typ: $funcType([$Uint32], [ptrType$5], false)}, {prop: "Prefix", name: "Prefix", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "StartCond", name: "StartCond", pkg: "", typ: $funcType([], [EmptyOp], false)}]; + InstOp.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$5.methods = [{prop: "op", name: "op", pkg: "regexp/syntax", typ: $funcType([], [InstOp], false)}, {prop: "MatchRune", name: "MatchRune", pkg: "", typ: $funcType([$Int32], [$Bool], false)}, {prop: "MatchRunePos", name: "MatchRunePos", pkg: "", typ: $funcType([$Int32], [$Int], false)}, {prop: "MatchEmptyWidth", name: "MatchEmptyWidth", pkg: "", typ: $funcType([$Int32, $Int32], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$6.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ErrorCode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$7.methods = [{prop: "newRegexp", name: "newRegexp", pkg: "regexp/syntax", typ: $funcType([Op], [ptrType], false)}, {prop: "reuse", name: "reuse", pkg: "regexp/syntax", typ: $funcType([ptrType], [], false)}, {prop: "checkLimits", name: "checkLimits", pkg: "regexp/syntax", typ: $funcType([ptrType], [], false)}, {prop: "checkSize", name: "checkSize", pkg: "regexp/syntax", typ: $funcType([ptrType], [], false)}, {prop: "calcSize", name: "calcSize", pkg: "regexp/syntax", typ: $funcType([ptrType, $Bool], [$Int64], false)}, {prop: "checkHeight", name: "checkHeight", pkg: "regexp/syntax", typ: $funcType([ptrType], [], false)}, {prop: "calcHeight", name: "calcHeight", pkg: "regexp/syntax", typ: $funcType([ptrType, $Bool], [$Int], false)}, {prop: "push", name: "push", pkg: "regexp/syntax", typ: $funcType([ptrType], [ptrType], false)}, {prop: "maybeConcat", name: "maybeConcat", pkg: "regexp/syntax", typ: $funcType([$Int32, Flags], [$Bool], false)}, {prop: "literal", name: "literal", pkg: "regexp/syntax", typ: $funcType([$Int32], [], false)}, {prop: "op", name: "op", pkg: "regexp/syntax", typ: $funcType([Op], [ptrType], false)}, {prop: "repeat", name: "repeat", pkg: "regexp/syntax", typ: $funcType([Op, $Int, $Int, $String, $String, $String], [$String, $error], false)}, {prop: "concat", name: "concat", pkg: "regexp/syntax", typ: $funcType([], [ptrType], false)}, {prop: "alternate", name: "alternate", pkg: "regexp/syntax", typ: $funcType([], [ptrType], false)}, {prop: "collapse", name: "collapse", pkg: "regexp/syntax", typ: $funcType([sliceType$4, Op], [ptrType], false)}, {prop: "factor", name: "factor", pkg: "regexp/syntax", typ: $funcType([sliceType$4], [sliceType$4], false)}, {prop: "leadingString", name: "leadingString", pkg: "regexp/syntax", typ: $funcType([ptrType], [sliceType$1, Flags], false)}, {prop: "removeLeadingString", name: "removeLeadingString", pkg: "regexp/syntax", typ: $funcType([ptrType, $Int], [ptrType], false)}, {prop: "leadingRegexp", name: "leadingRegexp", pkg: "regexp/syntax", typ: $funcType([ptrType], [ptrType], false)}, {prop: "removeLeadingRegexp", name: "removeLeadingRegexp", pkg: "regexp/syntax", typ: $funcType([ptrType, $Bool], [ptrType], false)}, {prop: "parseRepeat", name: "parseRepeat", pkg: "regexp/syntax", typ: $funcType([$String], [$Int, $Int, $String, $Bool], false)}, {prop: "parsePerlFlags", name: "parsePerlFlags", pkg: "regexp/syntax", typ: $funcType([$String], [$String, $error], false)}, {prop: "parseInt", name: "parseInt", pkg: "regexp/syntax", typ: $funcType([$String], [$Int, $String, $Bool], false)}, {prop: "parseVerticalBar", name: "parseVerticalBar", pkg: "regexp/syntax", typ: $funcType([], [$error], false)}, {prop: "swapVerticalBar", name: "swapVerticalBar", pkg: "regexp/syntax", typ: $funcType([], [$Bool], false)}, {prop: "parseRightParen", name: "parseRightParen", pkg: "regexp/syntax", typ: $funcType([], [$error], false)}, {prop: "parseEscape", name: "parseEscape", pkg: "regexp/syntax", typ: $funcType([$String], [$Int32, $String, $error], false)}, {prop: "parseClassChar", name: "parseClassChar", pkg: "regexp/syntax", typ: $funcType([$String, $String], [$Int32, $String, $error], false)}, {prop: "parsePerlClassEscape", name: "parsePerlClassEscape", pkg: "regexp/syntax", typ: $funcType([$String, sliceType$1], [sliceType$1, $String], false)}, {prop: "parseNamedClass", name: "parseNamedClass", pkg: "regexp/syntax", typ: $funcType([$String, sliceType$1], [sliceType$1, $String, $error], false)}, {prop: "appendGroup", name: "appendGroup", pkg: "regexp/syntax", typ: $funcType([sliceType$1, charGroup], [sliceType$1], false)}, {prop: "parseUnicodeClass", name: "parseUnicodeClass", pkg: "regexp/syntax", typ: $funcType([$String, sliceType$1], [sliceType$1, $String, $error], false)}, {prop: "parseClass", name: "parseClass", pkg: "regexp/syntax", typ: $funcType([$String], [$String, $error], false)}]; + ranges.methods = [{prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; + patchList.methods = [{prop: "patch", name: "patch", pkg: "regexp/syntax", typ: $funcType([ptrType$4, $Uint32], [], false)}, {prop: "append", name: "append", pkg: "regexp/syntax", typ: $funcType([ptrType$4, patchList], [patchList], false)}]; + ptrType$8.methods = [{prop: "init", name: "init", pkg: "regexp/syntax", typ: $funcType([], [], false)}, {prop: "compile", name: "compile", pkg: "regexp/syntax", typ: $funcType([ptrType], [frag], false)}, {prop: "inst", name: "inst", pkg: "regexp/syntax", typ: $funcType([InstOp], [frag], false)}, {prop: "nop", name: "nop", pkg: "regexp/syntax", typ: $funcType([], [frag], false)}, {prop: "fail", name: "fail", pkg: "regexp/syntax", typ: $funcType([], [frag], false)}, {prop: "cap", name: "cap", pkg: "regexp/syntax", typ: $funcType([$Uint32], [frag], false)}, {prop: "cat", name: "cat", pkg: "regexp/syntax", typ: $funcType([frag, frag], [frag], false)}, {prop: "alt", name: "alt", pkg: "regexp/syntax", typ: $funcType([frag, frag], [frag], false)}, {prop: "quest", name: "quest", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "loop", name: "loop", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "star", name: "star", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "plus", name: "plus", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "empty", name: "empty", pkg: "regexp/syntax", typ: $funcType([EmptyOp], [frag], false)}, {prop: "rune", name: "rune", pkg: "regexp/syntax", typ: $funcType([sliceType$1, Flags], [frag], false)}]; + Regexp.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: Op, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: Flags, tag: ""}, {prop: "Sub", name: "Sub", embedded: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "Sub0", name: "Sub0", embedded: false, exported: true, typ: arrayType, tag: ""}, {prop: "Rune", name: "Rune", embedded: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "Rune0", name: "Rune0", embedded: false, exported: true, typ: arrayType$1, tag: ""}, {prop: "Min", name: "Min", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Max", name: "Max", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Cap", name: "Cap", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}]); + Prog.init("", [{prop: "Inst", name: "Inst", embedded: false, exported: true, typ: sliceType$6, tag: ""}, {prop: "Start", name: "Start", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "NumCap", name: "NumCap", embedded: false, exported: true, typ: $Int, tag: ""}]); + Inst.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: InstOp, tag: ""}, {prop: "Out", name: "Out", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Arg", name: "Arg", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "Rune", name: "Rune", embedded: false, exported: true, typ: sliceType$1, tag: ""}]); + Error.init("", [{prop: "Code", name: "Code", embedded: false, exported: true, typ: ErrorCode, tag: ""}, {prop: "Expr", name: "Expr", embedded: false, exported: true, typ: $String, tag: ""}]); + parser.init("regexp/syntax", [{prop: "flags", name: "flags", embedded: false, exported: false, typ: Flags, tag: ""}, {prop: "stack", name: "stack", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "free", name: "free", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "numCap", name: "numCap", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "wholeRegexp", name: "wholeRegexp", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "tmpClass", name: "tmpClass", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "numRegexp", name: "numRegexp", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "numRunes", name: "numRunes", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "repeats", name: "repeats", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "height", name: "height", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: mapType$1, tag: ""}]); + charGroup.init("regexp/syntax", [{prop: "sign", name: "sign", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "class$1", name: "class", embedded: false, exported: false, typ: sliceType$1, tag: ""}]); + ranges.init("regexp/syntax", [{prop: "p", name: "p", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); + patchList.init("regexp/syntax", [{prop: "head", name: "head", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "tail", name: "tail", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + frag.init("regexp/syntax", [{prop: "i", name: "i", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "out", name: "out", embedded: false, exported: false, typ: patchList, tag: ""}, {prop: "nullable", name: "nullable", embedded: false, exported: false, typ: $Bool, tag: ""}]); + compiler.init("regexp/syntax", [{prop: "p", name: "p", embedded: false, exported: false, typ: ptrType$4, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = sort.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + instOpNames = new sliceType(["InstAlt", "InstAltMatch", "InstCapture", "InstEmptyWidth", "InstMatch", "InstFail", "InstNop", "InstRune", "InstRune1", "InstRuneAny", "InstRuneAnyNotNL"]); + code1 = new sliceType$1([48, 57]); + code2 = new sliceType$1([9, 10, 12, 13, 32, 32]); + code3 = new sliceType$1([48, 57, 65, 90, 95, 95, 97, 122]); + perlGroup = $makeMap($String.keyFor, [{ k: "\\d", v: $clone(new charGroup.ptr(1, code1), charGroup) }, { k: "\\D", v: $clone(new charGroup.ptr(-1, code1), charGroup) }, { k: "\\s", v: $clone(new charGroup.ptr(1, code2), charGroup) }, { k: "\\S", v: $clone(new charGroup.ptr(-1, code2), charGroup) }, { k: "\\w", v: $clone(new charGroup.ptr(1, code3), charGroup) }, { k: "\\W", v: $clone(new charGroup.ptr(-1, code3), charGroup) }]); + code4 = new sliceType$1([48, 57, 65, 90, 97, 122]); + code5 = new sliceType$1([65, 90, 97, 122]); + code6 = new sliceType$1([0, 127]); + code7 = new sliceType$1([9, 9, 32, 32]); + code8 = new sliceType$1([0, 31, 127, 127]); + code9 = new sliceType$1([48, 57]); + code10 = new sliceType$1([33, 126]); + code11 = new sliceType$1([97, 122]); + code12 = new sliceType$1([32, 126]); + code13 = new sliceType$1([33, 47, 58, 64, 91, 96, 123, 126]); + code14 = new sliceType$1([9, 13, 32, 32]); + code15 = new sliceType$1([65, 90]); + code16 = new sliceType$1([48, 57, 65, 90, 95, 95, 97, 122]); + code17 = new sliceType$1([48, 57, 65, 70, 97, 102]); + posixGroup = $makeMap($String.keyFor, [{ k: "[:alnum:]", v: $clone(new charGroup.ptr(1, code4), charGroup) }, { k: "[:^alnum:]", v: $clone(new charGroup.ptr(-1, code4), charGroup) }, { k: "[:alpha:]", v: $clone(new charGroup.ptr(1, code5), charGroup) }, { k: "[:^alpha:]", v: $clone(new charGroup.ptr(-1, code5), charGroup) }, { k: "[:ascii:]", v: $clone(new charGroup.ptr(1, code6), charGroup) }, { k: "[:^ascii:]", v: $clone(new charGroup.ptr(-1, code6), charGroup) }, { k: "[:blank:]", v: $clone(new charGroup.ptr(1, code7), charGroup) }, { k: "[:^blank:]", v: $clone(new charGroup.ptr(-1, code7), charGroup) }, { k: "[:cntrl:]", v: $clone(new charGroup.ptr(1, code8), charGroup) }, { k: "[:^cntrl:]", v: $clone(new charGroup.ptr(-1, code8), charGroup) }, { k: "[:digit:]", v: $clone(new charGroup.ptr(1, code9), charGroup) }, { k: "[:^digit:]", v: $clone(new charGroup.ptr(-1, code9), charGroup) }, { k: "[:graph:]", v: $clone(new charGroup.ptr(1, code10), charGroup) }, { k: "[:^graph:]", v: $clone(new charGroup.ptr(-1, code10), charGroup) }, { k: "[:lower:]", v: $clone(new charGroup.ptr(1, code11), charGroup) }, { k: "[:^lower:]", v: $clone(new charGroup.ptr(-1, code11), charGroup) }, { k: "[:print:]", v: $clone(new charGroup.ptr(1, code12), charGroup) }, { k: "[:^print:]", v: $clone(new charGroup.ptr(-1, code12), charGroup) }, { k: "[:punct:]", v: $clone(new charGroup.ptr(1, code13), charGroup) }, { k: "[:^punct:]", v: $clone(new charGroup.ptr(-1, code13), charGroup) }, { k: "[:space:]", v: $clone(new charGroup.ptr(1, code14), charGroup) }, { k: "[:^space:]", v: $clone(new charGroup.ptr(-1, code14), charGroup) }, { k: "[:upper:]", v: $clone(new charGroup.ptr(1, code15), charGroup) }, { k: "[:^upper:]", v: $clone(new charGroup.ptr(-1, code15), charGroup) }, { k: "[:word:]", v: $clone(new charGroup.ptr(1, code16), charGroup) }, { k: "[:^word:]", v: $clone(new charGroup.ptr(-1, code16), charGroup) }, { k: "[:xdigit:]", v: $clone(new charGroup.ptr(1, code17), charGroup) }, { k: "[:^xdigit:]", v: $clone(new charGroup.ptr(-1, code17), charGroup) }]); + anyTable = new unicode.RangeTable.ptr(new sliceType$2([$clone(new unicode.Range16.ptr(0, 65535, 1), unicode.Range16)]), new sliceType$3([$clone(new unicode.Range32.ptr(65536, 1114111, 1), unicode.Range32)]), 0); + _Op_index_0 = $toNativeArray($kindUint8, [0, 7, 17, 24, 33, 45, 52, 61, 68, 77, 84, 96, 110, 117, 121, 125, 130, 136, 142, 151]); + anyRuneNotNL = new sliceType$1([0, 9, 11, 1114111]); + anyRune = new sliceType$1([0, 1114111]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["regexp"] = (function() { + var $pkg = {}, $init, bytes, nosync, io, syntax, sort, strconv, strings, unicode, utf8, Regexp, input, inputString, inputBytes, inputReader, onePassProg, onePassInst, queueOnePass, runeSlice, queue, entry, thread, machine, inputs, lazyFlag, onePassMachine, job, bitState, sliceType, arrayType, arrayType$1, arrayType$2, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, sliceType$3, sliceType$4, ptrType$3, sliceType$5, ptrType$4, sliceType$6, sliceType$7, arrayType$3, arrayType$4, sliceType$8, sliceType$9, sliceType$10, sliceType$11, ptrType$5, ptrType$6, ptrType$7, sliceType$12, ptrType$8, sliceType$13, ptrType$9, sliceType$14, ptrType$10, ptrType$11, ptrType$12, ptrType$13, sliceType$15, funcType, funcType$1, funcType$2, funcType$3, ptrType$14, ptrType$15, ptrType$16, ptrType$17, ptrType$18, matchPool, specialBytes, onePassPool, arrayNoInts, bitStatePool, matchSize, noRune, noNext, anyRuneNotNL, anyRune, Compile, compile, minInputLen, MustCompile, quote, special, init, QuoteMeta, extract, onePassPrefix, onePassNext, iop, newQueue, mergeRuneSets, cleanupOnePass, onePassCopy, makeOnePass, compileOnePass, newLazyFlag, newOnePassMachine, freeOnePassMachine, newBitState, freeBitState, maxBitStateLen, shouldBacktrack; + bytes = $packages["bytes"]; + nosync = $packages["github.com/gopherjs/gopherjs/nosync"]; + io = $packages["io"]; + syntax = $packages["regexp/syntax"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + Regexp = $newType(0, $kindStruct, "regexp.Regexp", true, "regexp", true, function(expr_, prog_, onepass_, numSubexp_, maxBitStateLen_, subexpNames_, prefix_, prefixBytes_, prefixRune_, prefixEnd_, mpool_, matchcap_, prefixComplete_, cond_, minInputLen_, longest_) { + this.$val = this; + if (arguments.length === 0) { + this.expr = ""; + this.prog = ptrType$1.nil; + this.onepass = ptrType$2.nil; + this.numSubexp = 0; + this.maxBitStateLen = 0; + this.subexpNames = sliceType$3.nil; + this.prefix = ""; + this.prefixBytes = sliceType$4.nil; + this.prefixRune = 0; + this.prefixEnd = 0; + this.mpool = 0; + this.matchcap = 0; + this.prefixComplete = false; + this.cond = 0; + this.minInputLen = 0; + this.longest = false; + return; + } + this.expr = expr_; + this.prog = prog_; + this.onepass = onepass_; + this.numSubexp = numSubexp_; + this.maxBitStateLen = maxBitStateLen_; + this.subexpNames = subexpNames_; + this.prefix = prefix_; + this.prefixBytes = prefixBytes_; + this.prefixRune = prefixRune_; + this.prefixEnd = prefixEnd_; + this.mpool = mpool_; + this.matchcap = matchcap_; + this.prefixComplete = prefixComplete_; + this.cond = cond_; + this.minInputLen = minInputLen_; + this.longest = longest_; + }); + input = $newType(8, $kindInterface, "regexp.input", true, "regexp", false, null); + inputString = $newType(0, $kindStruct, "regexp.inputString", true, "regexp", false, function(str_) { + this.$val = this; + if (arguments.length === 0) { + this.str = ""; + return; + } + this.str = str_; + }); + inputBytes = $newType(0, $kindStruct, "regexp.inputBytes", true, "regexp", false, function(str_) { + this.$val = this; + if (arguments.length === 0) { + this.str = sliceType$4.nil; + return; + } + this.str = str_; + }); + inputReader = $newType(0, $kindStruct, "regexp.inputReader", true, "regexp", false, function(r_, atEOT_, pos_) { + this.$val = this; + if (arguments.length === 0) { + this.r = $ifaceNil; + this.atEOT = false; + this.pos = 0; + return; + } + this.r = r_; + this.atEOT = atEOT_; + this.pos = pos_; + }); + onePassProg = $newType(0, $kindStruct, "regexp.onePassProg", true, "regexp", false, function(Inst_, Start_, NumCap_) { + this.$val = this; + if (arguments.length === 0) { + this.Inst = sliceType$12.nil; + this.Start = 0; + this.NumCap = 0; + return; + } + this.Inst = Inst_; + this.Start = Start_; + this.NumCap = NumCap_; + }); + onePassInst = $newType(0, $kindStruct, "regexp.onePassInst", true, "regexp", false, function(Inst_, Next_) { + this.$val = this; + if (arguments.length === 0) { + this.Inst = new syntax.Inst.ptr(0, 0, 0, sliceType$1.nil); + this.Next = sliceType$2.nil; + return; + } + this.Inst = Inst_; + this.Next = Next_; + }); + queueOnePass = $newType(0, $kindStruct, "regexp.queueOnePass", true, "regexp", false, function(sparse_, dense_, size_, nextIndex_) { + this.$val = this; + if (arguments.length === 0) { + this.sparse = sliceType$2.nil; + this.dense = sliceType$2.nil; + this.size = 0; + this.nextIndex = 0; + return; + } + this.sparse = sparse_; + this.dense = dense_; + this.size = size_; + this.nextIndex = nextIndex_; + }); + runeSlice = $newType(12, $kindSlice, "regexp.runeSlice", true, "regexp", false, null); + queue = $newType(0, $kindStruct, "regexp.queue", true, "regexp", false, function(sparse_, dense_) { + this.$val = this; + if (arguments.length === 0) { + this.sparse = sliceType$2.nil; + this.dense = sliceType$5.nil; + return; + } + this.sparse = sparse_; + this.dense = dense_; + }); + entry = $newType(0, $kindStruct, "regexp.entry", true, "regexp", false, function(pc_, t_) { + this.$val = this; + if (arguments.length === 0) { + this.pc = 0; + this.t = ptrType$4.nil; + return; + } + this.pc = pc_; + this.t = t_; + }); + thread = $newType(0, $kindStruct, "regexp.thread", true, "regexp", false, function(inst_, cap_) { + this.$val = this; + if (arguments.length === 0) { + this.inst = ptrType$10.nil; + this.cap = sliceType$7.nil; + return; + } + this.inst = inst_; + this.cap = cap_; + }); + machine = $newType(0, $kindStruct, "regexp.machine", true, "regexp", false, function(re_, p_, q0_, q1_, pool_, matched_, matchcap_, inputs_) { + this.$val = this; + if (arguments.length === 0) { + this.re = ptrType.nil; + this.p = ptrType$1.nil; + this.q0 = new queue.ptr(sliceType$2.nil, sliceType$5.nil); + this.q1 = new queue.ptr(sliceType$2.nil, sliceType$5.nil); + this.pool = sliceType$6.nil; + this.matched = false; + this.matchcap = sliceType$7.nil; + this.inputs = new inputs.ptr(new inputBytes.ptr(sliceType$4.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)); + return; + } + this.re = re_; + this.p = p_; + this.q0 = q0_; + this.q1 = q1_; + this.pool = pool_; + this.matched = matched_; + this.matchcap = matchcap_; + this.inputs = inputs_; + }); + inputs = $newType(0, $kindStruct, "regexp.inputs", true, "regexp", false, function(bytes_, string_, reader_) { + this.$val = this; + if (arguments.length === 0) { + this.bytes = new inputBytes.ptr(sliceType$4.nil); + this.string = new inputString.ptr(""); + this.reader = new inputReader.ptr($ifaceNil, false, 0); + return; + } + this.bytes = bytes_; + this.string = string_; + this.reader = reader_; + }); + lazyFlag = $newType(8, $kindUint64, "regexp.lazyFlag", true, "regexp", false, null); + onePassMachine = $newType(0, $kindStruct, "regexp.onePassMachine", true, "regexp", false, function(inputs_, matchcap_) { + this.$val = this; + if (arguments.length === 0) { + this.inputs = new inputs.ptr(new inputBytes.ptr(sliceType$4.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)); + this.matchcap = sliceType$7.nil; + return; + } + this.inputs = inputs_; + this.matchcap = matchcap_; + }); + job = $newType(0, $kindStruct, "regexp.job", true, "regexp", false, function(pc_, arg_, pos_) { + this.$val = this; + if (arguments.length === 0) { + this.pc = 0; + this.arg = false; + this.pos = 0; + return; + } + this.pc = pc_; + this.arg = arg_; + this.pos = pos_; + }); + bitState = $newType(0, $kindStruct, "regexp.bitState", true, "regexp", false, function(end_, cap_, matchcap_, jobs_, visited_, inputs_) { + this.$val = this; + if (arguments.length === 0) { + this.end = 0; + this.cap = sliceType$7.nil; + this.matchcap = sliceType$7.nil; + this.jobs = sliceType$15.nil; + this.visited = sliceType$2.nil; + this.inputs = new inputs.ptr(new inputBytes.ptr(sliceType$4.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)); + return; + } + this.end = end_; + this.cap = cap_; + this.matchcap = matchcap_; + this.jobs = jobs_; + this.visited = visited_; + this.inputs = inputs_; + }); + $pkg.Regexp = Regexp; + $pkg.input = input; + $pkg.inputString = inputString; + $pkg.inputBytes = inputBytes; + $pkg.inputReader = inputReader; + $pkg.onePassProg = onePassProg; + $pkg.onePassInst = onePassInst; + $pkg.queueOnePass = queueOnePass; + $pkg.runeSlice = runeSlice; + $pkg.queue = queue; + $pkg.entry = entry; + $pkg.thread = thread; + $pkg.machine = machine; + $pkg.inputs = inputs; + $pkg.lazyFlag = lazyFlag; + $pkg.onePassMachine = onePassMachine; + $pkg.job = job; + $pkg.bitState = bitState; + $pkg.$finishSetup = function() { + sliceType = $sliceType($emptyInterface); + arrayType = $arrayType(nosync.Pool, 5); + arrayType$1 = $arrayType($Uint8, 16); + arrayType$2 = $arrayType($Int, 0); + sliceType$1 = $sliceType($Int32); + sliceType$2 = $sliceType($Uint32); + ptrType = $ptrType(Regexp); + ptrType$1 = $ptrType(syntax.Prog); + ptrType$2 = $ptrType(onePassProg); + sliceType$3 = $sliceType($String); + sliceType$4 = $sliceType($Uint8); + ptrType$3 = $ptrType(machine); + sliceType$5 = $sliceType(entry); + ptrType$4 = $ptrType(thread); + sliceType$6 = $sliceType(ptrType$4); + sliceType$7 = $sliceType($Int); + arrayType$3 = $arrayType($Int, 2); + arrayType$4 = $arrayType($Int, 4); + sliceType$8 = $sliceType(sliceType$4); + sliceType$9 = $sliceType(sliceType$7); + sliceType$10 = $sliceType(sliceType$8); + sliceType$11 = $sliceType(sliceType$3); + ptrType$5 = $ptrType(strings.Builder); + ptrType$6 = $ptrType(queueOnePass); + ptrType$7 = $ptrType($Int); + sliceType$12 = $sliceType(onePassInst); + ptrType$8 = $ptrType($Uint32); + sliceType$13 = $sliceType(sliceType$1); + ptrType$9 = $ptrType(sliceType$1); + sliceType$14 = $sliceType($Bool); + ptrType$10 = $ptrType(syntax.Inst); + ptrType$11 = $ptrType(lazyFlag); + ptrType$12 = $ptrType(onePassMachine); + ptrType$13 = $ptrType(bitState); + sliceType$15 = $sliceType(job); + funcType = $funcType([$String], [$String], false); + funcType$1 = $funcType([sliceType$4, sliceType$7], [sliceType$4], false); + funcType$2 = $funcType([sliceType$4], [sliceType$4], false); + funcType$3 = $funcType([sliceType$7], [], false); + ptrType$14 = $ptrType(inputString); + ptrType$15 = $ptrType(inputBytes); + ptrType$16 = $ptrType(inputReader); + ptrType$17 = $ptrType(queue); + ptrType$18 = $ptrType(inputs); + $ptrType(Regexp).prototype.String = function String() { + var re; + re = this; + return re.expr; + }; + $ptrType(Regexp).prototype.Copy = function Copy() { + var re, re2; + re = this; + re2 = $clone(re, Regexp); + return re2; + }; + Compile = function Compile$1(expr) { + var {$24r, _r, expr, $s, $r, $c} = $restore(this, {expr}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = compile(expr, 212, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Compile$1, $c: true, $r, $24r, _r, expr, $s};return $f; + }; + $pkg.Compile = Compile; + $ptrType(Regexp).prototype.Longest = function Longest() { + var re; + re = this; + re.longest = true; + }; + compile = function compile$1(expr, mode, longest) { + var {_r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, capNames, err, expr, i, longest, matchcap, maxCap, mode, n, prog, re, regexp, $s, $r, $c} = $restore(this, {expr, mode, longest}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = syntax.Parse(expr, mode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + re = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType.nil, err]; + } + maxCap = re.MaxCap(); + capNames = re.CapNames(); + re = re.Simplify(); + _tuple$1 = syntax.Compile(re); + prog = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType.nil, err]; + } + matchcap = prog.NumCap; + if (matchcap < 2) { + matchcap = 2; + } + _r$1 = compileOnePass(prog); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + regexp = new Regexp.ptr(expr, prog, _r$1, maxCap, 0, capNames, "", sliceType$4.nil, 0, 0, 0, matchcap, false, prog.StartCond(), minInputLen(re), longest); + if (regexp.onepass === ptrType$2.nil) { + _tuple$2 = prog.Prefix(); + regexp.prefix = _tuple$2[0]; + regexp.prefixComplete = _tuple$2[1]; + regexp.maxBitStateLen = maxBitStateLen(prog); + } else { + _tuple$3 = onePassPrefix(prog); + regexp.prefix = _tuple$3[0]; + regexp.prefixComplete = _tuple$3[1]; + regexp.prefixEnd = _tuple$3[2]; + } + if (!(regexp.prefix === "")) { + regexp.prefixBytes = (new sliceType$4($stringToBytes(regexp.prefix))); + _tuple$4 = utf8.DecodeRuneInString(regexp.prefix); + regexp.prefixRune = _tuple$4[0]; + } + n = prog.Inst.$length; + i = 0; + while (true) { + if (!(!((((i < 0 || i >= matchSize.length) ? ($throwRuntimeError("index out of range"), undefined) : matchSize[i]) === 0)) && ((i < 0 || i >= matchSize.length) ? ($throwRuntimeError("index out of range"), undefined) : matchSize[i]) < n)) { break; } + i = i + (1) >> 0; + } + regexp.mpool = i; + $s = -1; return [regexp, $ifaceNil]; + /* */ } return; } var $f = {$blk: compile$1, $c: true, $r, _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, capNames, err, expr, i, longest, matchcap, maxCap, mode, n, prog, re, regexp, $s};return $f; + }; + $ptrType(Regexp).prototype.get = function get() { + var {_i, _r, _ref, _tuple, m, n, ok, re, t, x, x$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + _r = (x = re.mpool, ((x < 0 || x >= matchPool.length) ? ($throwRuntimeError("index out of range"), undefined) : matchPool[x])).Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$3, true); + m = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + m = new machine.ptr(ptrType.nil, ptrType$1.nil, new queue.ptr(sliceType$2.nil, sliceType$5.nil), new queue.ptr(sliceType$2.nil, sliceType$5.nil), sliceType$6.nil, false, sliceType$7.nil, new inputs.ptr(new inputBytes.ptr(sliceType$4.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0))); + } + m.re = re; + m.p = re.prog; + if (m.matchcap.$capacity < re.matchcap) { + m.matchcap = $makeSlice(sliceType$7, re.matchcap); + _ref = m.pool; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + t.cap = $makeSlice(sliceType$7, re.matchcap); + _i++; + } + } + n = (x$1 = re.mpool, ((x$1 < 0 || x$1 >= matchSize.length) ? ($throwRuntimeError("index out of range"), undefined) : matchSize[x$1])); + if (n === 0) { + n = re.prog.Inst.$length; + } + if (m.q0.sparse.$length < n) { + queue.copy(m.q0, new queue.ptr($makeSlice(sliceType$2, n), $makeSlice(sliceType$5, 0, n))); + queue.copy(m.q1, new queue.ptr($makeSlice(sliceType$2, n), $makeSlice(sliceType$5, 0, n))); + } + $s = -1; return m; + /* */ } return; } var $f = {$blk: get, $c: true, $r, _i, _r, _ref, _tuple, m, n, ok, re, t, x, x$1, $s};return $f; + }; + $ptrType(Regexp).prototype.put = function put(m) { + var m, re, x; + re = this; + m.re = ptrType.nil; + m.p = ptrType$1.nil; + m.inputs.clear(); + (x = re.mpool, ((x < 0 || x >= matchPool.length) ? ($throwRuntimeError("index out of range"), undefined) : matchPool[x])).Put(m); + }; + minInputLen = function minInputLen$1(re) { + var _1, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, l, l$1, l$2, lnext, r, re, sub, sub$1, x, x$1, x$2; + _1 = re.Op; + if ((_1 === (6)) || (_1 === (5)) || (_1 === (4))) { + return 1; + } else if (_1 === (3)) { + l = 0; + _ref = re.Rune; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + r = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (r === 65533) { + l = l + (1) >> 0; + } else { + l = l + (utf8.RuneLen(r)) >> 0; + } + _i++; + } + return l; + } else if ((_1 === (13)) || (_1 === (15))) { + return minInputLen((x = re.Sub, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); + } else if (_1 === (17)) { + return $imul(re.Min, minInputLen((x$1 = re.Sub, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])))); + } else if (_1 === (18)) { + l$1 = 0; + _ref$1 = re.Sub; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + sub = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + l$1 = l$1 + (minInputLen(sub)) >> 0; + _i$1++; + } + return l$1; + } else if (_1 === (19)) { + l$2 = minInputLen((x$2 = re.Sub, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))); + lnext = 0; + _ref$2 = $subslice(re.Sub, 1); + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + sub$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + lnext = minInputLen(sub$1); + if (lnext < l$2) { + l$2 = lnext; + } + _i$2++; + } + return l$2; + } else { + return 0; + } + }; + MustCompile = function MustCompile$1(str) { + var {_r, _r$1, _tuple, err, regexp, str, $s, $r, $c} = $restore(this, {str}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = Compile(str); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + regexp = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + _r$1 = err.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String("regexp: Compile(" + quote(str) + "): " + _r$1)); + /* } */ case 3: + $s = -1; return regexp; + /* */ } return; } var $f = {$blk: MustCompile$1, $c: true, $r, _r, _r$1, _tuple, err, regexp, str, $s};return $f; + }; + $pkg.MustCompile = MustCompile; + quote = function quote$1(s) { + var s; + if (strconv.CanBackquote(s)) { + return "`" + s + "`"; + } + return strconv.Quote(s); + }; + $ptrType(Regexp).prototype.NumSubexp = function NumSubexp() { + var re; + re = this; + return re.numSubexp; + }; + $ptrType(Regexp).prototype.SubexpNames = function SubexpNames() { + var re; + re = this; + return re.subexpNames; + }; + $ptrType(Regexp).prototype.SubexpIndex = function SubexpIndex(name) { + var _i, _ref, i, name, re, s; + re = this; + if (!(name === "")) { + _ref = re.subexpNames; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (name === s) { + return i; + } + _i++; + } + } + return -1; + }; + $ptrType(inputString).prototype.step = function step(pos) { + var c, i, pos; + i = this; + if (pos < i.str.length) { + c = i.str.charCodeAt(pos); + if (c < 128) { + return [((c >> 0)), 1]; + } + return utf8.DecodeRuneInString($substring(i.str, pos)); + } + return [-1, 0]; + }; + $ptrType(inputString).prototype.canCheckPrefix = function canCheckPrefix() { + var i; + i = this; + return true; + }; + $ptrType(inputString).prototype.hasPrefix = function hasPrefix(re) { + var i, re; + i = this; + return strings.HasPrefix(i.str, re.prefix); + }; + $ptrType(inputString).prototype.index = function index(re, pos) { + var i, pos, re; + i = this; + return strings.Index($substring(i.str, pos), re.prefix); + }; + $ptrType(inputString).prototype.context = function context(pos) { + var _tmp, _tmp$1, _tuple, _tuple$1, i, pos, r1, r2; + i = this; + _tmp = -1; + _tmp$1 = -1; + r1 = _tmp; + r2 = _tmp$1; + if ((((pos - 1 >> 0) >>> 0)) < ((i.str.length >>> 0))) { + r1 = ((i.str.charCodeAt((pos - 1 >> 0)) >> 0)); + if (r1 >= 128) { + _tuple = utf8.DecodeLastRuneInString($substring(i.str, 0, pos)); + r1 = _tuple[0]; + } + } + if (((pos >>> 0)) < ((i.str.length >>> 0))) { + r2 = ((i.str.charCodeAt(pos) >> 0)); + if (r2 >= 128) { + _tuple$1 = utf8.DecodeRuneInString($substring(i.str, pos)); + r2 = _tuple$1[0]; + } + } + return newLazyFlag(r1, r2); + }; + $ptrType(inputBytes).prototype.step = function step$1(pos) { + var c, i, pos, x; + i = this; + if (pos < i.str.$length) { + c = (x = i.str, ((pos < 0 || pos >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pos])); + if (c < 128) { + return [((c >> 0)), 1]; + } + return utf8.DecodeRune($subslice(i.str, pos)); + } + return [-1, 0]; + }; + $ptrType(inputBytes).prototype.canCheckPrefix = function canCheckPrefix$1() { + var i; + i = this; + return true; + }; + $ptrType(inputBytes).prototype.hasPrefix = function hasPrefix$1(re) { + var i, re; + i = this; + return bytes.HasPrefix(i.str, re.prefixBytes); + }; + $ptrType(inputBytes).prototype.index = function index$1(re, pos) { + var i, pos, re; + i = this; + return bytes.Index($subslice(i.str, pos), re.prefixBytes); + }; + $ptrType(inputBytes).prototype.context = function context$1(pos) { + var _tmp, _tmp$1, _tuple, _tuple$1, i, pos, r1, r2, x, x$1, x$2; + i = this; + _tmp = -1; + _tmp$1 = -1; + r1 = _tmp; + r2 = _tmp$1; + if ((((pos - 1 >> 0) >>> 0)) < ((i.str.$length >>> 0))) { + r1 = (((x = i.str, x$1 = pos - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) >> 0)); + if (r1 >= 128) { + _tuple = utf8.DecodeLastRune($subslice(i.str, 0, pos)); + r1 = _tuple[0]; + } + } + if (((pos >>> 0)) < ((i.str.$length >>> 0))) { + r2 = (((x$2 = i.str, ((pos < 0 || pos >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + pos])) >> 0)); + if (r2 >= 128) { + _tuple$1 = utf8.DecodeRune($subslice(i.str, pos)); + r2 = _tuple$1[0]; + } + } + return newLazyFlag(r1, r2); + }; + $ptrType(inputReader).prototype.step = function step$2(pos) { + var {_r, _tuple, err, i, pos, r, w, $s, $r, $c} = $restore(this, {pos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = this; + if (!i.atEOT && !((pos === i.pos))) { + $s = -1; return [-1, 0]; + } + _r = i.r.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r = _tuple[0]; + w = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + i.atEOT = true; + $s = -1; return [-1, 0]; + } + i.pos = i.pos + (w) >> 0; + $s = -1; return [r, w]; + /* */ } return; } var $f = {$blk: step$2, $c: true, $r, _r, _tuple, err, i, pos, r, w, $s};return $f; + }; + $ptrType(inputReader).prototype.canCheckPrefix = function canCheckPrefix$2() { + var i; + i = this; + return false; + }; + $ptrType(inputReader).prototype.hasPrefix = function hasPrefix$2(re) { + var i, re; + i = this; + return false; + }; + $ptrType(inputReader).prototype.index = function index$2(re, pos) { + var i, pos, re; + i = this; + return -1; + }; + $ptrType(inputReader).prototype.context = function context$2(pos) { + var i, pos; + i = this; + return new lazyFlag(0, 0); + }; + $ptrType(Regexp).prototype.LiteralPrefix = function LiteralPrefix() { + var _tmp, _tmp$1, complete, prefix, re; + prefix = ""; + complete = false; + re = this; + _tmp = re.prefix; + _tmp$1 = re.prefixComplete; + prefix = _tmp; + complete = _tmp$1; + return [prefix, complete]; + }; + $ptrType(Regexp).prototype.MatchReader = function MatchReader$1(r) { + var {$24r, _r, r, re, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doMatch(r, sliceType$4.nil, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: MatchReader$1, $c: true, $r, $24r, _r, r, re, $s};return $f; + }; + $ptrType(Regexp).prototype.MatchString = function MatchString$1(s) { + var {$24r, _r, re, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doMatch($ifaceNil, sliceType$4.nil, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: MatchString$1, $c: true, $r, $24r, _r, re, s, $s};return $f; + }; + $ptrType(Regexp).prototype.Match = function Match$1(b) { + var {$24r, _r, b, re, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doMatch($ifaceNil, b, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Match$1, $c: true, $r, $24r, _r, b, re, $s};return $f; + }; + $ptrType(Regexp).prototype.ReplaceAllString = function ReplaceAllString(src, repl) { + var {_r, b, n, re, repl, src, $s, $r, $c} = $restore(this, {src, repl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = [re]; + repl = [repl]; + src = [src]; + re[0] = this; + n = 2; + if (strings.Contains(repl[0], "$")) { + n = $imul(2, ((re[0].numSubexp + 1 >> 0))); + } + _r = re[0].replaceAll(sliceType$4.nil, src[0], n, (function(re, repl, src) { return function Regexp·ReplaceAllString·func1(dst, match) { + var dst, match; + return re[0].expand(dst, repl[0], sliceType$4.nil, src[0], match); + }; })(re, repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + b = _r; + $s = -1; return ($bytesToString(b)); + /* */ } return; } var $f = {$blk: ReplaceAllString, $c: true, $r, _r, b, n, re, repl, src, $s};return $f; + }; + $ptrType(Regexp).prototype.ReplaceAllLiteralString = function ReplaceAllLiteralString(src, repl) { + var {$24r, _r, re, repl, src, $s, $r, $c} = $restore(this, {src, repl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + repl = [repl]; + re = this; + _r = re.replaceAll(sliceType$4.nil, src, 2, (function(repl) { return function Regexp·ReplaceAllLiteralString·func1(dst, match) { + var dst, match; + return $appendSlice(dst, repl[0]); + }; })(repl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = ($bytesToString(_r)); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ReplaceAllLiteralString, $c: true, $r, $24r, _r, re, repl, src, $s};return $f; + }; + $ptrType(Regexp).prototype.ReplaceAllStringFunc = function ReplaceAllStringFunc(src, repl) { + var {_r, b, re, repl, src, $s, $r, $c} = $restore(this, {src, repl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + repl = [repl]; + src = [src]; + re = this; + _r = re.replaceAll(sliceType$4.nil, src[0], 2, (function(repl, src) { return function Regexp·ReplaceAllStringFunc·func1(dst, match) { + var {$24r, _arg, _arg$1, _r, dst, match, $s, $r, $c} = $restore(this, {dst, match}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = dst; + _r = repl[0]($substring(src[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + $24r = $appendSlice(_arg, _arg$1); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Regexp·ReplaceAllStringFunc·func1, $c: true, $r, $24r, _arg, _arg$1, _r, dst, match, $s};return $f; + }; })(repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + b = _r; + $s = -1; return ($bytesToString(b)); + /* */ } return; } var $f = {$blk: ReplaceAllStringFunc, $c: true, $r, _r, b, re, repl, src, $s};return $f; + }; + $ptrType(Regexp).prototype.replaceAll = function replaceAll(bsrc, src, nmatch, repl) { + var {_r, _r$1, _tuple, _tuple$1, a, bsrc, buf, dstCap, endPos, lastMatchEnd, nmatch, re, repl, searchPos, src, width, $s, $r, $c} = $restore(this, {bsrc, src, nmatch, repl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + lastMatchEnd = 0; + searchPos = 0; + buf = sliceType$4.nil; + endPos = 0; + if (!(bsrc === sliceType$4.nil)) { + endPos = bsrc.$length; + } else { + endPos = src.length; + } + if (nmatch > re.prog.NumCap) { + nmatch = re.prog.NumCap; + } + dstCap = arrayType$3.zero(); + /* while (true) { */ case 1: + /* if (!(searchPos <= endPos)) { break; } */ if(!(searchPos <= endPos)) { $s = 2; continue; } + _r = re.doExecute($ifaceNil, bsrc, src, searchPos, nmatch, $subslice(new sliceType$7(dstCap), 0, 0)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a.$length === 0) { + /* break; */ $s = 2; continue; + } + if (!(bsrc === sliceType$4.nil)) { + buf = $appendSlice(buf, $subslice(bsrc, lastMatchEnd, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]))); + } else { + buf = $appendSlice(buf, $substring(src, lastMatchEnd, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]))); + } + /* */ if ((1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]) > lastMatchEnd || ((0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]) === 0)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]) > lastMatchEnd || ((0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]) === 0)) { */ case 4: + _r$1 = repl(buf, a); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + buf = _r$1; + /* } */ case 5: + lastMatchEnd = (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]); + width = 0; + if (!(bsrc === sliceType$4.nil)) { + _tuple = utf8.DecodeRune($subslice(bsrc, searchPos)); + width = _tuple[1]; + } else { + _tuple$1 = utf8.DecodeRuneInString($substring(src, searchPos)); + width = _tuple$1[1]; + } + if ((searchPos + width >> 0) > (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])) { + searchPos = searchPos + (width) >> 0; + } else if ((searchPos + 1 >> 0) > (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])) { + searchPos = searchPos + (1) >> 0; + } else { + searchPos = (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]); + } + $s = 1; continue; + case 2: + if (!(bsrc === sliceType$4.nil)) { + buf = $appendSlice(buf, $subslice(bsrc, lastMatchEnd)); + } else { + buf = $appendSlice(buf, $substring(src, lastMatchEnd)); + } + $s = -1; return buf; + /* */ } return; } var $f = {$blk: replaceAll, $c: true, $r, _r, _r$1, _tuple, _tuple$1, a, bsrc, buf, dstCap, endPos, lastMatchEnd, nmatch, re, repl, searchPos, src, width, $s};return $f; + }; + $ptrType(Regexp).prototype.ReplaceAll = function ReplaceAll(src, repl) { + var {_r, b, n, re, repl, src, srepl, $s, $r, $c} = $restore(this, {src, repl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = [re]; + repl = [repl]; + src = [src]; + srepl = [srepl]; + re[0] = this; + n = 2; + if (bytes.IndexByte(repl[0], 36) >= 0) { + n = $imul(2, ((re[0].numSubexp + 1 >> 0))); + } + srepl[0] = ""; + _r = re[0].replaceAll(src[0], "", n, (function(re, repl, src, srepl) { return function Regexp·ReplaceAll·func1(dst, match) { + var dst, match; + if (!((srepl[0].length === repl[0].$length))) { + srepl[0] = ($bytesToString(repl[0])); + } + return re[0].expand(dst, srepl[0], src[0], "", match); + }; })(re, repl, src, srepl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + b = _r; + $s = -1; return b; + /* */ } return; } var $f = {$blk: ReplaceAll, $c: true, $r, _r, b, n, re, repl, src, srepl, $s};return $f; + }; + $ptrType(Regexp).prototype.ReplaceAllLiteral = function ReplaceAllLiteral(src, repl) { + var {$24r, _r, re, repl, src, $s, $r, $c} = $restore(this, {src, repl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + repl = [repl]; + re = this; + _r = re.replaceAll(src, "", 2, (function(repl) { return function Regexp·ReplaceAllLiteral·func1(dst, match) { + var dst, match; + return $appendSlice(dst, repl[0]); + }; })(repl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ReplaceAllLiteral, $c: true, $r, $24r, _r, re, repl, src, $s};return $f; + }; + $ptrType(Regexp).prototype.ReplaceAllFunc = function ReplaceAllFunc(src, repl) { + var {$24r, _r, re, repl, src, $s, $r, $c} = $restore(this, {src, repl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + repl = [repl]; + src = [src]; + re = this; + _r = re.replaceAll(src[0], "", 2, (function(repl, src) { return function Regexp·ReplaceAllFunc·func1(dst, match) { + var {$24r, _arg, _arg$1, _r, dst, match, $s, $r, $c} = $restore(this, {dst, match}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = dst; + _r = repl[0]($subslice(src[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + $24r = $appendSlice(_arg, _arg$1); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Regexp·ReplaceAllFunc·func1, $c: true, $r, $24r, _arg, _arg$1, _r, dst, match, $s};return $f; + }; })(repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ReplaceAllFunc, $c: true, $r, $24r, _r, re, repl, src, $s};return $f; + }; + special = function special$1(b) { + var _q, _r, b, x, y; + return b < 128 && !(((((x = (_r = b % 16, _r === _r ? _r : $throwRuntimeError("integer divide by zero")), ((x < 0 || x >= specialBytes.length) ? ($throwRuntimeError("index out of range"), undefined) : specialBytes[x])) & (((y = ((_q = b / 16, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) << 24 >>> 24))) >>> 0) === 0)); + }; + init = function init$1() { + var _i, _index, _q, _r, _ref, b, y; + _ref = (new sliceType$4($stringToBytes("\\.+*?()|[]{}^$"))); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _index = (_r = b % 16, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); + ((_index < 0 || _index >= specialBytes.length) ? ($throwRuntimeError("index out of range"), undefined) : specialBytes[_index] = ((((_index < 0 || _index >= specialBytes.length) ? ($throwRuntimeError("index out of range"), undefined) : specialBytes[_index]) | (((y = ((_q = b / 16, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) << 24 >>> 24))) >>> 0)); + _i++; + } + }; + QuoteMeta = function QuoteMeta$1(s) { + var b, i, j, s; + i = 0; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + if (special(s.charCodeAt(i))) { + break; + } + i = i + (1) >> 0; + } + if (i >= s.length) { + return s; + } + b = $makeSlice(sliceType$4, (($imul(2, s.length)) - i >> 0)); + $copyString(b, $substring(s, 0, i)); + j = i; + while (true) { + if (!(i < s.length)) { break; } + if (special(s.charCodeAt(i))) { + ((j < 0 || j >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + j] = 92); + j = j + (1) >> 0; + } + ((j < 0 || j >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + j] = s.charCodeAt(i)); + j = j + (1) >> 0; + i = i + (1) >> 0; + } + return ($bytesToString($subslice(b, 0, j))); + }; + $pkg.QuoteMeta = QuoteMeta; + $ptrType(Regexp).prototype.pad = function pad(a) { + var a, n, re; + re = this; + if (a === sliceType$7.nil) { + return sliceType$7.nil; + } + n = $imul(((1 + re.numSubexp >> 0)), 2); + while (true) { + if (!(a.$length < n)) { break; } + a = $append(a, -1); + } + return a; + }; + $ptrType(Regexp).prototype.allMatches = function allMatches(s, b, n, deliver) { + var {_r, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, accept, b, deliver, end, i, ib, is, matches, n, pos, prevMatchEnd, re, s, width, $s, $r, $c} = $restore(this, {s, b, n, deliver}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + end = 0; + if (b === sliceType$4.nil) { + end = s.length; + } else { + end = b.$length; + } + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = -1; + pos = _tmp; + i = _tmp$1; + prevMatchEnd = _tmp$2; + /* while (true) { */ case 1: + /* if (!(i < n && pos <= end)) { break; } */ if(!(i < n && pos <= end)) { $s = 2; continue; } + _r = re.doExecute($ifaceNil, b, s, pos, re.prog.NumCap, sliceType$7.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + matches = _r; + if (matches.$length === 0) { + /* break; */ $s = 2; continue; + } + accept = true; + if ((1 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 1]) === pos) { + if ((0 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 0]) === prevMatchEnd) { + accept = false; + } + width = 0; + if (b === sliceType$4.nil) { + is = new inputString.ptr(s); + _tuple = is.step(pos); + width = _tuple[1]; + } else { + ib = new inputBytes.ptr(b); + _tuple$1 = ib.step(pos); + width = _tuple$1[1]; + } + if (width > 0) { + pos = pos + (width) >> 0; + } else { + pos = end + 1 >> 0; + } + } else { + pos = (1 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 1]); + } + prevMatchEnd = (1 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 1]); + /* */ if (accept) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (accept) { */ case 4: + $r = deliver(re.pad(matches)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + /* } */ case 5: + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: allMatches, $c: true, $r, _r, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, accept, b, deliver, end, i, ib, is, matches, n, pos, prevMatchEnd, re, s, width, $s};return $f; + }; + $ptrType(Regexp).prototype.Find = function Find(b) { + var {_r, a, b, dstCap, re, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + dstCap = arrayType$3.zero(); + _r = re.doExecute($ifaceNil, b, "", 0, 2, $subslice(new sliceType$7(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$7.nil) { + $s = -1; return sliceType$4.nil; + } + $s = -1; return $subslice(b, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])); + /* */ } return; } var $f = {$blk: Find, $c: true, $r, _r, a, b, dstCap, re, $s};return $f; + }; + $ptrType(Regexp).prototype.FindIndex = function FindIndex(b) { + var {_r, a, b, loc, re, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + loc = sliceType$7.nil; + re = this; + _r = re.doExecute($ifaceNil, b, "", 0, 2, sliceType$7.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$7.nil) { + loc = sliceType$7.nil; + $s = -1; return loc; + } + loc = $subslice(a, 0, 2); + $s = -1; return loc; + /* */ } return; } var $f = {$blk: FindIndex, $c: true, $r, _r, a, b, loc, re, $s};return $f; + }; + $ptrType(Regexp).prototype.FindString = function FindString(s) { + var {_r, a, dstCap, re, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + dstCap = arrayType$3.zero(); + _r = re.doExecute($ifaceNil, sliceType$4.nil, s, 0, 2, $subslice(new sliceType$7(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$7.nil) { + $s = -1; return ""; + } + $s = -1; return $substring(s, (0 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 0]), (1 >= a.$length ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + 1])); + /* */ } return; } var $f = {$blk: FindString, $c: true, $r, _r, a, dstCap, re, s, $s};return $f; + }; + $ptrType(Regexp).prototype.FindStringIndex = function FindStringIndex(s) { + var {_r, a, loc, re, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + loc = sliceType$7.nil; + re = this; + _r = re.doExecute($ifaceNil, sliceType$4.nil, s, 0, 2, sliceType$7.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$7.nil) { + loc = sliceType$7.nil; + $s = -1; return loc; + } + loc = $subslice(a, 0, 2); + $s = -1; return loc; + /* */ } return; } var $f = {$blk: FindStringIndex, $c: true, $r, _r, a, loc, re, s, $s};return $f; + }; + $ptrType(Regexp).prototype.FindReaderIndex = function FindReaderIndex(r) { + var {_r, a, loc, r, re, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + loc = sliceType$7.nil; + re = this; + _r = re.doExecute(r, sliceType$4.nil, "", 0, 2, sliceType$7.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$7.nil) { + loc = sliceType$7.nil; + $s = -1; return loc; + } + loc = $subslice(a, 0, 2); + $s = -1; return loc; + /* */ } return; } var $f = {$blk: FindReaderIndex, $c: true, $r, _r, a, loc, r, re, $s};return $f; + }; + $ptrType(Regexp).prototype.FindSubmatch = function FindSubmatch(b) { + var {_i, _r, _ref, a, b, dstCap, i, re, ret, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + dstCap = arrayType$4.zero(); + _r = re.doExecute($ifaceNil, b, "", 0, re.prog.NumCap, $subslice(new sliceType$7(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$7.nil) { + $s = -1; return sliceType$8.nil; + } + ret = $makeSlice(sliceType$8, (1 + re.numSubexp >> 0)); + _ref = ret; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + if (($imul(2, i)) < a.$length && (x = $imul(2, i), ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x])) >= 0) { + ((i < 0 || i >= ret.$length) ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + i] = $subslice(b, (x$1 = $imul(2, i), ((x$1 < 0 || x$1 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$1])), (x$2 = ($imul(2, i)) + 1 >> 0, ((x$2 < 0 || x$2 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$2])), (x$3 = ($imul(2, i)) + 1 >> 0, ((x$3 < 0 || x$3 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$3])))); + } + _i++; + } + $s = -1; return ret; + /* */ } return; } var $f = {$blk: FindSubmatch, $c: true, $r, _i, _r, _ref, a, b, dstCap, i, re, ret, x, x$1, x$2, x$3, $s};return $f; + }; + $ptrType(Regexp).prototype.Expand = function Expand(dst, template, src, match) { + var dst, match, re, src, template; + re = this; + return re.expand(dst, ($bytesToString(template)), src, "", match); + }; + $ptrType(Regexp).prototype.ExpandString = function ExpandString(dst, template, src, match) { + var dst, match, re, src, template; + re = this; + return re.expand(dst, template, sliceType$4.nil, src, match); + }; + $ptrType(Regexp).prototype.expand = function expand(dst, template, bsrc, src, match) { + var _i, _ref, _tuple, _tuple$1, after, before, bsrc, dst, i, match, name, namei, num, ok, re, rest, src, template, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + re = this; + while (true) { + if (!(template.length > 0)) { break; } + _tuple = strings.Cut(template, "$"); + before = _tuple[0]; + after = _tuple[1]; + ok = _tuple[2]; + if (!ok) { + break; + } + dst = $appendSlice(dst, before); + template = after; + if (!(template === "") && (template.charCodeAt(0) === 36)) { + dst = $append(dst, 36); + template = $substring(template, 1); + continue; + } + _tuple$1 = extract(template); + name = _tuple$1[0]; + num = _tuple$1[1]; + rest = _tuple$1[2]; + ok = _tuple$1[3]; + if (!ok) { + dst = $append(dst, 36); + continue; + } + template = rest; + if (num >= 0) { + if ((($imul(2, num)) + 1 >> 0) < match.$length && (x = $imul(2, num), ((x < 0 || x >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x])) >= 0) { + if (!(bsrc === sliceType$4.nil)) { + dst = $appendSlice(dst, $subslice(bsrc, (x$1 = $imul(2, num), ((x$1 < 0 || x$1 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$1])), (x$2 = ($imul(2, num)) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$2])))); + } else { + dst = $appendSlice(dst, $substring(src, (x$3 = $imul(2, num), ((x$3 < 0 || x$3 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$3])), (x$4 = ($imul(2, num)) + 1 >> 0, ((x$4 < 0 || x$4 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$4])))); + } + } + } else { + _ref = re.subexpNames; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + namei = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (name === namei && (($imul(2, i)) + 1 >> 0) < match.$length && (x$5 = $imul(2, i), ((x$5 < 0 || x$5 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$5])) >= 0) { + if (!(bsrc === sliceType$4.nil)) { + dst = $appendSlice(dst, $subslice(bsrc, (x$6 = $imul(2, i), ((x$6 < 0 || x$6 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$6])), (x$7 = ($imul(2, i)) + 1 >> 0, ((x$7 < 0 || x$7 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$7])))); + } else { + dst = $appendSlice(dst, $substring(src, (x$8 = $imul(2, i), ((x$8 < 0 || x$8 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$8])), (x$9 = ($imul(2, i)) + 1 >> 0, ((x$9 < 0 || x$9 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$9])))); + } + break; + } + _i++; + } + } + } + dst = $appendSlice(dst, template); + return dst; + }; + extract = function extract$1(str) { + var _tuple, brace, i, i$1, name, num, ok, rest, rune, size, str; + name = ""; + num = 0; + rest = ""; + ok = false; + if (str === "") { + return [name, num, rest, ok]; + } + brace = false; + if (str.charCodeAt(0) === 123) { + brace = true; + str = $substring(str, 1); + } + i = 0; + while (true) { + if (!(i < str.length)) { break; } + _tuple = utf8.DecodeRuneInString($substring(str, i)); + rune = _tuple[0]; + size = _tuple[1]; + if (!unicode.IsLetter(rune) && !unicode.IsDigit(rune) && !((rune === 95))) { + break; + } + i = i + (size) >> 0; + } + if (i === 0) { + return [name, num, rest, ok]; + } + name = $substring(str, 0, i); + if (brace) { + if (i >= str.length || !((str.charCodeAt(i) === 125))) { + return [name, num, rest, ok]; + } + i = i + (1) >> 0; + } + num = 0; + i$1 = 0; + while (true) { + if (!(i$1 < name.length)) { break; } + if (name.charCodeAt(i$1) < 48 || 57 < name.charCodeAt(i$1) || num >= 100000000) { + num = -1; + break; + } + num = (($imul(num, 10)) + ((name.charCodeAt(i$1) >> 0)) >> 0) - 48 >> 0; + i$1 = i$1 + (1) >> 0; + } + if ((name.charCodeAt(0) === 48) && name.length > 1) { + num = -1; + } + rest = $substring(str, i); + ok = true; + return [name, num, rest, ok]; + }; + $ptrType(Regexp).prototype.FindSubmatchIndex = function FindSubmatchIndex(b) { + var {$24r, _r, _r$1, b, re, $s, $r, $c} = $restore(this, {b}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doExecute($ifaceNil, b, "", 0, re.prog.NumCap, sliceType$7.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: FindSubmatchIndex, $c: true, $r, $24r, _r, _r$1, b, re, $s};return $f; + }; + $ptrType(Regexp).prototype.FindStringSubmatch = function FindStringSubmatch(s) { + var {_i, _r, _ref, a, dstCap, i, re, ret, s, x, x$1, x$2, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + dstCap = arrayType$4.zero(); + _r = re.doExecute($ifaceNil, sliceType$4.nil, s, 0, re.prog.NumCap, $subslice(new sliceType$7(dstCap), 0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + a = _r; + if (a === sliceType$7.nil) { + $s = -1; return sliceType$3.nil; + } + ret = $makeSlice(sliceType$3, (1 + re.numSubexp >> 0)); + _ref = ret; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + if (($imul(2, i)) < a.$length && (x = $imul(2, i), ((x < 0 || x >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x])) >= 0) { + ((i < 0 || i >= ret.$length) ? ($throwRuntimeError("index out of range"), undefined) : ret.$array[ret.$offset + i] = $substring(s, (x$1 = $imul(2, i), ((x$1 < 0 || x$1 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$1])), (x$2 = ($imul(2, i)) + 1 >> 0, ((x$2 < 0 || x$2 >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + x$2])))); + } + _i++; + } + $s = -1; return ret; + /* */ } return; } var $f = {$blk: FindStringSubmatch, $c: true, $r, _i, _r, _ref, a, dstCap, i, re, ret, s, x, x$1, x$2, $s};return $f; + }; + $ptrType(Regexp).prototype.FindStringSubmatchIndex = function FindStringSubmatchIndex(s) { + var {$24r, _r, _r$1, re, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doExecute($ifaceNil, sliceType$4.nil, s, 0, re.prog.NumCap, sliceType$7.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: FindStringSubmatchIndex, $c: true, $r, $24r, _r, _r$1, re, s, $s};return $f; + }; + $ptrType(Regexp).prototype.FindReaderSubmatchIndex = function FindReaderSubmatchIndex(r) { + var {$24r, _r, _r$1, r, re, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doExecute(r, sliceType$4.nil, "", 0, re.prog.NumCap, sliceType$7.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: FindReaderSubmatchIndex, $c: true, $r, $24r, _r, _r$1, r, re, $s};return $f; + }; + $ptrType(Regexp).prototype.FindAll = function FindAll(b, n) { + var {b, n, re, result, $s, $r, $c} = $restore(this, {b, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = [b]; + result = [result]; + re = this; + if (n < 0) { + n = b[0].$length + 1 >> 0; + } + result[0] = sliceType$8.nil; + $r = re.allMatches("", b[0], n, (function(b, result) { return function Regexp·FindAll·func1(match) { + var match; + if (result[0] === sliceType$8.nil) { + result[0] = $makeSlice(sliceType$8, 0, 10); + } + result[0] = $append(result[0], $subslice(b[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); + }; })(b, result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } var $f = {$blk: FindAll, $c: true, $r, b, n, re, result, $s};return $f; + }; + $ptrType(Regexp).prototype.FindAllIndex = function FindAllIndex(b, n) { + var {b, n, re, result, $s, $r, $c} = $restore(this, {b, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + result = [result]; + re = this; + if (n < 0) { + n = b.$length + 1 >> 0; + } + result[0] = sliceType$9.nil; + $r = re.allMatches("", b, n, (function(result) { return function Regexp·FindAllIndex·func1(match) { + var match; + if (result[0] === sliceType$9.nil) { + result[0] = $makeSlice(sliceType$9, 0, 10); + } + result[0] = $append(result[0], $subslice(match, 0, 2)); + }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } var $f = {$blk: FindAllIndex, $c: true, $r, b, n, re, result, $s};return $f; + }; + $ptrType(Regexp).prototype.FindAllString = function FindAllString(s, n) { + var {n, re, result, s, $s, $r, $c} = $restore(this, {s, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + result = [result]; + s = [s]; + re = this; + if (n < 0) { + n = s[0].length + 1 >> 0; + } + result[0] = sliceType$3.nil; + $r = re.allMatches(s[0], sliceType$4.nil, n, (function(result, s) { return function Regexp·FindAllString·func1(match) { + var match; + if (result[0] === sliceType$3.nil) { + result[0] = $makeSlice(sliceType$3, 0, 10); + } + result[0] = $append(result[0], $substring(s[0], (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]), (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]))); + }; })(result, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } var $f = {$blk: FindAllString, $c: true, $r, n, re, result, s, $s};return $f; + }; + $ptrType(Regexp).prototype.FindAllStringIndex = function FindAllStringIndex(s, n) { + var {n, re, result, s, $s, $r, $c} = $restore(this, {s, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + result = [result]; + re = this; + if (n < 0) { + n = s.length + 1 >> 0; + } + result[0] = sliceType$9.nil; + $r = re.allMatches(s, sliceType$4.nil, n, (function(result) { return function Regexp·FindAllStringIndex·func1(match) { + var match; + if (result[0] === sliceType$9.nil) { + result[0] = $makeSlice(sliceType$9, 0, 10); + } + result[0] = $append(result[0], $subslice(match, 0, 2)); + }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } var $f = {$blk: FindAllStringIndex, $c: true, $r, n, re, result, s, $s};return $f; + }; + $ptrType(Regexp).prototype.FindAllSubmatch = function FindAllSubmatch(b, n) { + var {b, n, re, result, $s, $r, $c} = $restore(this, {b, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = [b]; + result = [result]; + re = this; + if (n < 0) { + n = b[0].$length + 1 >> 0; + } + result[0] = sliceType$10.nil; + $r = re.allMatches("", b[0], n, (function(b, result) { return function Regexp·FindAllSubmatch·func1(match) { + var _i, _q, _ref, j, match, slice, x, x$1, x$2, x$3; + if (result[0] === sliceType$10.nil) { + result[0] = $makeSlice(sliceType$10, 0, 10); + } + slice = $makeSlice(sliceType$8, (_q = match.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + j = _i; + if ((x = $imul(2, j), ((x < 0 || x >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x])) >= 0) { + ((j < 0 || j >= slice.$length) ? ($throwRuntimeError("index out of range"), undefined) : slice.$array[slice.$offset + j] = $subslice(b[0], (x$1 = $imul(2, j), ((x$1 < 0 || x$1 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$1])), (x$2 = ($imul(2, j)) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$2])), (x$3 = ($imul(2, j)) + 1 >> 0, ((x$3 < 0 || x$3 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$3])))); + } + _i++; + } + result[0] = $append(result[0], slice); + }; })(b, result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } var $f = {$blk: FindAllSubmatch, $c: true, $r, b, n, re, result, $s};return $f; + }; + $ptrType(Regexp).prototype.FindAllSubmatchIndex = function FindAllSubmatchIndex(b, n) { + var {b, n, re, result, $s, $r, $c} = $restore(this, {b, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + result = [result]; + re = this; + if (n < 0) { + n = b.$length + 1 >> 0; + } + result[0] = sliceType$9.nil; + $r = re.allMatches("", b, n, (function(result) { return function Regexp·FindAllSubmatchIndex·func1(match) { + var match; + if (result[0] === sliceType$9.nil) { + result[0] = $makeSlice(sliceType$9, 0, 10); + } + result[0] = $append(result[0], match); + }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } var $f = {$blk: FindAllSubmatchIndex, $c: true, $r, b, n, re, result, $s};return $f; + }; + $ptrType(Regexp).prototype.FindAllStringSubmatch = function FindAllStringSubmatch(s, n) { + var {n, re, result, s, $s, $r, $c} = $restore(this, {s, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + result = [result]; + s = [s]; + re = this; + if (n < 0) { + n = s[0].length + 1 >> 0; + } + result[0] = sliceType$11.nil; + $r = re.allMatches(s[0], sliceType$4.nil, n, (function(result, s) { return function Regexp·FindAllStringSubmatch·func1(match) { + var _i, _q, _ref, j, match, slice, x, x$1, x$2; + if (result[0] === sliceType$11.nil) { + result[0] = $makeSlice(sliceType$11, 0, 10); + } + slice = $makeSlice(sliceType$3, (_q = match.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))); + _ref = slice; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + j = _i; + if ((x = $imul(2, j), ((x < 0 || x >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x])) >= 0) { + ((j < 0 || j >= slice.$length) ? ($throwRuntimeError("index out of range"), undefined) : slice.$array[slice.$offset + j] = $substring(s[0], (x$1 = $imul(2, j), ((x$1 < 0 || x$1 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$1])), (x$2 = ($imul(2, j)) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + x$2])))); + } + _i++; + } + result[0] = $append(result[0], slice); + }; })(result, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } var $f = {$blk: FindAllStringSubmatch, $c: true, $r, n, re, result, s, $s};return $f; + }; + $ptrType(Regexp).prototype.FindAllStringSubmatchIndex = function FindAllStringSubmatchIndex(s, n) { + var {n, re, result, s, $s, $r, $c} = $restore(this, {s, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + result = [result]; + re = this; + if (n < 0) { + n = s.length + 1 >> 0; + } + result[0] = sliceType$9.nil; + $r = re.allMatches(s, sliceType$4.nil, n, (function(result) { return function Regexp·FindAllStringSubmatchIndex·func1(match) { + var match; + if (result[0] === sliceType$9.nil) { + result[0] = $makeSlice(sliceType$9, 0, 10); + } + result[0] = $append(result[0], match); + }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return result[0]; + /* */ } return; } var $f = {$blk: FindAllStringSubmatchIndex, $c: true, $r, n, re, result, s, $s};return $f; + }; + $ptrType(Regexp).prototype.Split = function Split(s, n) { + var {_i, _r, _ref, beg, end, match, matches, n, re, s, strings$1, $s, $r, $c} = $restore(this, {s, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + if (n === 0) { + $s = -1; return sliceType$3.nil; + } + if (re.expr.length > 0 && (s.length === 0)) { + $s = -1; return new sliceType$3([""]); + } + _r = re.FindAllStringIndex(s, n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + matches = _r; + strings$1 = $makeSlice(sliceType$3, 0, matches.$length); + beg = 0; + end = 0; + _ref = matches; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + match = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (n > 0 && strings$1.$length >= (n - 1 >> 0)) { + break; + } + end = (0 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 0]); + if (!(((1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]) === 0))) { + strings$1 = $append(strings$1, $substring(s, beg, end)); + } + beg = (1 >= match.$length ? ($throwRuntimeError("index out of range"), undefined) : match.$array[match.$offset + 1]); + _i++; + } + if (!((end === s.length))) { + strings$1 = $append(strings$1, $substring(s, beg)); + } + $s = -1; return strings$1; + /* */ } return; } var $f = {$blk: Split, $c: true, $r, _i, _r, _ref, beg, end, match, matches, n, re, s, strings$1, $s};return $f; + }; + onePassPrefix = function onePassPrefix$1(p) { + var _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, buf, complete, i, p, pc, prefix, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + prefix = ""; + complete = false; + pc = 0; + i = (x = p.Inst, x$1 = p.Start, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + if (!((i.Op === 3)) || ((((((i.Arg << 24 >>> 24))) & 4) >>> 0) === 0)) { + _tmp = ""; + _tmp$1 = i.Op === 4; + _tmp$2 = ((p.Start >>> 0)); + prefix = _tmp; + complete = _tmp$1; + pc = _tmp$2; + return [prefix, complete, pc]; + } + pc = i.Out; + i = (x$2 = p.Inst, ((pc < 0 || pc >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + pc])); + while (true) { + if (!(i.Op === 6)) { break; } + pc = i.Out; + i = (x$3 = p.Inst, ((pc < 0 || pc >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc])); + } + if (!((iop(i) === 7)) || !((i.Rune.$length === 1))) { + _tmp$3 = ""; + _tmp$4 = i.Op === 4; + _tmp$5 = ((p.Start >>> 0)); + prefix = _tmp$3; + complete = _tmp$4; + pc = _tmp$5; + return [prefix, complete, pc]; + } + buf = new strings.Builder.ptr(ptrType$5.nil, sliceType$4.nil); + while (true) { + if (!((iop(i) === 7) && (i.Rune.$length === 1) && (((((i.Arg << 16 >>> 16)) & 1) >>> 0) === 0) && !(((x$4 = i.Rune, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])) === 65533)))) { break; } + buf.WriteRune((x$5 = i.Rune, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))); + _tmp$6 = i.Out; + _tmp$7 = (x$6 = p.Inst, x$7 = i.Out, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])); + pc = _tmp$6; + i = _tmp$7; + } + if ((i.Op === 3) && !((((((i.Arg << 24 >>> 24)) & 8) >>> 0) === 0)) && ((x$8 = p.Inst, x$9 = i.Out, ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9])).Op === 4)) { + complete = true; + } + _tmp$8 = buf.String(); + _tmp$9 = complete; + _tmp$10 = pc; + prefix = _tmp$8; + complete = _tmp$9; + pc = _tmp$10; + return [prefix, complete, pc]; + }; + onePassNext = function onePassNext$1(i, r) { + var i, next, r, x; + next = i.Inst.MatchRunePos(r); + if (next >= 0) { + return (x = i.Next, ((next < 0 || next >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + next])); + } + if (i.Inst.Op === 1) { + return i.Inst.Out; + } + return 0; + }; + iop = function iop$1(i) { + var _1, i, op; + op = i.Op; + _1 = op; + if ((_1 === (8)) || (_1 === (9)) || (_1 === (10))) { + op = 7; + } + return op; + }; + $ptrType(queueOnePass).prototype.empty = function empty() { + var q; + q = this; + return q.nextIndex >= q.size; + }; + $ptrType(queueOnePass).prototype.next = function next() { + var n, q, x, x$1; + n = 0; + q = this; + n = (x = q.dense, x$1 = q.nextIndex, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + q.nextIndex = q.nextIndex + (1) >>> 0; + return n; + }; + $ptrType(queueOnePass).prototype.clear = function clear() { + var q; + q = this; + q.size = 0; + q.nextIndex = 0; + }; + $ptrType(queueOnePass).prototype.contains = function contains(u) { + var q, u, x, x$1, x$2, x$3; + q = this; + if (u >= ((q.sparse.$length >>> 0))) { + return false; + } + return (x = q.sparse, ((u < 0 || u >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + u])) < q.size && ((x$1 = q.dense, x$2 = (x$3 = q.sparse, ((u < 0 || u >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + u])), ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])) === u); + }; + $ptrType(queueOnePass).prototype.insert = function insert(u) { + var q, u; + q = this; + if (!q.contains(u)) { + q.insertNew(u); + } + }; + $ptrType(queueOnePass).prototype.insertNew = function insertNew(u) { + var q, u, x, x$1, x$2; + q = this; + if (u >= ((q.sparse.$length >>> 0))) { + return; + } + (x = q.sparse, ((u < 0 || u >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + u] = q.size)); + (x$1 = q.dense, x$2 = q.size, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2] = u)); + q.size = q.size + (1) >>> 0; + }; + newQueue = function newQueue$1(size) { + var q, size; + q = ptrType$6.nil; + q = new queueOnePass.ptr($makeSlice(sliceType$2, size), $makeSlice(sliceType$2, size), 0, 0); + return q; + }; + mergeRuneSets = function mergeRuneSets$1(leftRunes, rightRunes, leftPC, rightPC) { + var {_r, _r$1, _r$2, _r$3, _tmp, _tmp$1, extend, ix, leftLen, leftPC, leftRunes, lx, merged, next$1, ok, rightLen, rightPC, rightRunes, rx, x, x$1, $s, $deferred, $r, $c} = $restore(this, {leftRunes, rightRunes, leftPC, rightPC}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + ix = [ix]; + lx = [lx]; + merged = [merged]; + next$1 = [next$1]; + ok = [ok]; + rx = [rx]; + leftLen = leftRunes.$get().$length; + rightLen = rightRunes.$get().$length; + if (!(((leftLen & 1) === 0)) || !(((rightLen & 1) === 0))) { + $panic(new $String("mergeRuneSets odd length []rune")); + } + _tmp = 0; + _tmp$1 = 0; + lx[0] = _tmp; + rx[0] = _tmp$1; + merged[0] = $makeSlice(sliceType$1, 0); + next$1[0] = $makeSlice(sliceType$2, 0); + ok[0] = true; + $deferred.push([(function(ix, lx, merged, next$1, ok, rx) { return function mergeRuneSets·func1() { + if (!ok[0]) { + merged[0] = sliceType$1.nil; + next$1[0] = sliceType$2.nil; + } + }; })(ix, lx, merged, next$1, ok, rx), []]); + ix[0] = -1; + extend = (function(ix, lx, merged, next$1, ok, rx) { return function mergeRuneSets·func2(newLow, newArray, pc) { + var newArray, newLow, pc, x, x$1, x$2, x$3, x$4, x$5; + if (ix[0] > 0 && (x = newArray.$get(), x$1 = newLow.$get(), ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) <= ((ix[0] < 0 || ix[0] >= merged[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : merged[0].$array[merged[0].$offset + ix[0]])) { + return false; + } + merged[0] = $append(merged[0], (x$2 = newArray.$get(), x$3 = newLow.$get(), ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])), (x$4 = newArray.$get(), x$5 = newLow.$get() + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5]))); + newLow.$set(newLow.$get() + (2) >> 0); + ix[0] = ix[0] + (2) >> 0; + next$1[0] = $append(next$1[0], pc); + return true; + }; })(ix, lx, merged, next$1, ok, rx); + /* while (true) { */ case 1: + /* if (!(lx[0] < leftLen || rx[0] < rightLen)) { break; } */ if(!(lx[0] < leftLen || rx[0] < rightLen)) { $s = 2; continue; } + /* */ if (rx[0] >= rightLen) { $s = 4; continue; } + /* */ if (lx[0] >= leftLen) { $s = 5; continue; } + /* */ if ((x = rightRunes.$get(), ((rx[0] < 0 || rx[0] >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + rx[0]])) < (x$1 = leftRunes.$get(), ((lx[0] < 0 || lx[0] >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + lx[0]]))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (rx[0] >= rightLen) { */ case 4: + _r = extend((lx.$ptr || (lx.$ptr = new ptrType$7(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lx))), leftRunes, leftPC); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ok[0] = _r; + $s = 8; continue; + /* } else if (lx[0] >= leftLen) { */ case 5: + _r$1 = extend((rx.$ptr || (rx.$ptr = new ptrType$7(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rx))), rightRunes, rightPC); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ok[0] = _r$1; + $s = 8; continue; + /* } else if ((x = rightRunes.$get(), ((rx[0] < 0 || rx[0] >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + rx[0]])) < (x$1 = leftRunes.$get(), ((lx[0] < 0 || lx[0] >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + lx[0]]))) { */ case 6: + _r$2 = extend((rx.$ptr || (rx.$ptr = new ptrType$7(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rx))), rightRunes, rightPC); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ok[0] = _r$2; + $s = 8; continue; + /* } else { */ case 7: + _r$3 = extend((lx.$ptr || (lx.$ptr = new ptrType$7(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lx))), leftRunes, leftPC); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ok[0] = _r$3; + /* } */ case 8: + case 3: + if (!ok[0]) { + $s = -1; return [noRune, noNext]; + } + $s = 1; continue; + case 2: + $s = -1; return [merged[0], next$1[0]]; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [sliceType$1.nil, sliceType$2.nil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: mergeRuneSets$1, $c: true, $r, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, extend, ix, leftLen, leftPC, leftRunes, lx, merged, next$1, ok, rightLen, rightPC, rightRunes, rx, x, x$1, $s, $deferred};return $f; } } + }; + cleanupOnePass = function cleanupOnePass$1(prog, original) { + var _1, _i, _ref, instOriginal, ix, original, prog, x, x$1, x$2; + _ref = original.Inst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + ix = _i; + instOriginal = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syntax.Inst); + _1 = instOriginal.Op; + if ((_1 === (0)) || (_1 === (1)) || (_1 === (7))) { + } else if ((_1 === (2)) || (_1 === (3)) || (_1 === (6)) || (_1 === (4)) || (_1 === (5))) { + (x = prog.Inst, ((ix < 0 || ix >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + ix])).Next = sliceType$2.nil; + } else if ((_1 === (8)) || (_1 === (9)) || (_1 === (10))) { + (x$1 = prog.Inst, ((ix < 0 || ix >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + ix])).Next = sliceType$2.nil; + onePassInst.copy((x$2 = prog.Inst, ((ix < 0 || ix >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + ix])), new onePassInst.ptr($clone(instOriginal, syntax.Inst), sliceType$2.nil)); + } + _i++; + } + }; + onePassCopy = function onePassCopy$1(prog) { + var _1, _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, i, inst, instAlt, instOther, p, p_A_Alt, p_A_Other, p_B_Alt, p_B_Other, patch, pc, prog, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + p = new onePassProg.ptr($makeSlice(sliceType$12, prog.Inst.$length), prog.Start, prog.NumCap); + _ref = prog.Inst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syntax.Inst); + onePassInst.copy((x = p.Inst, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), new onePassInst.ptr($clone(inst, syntax.Inst), sliceType$2.nil)); + _i++; + } + _ref$1 = p.Inst; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + pc = _i$1; + _1 = (x$1 = p.Inst, ((pc < 0 || pc >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + pc])).Inst.Op; + if ((_1 === (0)) || (_1 === (1))) { + p_A_Other = (x$2 = (x$3 = p.Inst, ((pc < 0 || pc >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc])), (x$2.$ptr_Out || (x$2.$ptr_Out = new ptrType$8(function() { return this.$target.Inst.Out; }, function($v) { this.$target.Inst.Out = $v; }, x$2)))); + p_A_Alt = (x$4 = (x$5 = p.Inst, ((pc < 0 || pc >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + pc])), (x$4.$ptr_Arg || (x$4.$ptr_Arg = new ptrType$8(function() { return this.$target.Inst.Arg; }, function($v) { this.$target.Inst.Arg = $v; }, x$4)))); + instAlt = $clone((x$6 = p.Inst, x$7 = p_A_Alt.$get(), ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])), onePassInst); + if (!((instAlt.Inst.Op === 0) || (instAlt.Inst.Op === 1))) { + _tmp = p_A_Other; + _tmp$1 = p_A_Alt; + p_A_Alt = _tmp; + p_A_Other = _tmp$1; + onePassInst.copy(instAlt, (x$8 = p.Inst, x$9 = p_A_Alt.$get(), ((x$9 < 0 || x$9 >= x$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + x$9]))); + if (!((instAlt.Inst.Op === 0) || (instAlt.Inst.Op === 1))) { + _i$1++; + continue; + } + } + instOther = $clone((x$10 = p.Inst, x$11 = p_A_Other.$get(), ((x$11 < 0 || x$11 >= x$10.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + x$11])), onePassInst); + if ((instOther.Inst.Op === 0) || (instOther.Inst.Op === 1)) { + _i$1++; + continue; + } + p_B_Alt = (x$12 = (x$13 = p.Inst, x$14 = p_A_Alt.$get(), ((x$14 < 0 || x$14 >= x$13.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + x$14])), (x$12.$ptr_Out || (x$12.$ptr_Out = new ptrType$8(function() { return this.$target.Inst.Out; }, function($v) { this.$target.Inst.Out = $v; }, x$12)))); + p_B_Other = (x$15 = (x$16 = p.Inst, x$17 = p_A_Alt.$get(), ((x$17 < 0 || x$17 >= x$16.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + x$17])), (x$15.$ptr_Arg || (x$15.$ptr_Arg = new ptrType$8(function() { return this.$target.Inst.Arg; }, function($v) { this.$target.Inst.Arg = $v; }, x$15)))); + patch = false; + if (instAlt.Inst.Out === ((pc >>> 0))) { + patch = true; + } else if (instAlt.Inst.Arg === ((pc >>> 0))) { + patch = true; + _tmp$2 = p_B_Other; + _tmp$3 = p_B_Alt; + p_B_Alt = _tmp$2; + p_B_Other = _tmp$3; + } + if (patch) { + p_B_Alt.$set(p_A_Other.$get()); + } + if (p_A_Other.$get() === p_B_Alt.$get()) { + p_A_Alt.$set(p_B_Other.$get()); + } + } else { + _i$1++; + continue; + } + _i$1++; + } + return p; + }; + runeSlice.prototype.Len = function Len() { + var p; + p = this; + return p.$length; + }; + $ptrType(runeSlice).prototype.Len = function(...$args) { return this.$get().Len(...$args); }; + runeSlice.prototype.Less = function Less(i, j) { + var i, j, p; + p = this; + return ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); + }; + $ptrType(runeSlice).prototype.Less = function(...$args) { return this.$get().Less(...$args); }; + runeSlice.prototype.Swap = function Swap(i, j) { + var _tmp, _tmp$1, i, j, p; + p = this; + _tmp = ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j]); + _tmp$1 = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]); + ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i] = _tmp); + ((j < 0 || j >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + j] = _tmp$1); + }; + $ptrType(runeSlice).prototype.Swap = function(...$args) { return this.$get().Swap(...$args); }; + makeOnePass = function makeOnePass$1(p) { + var {_i, _r, _ref, check, i, instQueue, m, onePassRunes, p, pc, visitQueue, x, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = [check]; + instQueue = [instQueue]; + onePassRunes = [onePassRunes]; + p = [p]; + visitQueue = [visitQueue]; + if (p[0].Inst.$length >= 1000) { + $s = -1; return ptrType$2.nil; + } + instQueue[0] = newQueue(p[0].Inst.$length); + visitQueue[0] = newQueue(p[0].Inst.$length); + check[0] = $throwNilPointerError; + onePassRunes[0] = $makeSlice(sliceType$13, p[0].Inst.$length); + check[0] = (function(check, instQueue, onePassRunes, p, visitQueue) { return function makeOnePass·func1(pc, m) { + var {_1, _i, _i$1, _i$2, _i$3, _i$4, _q, _q$1, _q$2, _q$3, _q$4, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _v, i, i$1, i$2, i$3, i$4, inst, m, matchArg, matchOut, ok, pc, r0, r0$1, r1, r1$1, runes, runes$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r, $c} = $restore(this, {pc, m}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ok = false; + ok = true; + inst = (x = p[0].Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); + if (visitQueue[0].contains(pc)) { + $s = -1; return ok; + } + visitQueue[0].insert(pc); + _1 = inst.Inst.Op; + /* */ if ((_1 === (0)) || (_1 === (1))) { $s = 2; continue; } + /* */ if ((_1 === (2)) || (_1 === (6))) { $s = 3; continue; } + /* */ if (_1 === (3)) { $s = 4; continue; } + /* */ if ((_1 === (4)) || (_1 === (5))) { $s = 5; continue; } + /* */ if (_1 === (7)) { $s = 6; continue; } + /* */ if (_1 === (8)) { $s = 7; continue; } + /* */ if (_1 === (9)) { $s = 8; continue; } + /* */ if (_1 === (10)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ((_1 === (0)) || (_1 === (1))) { */ case 2: + _r = check[0](inst.Inst.Out, m); /* */ $s = 12; case 12: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + if (!(_r)) { _v = false; $s = 11; continue s; } + _r$1 = check[0](inst.Inst.Arg, m); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 11: + ok = _v; + matchOut = (x$1 = inst.Inst.Out, ((x$1 < 0 || x$1 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$1])); + matchArg = (x$2 = inst.Inst.Arg, ((x$2 < 0 || x$2 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$2])); + if (matchOut && matchArg) { + ok = false; + /* break; */ $s = 1; continue; + } + if (matchArg) { + _tmp = inst.Inst.Arg; + _tmp$1 = inst.Inst.Out; + inst.Inst.Out = _tmp; + inst.Inst.Arg = _tmp$1; + _tmp$2 = matchArg; + _tmp$3 = matchOut; + matchOut = _tmp$2; + matchArg = _tmp$3; + } + if (matchOut) { + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = true); + inst.Inst.Op = 1; + } + _r$2 = mergeRuneSets($indexPtr(onePassRunes[0].$array, onePassRunes[0].$offset + inst.Inst.Out, ptrType$9), $indexPtr(onePassRunes[0].$array, onePassRunes[0].$offset + inst.Inst.Arg, ptrType$9), inst.Inst.Out, inst.Inst.Arg); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = _tuple[0]); + inst.Next = _tuple[1]; + if (inst.Next.$length > 0 && ((x$3 = inst.Next, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])) === 4294967295)) { + ok = false; + /* break; */ $s = 1; continue; + } + $s = 10; continue; + /* } else if ((_1 === (2)) || (_1 === (6))) { */ case 3: + _r$3 = check[0](inst.Inst.Out, m); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ok = _r$3; + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = (x$4 = inst.Inst.Out, ((x$4 < 0 || x$4 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$4]))); + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), (x$5 = inst.Inst.Out, ((x$5 < 0 || x$5 >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + x$5])))); + inst.Next = $makeSlice(sliceType$2, ((_q = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); + _ref = inst.Next; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + (x$6 = inst.Next, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i] = inst.Inst.Out)); + _i++; + } + $s = 10; continue; + /* } else if (_1 === (3)) { */ case 4: + _r$4 = check[0](inst.Inst.Out, m); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + ok = _r$4; + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = (x$7 = inst.Inst.Out, ((x$7 < 0 || x$7 >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + x$7]))); + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), (x$8 = inst.Inst.Out, ((x$8 < 0 || x$8 >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + x$8])))); + inst.Next = $makeSlice(sliceType$2, ((_q$1 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); + _ref$1 = inst.Next; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + (x$9 = inst.Next, ((i$1 < 0 || i$1 >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + i$1] = inst.Inst.Out)); + _i$1++; + } + $s = 10; continue; + /* } else if ((_1 === (4)) || (_1 === (5))) { */ case 5: + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = (inst.Inst.Op === 4)); + $s = 10; continue; + /* } else if (_1 === (7)) { */ case 6: + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); + if (inst.Next.$length > 0) { + /* break; */ $s = 1; continue; + } + instQueue[0].insert(inst.Inst.Out); + if (inst.Inst.Rune.$length === 0) { + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = new sliceType$1([])); + inst.Next = new sliceType$2([inst.Inst.Out]); + /* break; */ $s = 1; continue; + } + runes = $makeSlice(sliceType$1, 0); + /* */ if ((inst.Inst.Rune.$length === 1) && !((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if ((inst.Inst.Rune.$length === 1) && !((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { */ case 17: + r0 = (x$10 = inst.Inst.Rune, (0 >= x$10.$length ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + 0])); + runes = $append(runes, r0, r0); + r1 = unicode.SimpleFold(r0); + while (true) { + if (!(!((r1 === r0)))) { break; } + runes = $append(runes, r1, r1); + r1 = unicode.SimpleFold(r1); + } + $r = sort.Sort(($convertSliceType(runes, runeSlice))); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 19; continue; + /* } else { */ case 18: + runes = $appendSlice(runes, inst.Inst.Rune); + /* } */ case 19: + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = runes); + inst.Next = $makeSlice(sliceType$2, ((_q$2 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); + _ref$2 = inst.Next; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$2 = _i$2; + (x$11 = inst.Next, ((i$2 < 0 || i$2 >= x$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + i$2] = inst.Inst.Out)); + _i$2++; + } + inst.Inst.Op = 7; + $s = 10; continue; + /* } else if (_1 === (8)) { */ case 7: + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); + if (inst.Next.$length > 0) { + /* break; */ $s = 1; continue; + } + instQueue[0].insert(inst.Inst.Out); + runes$1 = new sliceType$1([]); + /* */ if (!((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!((((((inst.Inst.Arg << 16 >>> 16)) & 1) >>> 0) === 0))) { */ case 21: + r0$1 = (x$12 = inst.Inst.Rune, (0 >= x$12.$length ? ($throwRuntimeError("index out of range"), undefined) : x$12.$array[x$12.$offset + 0])); + runes$1 = $append(runes$1, r0$1, r0$1); + r1$1 = unicode.SimpleFold(r0$1); + while (true) { + if (!(!((r1$1 === r0$1)))) { break; } + runes$1 = $append(runes$1, r1$1, r1$1); + r1$1 = unicode.SimpleFold(r1$1); + } + $r = sort.Sort(($convertSliceType(runes$1, runeSlice))); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 23; continue; + /* } else { */ case 22: + runes$1 = $append(runes$1, (x$13 = inst.Inst.Rune, (0 >= x$13.$length ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + 0])), (x$14 = inst.Inst.Rune, (0 >= x$14.$length ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + 0]))); + /* } */ case 23: + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = runes$1); + inst.Next = $makeSlice(sliceType$2, ((_q$3 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); + _ref$3 = inst.Next; + _i$3 = 0; + while (true) { + if (!(_i$3 < _ref$3.$length)) { break; } + i$3 = _i$3; + (x$15 = inst.Next, ((i$3 < 0 || i$3 >= x$15.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$15.$array[x$15.$offset + i$3] = inst.Inst.Out)); + _i$3++; + } + inst.Inst.Op = 7; + $s = 10; continue; + /* } else if (_1 === (9)) { */ case 8: + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); + if (inst.Next.$length > 0) { + /* break; */ $s = 1; continue; + } + instQueue[0].insert(inst.Inst.Out); + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), anyRune)); + inst.Next = new sliceType$2([inst.Inst.Out]); + $s = 10; continue; + /* } else if (_1 === (10)) { */ case 9: + ((pc < 0 || pc >= m.$length) ? ($throwRuntimeError("index out of range"), undefined) : m.$array[m.$offset + pc] = false); + if (inst.Next.$length > 0) { + /* break; */ $s = 1; continue; + } + instQueue[0].insert(inst.Inst.Out); + ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), anyRuneNotNL)); + inst.Next = $makeSlice(sliceType$2, ((_q$4 = ((pc < 0 || pc >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$4 === _q$4 && _q$4 !== 1/0 && _q$4 !== -1/0) ? _q$4 >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0)); + _ref$4 = inst.Next; + _i$4 = 0; + while (true) { + if (!(_i$4 < _ref$4.$length)) { break; } + i$4 = _i$4; + (x$16 = inst.Next, ((i$4 < 0 || i$4 >= x$16.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + i$4] = inst.Inst.Out)); + _i$4++; + } + /* } */ case 10: + case 1: + $s = -1; return ok; + /* */ } return; } var $f = {$blk: makeOnePass·func1, $c: true, $r, _1, _i, _i$1, _i$2, _i$3, _i$4, _q, _q$1, _q$2, _q$3, _q$4, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _v, i, i$1, i$2, i$3, i$4, inst, m, matchArg, matchOut, ok, pc, r0, r0$1, r1, r1$1, runes, runes$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s};return $f; + }; })(check, instQueue, onePassRunes, p, visitQueue); + instQueue[0].clear(); + instQueue[0].insert(((p[0].Start >>> 0))); + m = $makeSlice(sliceType$14, p[0].Inst.$length); + /* while (true) { */ case 1: + /* if (!(!instQueue[0].empty())) { break; } */ if(!(!instQueue[0].empty())) { $s = 2; continue; } + visitQueue[0].clear(); + pc = instQueue[0].next(); + _r = check[0](pc, m); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r) { */ case 3: + p[0] = ptrType$2.nil; + /* break; */ $s = 2; continue; + /* } */ case 4: + $s = 1; continue; + case 2: + if (!(p[0] === ptrType$2.nil)) { + _ref = p[0].Inst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + (x = p[0].Inst, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).Inst.Rune = ((i < 0 || i >= onePassRunes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : onePassRunes[0].$array[onePassRunes[0].$offset + i]); + _i++; + } + } + $s = -1; return p[0]; + /* */ } return; } var $f = {$blk: makeOnePass$1, $c: true, $r, _i, _r, _ref, check, i, instQueue, m, onePassRunes, p, pc, visitQueue, x, $s};return $f; + }; + compileOnePass = function compileOnePass$1(prog) { + var {_1, _i, _r, _ref, inst, opOut, p, prog, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {prog}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = ptrType$2.nil; + if (prog.Start === 0) { + p = ptrType$2.nil; + $s = -1; return p; + } + if (!(((x = prog.Inst, x$1 = prog.Start, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Op === 3)) || !(((((((x$2 = prog.Inst, x$3 = prog.Start, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])).Arg << 24 >>> 24)) & 4) >>> 0) === 4))) { + p = ptrType$2.nil; + $s = -1; return p; + } + _ref = prog.Inst; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), syntax.Inst); + opOut = (x$4 = prog.Inst, x$5 = inst.Out, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])).Op; + _1 = inst.Op; + if ((_1 === (0)) || (_1 === (1))) { + if ((opOut === 4) || ((x$6 = prog.Inst, x$7 = inst.Arg, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7])).Op === 4)) { + p = ptrType$2.nil; + $s = -1; return p; + } + } else if (_1 === (3)) { + if (opOut === 4) { + if (((((inst.Arg << 24 >>> 24)) & 8) >>> 0) === 8) { + _i++; + continue; + } + p = ptrType$2.nil; + $s = -1; return p; + } + } else if (opOut === 4) { + p = ptrType$2.nil; + $s = -1; return p; + } + _i++; + } + p = onePassCopy(prog); + _r = makeOnePass(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + p = _r; + if (!(p === ptrType$2.nil)) { + cleanupOnePass(p, prog); + } + p = p; + $s = -1; return p; + /* */ } return; } var $f = {$blk: compileOnePass$1, $c: true, $r, _1, _i, _r, _ref, inst, opOut, p, prog, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + $ptrType(inputs).prototype.newBytes = function newBytes(b) { + var b, i; + i = this; + i.bytes.str = b; + return i.bytes; + }; + $ptrType(inputs).prototype.newString = function newString(s) { + var i, s; + i = this; + i.string.str = s; + return i.string; + }; + $ptrType(inputs).prototype.newReader = function newReader(r) { + var i, r; + i = this; + i.reader.r = r; + i.reader.atEOT = false; + i.reader.pos = 0; + return i.reader; + }; + $ptrType(inputs).prototype.clear = function clear$1() { + var i; + i = this; + if (!(i.bytes.str === sliceType$4.nil)) { + i.bytes.str = sliceType$4.nil; + } else if (!($interfaceIsEqual(i.reader.r, $ifaceNil))) { + i.reader.r = $ifaceNil; + } else { + i.string.str = ""; + } + }; + $ptrType(inputs).prototype.init = function init$2(r, b, s) { + var b, i, r, s; + i = this; + if (!($interfaceIsEqual(r, $ifaceNil))) { + return [i.newReader(r), 0]; + } + if (!(b === sliceType$4.nil)) { + return [i.newBytes(b), b.$length]; + } + return [i.newString(s), s.length]; + }; + $ptrType(machine).prototype.init = function init$3(ncap) { + var _i, _ref, m, ncap, t; + m = this; + _ref = m.pool; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + t.cap = $subslice(t.cap, 0, ncap); + _i++; + } + m.matchcap = $subslice(m.matchcap, 0, ncap); + }; + $ptrType(machine).prototype.alloc = function alloc(i) { + var i, m, n, t, x, x$1; + m = this; + t = ptrType$4.nil; + n = m.pool.$length; + if (n > 0) { + t = (x = m.pool, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + m.pool = $subslice(m.pool, 0, (n - 1 >> 0)); + } else { + t = new thread.ptr(ptrType$10.nil, sliceType$7.nil); + t.cap = $makeSlice(sliceType$7, m.matchcap.$length, m.matchcap.$capacity); + } + t.inst = i; + return t; + }; + newLazyFlag = function newLazyFlag$1(r1, r2) { + var r1, r2, x, x$1, x$2; + return ((x = (x$1 = $shiftLeft64((new $Uint64(0, r1)), 32), x$2 = (new $Uint64(0, ((r2 >>> 0)))), new $Uint64(x$1.$high | x$2.$high, (x$1.$low | x$2.$low) >>> 0)), new lazyFlag(x.$high, x.$low))); + }; + lazyFlag.prototype.match = function match(op) { + var f, op, r1, r2; + f = this; + if (op === 0) { + return true; + } + r1 = (($shiftRightUint64(f, 32).$low >> 0)); + if (!((((op & 1) >>> 0) === 0))) { + if (!((r1 === 10)) && r1 >= 0) { + return false; + } + op = (op & ~(1)) << 24 >>> 24; + } + if (!((((op & 4) >>> 0) === 0))) { + if (r1 >= 0) { + return false; + } + op = (op & ~(4)) << 24 >>> 24; + } + if (op === 0) { + return true; + } + r2 = ((f.$low >> 0)); + if (!((((op & 2) >>> 0) === 0))) { + if (!((r2 === 10)) && r2 >= 0) { + return false; + } + op = (op & ~(2)) << 24 >>> 24; + } + if (!((((op & 8) >>> 0) === 0))) { + if (r2 >= 0) { + return false; + } + op = (op & ~(8)) << 24 >>> 24; + } + if (op === 0) { + return true; + } + if (!(syntax.IsWordChar(r1) === syntax.IsWordChar(r2))) { + op = (op & ~(16)) << 24 >>> 24; + } else { + op = (op & ~(32)) << 24 >>> 24; + } + return op === 0; + }; + $ptrType(lazyFlag).prototype.match = function(...$args) { return this.$get().match(...$args); }; + $ptrType(machine).prototype.match = function match$1(i, pos) { + var {_i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, advance, flag, i, i$1, m, nextq, pos, r, r1, runq, startCond, width, width1, x, x$1, $s, $r, $c} = $restore(this, {i, pos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + flag = [flag]; + m = this; + startCond = m.re.cond; + if (startCond === 255) { + $s = -1; return false; + } + m.matched = false; + _ref = m.matchcap; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i$1 = _i; + (x = m.matchcap, ((i$1 < 0 || i$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i$1] = -1)); + _i++; + } + _tmp = m.q0; + _tmp$1 = m.q1; + runq = _tmp; + nextq = _tmp$1; + _tmp$2 = -1; + _tmp$3 = -1; + r = _tmp$2; + r1 = _tmp$3; + _tmp$4 = 0; + _tmp$5 = 0; + width = _tmp$4; + width1 = _tmp$5; + _r = i.step(pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r = _tuple[0]; + width = _tuple[1]; + /* */ if (!((r === -1))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((r === -1))) { */ case 2: + _r$1 = i.step(pos + width >> 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + r1 = _tuple$1[0]; + width1 = _tuple$1[1]; + /* } */ case 3: + flag[0] = new lazyFlag(0, 0); + /* */ if (pos === 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (pos === 0) { */ case 5: + flag[0] = newLazyFlag(-1, r); + $s = 7; continue; + /* } else { */ case 6: + _r$2 = i.context(pos); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + flag[0] = _r$2; + /* } */ case 7: + /* while (true) { */ case 9: + /* */ if (runq.dense.$length === 0) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (runq.dense.$length === 0) { */ case 11: + if (!((((startCond & 4) >>> 0) === 0)) && !((pos === 0))) { + /* break; */ $s = 10; continue; + } + if (m.matched) { + /* break; */ $s = 10; continue; + } + if (!(m.re.prefix.length > 0 && !((r1 === m.re.prefixRune)))) { _v = false; $s = 15; continue s; } + _r$3 = i.canCheckPrefix(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3; case 15: + /* */ if (_v) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_v) { */ case 13: + _r$4 = i.index(m.re, pos); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + advance = _r$4; + if (advance < 0) { + /* break; */ $s = 10; continue; + } + pos = pos + (advance) >> 0; + _r$5 = i.step(pos); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$2 = _r$5; + r = _tuple$2[0]; + width = _tuple$2[1]; + _r$6 = i.step(pos + width >> 0); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$3 = _r$6; + r1 = _tuple$3[0]; + width1 = _tuple$3[1]; + /* } */ case 14: + /* } */ case 12: + if (!m.matched) { + if (m.matchcap.$length > 0) { + (x$1 = m.matchcap, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = pos)); + } + m.add(runq, ((m.p.Start >>> 0)), pos, m.matchcap, (flag.$ptr || (flag.$ptr = new ptrType$11(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, flag))), ptrType$4.nil); + } + flag[0] = newLazyFlag(r, r1); + m.step(runq, nextq, pos, pos + width >> 0, r, (flag.$ptr || (flag.$ptr = new ptrType$11(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, flag)))); + if (width === 0) { + /* break; */ $s = 10; continue; + } + if ((m.matchcap.$length === 0) && m.matched) { + /* break; */ $s = 10; continue; + } + pos = pos + (width) >> 0; + _tmp$6 = r1; + _tmp$7 = width1; + r = _tmp$6; + width = _tmp$7; + /* */ if (!((r === -1))) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (!((r === -1))) { */ case 20: + _r$7 = i.step(pos + width >> 0); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$4 = _r$7; + r1 = _tuple$4[0]; + width1 = _tuple$4[1]; + /* } */ case 21: + _tmp$8 = nextq; + _tmp$9 = runq; + runq = _tmp$8; + nextq = _tmp$9; + $s = 9; continue; + case 10: + m.clear(nextq); + $s = -1; return m.matched; + /* */ } return; } var $f = {$blk: match$1, $c: true, $r, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, advance, flag, i, i$1, m, nextq, pos, r, r1, runq, startCond, width, width1, x, x$1, $s};return $f; + }; + $ptrType(machine).prototype.clear = function clear$2(q) { + var _i, _ref, d, m, q; + m = this; + _ref = q.dense; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + d = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), entry); + if (!(d.t === ptrType$4.nil)) { + m.pool = $append(m.pool, d.t); + } + _i++; + } + q.dense = $subslice(q.dense, 0, 0); + }; + $ptrType(machine).prototype.step = function step$3(runq, nextq, pos, nextPos, c, nextCond) { + var _1, _i, _ref, add, c, d, d$1, i, j, longest, m, nextCond, nextPos, nextq, pos, runq, t, x, x$1, x$2, x$3, x$4, x$5; + m = this; + longest = m.re.longest; + j = 0; + while (true) { + if (!(j < runq.dense.$length)) { break; } + d = (x = runq.dense, ((j < 0 || j >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + j])); + t = d.t; + if (t === ptrType$4.nil) { + j = j + (1) >> 0; + continue; + } + if (longest && m.matched && t.cap.$length > 0 && (x$1 = m.matchcap, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])) < (x$2 = t.cap, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))) { + m.pool = $append(m.pool, t); + j = j + (1) >> 0; + continue; + } + i = t.inst; + add = false; + _1 = i.Op; + if (_1 === (4)) { + if (t.cap.$length > 0 && (!longest || !m.matched || (x$3 = m.matchcap, (1 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 1])) < pos)) { + (x$4 = t.cap, (1 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 1] = pos)); + $copySlice(m.matchcap, t.cap); + } + if (!longest) { + _ref = $subslice(runq.dense, (j + 1 >> 0)); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + d$1 = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), entry); + if (!(d$1.t === ptrType$4.nil)) { + m.pool = $append(m.pool, d$1.t); + } + _i++; + } + runq.dense = $subslice(runq.dense, 0, 0); + } + m.matched = true; + } else if (_1 === (7)) { + add = i.MatchRune(c); + } else if (_1 === (8)) { + add = c === (x$5 = i.Rune, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0])); + } else if (_1 === (9)) { + add = true; + } else if (_1 === (10)) { + add = !((c === 10)); + } else { + $panic(new $String("bad inst")); + } + if (add) { + t = m.add(nextq, i.Out, nextPos, t.cap, nextCond, t); + } + if (!(t === ptrType$4.nil)) { + m.pool = $append(m.pool, t); + } + j = j + (1) >> 0; + } + runq.dense = $subslice(runq.dense, 0, 0); + }; + $ptrType(machine).prototype.add = function add(q, pc, pos, cap, cond, t) { + var _1, cap, cond, d, i, j, j$1, m, opos, pc, pos, q, t, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s; + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + /* Again: */ case 1: + if (pc === 0) { + $s = -1; return t; + } + j = (x = q.sparse, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])); + if (j < ((q.dense.$length >>> 0)) && ((x$1 = q.dense, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j])).pc === pc)) { + $s = -1; return t; + } + j$1 = q.dense.$length; + q.dense = $subslice(q.dense, 0, (j$1 + 1 >> 0)); + d = (x$2 = q.dense, ((j$1 < 0 || j$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + j$1])); + d.t = ptrType$4.nil; + d.pc = pc; + (x$3 = q.sparse, ((pc < 0 || pc >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc] = ((j$1 >>> 0)))); + i = (x$4 = m.p.Inst, ((pc < 0 || pc >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + pc])); + _1 = i.Op; + /* */ if (_1 === (5)) { $s = 3; continue; } + /* */ if ((_1 === (0)) || (_1 === (1))) { $s = 4; continue; } + /* */ if (_1 === (3)) { $s = 5; continue; } + /* */ if (_1 === (6)) { $s = 6; continue; } + /* */ if (_1 === (2)) { $s = 7; continue; } + /* */ if ((_1 === (4)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === (5)) { */ case 3: + $s = 10; continue; + /* } else if ((_1 === (0)) || (_1 === (1))) { */ case 4: + t = m.add(q, i.Out, pos, cap, cond, t); + pc = i.Arg; + /* goto Again */ $s = 1; continue; + $s = 10; continue; + /* } else if (_1 === (3)) { */ case 5: + /* */ if (cond.match(((i.Arg << 24 >>> 24)))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (cond.match(((i.Arg << 24 >>> 24)))) { */ case 11: + pc = i.Out; + /* goto Again */ $s = 1; continue; + /* } */ case 12: + $s = 10; continue; + /* } else if (_1 === (6)) { */ case 6: + pc = i.Out; + /* goto Again */ $s = 1; continue; + $s = 10; continue; + /* } else if (_1 === (2)) { */ case 7: + /* */ if (((i.Arg >> 0)) < cap.$length) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (((i.Arg >> 0)) < cap.$length) { */ case 13: + opos = (x$5 = i.Arg, ((x$5 < 0 || x$5 >= cap.$length) ? ($throwRuntimeError("index out of range"), undefined) : cap.$array[cap.$offset + x$5])); + (x$6 = i.Arg, ((x$6 < 0 || x$6 >= cap.$length) ? ($throwRuntimeError("index out of range"), undefined) : cap.$array[cap.$offset + x$6] = pos)); + m.add(q, i.Out, pos, cap, cond, ptrType$4.nil); + (x$7 = i.Arg, ((x$7 < 0 || x$7 >= cap.$length) ? ($throwRuntimeError("index out of range"), undefined) : cap.$array[cap.$offset + x$7] = opos)); + $s = 15; continue; + /* } else { */ case 14: + pc = i.Out; + /* goto Again */ $s = 1; continue; + /* } */ case 15: + $s = 10; continue; + /* } else if ((_1 === (4)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9)) || (_1 === (10))) { */ case 8: + if (t === ptrType$4.nil) { + t = m.alloc(i); + } else { + t.inst = i; + } + if (cap.$length > 0 && !((x$8 = t.cap, $indexPtr(x$8.$array, x$8.$offset + 0, ptrType$7)) === $indexPtr(cap.$array, cap.$offset + 0, ptrType$7))) { + $copySlice(t.cap, cap); + } + d.t = t; + t = ptrType$4.nil; + $s = 10; continue; + /* } else { */ case 9: + $panic(new $String("unhandled")); + /* } */ case 10: + case 2: + $s = -1; return t; + /* */ } return; } + }; + newOnePassMachine = function newOnePassMachine$1() { + var {_r, _tuple, m, ok, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = onePassPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$12, true); + m = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + m = new onePassMachine.ptr(new inputs.ptr(new inputBytes.ptr(sliceType$4.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0)), sliceType$7.nil); + } + $s = -1; return m; + /* */ } return; } var $f = {$blk: newOnePassMachine$1, $c: true, $r, _r, _tuple, m, ok, $s};return $f; + }; + freeOnePassMachine = function freeOnePassMachine$1(m) { + var m; + m.inputs.clear(); + onePassPool.Put(m); + }; + $ptrType(Regexp).prototype.doOnePass = function doOnePass(ir, ib, is, pos, ncap, dstCap) { + var {_1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _v, dstCap, flag, i, i$1, ib, inst, ir, is, m, matched, ncap, pc, pos, r, r1, re, startCond, width, width1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {ir, ib, is, pos, ncap, dstCap}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + startCond = re.cond; + if (startCond === 255) { + $s = -1; return sliceType$7.nil; + } + _r = newOnePassMachine(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + m = _r; + if (m.matchcap.$capacity < ncap) { + m.matchcap = $makeSlice(sliceType$7, ncap); + } else { + m.matchcap = $subslice(m.matchcap, 0, ncap); + } + matched = false; + _ref = m.matchcap; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + (x = m.matchcap, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = -1)); + _i++; + } + _tuple = m.inputs.init(ir, ib, is); + i$1 = _tuple[0]; + _tmp = -1; + _tmp$1 = -1; + r = _tmp; + r1 = _tmp$1; + _tmp$2 = 0; + _tmp$3 = 0; + width = _tmp$2; + width1 = _tmp$3; + _r$1 = i$1.step(pos); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + r = _tuple$1[0]; + width = _tuple$1[1]; + /* */ if (!((r === -1))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!((r === -1))) { */ case 3: + _r$2 = i$1.step(pos + width >> 0); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + r1 = _tuple$2[0]; + width1 = _tuple$2[1]; + /* } */ case 4: + flag = new lazyFlag(0, 0); + /* */ if (pos === 0) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (pos === 0) { */ case 6: + flag = newLazyFlag(-1, r); + $s = 8; continue; + /* } else { */ case 7: + _r$3 = i$1.context(pos); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + flag = _r$3; + /* } */ case 8: + pc = re.onepass.Start; + inst = (x$1 = re.onepass.Inst, ((pc < 0 || pc >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + pc])); + if (!((pos === 0) && flag.match(((inst.Inst.Arg << 24 >>> 24))) && re.prefix.length > 0)) { _v = false; $s = 12; continue s; } + _r$4 = i$1.canCheckPrefix(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _v = _r$4; case 12: + /* */ if (_v) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v) { */ case 10: + _r$5 = i$1.hasPrefix(re); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!_r$5) { */ case 14: + /* goto Return */ $s = 17; continue; + /* } */ case 15: + pos = pos + (re.prefix.length) >> 0; + _r$6 = i$1.step(pos); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$3 = _r$6; + r = _tuple$3[0]; + width = _tuple$3[1]; + _r$7 = i$1.step(pos + width >> 0); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$4 = _r$7; + r1 = _tuple$4[0]; + width1 = _tuple$4[1]; + _r$8 = i$1.context(pos); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + flag = _r$8; + pc = ((re.prefixEnd >> 0)); + /* } */ case 11: + /* while (true) { */ case 21: + inst = (x$2 = re.onepass.Inst, ((pc < 0 || pc >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + pc])); + pc = ((inst.Inst.Out >> 0)); + _1 = inst.Inst.Op; + /* */ if (_1 === (4)) { $s = 24; continue; } + /* */ if (_1 === (7)) { $s = 25; continue; } + /* */ if (_1 === (8)) { $s = 26; continue; } + /* */ if (_1 === (9)) { $s = 27; continue; } + /* */ if (_1 === (10)) { $s = 28; continue; } + /* */ if ((_1 === (0)) || (_1 === (1))) { $s = 29; continue; } + /* */ if (_1 === (5)) { $s = 30; continue; } + /* */ if (_1 === (6)) { $s = 31; continue; } + /* */ if (_1 === (3)) { $s = 32; continue; } + /* */ if (_1 === (2)) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (_1 === (4)) { */ case 24: + matched = true; + if (m.matchcap.$length > 0) { + (x$3 = m.matchcap, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0] = 0)); + (x$4 = m.matchcap, (1 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 1] = pos)); + } + /* goto Return */ $s = 17; continue; + $s = 35; continue; + /* } else if (_1 === (7)) { */ case 25: + /* */ if (!inst.Inst.MatchRune(r)) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (!inst.Inst.MatchRune(r)) { */ case 36: + /* goto Return */ $s = 17; continue; + /* } */ case 37: + $s = 35; continue; + /* } else if (_1 === (8)) { */ case 26: + /* */ if (!((r === (x$5 = inst.Inst.Rune, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))))) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (!((r === (x$5 = inst.Inst.Rune, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0]))))) { */ case 38: + /* goto Return */ $s = 17; continue; + /* } */ case 39: + $s = 35; continue; + /* } else if (_1 === (9)) { */ case 27: + $s = 35; continue; + /* } else if (_1 === (10)) { */ case 28: + /* */ if (r === 10) { $s = 40; continue; } + /* */ $s = 41; continue; + /* if (r === 10) { */ case 40: + /* goto Return */ $s = 17; continue; + /* } */ case 41: + $s = 35; continue; + /* } else if ((_1 === (0)) || (_1 === (1))) { */ case 29: + pc = ((onePassNext(inst, r) >> 0)); + /* continue; */ $s = 21; continue; + $s = 35; continue; + /* } else if (_1 === (5)) { */ case 30: + /* goto Return */ $s = 17; continue; + $s = 35; continue; + /* } else if (_1 === (6)) { */ case 31: + /* continue; */ $s = 21; continue; + $s = 35; continue; + /* } else if (_1 === (3)) { */ case 32: + /* */ if (!flag.match(((inst.Inst.Arg << 24 >>> 24)))) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (!flag.match(((inst.Inst.Arg << 24 >>> 24)))) { */ case 42: + /* goto Return */ $s = 17; continue; + /* } */ case 43: + /* continue; */ $s = 21; continue; + $s = 35; continue; + /* } else if (_1 === (2)) { */ case 33: + if (((inst.Inst.Arg >> 0)) < m.matchcap.$length) { + (x$6 = m.matchcap, x$7 = inst.Inst.Arg, ((x$7 < 0 || x$7 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + x$7] = pos)); + } + /* continue; */ $s = 21; continue; + $s = 35; continue; + /* } else { */ case 34: + $panic(new $String("bad inst")); + /* } */ case 35: + case 23: + if (width === 0) { + /* break; */ $s = 22; continue; + } + flag = newLazyFlag(r, r1); + pos = pos + (width) >> 0; + _tmp$4 = r1; + _tmp$5 = width1; + r = _tmp$4; + width = _tmp$5; + /* */ if (!((r === -1))) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (!((r === -1))) { */ case 44: + _r$9 = i$1.step(pos + width >> 0); /* */ $s = 46; case 46: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple$5 = _r$9; + r1 = _tuple$5[0]; + width1 = _tuple$5[1]; + /* } */ case 45: + $s = 21; continue; + case 22: + /* Return: */ case 17: + if (!matched) { + freeOnePassMachine(m); + $s = -1; return sliceType$7.nil; + } + dstCap = $appendSlice(dstCap, m.matchcap); + freeOnePassMachine(m); + $s = -1; return dstCap; + /* */ } return; } var $f = {$blk: doOnePass, $c: true, $r, _1, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _v, dstCap, flag, i, i$1, ib, inst, ir, is, m, matched, ncap, pc, pos, r, r1, re, startCond, width, width1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + $ptrType(Regexp).prototype.doMatch = function doMatch(r, b, s) { + var {$24r, _r, b, r, re, s, $s, $r, $c} = $restore(this, {r, b, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + _r = re.doExecute(r, b, s, 0, 0, sliceType$7.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = !(_r === sliceType$7.nil); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: doMatch, $c: true, $r, $24r, _r, b, r, re, s, $s};return $f; + }; + $ptrType(Regexp).prototype.doExecute = function doExecute(r, b, s, pos, ncap, dstCap) { + var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _tuple, b, dstCap, i, m, ncap, pos, r, re, s, $s, $r, $c} = $restore(this, {r, b, s, pos, ncap, dstCap}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + if (dstCap === sliceType$7.nil) { + dstCap = $subslice(new sliceType$7(arrayNoInts), 0, 0, 0); + } + if ($interfaceIsEqual(r, $ifaceNil) && (b.$length + s.length >> 0) < re.minInputLen) { + $s = -1; return sliceType$7.nil; + } + /* */ if (!(re.onepass === ptrType$2.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(re.onepass === ptrType$2.nil)) { */ case 1: + _r = re.doOnePass(r, b, s, pos, ncap, dstCap); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + /* */ if ($interfaceIsEqual(r, $ifaceNil) && (b.$length + s.length >> 0) < re.maxBitStateLen) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($interfaceIsEqual(r, $ifaceNil) && (b.$length + s.length >> 0) < re.maxBitStateLen) { */ case 5: + _r$1 = re.backtrack(b, s, pos, ncap, dstCap); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 8; case 8: return $24r$1; + /* } */ case 6: + _r$2 = re.get(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + m = _r$2; + _tuple = m.inputs.init(r, b, s); + i = _tuple[0]; + m.init(ncap); + _r$3 = m.match(i, pos); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!_r$3) { */ case 10: + re.put(m); + $s = -1; return sliceType$7.nil; + /* } */ case 11: + dstCap = $appendSlice(dstCap, m.matchcap); + re.put(m); + $s = -1; return dstCap; + /* */ } return; } var $f = {$blk: doExecute, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _tuple, b, dstCap, i, m, ncap, pos, r, re, s, $s};return $f; + }; + newBitState = function newBitState$1() { + var {_r, _tuple, b, ok, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = bitStatePool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$13, true); + b = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + b = new bitState.ptr(0, sliceType$7.nil, sliceType$7.nil, sliceType$15.nil, sliceType$2.nil, new inputs.ptr(new inputBytes.ptr(sliceType$4.nil), new inputString.ptr(""), new inputReader.ptr($ifaceNil, false, 0))); + } + $s = -1; return b; + /* */ } return; } var $f = {$blk: newBitState$1, $c: true, $r, _r, _tuple, b, ok, $s};return $f; + }; + freeBitState = function freeBitState$1(b) { + var b; + b.inputs.clear(); + bitStatePool.Put(b); + }; + maxBitStateLen = function maxBitStateLen$1(prog) { + var _q, prog; + if (!shouldBacktrack(prog)) { + return 0; + } + return (_q = 262144 / prog.Inst.$length, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + }; + shouldBacktrack = function shouldBacktrack$1(prog) { + var prog; + return prog.Inst.$length <= 500; + }; + $ptrType(bitState).prototype.reset = function reset(prog, end, ncap) { + var _i, _i$1, _i$2, _q, _ref, _ref$1, _ref$2, b, end, i, i$1, i$2, ncap, prog, visitedSize, x, x$1, x$2; + b = this; + b.end = end; + if (b.jobs.$capacity === 0) { + b.jobs = $makeSlice(sliceType$15, 0, 256); + } else { + b.jobs = $subslice(b.jobs, 0, 0); + } + visitedSize = (_q = (((($imul(prog.Inst.$length, ((end + 1 >> 0)))) + 32 >> 0) - 1 >> 0)) / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + if (b.visited.$capacity < visitedSize) { + b.visited = $makeSlice(sliceType$2, visitedSize, 8192); + } else { + b.visited = $subslice(b.visited, 0, visitedSize); + _ref = b.visited; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + (x = b.visited, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = 0)); + _i++; + } + } + if (b.cap.$capacity < ncap) { + b.cap = $makeSlice(sliceType$7, ncap); + } else { + b.cap = $subslice(b.cap, 0, ncap); + } + _ref$1 = b.cap; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + (x$1 = b.cap, ((i$1 < 0 || i$1 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$1] = -1)); + _i$1++; + } + if (b.matchcap.$capacity < ncap) { + b.matchcap = $makeSlice(sliceType$7, ncap); + } else { + b.matchcap = $subslice(b.matchcap, 0, ncap); + } + _ref$2 = b.matchcap; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$2 = _i$2; + (x$2 = b.matchcap, ((i$2 < 0 || i$2 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$2] = -1)); + _i$2++; + } + }; + $ptrType(bitState).prototype.shouldVisit = function shouldVisit(pc, pos) { + var _index, _q, _q$1, b, n, pc, pos, x, x$1, x$2, x$3, y, y$1; + b = this; + n = (((($imul(((pc >> 0)), ((b.end + 1 >> 0)))) + pos >> 0) >>> 0)); + if (!(((((x = b.visited, x$1 = (_q = n / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) & (((y = (((n & 31) >>> 0)), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) { + return false; + } + _index = (_q$1 = n / 32, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero")); + (x$3 = b.visited, ((_index < 0 || _index >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + _index] = (((x$2 = b.visited, ((_index < 0 || _index >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + _index])) | (((y$1 = (((n & 31) >>> 0)), y$1 < 32 ? (1 << y$1) : 0) >>> 0))) >>> 0))); + return true; + }; + $ptrType(bitState).prototype.push = function push(re, pc, pos, arg) { + var arg, b, pc, pos, re, x; + b = this; + if (!(((x = re.prog.Inst, ((pc < 0 || pc >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + pc])).Op === 5)) && (arg || b.shouldVisit(pc, pos))) { + b.jobs = $append(b.jobs, new job.ptr(pc, arg, pos)); + } + }; + $ptrType(Regexp).prototype.tryBacktrack = function tryBacktrack(b, i, pc, pos) { + var {_1, _2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, arg, b, flag, i, inst, l, longest, old, pc, pc$1, pos, pos$1, r, r$1, r$2, r$3, re, width, width$1, width$2, width$3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r, $c} = $restore(this, {b, i, pc, pos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + longest = re.longest; + b.push(re, pc, pos, false); + /* while (true) { */ case 1: + /* if (!(b.jobs.$length > 0)) { break; } */ if(!(b.jobs.$length > 0)) { $s = 2; continue; } + l = b.jobs.$length - 1 >> 0; + pc$1 = (x = b.jobs, ((l < 0 || l >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + l])).pc; + pos$1 = (x$1 = b.jobs, ((l < 0 || l >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + l])).pos; + arg = (x$2 = b.jobs, ((l < 0 || l >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + l])).arg; + b.jobs = $subslice(b.jobs, 0, l); + /* goto Skip */ $s = 3; continue; + /* CheckAndLoop: */ case 4: + if (!b.shouldVisit(pc$1, pos$1)) { + /* continue; */ $s = 1; continue; + } + /* Skip: */ case 3: + inst = (x$3 = re.prog.Inst, ((pc$1 < 0 || pc$1 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + pc$1])); + _1 = inst.Op; + /* */ if (_1 === (5)) { $s = 6; continue; } + /* */ if (_1 === (0)) { $s = 7; continue; } + /* */ if (_1 === (1)) { $s = 8; continue; } + /* */ if (_1 === (7)) { $s = 9; continue; } + /* */ if (_1 === (8)) { $s = 10; continue; } + /* */ if (_1 === (10)) { $s = 11; continue; } + /* */ if (_1 === (9)) { $s = 12; continue; } + /* */ if (_1 === (2)) { $s = 13; continue; } + /* */ if (_1 === (3)) { $s = 14; continue; } + /* */ if (_1 === (6)) { $s = 15; continue; } + /* */ if (_1 === (4)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_1 === (5)) { */ case 6: + $panic(new $String("unexpected InstFail")); + $s = 18; continue; + /* } else if (_1 === (0)) { */ case 7: + /* */ if (arg) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (arg) { */ case 19: + arg = false; + pc$1 = inst.Arg; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 21; continue; + /* } else { */ case 20: + b.push(re, pc$1, pos$1, true); + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + /* } */ case 21: + $s = 18; continue; + /* } else if (_1 === (1)) { */ case 8: + _2 = (x$4 = re.prog.Inst, x$5 = inst.Out, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])).Op; + /* */ if ((_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10))) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if ((_2 === (7)) || (_2 === (8)) || (_2 === (9)) || (_2 === (10))) { */ case 23: + b.push(re, inst.Arg, pos$1, false); + pc$1 = inst.Arg; + pos$1 = b.end; + /* goto CheckAndLoop */ $s = 4; continue; + /* } */ case 24: + case 22: + b.push(re, inst.Out, b.end, false); + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (7)) { */ case 9: + _r = i.step(pos$1); /* */ $s = 25; case 25: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + r = _tuple[0]; + width = _tuple[1]; + if (!inst.MatchRune(r)) { + /* continue; */ $s = 1; continue; + } + pos$1 = pos$1 + (width) >> 0; + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (8)) { */ case 10: + _r$1 = i.step(pos$1); /* */ $s = 26; case 26: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + r$1 = _tuple$1[0]; + width$1 = _tuple$1[1]; + if (!((r$1 === (x$6 = inst.Rune, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0]))))) { + /* continue; */ $s = 1; continue; + } + pos$1 = pos$1 + (width$1) >> 0; + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (10)) { */ case 11: + _r$2 = i.step(pos$1); /* */ $s = 27; case 27: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + r$2 = _tuple$2[0]; + width$2 = _tuple$2[1]; + if ((r$2 === 10) || (r$2 === -1)) { + /* continue; */ $s = 1; continue; + } + pos$1 = pos$1 + (width$2) >> 0; + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (9)) { */ case 12: + _r$3 = i.step(pos$1); /* */ $s = 28; case 28: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$3 = _r$3; + r$3 = _tuple$3[0]; + width$3 = _tuple$3[1]; + if (r$3 === -1) { + /* continue; */ $s = 1; continue; + } + pos$1 = pos$1 + (width$3) >> 0; + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (2)) { */ case 13: + /* */ if (arg) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (arg) { */ case 29: + (x$7 = b.cap, x$8 = inst.Arg, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8] = pos$1)); + /* continue; */ $s = 1; continue; + $s = 31; continue; + /* } else { */ case 30: + if (inst.Arg < ((b.cap.$length >>> 0))) { + b.push(re, pc$1, (x$9 = b.cap, x$10 = inst.Arg, ((x$10 < 0 || x$10 >= x$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + x$10])), true); + (x$11 = b.cap, x$12 = inst.Arg, ((x$12 < 0 || x$12 >= x$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$11.$array[x$11.$offset + x$12] = pos$1)); + } + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + /* } */ case 31: + $s = 18; continue; + /* } else if (_1 === (3)) { */ case 14: + _r$4 = i.context(pos$1); /* */ $s = 32; case 32: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + flag = _r$4; + if (!flag.match(((inst.Arg << 24 >>> 24)))) { + /* continue; */ $s = 1; continue; + } + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (6)) { */ case 15: + pc$1 = inst.Out; + /* goto CheckAndLoop */ $s = 4; continue; + $s = 18; continue; + /* } else if (_1 === (4)) { */ case 16: + if (b.cap.$length === 0) { + $s = -1; return true; + } + if (b.cap.$length > 1) { + (x$13 = b.cap, (1 >= x$13.$length ? ($throwRuntimeError("index out of range"), undefined) : x$13.$array[x$13.$offset + 1] = pos$1)); + } + old = (x$14 = b.matchcap, (1 >= x$14.$length ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + 1])); + if ((old === -1) || (longest && pos$1 > 0 && pos$1 > old)) { + $copySlice(b.matchcap, b.cap); + } + if (!longest) { + $s = -1; return true; + } + if (pos$1 === b.end) { + $s = -1; return true; + } + /* continue; */ $s = 1; continue; + $s = 18; continue; + /* } else { */ case 17: + $panic(new $String("bad inst")); + /* } */ case 18: + case 5: + $s = 1; continue; + case 2: + $s = -1; return longest && b.matchcap.$length > 1 && (x$15 = b.matchcap, (1 >= x$15.$length ? ($throwRuntimeError("index out of range"), undefined) : x$15.$array[x$15.$offset + 1])) >= 0; + /* */ } return; } var $f = {$blk: tryBacktrack, $c: true, $r, _1, _2, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, arg, b, flag, i, inst, l, longest, old, pc, pc$1, pos, pos$1, r, r$1, r$2, r$3, re, width, width$1, width$2, width$3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s};return $f; + }; + $ptrType(Regexp).prototype.backtrack = function backtrack(ib, is, pos, ncap, dstCap) { + var {_r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, advance, b, dstCap, end, i, ib, is, ncap, pos, re, startCond, width, x, x$1, $s, $r, $c} = $restore(this, {ib, is, pos, ncap, dstCap}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + re = this; + startCond = re.cond; + if (startCond === 255) { + $s = -1; return sliceType$7.nil; + } + if (!((((startCond & 4) >>> 0) === 0)) && !((pos === 0))) { + $s = -1; return sliceType$7.nil; + } + _r = newBitState(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + b = _r; + _tuple = b.inputs.init($ifaceNil, ib, is); + i = _tuple[0]; + end = _tuple[1]; + b.reset(re.prog, end, ncap); + /* */ if (!((((startCond & 4) >>> 0) === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((((startCond & 4) >>> 0) === 0))) { */ case 2: + if (b.cap.$length > 0) { + (x = b.cap, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0] = pos)); + } + _r$1 = re.tryBacktrack(b, i, ((re.prog.Start >>> 0)), pos); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!_r$1) { */ case 5: + freeBitState(b); + $s = -1; return sliceType$7.nil; + /* } */ case 6: + $s = 4; continue; + /* } else { */ case 3: + width = -1; + /* while (true) { */ case 8: + /* if (!(pos <= end && !((width === 0)))) { break; } */ if(!(pos <= end && !((width === 0)))) { $s = 9; continue; } + /* */ if (re.prefix.length > 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (re.prefix.length > 0) { */ case 10: + _r$2 = i.index(re, pos); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + advance = _r$2; + if (advance < 0) { + freeBitState(b); + $s = -1; return sliceType$7.nil; + } + pos = pos + (advance) >> 0; + /* } */ case 11: + if (b.cap.$length > 0) { + (x$1 = b.cap, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0] = pos)); + } + _r$3 = re.tryBacktrack(b, i, ((re.prog.Start >>> 0)), pos); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_r$3) { */ case 13: + /* goto Match */ $s = 16; continue; + /* } */ case 14: + _r$4 = i.step(pos); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + width = _tuple$1[1]; + pos = pos + (width) >> 0; + $s = 8; continue; + case 9: + freeBitState(b); + $s = -1; return sliceType$7.nil; + /* } */ case 4: + /* Match: */ case 16: + dstCap = $appendSlice(dstCap, b.matchcap); + freeBitState(b); + $s = -1; return dstCap; + /* */ } return; } var $f = {$blk: backtrack, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, advance, b, dstCap, end, i, ib, is, ncap, pos, re, startCond, width, x, x$1, $s};return $f; + }; + ptrType.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Copy", name: "Copy", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "Longest", name: "Longest", pkg: "", typ: $funcType([], [], false)}, {prop: "get", name: "get", pkg: "regexp", typ: $funcType([], [ptrType$3], false)}, {prop: "put", name: "put", pkg: "regexp", typ: $funcType([ptrType$3], [], false)}, {prop: "NumSubexp", name: "NumSubexp", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SubexpNames", name: "SubexpNames", pkg: "", typ: $funcType([], [sliceType$3], false)}, {prop: "SubexpIndex", name: "SubexpIndex", pkg: "", typ: $funcType([$String], [$Int], false)}, {prop: "LiteralPrefix", name: "LiteralPrefix", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "MatchReader", name: "MatchReader", pkg: "", typ: $funcType([io.RuneReader], [$Bool], false)}, {prop: "MatchString", name: "MatchString", pkg: "", typ: $funcType([$String], [$Bool], false)}, {prop: "Match", name: "Match", pkg: "", typ: $funcType([sliceType$4], [$Bool], false)}, {prop: "ReplaceAllString", name: "ReplaceAllString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "ReplaceAllLiteralString", name: "ReplaceAllLiteralString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "ReplaceAllStringFunc", name: "ReplaceAllStringFunc", pkg: "", typ: $funcType([$String, funcType], [$String], false)}, {prop: "replaceAll", name: "replaceAll", pkg: "regexp", typ: $funcType([sliceType$4, $String, $Int, funcType$1], [sliceType$4], false)}, {prop: "ReplaceAll", name: "ReplaceAll", pkg: "", typ: $funcType([sliceType$4, sliceType$4], [sliceType$4], false)}, {prop: "ReplaceAllLiteral", name: "ReplaceAllLiteral", pkg: "", typ: $funcType([sliceType$4, sliceType$4], [sliceType$4], false)}, {prop: "ReplaceAllFunc", name: "ReplaceAllFunc", pkg: "", typ: $funcType([sliceType$4, funcType$2], [sliceType$4], false)}, {prop: "pad", name: "pad", pkg: "regexp", typ: $funcType([sliceType$7], [sliceType$7], false)}, {prop: "allMatches", name: "allMatches", pkg: "regexp", typ: $funcType([$String, sliceType$4, $Int, funcType$3], [], false)}, {prop: "Find", name: "Find", pkg: "", typ: $funcType([sliceType$4], [sliceType$4], false)}, {prop: "FindIndex", name: "FindIndex", pkg: "", typ: $funcType([sliceType$4], [sliceType$7], false)}, {prop: "FindString", name: "FindString", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "FindStringIndex", name: "FindStringIndex", pkg: "", typ: $funcType([$String], [sliceType$7], false)}, {prop: "FindReaderIndex", name: "FindReaderIndex", pkg: "", typ: $funcType([io.RuneReader], [sliceType$7], false)}, {prop: "FindSubmatch", name: "FindSubmatch", pkg: "", typ: $funcType([sliceType$4], [sliceType$8], false)}, {prop: "Expand", name: "Expand", pkg: "", typ: $funcType([sliceType$4, sliceType$4, sliceType$4, sliceType$7], [sliceType$4], false)}, {prop: "ExpandString", name: "ExpandString", pkg: "", typ: $funcType([sliceType$4, $String, $String, sliceType$7], [sliceType$4], false)}, {prop: "expand", name: "expand", pkg: "regexp", typ: $funcType([sliceType$4, $String, sliceType$4, $String, sliceType$7], [sliceType$4], false)}, {prop: "FindSubmatchIndex", name: "FindSubmatchIndex", pkg: "", typ: $funcType([sliceType$4], [sliceType$7], false)}, {prop: "FindStringSubmatch", name: "FindStringSubmatch", pkg: "", typ: $funcType([$String], [sliceType$3], false)}, {prop: "FindStringSubmatchIndex", name: "FindStringSubmatchIndex", pkg: "", typ: $funcType([$String], [sliceType$7], false)}, {prop: "FindReaderSubmatchIndex", name: "FindReaderSubmatchIndex", pkg: "", typ: $funcType([io.RuneReader], [sliceType$7], false)}, {prop: "FindAll", name: "FindAll", pkg: "", typ: $funcType([sliceType$4, $Int], [sliceType$8], false)}, {prop: "FindAllIndex", name: "FindAllIndex", pkg: "", typ: $funcType([sliceType$4, $Int], [sliceType$9], false)}, {prop: "FindAllString", name: "FindAllString", pkg: "", typ: $funcType([$String, $Int], [sliceType$3], false)}, {prop: "FindAllStringIndex", name: "FindAllStringIndex", pkg: "", typ: $funcType([$String, $Int], [sliceType$9], false)}, {prop: "FindAllSubmatch", name: "FindAllSubmatch", pkg: "", typ: $funcType([sliceType$4, $Int], [sliceType$10], false)}, {prop: "FindAllSubmatchIndex", name: "FindAllSubmatchIndex", pkg: "", typ: $funcType([sliceType$4, $Int], [sliceType$9], false)}, {prop: "FindAllStringSubmatch", name: "FindAllStringSubmatch", pkg: "", typ: $funcType([$String, $Int], [sliceType$11], false)}, {prop: "FindAllStringSubmatchIndex", name: "FindAllStringSubmatchIndex", pkg: "", typ: $funcType([$String, $Int], [sliceType$9], false)}, {prop: "Split", name: "Split", pkg: "", typ: $funcType([$String, $Int], [sliceType$3], false)}, {prop: "doOnePass", name: "doOnePass", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$4, $String, $Int, $Int, sliceType$7], [sliceType$7], false)}, {prop: "doMatch", name: "doMatch", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$4, $String], [$Bool], false)}, {prop: "doExecute", name: "doExecute", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$4, $String, $Int, $Int, sliceType$7], [sliceType$7], false)}, {prop: "tryBacktrack", name: "tryBacktrack", pkg: "regexp", typ: $funcType([ptrType$13, input, $Uint32, $Int], [$Bool], false)}, {prop: "backtrack", name: "backtrack", pkg: "regexp", typ: $funcType([sliceType$4, $String, $Int, $Int, sliceType$7], [sliceType$7], false)}]; + ptrType$14.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}]; + ptrType$15.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}]; + ptrType$16.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}]; + ptrType$6.methods = [{prop: "empty", name: "empty", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "next", name: "next", pkg: "regexp", typ: $funcType([], [$Uint32], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([], [], false)}, {prop: "contains", name: "contains", pkg: "regexp", typ: $funcType([$Uint32], [$Bool], false)}, {prop: "insert", name: "insert", pkg: "regexp", typ: $funcType([$Uint32], [], false)}, {prop: "insertNew", name: "insertNew", pkg: "regexp", typ: $funcType([$Uint32], [], false)}]; + runeSlice.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; + ptrType$3.methods = [{prop: "init", name: "init", pkg: "regexp", typ: $funcType([$Int], [], false)}, {prop: "alloc", name: "alloc", pkg: "regexp", typ: $funcType([ptrType$10], [ptrType$4], false)}, {prop: "match", name: "match", pkg: "regexp", typ: $funcType([input, $Int], [$Bool], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([ptrType$17], [], false)}, {prop: "step", name: "step", pkg: "regexp", typ: $funcType([ptrType$17, ptrType$17, $Int, $Int, $Int32, ptrType$11], [], false)}, {prop: "add", name: "add", pkg: "regexp", typ: $funcType([ptrType$17, $Uint32, $Int, sliceType$7, ptrType$11, ptrType$4], [ptrType$4], false)}]; + ptrType$18.methods = [{prop: "newBytes", name: "newBytes", pkg: "regexp", typ: $funcType([sliceType$4], [input], false)}, {prop: "newString", name: "newString", pkg: "regexp", typ: $funcType([$String], [input], false)}, {prop: "newReader", name: "newReader", pkg: "regexp", typ: $funcType([io.RuneReader], [input], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([], [], false)}, {prop: "init", name: "init", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$4, $String], [input, $Int], false)}]; + lazyFlag.methods = [{prop: "match", name: "match", pkg: "regexp", typ: $funcType([syntax.EmptyOp], [$Bool], false)}]; + ptrType$13.methods = [{prop: "reset", name: "reset", pkg: "regexp", typ: $funcType([ptrType$1, $Int, $Int], [], false)}, {prop: "shouldVisit", name: "shouldVisit", pkg: "regexp", typ: $funcType([$Uint32, $Int], [$Bool], false)}, {prop: "push", name: "push", pkg: "regexp", typ: $funcType([ptrType, $Uint32, $Int, $Bool], [], false)}]; + Regexp.init("regexp", [{prop: "expr", name: "expr", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "prog", name: "prog", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "onepass", name: "onepass", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "numSubexp", name: "numSubexp", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "maxBitStateLen", name: "maxBitStateLen", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "subexpNames", name: "subexpNames", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "prefix", name: "prefix", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "prefixBytes", name: "prefixBytes", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "prefixRune", name: "prefixRune", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "prefixEnd", name: "prefixEnd", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "mpool", name: "mpool", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "prefixComplete", name: "prefixComplete", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "cond", name: "cond", embedded: false, exported: false, typ: syntax.EmptyOp, tag: ""}, {prop: "minInputLen", name: "minInputLen", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "longest", name: "longest", embedded: false, exported: false, typ: $Bool, tag: ""}]); + input.init([{prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [lazyFlag], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType, $Int], [$Int], false)}, {prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}]); + inputString.init("regexp", [{prop: "str", name: "str", embedded: false, exported: false, typ: $String, tag: ""}]); + inputBytes.init("regexp", [{prop: "str", name: "str", embedded: false, exported: false, typ: sliceType$4, tag: ""}]); + inputReader.init("regexp", [{prop: "r", name: "r", embedded: false, exported: false, typ: io.RuneReader, tag: ""}, {prop: "atEOT", name: "atEOT", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: $Int, tag: ""}]); + onePassProg.init("", [{prop: "Inst", name: "Inst", embedded: false, exported: true, typ: sliceType$12, tag: ""}, {prop: "Start", name: "Start", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "NumCap", name: "NumCap", embedded: false, exported: true, typ: $Int, tag: ""}]); + onePassInst.init("", [{prop: "Inst", name: "Inst", embedded: true, exported: true, typ: syntax.Inst, tag: ""}, {prop: "Next", name: "Next", embedded: false, exported: true, typ: sliceType$2, tag: ""}]); + queueOnePass.init("regexp", [{prop: "sparse", name: "sparse", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "dense", name: "dense", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "nextIndex", name: "nextIndex", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + runeSlice.init($Int32); + queue.init("regexp", [{prop: "sparse", name: "sparse", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "dense", name: "dense", embedded: false, exported: false, typ: sliceType$5, tag: ""}]); + entry.init("regexp", [{prop: "pc", name: "pc", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "t", name: "t", embedded: false, exported: false, typ: ptrType$4, tag: ""}]); + thread.init("regexp", [{prop: "inst", name: "inst", embedded: false, exported: false, typ: ptrType$10, tag: ""}, {prop: "cap", name: "cap", embedded: false, exported: false, typ: sliceType$7, tag: ""}]); + machine.init("regexp", [{prop: "re", name: "re", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "p", name: "p", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "q0", name: "q0", embedded: false, exported: false, typ: queue, tag: ""}, {prop: "q1", name: "q1", embedded: false, exported: false, typ: queue, tag: ""}, {prop: "pool", name: "pool", embedded: false, exported: false, typ: sliceType$6, tag: ""}, {prop: "matched", name: "matched", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "inputs", name: "inputs", embedded: false, exported: false, typ: inputs, tag: ""}]); + inputs.init("regexp", [{prop: "bytes", name: "bytes", embedded: false, exported: false, typ: inputBytes, tag: ""}, {prop: "string", name: "string", embedded: false, exported: false, typ: inputString, tag: ""}, {prop: "reader", name: "reader", embedded: false, exported: false, typ: inputReader, tag: ""}]); + onePassMachine.init("regexp", [{prop: "inputs", name: "inputs", embedded: false, exported: false, typ: inputs, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: sliceType$7, tag: ""}]); + job.init("regexp", [{prop: "pc", name: "pc", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "arg", name: "arg", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: $Int, tag: ""}]); + bitState.init("regexp", [{prop: "end", name: "end", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "cap", name: "cap", embedded: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "matchcap", name: "matchcap", embedded: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "jobs", name: "jobs", embedded: false, exported: false, typ: sliceType$15, tag: ""}, {prop: "visited", name: "visited", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "inputs", name: "inputs", embedded: false, exported: false, typ: inputs, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = nosync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syntax.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + matchPool = arrayType.zero(); + specialBytes = arrayType$1.zero(); + onePassPool = new nosync.Pool.ptr(sliceType.nil, $throwNilPointerError); + arrayNoInts = arrayType$2.zero(); + bitStatePool = new nosync.Pool.ptr(sliceType.nil, $throwNilPointerError); + matchSize = $toNativeArray($kindInt, [128, 512, 2048, 16384, 0]); + noRune = new sliceType$1([]); + noNext = new sliceType$2([4294967295]); + anyRuneNotNL = new sliceType$1([0, 9, 11, 1114111]); + anyRune = new sliceType$1([0, 1114111]); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["go/types"] = (function() { + var $pkg = {}, $init, bytes, heap, errors, fmt, ast, constant, typeparams, parser, token, errors$1, io, math, regexp, runtime, sort, strconv, strings, sync, atomic, unicode, utf8, version, builtinId, Union, Term, unifier, tparamsList, term, Qualifier, typeWriter, _TypeSet, byUniqueMethodName, TypeParam, TypeParamList, TypeList, Type, Tuple, termlist, substMap, subster, Struct, stmtContext, valueMap, valueType, Slice, Sizes, StdSizes, Signature, SelectionKind, Selection, Scope, lazyObject, declInfo, inSourceOrder, ifacePair, Pointer, Package, operandMode, operand, objset, Object, object, color, PkgName, Const, TypeName, Var, Func, Label, Builtin, Nil, Named, instance, namedState, monoGraph, monoVertex, monoEdge, MethodSet, methodSet, Map, embeddedType, instanceLookup, block, Interface, dependency, graphNode, nodeSet, nodeQueue, tpWalker, cycleFinder, opPredicates, exprKind, error_, errorDesc, positioner, posSpan, atPos, decl, importDecl, constDecl, varDecl, typeDecl, funcDecl, Context, ctxtEntry, exprInfo, environment, importKey, dotImportKey, action, actionDesc, Checker, cleaner, bailout, Chan, ChanDir, BasicKind, BasicInfo, Basic, Array, Error, ArgumentError, Importer, ImportMode, ImporterFrom, Config, Info, TypeAndValue, Instance, Initializer, methodInfo, ptrType, ptrType$1, ptrType$2, sliceType, ptrType$3, sliceType$1, ptrType$4, ptrType$5, sliceType$2, sliceType$3, ptrType$6, ptrType$7, structType, structType$1, ptrType$8, sliceType$4, sliceType$5, sliceType$6, ptrType$9, sliceType$7, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, sliceType$8, sliceType$9, ptrType$15, ptrType$16, sliceType$10, ptrType$17, ptrType$18, sliceType$11, ptrType$19, sliceType$12, ptrType$20, ptrType$21, ptrType$22, sliceType$13, ptrType$23, ptrType$24, sliceType$14, ptrType$25, ptrType$26, ptrType$27, ptrType$28, ptrType$29, ptrType$30, ptrType$31, ptrType$32, ptrType$33, ptrType$34, ptrType$35, ptrType$36, ptrType$37, ptrType$38, ptrType$39, ptrType$40, ptrType$41, ptrType$42, ptrType$43, ptrType$44, ptrType$45, ptrType$46, ptrType$47, ptrType$48, ptrType$49, ptrType$50, ptrType$51, ptrType$52, arrayType, ptrType$53, ptrType$54, ptrType$55, ptrType$56, sliceType$15, sliceType$16, ptrType$57, ptrType$58, ptrType$59, sliceType$17, ptrType$60, ptrType$61, sliceType$18, ptrType$62, ptrType$63, ptrType$64, ptrType$65, ptrType$66, ptrType$67, ptrType$68, ptrType$69, ptrType$70, ptrType$71, ptrType$72, ptrType$73, ptrType$74, ptrType$75, ptrType$76, ptrType$77, ptrType$78, ptrType$79, ptrType$80, ptrType$81, ptrType$82, sliceType$19, ptrType$83, ptrType$84, sliceType$20, ptrType$85, ptrType$86, ptrType$87, ptrType$88, sliceType$21, ptrType$89, ptrType$90, sliceType$22, sliceType$23, sliceType$24, ptrType$91, sliceType$25, arrayType$1, ptrType$92, sliceType$26, ptrType$93, sliceType$27, ptrType$94, ptrType$95, ptrType$96, sliceType$28, sliceType$29, arrayType$2, ptrType$97, ptrType$98, ptrType$99, ptrType$100, ptrType$101, ptrType$102, sliceType$30, ptrType$103, sliceType$31, ptrType$104, ptrType$105, ptrType$106, ptrType$107, ptrType$108, sliceType$32, sliceType$33, sliceType$34, ptrType$109, ptrType$110, ptrType$111, sliceType$35, sliceType$36, sliceType$37, sliceType$38, sliceType$39, sliceType$40, funcType$1, ptrType$112, sliceType$41, arrayType$3, ptrType$113, ptrType$114, ptrType$115, mapType, funcType$2, funcType$3, ptrType$116, funcType$4, funcType$5, mapType$1, mapType$2, ptrType$117, funcType$6, ptrType$118, mapType$3, mapType$4, ptrType$119, ptrType$120, mapType$5, mapType$6, ptrType$121, ptrType$122, mapType$7, mapType$8, ptrType$123, mapType$9, ptrType$124, mapType$10, sliceType$42, funcType$7, funcType$8, mapType$11, mapType$12, mapType$13, mapType$14, mapType$15, mapType$16, mapType$17, mapType$18, mapType$19, mapType$20, mapType$21, ptrType$125, funcType$9, mapType$22, mapType$23, mapType$24, mapType$25, mapType$26, mapType$27, universeIota, universeByte, universeRune, universeAny, universeError, universeComparable, invalidTypeSet, invalidTypeSet$24ptr, lastID, lastID$24ptr, emptyMethodSet, emptyMethodSet$24ptr, unaryOpPredicates, binaryOpPredicates, goVersionRx, _r, allTermlist, topTypeSet, topTypeSet$24ptr, gcArchSizes, operandModeString, emptyInterface, emptyInterface$24ptr, gccgoArchSizes, stdSizes, op2str1, op2str2, predeclaredFuncs, errBadCgo, cgoPrefixes, basicSizes, predeclaredConsts, aliases, parseGoVersion, makeObjList, defPredeclaredTypes, defPredeclaredConsts, defPredeclaredNil, defPredeclaredFuncs, init, def, NewUnion, NewTerm, parseUnion, parseTilde, overlappingTerm, flattenUnion, newUnifier, tparamIndex, goTypeName, RelativeTo, TypeString, WriteType, WriteSignature, newTypeWriter, newTypeHasher, subscript, computeInterfaceTypeSet, intersectTermLists, sortMethods, assertSortedMethods, computeUnionTypeSet, nextID, NewTypeParam, newTypeList, bindTParams, under, coreType, coreString, match, NewTuple, makeSubstMap, makeRenameMap, substVar, substFunc, replaceRecvType, NewStruct, embeddedFieldIdent, trimTrailingEmptyStmts, assignOp, goVal, rangeKeyVal, NewSlice, isSyncAtomicAlign64, SizesFor, align, NewSignatureType, SelectionString, NewScope, resolve, hasBreak, hasBreakList, validatedImportPath, dir, isBoolean, isInteger, isUnsigned, isFloat, isComplex, isNumeric, isString, isIntegerOrFloat, isConstType, isBasic, allBoolean, allInteger, allUnsigned, allNumeric, allString, allOrdered, allNumericOrString, allBasic, hasName, isTyped, isUntyped, IsInterface, isNonTypeParamInterface, isTypeParam, hasEmptyTypeset, isGeneric, Comparable, comparable, hasNil, identical, identicalInstance, Default, NewPointer, NewPackage, operandString, Id, colorFor, NewPkgName, NewConst, NewTypeName, NewVar, NewParam, NewField, NewFunc, NewLabel, newBuiltin, writeObject, packagePrefix, ObjectString, writeFuncName, NewNamed, safeUnderlying, NewMethodSet, NewMap, LookupFieldOrMethod, lookupFieldOrMethod, consolidateMultiples, lookupType, isInterfacePtr, deref, derefStructPtr, concat, fieldIndex, lookupMethod, NewInterfaceType, Instantiate, mentions, findPath, dependencyGraph, typeParamsString, isParameterized, coreTerm, ExprString, WriteExpr, writeSigExpr, writeFieldList, writeIdentList, writeExprList, init$1, opName, underIs, isShift, isComparison, fitsFloat32, roundFloat32, fitsFloat64, roundFloat64, representableConst, init$2, keyVal, assert, unreachable, sprintf, newErrorf, inNode, spanOf, stripAnnotations, pathString, firstInSrc, isUintptr, isUnsafePointer, isPointer, isBytesOrRunes, NewContext, NewChecker, instantiatedIdent, NewChan, hasVarSize, makeSig, arrayPtrDeref, unparen, operandTypes, varTypes, measure, NewArray, Identical, IdenticalIgnoreTags; + bytes = $packages["bytes"]; + heap = $packages["container/heap"]; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + ast = $packages["go/ast"]; + constant = $packages["go/constant"]; + typeparams = $packages["go/internal/typeparams"]; + parser = $packages["go/parser"]; + token = $packages["go/token"]; + errors$1 = $packages["internal/types/errors"]; + io = $packages["io"]; + math = $packages["math"]; + regexp = $packages["regexp"]; + runtime = $packages["runtime"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + sync = $packages["sync"]; + atomic = $packages["sync/atomic"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + version = $newType(0, $kindStruct, "types.version", true, "go/types", false, function(major_, minor_) { + this.$val = this; + if (arguments.length === 0) { + this.major = 0; + this.minor = 0; + return; + } + this.major = major_; + this.minor = minor_; + }); + builtinId = $newType(4, $kindInt, "types.builtinId", true, "go/types", false, null); + Union = $newType(0, $kindStruct, "types.Union", true, "go/types", true, function(terms_) { + this.$val = this; + if (arguments.length === 0) { + this.terms = sliceType$12.nil; + return; + } + this.terms = terms_; + }); + Term = $newType(0, $kindStruct, "types.Term", true, "go/types", true, function(tilde_, typ_) { + this.$val = this; + if (arguments.length === 0) { + this.tilde = false; + this.typ = $ifaceNil; + return; + } + this.tilde = tilde_; + this.typ = typ_; + }); + unifier = $newType(0, $kindStruct, "types.unifier", true, "go/types", false, function(exact_, x_, y_, types_, depth_) { + this.$val = this; + if (arguments.length === 0) { + this.exact = false; + this.x = new tparamsList.ptr(ptrType$22.nil, sliceType$9.nil, sliceType$13.nil); + this.y = new tparamsList.ptr(ptrType$22.nil, sliceType$9.nil, sliceType$13.nil); + this.types = sliceType$2.nil; + this.depth = 0; + return; + } + this.exact = exact_; + this.x = x_; + this.y = y_; + this.types = types_; + this.depth = depth_; + }); + tparamsList = $newType(0, $kindStruct, "types.tparamsList", true, "go/types", false, function(unifier_, tparams_, indices_) { + this.$val = this; + if (arguments.length === 0) { + this.unifier = ptrType$22.nil; + this.tparams = sliceType$9.nil; + this.indices = sliceType$13.nil; + return; + } + this.unifier = unifier_; + this.tparams = tparams_; + this.indices = indices_; + }); + term = $newType(0, $kindStruct, "types.term", true, "go/types", false, function(tilde_, typ_) { + this.$val = this; + if (arguments.length === 0) { + this.tilde = false; + this.typ = $ifaceNil; + return; + } + this.tilde = tilde_; + this.typ = typ_; + }); + Qualifier = $newType(4, $kindFunc, "types.Qualifier", true, "go/types", true, null); + typeWriter = $newType(0, $kindStruct, "types.typeWriter", true, "go/types", false, function(buf_, seen_, qf_, ctxt_, tparams_, paramNames_, tpSubscripts_, pkgInfo_) { + this.$val = this; + if (arguments.length === 0) { + this.buf = ptrType$114.nil; + this.seen = false; + this.qf = $throwNilPointerError; + this.ctxt = ptrType$51.nil; + this.tparams = ptrType$48.nil; + this.paramNames = false; + this.tpSubscripts = false; + this.pkgInfo = false; + return; + } + this.buf = buf_; + this.seen = seen_; + this.qf = qf_; + this.ctxt = ctxt_; + this.tparams = tparams_; + this.paramNames = paramNames_; + this.tpSubscripts = tpSubscripts_; + this.pkgInfo = pkgInfo_; + }); + _TypeSet = $newType(0, $kindStruct, "types._TypeSet", true, "go/types", false, function(methods_, terms_, comparable_) { + this.$val = this; + if (arguments.length === 0) { + this.methods = sliceType.nil; + this.terms = termlist.nil; + this.comparable = false; + return; + } + this.methods = methods_; + this.terms = terms_; + this.comparable = comparable_; + }); + byUniqueMethodName = $newType(12, $kindSlice, "types.byUniqueMethodName", true, "go/types", false, null); + TypeParam = $newType(0, $kindStruct, "types.TypeParam", true, "go/types", true, function(check_, id_, obj_, index_, bound_) { + this.$val = this; + if (arguments.length === 0) { + this.check = ptrType$5.nil; + this.id = new $Uint64(0, 0); + this.obj = ptrType$17.nil; + this.index = 0; + this.bound = $ifaceNil; + return; + } + this.check = check_; + this.id = id_; + this.obj = obj_; + this.index = index_; + this.bound = bound_; + }); + TypeParamList = $newType(0, $kindStruct, "types.TypeParamList", true, "go/types", true, function(tparams_) { + this.$val = this; + if (arguments.length === 0) { + this.tparams = sliceType$9.nil; + return; + } + this.tparams = tparams_; + }); + TypeList = $newType(0, $kindStruct, "types.TypeList", true, "go/types", true, function(types_) { + this.$val = this; + if (arguments.length === 0) { + this.types = sliceType$2.nil; + return; + } + this.types = types_; + }); + Type = $newType(8, $kindInterface, "types.Type", true, "go/types", true, null); + Tuple = $newType(0, $kindStruct, "types.Tuple", true, "go/types", true, function(vars_) { + this.$val = this; + if (arguments.length === 0) { + this.vars = sliceType$10.nil; + return; + } + this.vars = vars_; + }); + termlist = $newType(12, $kindSlice, "types.termlist", true, "go/types", false, null); + substMap = $newType(4, $kindMap, "types.substMap", true, "go/types", false, null); + subster = $newType(0, $kindStruct, "types.subster", true, "go/types", false, function(pos_, smap_, check_, expanding_, ctxt_) { + this.$val = this; + if (arguments.length === 0) { + this.pos = 0; + this.smap = false; + this.check = ptrType$5.nil; + this.expanding = ptrType$9.nil; + this.ctxt = ptrType$51.nil; + return; + } + this.pos = pos_; + this.smap = smap_; + this.check = check_; + this.expanding = expanding_; + this.ctxt = ctxt_; + }); + Struct = $newType(0, $kindStruct, "types.Struct", true, "go/types", true, function(fields_, tags_) { + this.$val = this; + if (arguments.length === 0) { + this.fields = sliceType$10.nil; + this.tags = sliceType$5.nil; + return; + } + this.fields = fields_; + this.tags = tags_; + }); + stmtContext = $newType(4, $kindUint, "types.stmtContext", true, "go/types", false, null); + valueMap = $newType(4, $kindMap, "types.valueMap", true, "go/types", false, null); + valueType = $newType(0, $kindStruct, "types.valueType", true, "go/types", false, function(pos_, typ_) { + this.$val = this; + if (arguments.length === 0) { + this.pos = 0; + this.typ = $ifaceNil; + return; + } + this.pos = pos_; + this.typ = typ_; + }); + Slice = $newType(0, $kindStruct, "types.Slice", true, "go/types", true, function(elem_) { + this.$val = this; + if (arguments.length === 0) { + this.elem = $ifaceNil; + return; + } + this.elem = elem_; + }); + Sizes = $newType(8, $kindInterface, "types.Sizes", true, "go/types", true, null); + StdSizes = $newType(0, $kindStruct, "types.StdSizes", true, "go/types", true, function(WordSize_, MaxAlign_) { + this.$val = this; + if (arguments.length === 0) { + this.WordSize = new $Int64(0, 0); + this.MaxAlign = new $Int64(0, 0); + return; + } + this.WordSize = WordSize_; + this.MaxAlign = MaxAlign_; + }); + Signature = $newType(0, $kindStruct, "types.Signature", true, "go/types", true, function(rparams_, tparams_, scope_, recv_, params_, results_, variadic_) { + this.$val = this; + if (arguments.length === 0) { + this.rparams = ptrType$48.nil; + this.tparams = ptrType$48.nil; + this.scope = ptrType.nil; + this.recv = ptrType$16.nil; + this.params = ptrType$15.nil; + this.results = ptrType$15.nil; + this.variadic = false; + return; + } + this.rparams = rparams_; + this.tparams = tparams_; + this.scope = scope_; + this.recv = recv_; + this.params = params_; + this.results = results_; + this.variadic = variadic_; + }); + SelectionKind = $newType(4, $kindInt, "types.SelectionKind", true, "go/types", true, null); + Selection = $newType(0, $kindStruct, "types.Selection", true, "go/types", true, function(kind_, recv_, obj_, index_, indirect_) { + this.$val = this; + if (arguments.length === 0) { + this.kind = 0; + this.recv = $ifaceNil; + this.obj = $ifaceNil; + this.index = sliceType$13.nil; + this.indirect = false; + return; + } + this.kind = kind_; + this.recv = recv_; + this.obj = obj_; + this.index = index_; + this.indirect = indirect_; + }); + Scope = $newType(0, $kindStruct, "types.Scope", true, "go/types", true, function(parent_, children_, number_, elems_, pos_, end_, comment_, isFunc_) { + this.$val = this; + if (arguments.length === 0) { + this.parent = ptrType.nil; + this.children = sliceType$20.nil; + this.number = 0; + this.elems = false; + this.pos = 0; + this.end = 0; + this.comment = ""; + this.isFunc = false; + return; + } + this.parent = parent_; + this.children = children_; + this.number = number_; + this.elems = elems_; + this.pos = pos_; + this.end = end_; + this.comment = comment_; + this.isFunc = isFunc_; + }); + lazyObject = $newType(0, $kindStruct, "types.lazyObject", true, "go/types", false, function(parent_, resolve_, obj_, once_) { + this.$val = this; + if (arguments.length === 0) { + this.parent = ptrType.nil; + this.resolve = $throwNilPointerError; + this.obj = $ifaceNil; + this.once = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)); + return; + } + this.parent = parent_; + this.resolve = resolve_; + this.obj = obj_; + this.once = once_; + }); + declInfo = $newType(0, $kindStruct, "types.declInfo", true, "go/types", false, function(file_, lhs_, vtyp_, init_, inherited_, tdecl_, fdecl_, deps_) { + this.$val = this; + if (arguments.length === 0) { + this.file = ptrType.nil; + this.lhs = sliceType$10.nil; + this.vtyp = $ifaceNil; + this.init = $ifaceNil; + this.inherited = false; + this.tdecl = ptrType$90.nil; + this.fdecl = ptrType$87.nil; + this.deps = false; + return; + } + this.file = file_; + this.lhs = lhs_; + this.vtyp = vtyp_; + this.init = init_; + this.inherited = inherited_; + this.tdecl = tdecl_; + this.fdecl = fdecl_; + this.deps = deps_; + }); + inSourceOrder = $newType(12, $kindSlice, "types.inSourceOrder", true, "go/types", false, null); + ifacePair = $newType(0, $kindStruct, "types.ifacePair", true, "go/types", false, function(x_, y_, prev_) { + this.$val = this; + if (arguments.length === 0) { + this.x = ptrType$13.nil; + this.y = ptrType$13.nil; + this.prev = ptrType$23.nil; + return; + } + this.x = x_; + this.y = y_; + this.prev = prev_; + }); + Pointer = $newType(0, $kindStruct, "types.Pointer", true, "go/types", true, function(base_) { + this.$val = this; + if (arguments.length === 0) { + this.base = $ifaceNil; + return; + } + this.base = base_; + }); + Package = $newType(0, $kindStruct, "types.Package", true, "go/types", true, function(path_, name_, scope_, complete_, imports_, fake_, cgo_) { + this.$val = this; + if (arguments.length === 0) { + this.path = ""; + this.name = ""; + this.scope = ptrType.nil; + this.complete = false; + this.imports = sliceType$24.nil; + this.fake = false; + this.cgo = false; + return; + } + this.path = path_; + this.name = name_; + this.scope = scope_; + this.complete = complete_; + this.imports = imports_; + this.fake = fake_; + this.cgo = cgo_; + }); + operandMode = $newType(1, $kindUint8, "types.operandMode", true, "go/types", false, null); + operand = $newType(0, $kindStruct, "types.operand", true, "go/types", false, function(mode_, expr_, typ_, val_, id_) { + this.$val = this; + if (arguments.length === 0) { + this.mode = 0; + this.expr = $ifaceNil; + this.typ = $ifaceNil; + this.val = $ifaceNil; + this.id = 0; + return; + } + this.mode = mode_; + this.expr = expr_; + this.typ = typ_; + this.val = val_; + this.id = id_; + }); + objset = $newType(4, $kindMap, "types.objset", true, "go/types", false, null); + Object = $newType(8, $kindInterface, "types.Object", true, "go/types", true, null); + object = $newType(0, $kindStruct, "types.object", true, "go/types", false, function(parent_, pos_, pkg_, name_, typ_, order__, color__, scopePos__) { + this.$val = this; + if (arguments.length === 0) { + this.parent = ptrType.nil; + this.pos = 0; + this.pkg = ptrType$1.nil; + this.name = ""; + this.typ = $ifaceNil; + this.order_ = 0; + this.color_ = 0; + this.scopePos_ = 0; + return; + } + this.parent = parent_; + this.pos = pos_; + this.pkg = pkg_; + this.name = name_; + this.typ = typ_; + this.order_ = order__; + this.color_ = color__; + this.scopePos_ = scopePos__; + }); + color = $newType(4, $kindUint32, "types.color", true, "go/types", false, null); + PkgName = $newType(0, $kindStruct, "types.PkgName", true, "go/types", true, function(object_, imported_, used_) { + this.$val = this; + if (arguments.length === 0) { + this.object = new object.ptr(ptrType.nil, 0, ptrType$1.nil, "", $ifaceNil, 0, 0, 0); + this.imported = ptrType$1.nil; + this.used = false; + return; + } + this.object = object_; + this.imported = imported_; + this.used = used_; + }); + Const = $newType(0, $kindStruct, "types.Const", true, "go/types", true, function(object_, val_) { + this.$val = this; + if (arguments.length === 0) { + this.object = new object.ptr(ptrType.nil, 0, ptrType$1.nil, "", $ifaceNil, 0, 0, 0); + this.val = $ifaceNil; + return; + } + this.object = object_; + this.val = val_; + }); + TypeName = $newType(0, $kindStruct, "types.TypeName", true, "go/types", true, function(object_) { + this.$val = this; + if (arguments.length === 0) { + this.object = new object.ptr(ptrType.nil, 0, ptrType$1.nil, "", $ifaceNil, 0, 0, 0); + return; + } + this.object = object_; + }); + Var = $newType(0, $kindStruct, "types.Var", true, "go/types", true, function(object_, embedded_, isField_, used_, origin_) { + this.$val = this; + if (arguments.length === 0) { + this.object = new object.ptr(ptrType.nil, 0, ptrType$1.nil, "", $ifaceNil, 0, 0, 0); + this.embedded = false; + this.isField = false; + this.used = false; + this.origin = ptrType$16.nil; + return; + } + this.object = object_; + this.embedded = embedded_; + this.isField = isField_; + this.used = used_; + this.origin = origin_; + }); + Func = $newType(0, $kindStruct, "types.Func", true, "go/types", true, function(object_, hasPtrRecv__, origin_) { + this.$val = this; + if (arguments.length === 0) { + this.object = new object.ptr(ptrType.nil, 0, ptrType$1.nil, "", $ifaceNil, 0, 0, 0); + this.hasPtrRecv_ = false; + this.origin = ptrType$2.nil; + return; + } + this.object = object_; + this.hasPtrRecv_ = hasPtrRecv__; + this.origin = origin_; + }); + Label = $newType(0, $kindStruct, "types.Label", true, "go/types", true, function(object_, used_) { + this.$val = this; + if (arguments.length === 0) { + this.object = new object.ptr(ptrType.nil, 0, ptrType$1.nil, "", $ifaceNil, 0, 0, 0); + this.used = false; + return; + } + this.object = object_; + this.used = used_; + }); + Builtin = $newType(0, $kindStruct, "types.Builtin", true, "go/types", true, function(object_, id_) { + this.$val = this; + if (arguments.length === 0) { + this.object = new object.ptr(ptrType.nil, 0, ptrType$1.nil, "", $ifaceNil, 0, 0, 0); + this.id = 0; + return; + } + this.object = object_; + this.id = id_; + }); + Nil = $newType(0, $kindStruct, "types.Nil", true, "go/types", true, function(object_) { + this.$val = this; + if (arguments.length === 0) { + this.object = new object.ptr(ptrType.nil, 0, ptrType$1.nil, "", $ifaceNil, 0, 0, 0); + return; + } + this.object = object_; + }); + Named = $newType(0, $kindStruct, "types.Named", true, "go/types", true, function(check_, obj_, fromRHS_, inst_, mu_, state__, underlying_, tparams_, methods_, loader_) { + this.$val = this; + if (arguments.length === 0) { + this.check = ptrType$5.nil; + this.obj = ptrType$17.nil; + this.fromRHS = $ifaceNil; + this.inst = ptrType$52.nil; + this.mu = new sync.Mutex.ptr(0, 0); + this.state_ = 0; + this.underlying = $ifaceNil; + this.tparams = ptrType$48.nil; + this.methods = sliceType.nil; + this.loader = $throwNilPointerError; + return; + } + this.check = check_; + this.obj = obj_; + this.fromRHS = fromRHS_; + this.inst = inst_; + this.mu = mu_; + this.state_ = state__; + this.underlying = underlying_; + this.tparams = tparams_; + this.methods = methods_; + this.loader = loader_; + }); + instance = $newType(0, $kindStruct, "types.instance", true, "go/types", false, function(orig_, targs_, expandedMethods_, ctxt_) { + this.$val = this; + if (arguments.length === 0) { + this.orig = ptrType$9.nil; + this.targs = ptrType$56.nil; + this.expandedMethods = 0; + this.ctxt = ptrType$51.nil; + return; + } + this.orig = orig_; + this.targs = targs_; + this.expandedMethods = expandedMethods_; + this.ctxt = ctxt_; + }); + namedState = $newType(4, $kindUint32, "types.namedState", true, "go/types", false, null); + monoGraph = $newType(0, $kindStruct, "types.monoGraph", true, "go/types", false, function(vertices_, edges_, canon_, nameIdx_) { + this.$val = this; + if (arguments.length === 0) { + this.vertices = sliceType$37.nil; + this.edges = sliceType$38.nil; + this.canon = false; + this.nameIdx = false; + return; + } + this.vertices = vertices_; + this.edges = edges_; + this.canon = canon_; + this.nameIdx = nameIdx_; + }); + monoVertex = $newType(0, $kindStruct, "types.monoVertex", true, "go/types", false, function(weight_, pre_, len_, obj_) { + this.$val = this; + if (arguments.length === 0) { + this.weight = 0; + this.pre = 0; + this.len = 0; + this.obj = ptrType$17.nil; + return; + } + this.weight = weight_; + this.pre = pre_; + this.len = len_; + this.obj = obj_; + }); + monoEdge = $newType(0, $kindStruct, "types.monoEdge", true, "go/types", false, function(dst_, src_, weight_, pos_, typ_) { + this.$val = this; + if (arguments.length === 0) { + this.dst = 0; + this.src = 0; + this.weight = 0; + this.pos = 0; + this.typ = $ifaceNil; + return; + } + this.dst = dst_; + this.src = src_; + this.weight = weight_; + this.pos = pos_; + this.typ = typ_; + }); + MethodSet = $newType(0, $kindStruct, "types.MethodSet", true, "go/types", true, function(list_) { + this.$val = this; + if (arguments.length === 0) { + this.list = sliceType$1.nil; + return; + } + this.list = list_; + }); + methodSet = $newType(4, $kindMap, "types.methodSet", true, "go/types", false, null); + Map = $newType(0, $kindStruct, "types.Map", true, "go/types", true, function(key_, elem_) { + this.$val = this; + if (arguments.length === 0) { + this.key = $ifaceNil; + this.elem = $ifaceNil; + return; + } + this.key = key_; + this.elem = elem_; + }); + embeddedType = $newType(0, $kindStruct, "types.embeddedType", true, "go/types", false, function(typ_, index_, indirect_, multiples_) { + this.$val = this; + if (arguments.length === 0) { + this.typ = $ifaceNil; + this.index = sliceType$13.nil; + this.indirect = false; + this.multiples = false; + return; + } + this.typ = typ_; + this.index = index_; + this.indirect = indirect_; + this.multiples = multiples_; + }); + instanceLookup = $newType(0, $kindStruct, "types.instanceLookup", true, "go/types", false, function(buf_, m_) { + this.$val = this; + if (arguments.length === 0) { + this.buf = arrayType$1.zero(); + this.m = false; + return; + } + this.buf = buf_; + this.m = m_; + }); + block = $newType(0, $kindStruct, "types.block", true, "go/types", false, function(parent_, lstmt_, labels_) { + this.$val = this; + if (arguments.length === 0) { + this.parent = ptrType$92.nil; + this.lstmt = ptrType$65.nil; + this.labels = false; + return; + } + this.parent = parent_; + this.lstmt = lstmt_; + this.labels = labels_; + }); + Interface = $newType(0, $kindStruct, "types.Interface", true, "go/types", true, function(check_, methods_, embeddeds_, embedPos_, implicit_, complete_, tset_) { + this.$val = this; + if (arguments.length === 0) { + this.check = ptrType$5.nil; + this.methods = sliceType.nil; + this.embeddeds = sliceType$2.nil; + this.embedPos = ptrType$6.nil; + this.implicit = false; + this.complete = false; + this.tset = ptrType$7.nil; + return; + } + this.check = check_; + this.methods = methods_; + this.embeddeds = embeddeds_; + this.embedPos = embedPos_; + this.implicit = implicit_; + this.complete = complete_; + this.tset = tset_; + }); + dependency = $newType(8, $kindInterface, "types.dependency", true, "go/types", false, null); + graphNode = $newType(0, $kindStruct, "types.graphNode", true, "go/types", false, function(obj_, pred_, succ_, index_, ndeps_) { + this.$val = this; + if (arguments.length === 0) { + this.obj = $ifaceNil; + this.pred = false; + this.succ = false; + this.index = 0; + this.ndeps = 0; + return; + } + this.obj = obj_; + this.pred = pred_; + this.succ = succ_; + this.index = index_; + this.ndeps = ndeps_; + }); + nodeSet = $newType(4, $kindMap, "types.nodeSet", true, "go/types", false, null); + nodeQueue = $newType(12, $kindSlice, "types.nodeQueue", true, "go/types", false, null); + tpWalker = $newType(0, $kindStruct, "types.tpWalker", true, "go/types", false, function(seen_, tparams_) { + this.$val = this; + if (arguments.length === 0) { + this.seen = false; + this.tparams = sliceType$9.nil; + return; + } + this.seen = seen_; + this.tparams = tparams_; + }); + cycleFinder = $newType(0, $kindStruct, "types.cycleFinder", true, "go/types", false, function(tparams_, types_, seen_) { + this.$val = this; + if (arguments.length === 0) { + this.tparams = sliceType$9.nil; + this.types = sliceType$2.nil; + this.seen = false; + return; + } + this.tparams = tparams_; + this.types = types_; + this.seen = seen_; + }); + opPredicates = $newType(4, $kindMap, "types.opPredicates", true, "go/types", false, null); + exprKind = $newType(4, $kindInt, "types.exprKind", true, "go/types", false, null); + error_ = $newType(0, $kindStruct, "types.error_", true, "go/types", false, function(desc_, code_, soft_) { + this.$val = this; + if (arguments.length === 0) { + this.desc = sliceType$31.nil; + this.code = 0; + this.soft = false; + return; + } + this.desc = desc_; + this.code = code_; + this.soft = soft_; + }); + errorDesc = $newType(0, $kindStruct, "types.errorDesc", true, "go/types", false, function(posn_, format_, args_) { + this.$val = this; + if (arguments.length === 0) { + this.posn = $ifaceNil; + this.format = ""; + this.args = sliceType$6.nil; + return; + } + this.posn = posn_; + this.format = format_; + this.args = args_; + }); + positioner = $newType(8, $kindInterface, "types.positioner", true, "go/types", false, null); + posSpan = $newType(0, $kindStruct, "types.posSpan", true, "go/types", false, function(start_, pos_, end_) { + this.$val = this; + if (arguments.length === 0) { + this.start = 0; + this.pos = 0; + this.end = 0; + return; + } + this.start = start_; + this.pos = pos_; + this.end = end_; + }); + atPos = $newType(4, $kindInt, "types.atPos", true, "go/types", false, null); + decl = $newType(8, $kindInterface, "types.decl", true, "go/types", false, null); + importDecl = $newType(0, $kindStruct, "types.importDecl", true, "go/types", false, function(spec_) { + this.$val = this; + if (arguments.length === 0) { + this.spec = ptrType$106.nil; + return; + } + this.spec = spec_; + }); + constDecl = $newType(0, $kindStruct, "types.constDecl", true, "go/types", false, function(spec_, iota_, typ_, init_, inherited_) { + this.$val = this; + if (arguments.length === 0) { + this.spec = ptrType$88.nil; + this.iota = 0; + this.typ = $ifaceNil; + this.init = sliceType$11.nil; + this.inherited = false; + return; + } + this.spec = spec_; + this.iota = iota_; + this.typ = typ_; + this.init = init_; + this.inherited = inherited_; + }); + varDecl = $newType(0, $kindStruct, "types.varDecl", true, "go/types", false, function(spec_) { + this.$val = this; + if (arguments.length === 0) { + this.spec = ptrType$88.nil; + return; + } + this.spec = spec_; + }); + typeDecl = $newType(0, $kindStruct, "types.typeDecl", true, "go/types", false, function(spec_) { + this.$val = this; + if (arguments.length === 0) { + this.spec = ptrType$90.nil; + return; + } + this.spec = spec_; + }); + funcDecl = $newType(0, $kindStruct, "types.funcDecl", true, "go/types", false, function(decl_) { + this.$val = this; + if (arguments.length === 0) { + this.decl = ptrType$87.nil; + return; + } + this.decl = decl_; + }); + Context = $newType(0, $kindStruct, "types.Context", true, "go/types", true, function(mu_, typeMap_, nextID_, originIDs_) { + this.$val = this; + if (arguments.length === 0) { + this.mu = new sync.Mutex.ptr(0, 0); + this.typeMap = false; + this.nextID = 0; + this.originIDs = false; + return; + } + this.mu = mu_; + this.typeMap = typeMap_; + this.nextID = nextID_; + this.originIDs = originIDs_; + }); + ctxtEntry = $newType(0, $kindStruct, "types.ctxtEntry", true, "go/types", false, function(orig_, targs_, instance_) { + this.$val = this; + if (arguments.length === 0) { + this.orig = $ifaceNil; + this.targs = sliceType$2.nil; + this.instance = $ifaceNil; + return; + } + this.orig = orig_; + this.targs = targs_; + this.instance = instance_; + }); + exprInfo = $newType(0, $kindStruct, "types.exprInfo", true, "go/types", false, function(isLhs_, mode_, typ_, val_) { + this.$val = this; + if (arguments.length === 0) { + this.isLhs = false; + this.mode = 0; + this.typ = ptrType$8.nil; + this.val = $ifaceNil; + return; + } + this.isLhs = isLhs_; + this.mode = mode_; + this.typ = typ_; + this.val = val_; + }); + environment = $newType(0, $kindStruct, "types.environment", true, "go/types", false, function(decl_, scope_, pos_, iota_, errpos_, inTParamList_, sig_, isPanic_, hasLabel_, hasCallOrRecv_) { + this.$val = this; + if (arguments.length === 0) { + this.decl = ptrType$58.nil; + this.scope = ptrType.nil; + this.pos = 0; + this.iota = $ifaceNil; + this.errpos = $ifaceNil; + this.inTParamList = false; + this.sig = ptrType$27.nil; + this.isPanic = false; + this.hasLabel = false; + this.hasCallOrRecv = false; + return; + } + this.decl = decl_; + this.scope = scope_; + this.pos = pos_; + this.iota = iota_; + this.errpos = errpos_; + this.inTParamList = inTParamList_; + this.sig = sig_; + this.isPanic = isPanic_; + this.hasLabel = hasLabel_; + this.hasCallOrRecv = hasCallOrRecv_; + }); + importKey = $newType(0, $kindStruct, "types.importKey", true, "go/types", false, function(path_, dir_) { + this.$val = this; + if (arguments.length === 0) { + this.path = ""; + this.dir = ""; + return; + } + this.path = path_; + this.dir = dir_; + }); + dotImportKey = $newType(0, $kindStruct, "types.dotImportKey", true, "go/types", false, function(scope_, name_) { + this.$val = this; + if (arguments.length === 0) { + this.scope = ptrType.nil; + this.name = ""; + return; + } + this.scope = scope_; + this.name = name_; + }); + action = $newType(0, $kindStruct, "types.action", true, "go/types", false, function(f_, desc_) { + this.$val = this; + if (arguments.length === 0) { + this.f = $throwNilPointerError; + this.desc = ptrType$109.nil; + return; + } + this.f = f_; + this.desc = desc_; + }); + actionDesc = $newType(0, $kindStruct, "types.actionDesc", true, "go/types", false, function(pos_, format_, args_) { + this.$val = this; + if (arguments.length === 0) { + this.pos = $ifaceNil; + this.format = ""; + this.args = sliceType$6.nil; + return; + } + this.pos = pos_; + this.format = format_; + this.args = args_; + }); + Checker = $newType(0, $kindStruct, "types.Checker", true, "go/types", true, function(conf_, ctxt_, fset_, pkg_, Info_, version_, nextID_, objMap_, impMap_, valids_, pkgPathMap_, seenPkgMap_, files_, imports_, dotImportMap_, recvTParamMap_, brokenAliases_, unionTypeSets_, mono_, firstErr_, methods_, untyped_, delayed_, objPath_, cleaners_, environment_, indent_) { + this.$val = this; + if (arguments.length === 0) { + this.conf = ptrType$101.nil; + this.ctxt = ptrType$51.nil; + this.fset = ptrType$24.nil; + this.pkg = ptrType$1.nil; + this.Info = ptrType$110.nil; + this.version = new version.ptr(0, 0); + this.nextID = new $Uint64(0, 0); + this.objMap = false; + this.impMap = false; + this.valids = new instanceLookup.ptr(arrayType$1.zero(), false); + this.pkgPathMap = false; + this.seenPkgMap = false; + this.files = sliceType$35.nil; + this.imports = sliceType$36.nil; + this.dotImportMap = false; + this.recvTParamMap = false; + this.brokenAliases = false; + this.unionTypeSets = false; + this.mono = new monoGraph.ptr(sliceType$37.nil, sliceType$38.nil, false, false); + this.firstErr = $ifaceNil; + this.methods = false; + this.untyped = false; + this.delayed = sliceType$39.nil; + this.objPath = sliceType$8.nil; + this.cleaners = sliceType$40.nil; + this.environment = new environment.ptr(ptrType$58.nil, ptrType.nil, 0, $ifaceNil, $ifaceNil, false, ptrType$27.nil, false, false, false); + this.indent = 0; + return; + } + this.conf = conf_; + this.ctxt = ctxt_; + this.fset = fset_; + this.pkg = pkg_; + this.Info = Info_; + this.version = version_; + this.nextID = nextID_; + this.objMap = objMap_; + this.impMap = impMap_; + this.valids = valids_; + this.pkgPathMap = pkgPathMap_; + this.seenPkgMap = seenPkgMap_; + this.files = files_; + this.imports = imports_; + this.dotImportMap = dotImportMap_; + this.recvTParamMap = recvTParamMap_; + this.brokenAliases = brokenAliases_; + this.unionTypeSets = unionTypeSets_; + this.mono = mono_; + this.firstErr = firstErr_; + this.methods = methods_; + this.untyped = untyped_; + this.delayed = delayed_; + this.objPath = objPath_; + this.cleaners = cleaners_; + this.environment = environment_; + this.indent = indent_; + }); + cleaner = $newType(8, $kindInterface, "types.cleaner", true, "go/types", false, null); + bailout = $newType(0, $kindStruct, "types.bailout", true, "go/types", false, function() { this.$val = this; }); + Chan = $newType(0, $kindStruct, "types.Chan", true, "go/types", true, function(dir_, elem_) { + this.$val = this; + if (arguments.length === 0) { + this.dir = 0; + this.elem = $ifaceNil; + return; + } + this.dir = dir_; + this.elem = elem_; + }); + ChanDir = $newType(4, $kindInt, "types.ChanDir", true, "go/types", true, null); + BasicKind = $newType(4, $kindInt, "types.BasicKind", true, "go/types", true, null); + BasicInfo = $newType(4, $kindInt, "types.BasicInfo", true, "go/types", true, null); + Basic = $newType(0, $kindStruct, "types.Basic", true, "go/types", true, function(kind_, info_, name_) { + this.$val = this; + if (arguments.length === 0) { + this.kind = 0; + this.info = 0; + this.name = ""; + return; + } + this.kind = kind_; + this.info = info_; + this.name = name_; + }); + Array = $newType(0, $kindStruct, "types.Array", true, "go/types", true, function(len_, elem_) { + this.$val = this; + if (arguments.length === 0) { + this.len = new $Int64(0, 0); + this.elem = $ifaceNil; + return; + } + this.len = len_; + this.elem = elem_; + }); + Error = $newType(0, $kindStruct, "types.Error", true, "go/types", true, function(Fset_, Pos_, Msg_, Soft_, go116code_, go116start_, go116end_) { + this.$val = this; + if (arguments.length === 0) { + this.Fset = ptrType$24.nil; + this.Pos = 0; + this.Msg = ""; + this.Soft = false; + this.go116code = 0; + this.go116start = 0; + this.go116end = 0; + return; + } + this.Fset = Fset_; + this.Pos = Pos_; + this.Msg = Msg_; + this.Soft = Soft_; + this.go116code = go116code_; + this.go116start = go116start_; + this.go116end = go116end_; + }); + ArgumentError = $newType(0, $kindStruct, "types.ArgumentError", true, "go/types", true, function(Index_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Index = 0; + this.Err = $ifaceNil; + return; + } + this.Index = Index_; + this.Err = Err_; + }); + Importer = $newType(8, $kindInterface, "types.Importer", true, "go/types", true, null); + ImportMode = $newType(4, $kindInt, "types.ImportMode", true, "go/types", true, null); + ImporterFrom = $newType(8, $kindInterface, "types.ImporterFrom", true, "go/types", true, null); + Config = $newType(0, $kindStruct, "types.Config", true, "go/types", true, function(Context_, GoVersion_, IgnoreFuncBodies_, FakeImportC_, go115UsesCgo_, Error_, Importer_, Sizes_, DisableUnusedImportCheck_, oldComparableSemantics_) { + this.$val = this; + if (arguments.length === 0) { + this.Context = ptrType$51.nil; + this.GoVersion = ""; + this.IgnoreFuncBodies = false; + this.FakeImportC = false; + this.go115UsesCgo = false; + this.Error = $throwNilPointerError; + this.Importer = $ifaceNil; + this.Sizes = $ifaceNil; + this.DisableUnusedImportCheck = false; + this.oldComparableSemantics = false; + return; + } + this.Context = Context_; + this.GoVersion = GoVersion_; + this.IgnoreFuncBodies = IgnoreFuncBodies_; + this.FakeImportC = FakeImportC_; + this.go115UsesCgo = go115UsesCgo_; + this.Error = Error_; + this.Importer = Importer_; + this.Sizes = Sizes_; + this.DisableUnusedImportCheck = DisableUnusedImportCheck_; + this.oldComparableSemantics = oldComparableSemantics_; + }); + Info = $newType(0, $kindStruct, "types.Info", true, "go/types", true, function(Types_, Instances_, Defs_, Uses_, Implicits_, Selections_, Scopes_, InitOrder_) { + this.$val = this; + if (arguments.length === 0) { + this.Types = false; + this.Instances = false; + this.Defs = false; + this.Uses = false; + this.Implicits = false; + this.Selections = false; + this.Scopes = false; + this.InitOrder = sliceType$30.nil; + return; + } + this.Types = Types_; + this.Instances = Instances_; + this.Defs = Defs_; + this.Uses = Uses_; + this.Implicits = Implicits_; + this.Selections = Selections_; + this.Scopes = Scopes_; + this.InitOrder = InitOrder_; + }); + TypeAndValue = $newType(0, $kindStruct, "types.TypeAndValue", true, "go/types", true, function(mode_, Type_, Value_) { + this.$val = this; + if (arguments.length === 0) { + this.mode = 0; + this.Type = $ifaceNil; + this.Value = $ifaceNil; + return; + } + this.mode = mode_; + this.Type = Type_; + this.Value = Value_; + }); + Instance = $newType(0, $kindStruct, "types.Instance", true, "go/types", true, function(TypeArgs_, Type_) { + this.$val = this; + if (arguments.length === 0) { + this.TypeArgs = ptrType$56.nil; + this.Type = $ifaceNil; + return; + } + this.TypeArgs = TypeArgs_; + this.Type = Type_; + }); + Initializer = $newType(0, $kindStruct, "types.Initializer", true, "go/types", true, function(Lhs_, Rhs_) { + this.$val = this; + if (arguments.length === 0) { + this.Lhs = sliceType$10.nil; + this.Rhs = $ifaceNil; + return; + } + this.Lhs = Lhs_; + this.Rhs = Rhs_; + }); + methodInfo = $newType(0, $kindStruct, "types.methodInfo", true, "go/types", false, function(obj_, ptr_, recv_) { + this.$val = this; + if (arguments.length === 0) { + this.obj = ptrType$2.nil; + this.ptr = false; + this.recv = ptrType$30.nil; + return; + } + this.obj = obj_; + this.ptr = ptr_; + this.recv = recv_; + }); + $pkg.version = version; + $pkg.builtinId = builtinId; + $pkg.Union = Union; + $pkg.Term = Term; + $pkg.unifier = unifier; + $pkg.tparamsList = tparamsList; + $pkg.term = term; + $pkg.Qualifier = Qualifier; + $pkg.typeWriter = typeWriter; + $pkg._TypeSet = _TypeSet; + $pkg.byUniqueMethodName = byUniqueMethodName; + $pkg.TypeParam = TypeParam; + $pkg.TypeParamList = TypeParamList; + $pkg.TypeList = TypeList; + $pkg.Type = Type; + $pkg.Tuple = Tuple; + $pkg.termlist = termlist; + $pkg.substMap = substMap; + $pkg.subster = subster; + $pkg.Struct = Struct; + $pkg.stmtContext = stmtContext; + $pkg.valueMap = valueMap; + $pkg.valueType = valueType; + $pkg.Slice = Slice; + $pkg.Sizes = Sizes; + $pkg.StdSizes = StdSizes; + $pkg.Signature = Signature; + $pkg.SelectionKind = SelectionKind; + $pkg.Selection = Selection; + $pkg.Scope = Scope; + $pkg.lazyObject = lazyObject; + $pkg.declInfo = declInfo; + $pkg.inSourceOrder = inSourceOrder; + $pkg.ifacePair = ifacePair; + $pkg.Pointer = Pointer; + $pkg.Package = Package; + $pkg.operandMode = operandMode; + $pkg.operand = operand; + $pkg.objset = objset; + $pkg.Object = Object; + $pkg.object = object; + $pkg.color = color; + $pkg.PkgName = PkgName; + $pkg.Const = Const; + $pkg.TypeName = TypeName; + $pkg.Var = Var; + $pkg.Func = Func; + $pkg.Label = Label; + $pkg.Builtin = Builtin; + $pkg.Nil = Nil; + $pkg.Named = Named; + $pkg.instance = instance; + $pkg.namedState = namedState; + $pkg.monoGraph = monoGraph; + $pkg.monoVertex = monoVertex; + $pkg.monoEdge = monoEdge; + $pkg.MethodSet = MethodSet; + $pkg.methodSet = methodSet; + $pkg.Map = Map; + $pkg.embeddedType = embeddedType; + $pkg.instanceLookup = instanceLookup; + $pkg.block = block; + $pkg.Interface = Interface; + $pkg.dependency = dependency; + $pkg.graphNode = graphNode; + $pkg.nodeSet = nodeSet; + $pkg.nodeQueue = nodeQueue; + $pkg.tpWalker = tpWalker; + $pkg.cycleFinder = cycleFinder; + $pkg.opPredicates = opPredicates; + $pkg.exprKind = exprKind; + $pkg.error_ = error_; + $pkg.errorDesc = errorDesc; + $pkg.positioner = positioner; + $pkg.posSpan = posSpan; + $pkg.atPos = atPos; + $pkg.decl = decl; + $pkg.importDecl = importDecl; + $pkg.constDecl = constDecl; + $pkg.varDecl = varDecl; + $pkg.typeDecl = typeDecl; + $pkg.funcDecl = funcDecl; + $pkg.Context = Context; + $pkg.ctxtEntry = ctxtEntry; + $pkg.exprInfo = exprInfo; + $pkg.environment = environment; + $pkg.importKey = importKey; + $pkg.dotImportKey = dotImportKey; + $pkg.action = action; + $pkg.actionDesc = actionDesc; + $pkg.Checker = Checker; + $pkg.cleaner = cleaner; + $pkg.bailout = bailout; + $pkg.Chan = Chan; + $pkg.ChanDir = ChanDir; + $pkg.BasicKind = BasicKind; + $pkg.BasicInfo = BasicInfo; + $pkg.Basic = Basic; + $pkg.Array = Array; + $pkg.Error = Error; + $pkg.ArgumentError = ArgumentError; + $pkg.Importer = Importer; + $pkg.ImportMode = ImportMode; + $pkg.ImporterFrom = ImporterFrom; + $pkg.Config = Config; + $pkg.Info = Info; + $pkg.TypeAndValue = TypeAndValue; + $pkg.Instance = Instance; + $pkg.Initializer = Initializer; + $pkg.methodInfo = methodInfo; + $pkg.$finishSetup = function() { + ptrType = $ptrType(Scope); + ptrType$1 = $ptrType(Package); + ptrType$2 = $ptrType(Func); + sliceType = $sliceType(ptrType$2); + ptrType$3 = $ptrType(Selection); + sliceType$1 = $sliceType(ptrType$3); + ptrType$4 = $ptrType(term); + ptrType$5 = $ptrType(Checker); + sliceType$2 = $sliceType(Type); + sliceType$3 = $sliceType(token.Pos); + ptrType$6 = $ptrType(sliceType$3); + ptrType$7 = $ptrType(_TypeSet); + structType = $structType("go/types", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "nargs", name: "nargs", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "variadic", name: "variadic", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "kind", name: "kind", embedded: false, exported: false, typ: exprKind, tag: ""}]); + structType$1 = $structType("go/types", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "kind", name: "kind", embedded: false, exported: false, typ: BasicKind, tag: ""}, {prop: "val", name: "val", embedded: false, exported: false, typ: constant.Value, tag: ""}]); + ptrType$8 = $ptrType(Basic); + sliceType$4 = $sliceType(ptrType$8); + sliceType$5 = $sliceType($String); + sliceType$6 = $sliceType($emptyInterface); + ptrType$9 = $ptrType(Named); + sliceType$7 = $sliceType(ptrType$9); + ptrType$10 = $ptrType(Array); + ptrType$11 = $ptrType(Struct); + ptrType$12 = $ptrType(Union); + ptrType$13 = $ptrType(Interface); + ptrType$14 = $ptrType(TypeParam); + sliceType$8 = $sliceType(Object); + sliceType$9 = $sliceType(ptrType$14); + ptrType$15 = $ptrType(Tuple); + ptrType$16 = $ptrType(Var); + sliceType$10 = $sliceType(ptrType$16); + ptrType$17 = $ptrType(TypeName); + ptrType$18 = $ptrType(Builtin); + sliceType$11 = $sliceType(ast.Expr); + ptrType$19 = $ptrType(Term); + sliceType$12 = $sliceType(ptrType$19); + ptrType$20 = $ptrType(ast.UnaryExpr); + ptrType$21 = $ptrType(ast.BinaryExpr); + ptrType$22 = $ptrType(unifier); + sliceType$13 = $sliceType($Int); + ptrType$23 = $ptrType(ifacePair); + ptrType$24 = $ptrType(token.FileSet); + sliceType$14 = $sliceType($Uint8); + ptrType$25 = $ptrType(Slice); + ptrType$26 = $ptrType(Pointer); + ptrType$27 = $ptrType(Signature); + ptrType$28 = $ptrType(Map); + ptrType$29 = $ptrType(Chan); + ptrType$30 = $ptrType(ast.Ident); + ptrType$31 = $ptrType(PkgName); + ptrType$32 = $ptrType(Const); + ptrType$33 = $ptrType(Nil); + ptrType$34 = $ptrType($String); + ptrType$35 = $ptrType(ast.BadExpr); + ptrType$36 = $ptrType(ast.SelectorExpr); + ptrType$37 = $ptrType(ast.IndexExpr); + ptrType$38 = $ptrType(ast.IndexListExpr); + ptrType$39 = $ptrType(ast.ParenExpr); + ptrType$40 = $ptrType(ast.ArrayType); + ptrType$41 = $ptrType(ast.Ellipsis); + ptrType$42 = $ptrType(ast.StructType); + ptrType$43 = $ptrType(ast.StarExpr); + ptrType$44 = $ptrType(ast.FuncType); + ptrType$45 = $ptrType(ast.InterfaceType); + ptrType$46 = $ptrType(ast.MapType); + ptrType$47 = $ptrType(ast.ChanType); + ptrType$48 = $ptrType(TypeParamList); + ptrType$49 = $ptrType(ast.FieldList); + ptrType$50 = $ptrType(constant.Value); + ptrType$51 = $ptrType(Context); + ptrType$52 = $ptrType(instance); + arrayType = $arrayType($Uint8, 96); + ptrType$53 = $ptrType(strings.Builder); + ptrType$54 = $ptrType(objset); + ptrType$55 = $ptrType($Uint32); + ptrType$56 = $ptrType(TypeList); + sliceType$15 = $sliceType($Bool); + sliceType$16 = $sliceType(ptrType$4); + ptrType$57 = $ptrType(ast.BasicLit); + ptrType$58 = $ptrType(declInfo); + ptrType$59 = $ptrType(ast.EmptyStmt); + sliceType$17 = $sliceType(ast.Stmt); + ptrType$60 = $ptrType(ast.CaseClause); + ptrType$61 = $ptrType(ast.CommClause); + sliceType$18 = $sliceType(valueType); + ptrType$62 = $ptrType(operand); + ptrType$63 = $ptrType(ast.BadStmt); + ptrType$64 = $ptrType(ast.DeclStmt); + ptrType$65 = $ptrType(ast.LabeledStmt); + ptrType$66 = $ptrType(ast.ExprStmt); + ptrType$67 = $ptrType(ast.SendStmt); + ptrType$68 = $ptrType(ast.IncDecStmt); + ptrType$69 = $ptrType(ast.AssignStmt); + ptrType$70 = $ptrType(ast.GoStmt); + ptrType$71 = $ptrType(ast.DeferStmt); + ptrType$72 = $ptrType(ast.ReturnStmt); + ptrType$73 = $ptrType(ast.BranchStmt); + ptrType$74 = $ptrType(ast.BlockStmt); + ptrType$75 = $ptrType(ast.IfStmt); + ptrType$76 = $ptrType(ast.SwitchStmt); + ptrType$77 = $ptrType(ast.TypeSwitchStmt); + ptrType$78 = $ptrType(ast.SelectStmt); + ptrType$79 = $ptrType(ast.ForStmt); + ptrType$80 = $ptrType(ast.RangeStmt); + ptrType$81 = $ptrType(ast.Object); + ptrType$82 = $ptrType(ast.TypeAssertExpr); + sliceType$19 = $sliceType($Int64); + ptrType$83 = $ptrType(StdSizes); + ptrType$84 = $ptrType(ptrType$48); + sliceType$20 = $sliceType(ptrType); + ptrType$85 = $ptrType(lazyObject); + ptrType$86 = $ptrType(ast.CallExpr); + ptrType$87 = $ptrType(ast.FuncDecl); + ptrType$88 = $ptrType(ast.ValueSpec); + sliceType$21 = $sliceType(methodInfo); + ptrType$89 = $ptrType(token.File); + ptrType$90 = $ptrType(ast.TypeSpec); + sliceType$22 = $sliceType(ptrType$30); + sliceType$23 = $sliceType(ptrType$17); + sliceType$24 = $sliceType(ptrType$1); + ptrType$91 = $ptrType(Label); + sliceType$25 = $sliceType(embeddedType); + arrayType$1 = $arrayType(ptrType$9, 3); + ptrType$92 = $ptrType(block); + sliceType$26 = $sliceType(ptrType$73); + ptrType$93 = $ptrType(ast.GenDecl); + sliceType$27 = $sliceType(ptrType$51); + ptrType$94 = $ptrType(nodeQueue); + ptrType$95 = $ptrType(graphNode); + ptrType$96 = $ptrType(nodeSet); + sliceType$28 = $sliceType(ptrType$95); + sliceType$29 = $sliceType(ptrType$62); + arrayType$2 = $arrayType($Int64, 3); + ptrType$97 = $ptrType(ast.KeyValueExpr); + ptrType$98 = $ptrType(ast.FuncLit); + ptrType$99 = $ptrType(ast.CompositeLit); + ptrType$100 = $ptrType(ast.SliceExpr); + ptrType$101 = $ptrType(Config); + ptrType$102 = $ptrType(Initializer); + sliceType$30 = $sliceType(ptrType$102); + ptrType$103 = $ptrType($error); + sliceType$31 = $sliceType(errorDesc); + ptrType$104 = $ptrType(error_); + ptrType$105 = $ptrType(ast.BadDecl); + ptrType$106 = $ptrType(ast.ImportSpec); + ptrType$107 = $ptrType(ast.CommentGroup); + ptrType$108 = $ptrType(ast.Field); + sliceType$32 = $sliceType(ptrType$108); + sliceType$33 = $sliceType(ptrType$32); + sliceType$34 = $sliceType(ctxtEntry); + ptrType$109 = $ptrType(actionDesc); + ptrType$110 = $ptrType(Info); + ptrType$111 = $ptrType(ast.File); + sliceType$35 = $sliceType(ptrType$111); + sliceType$36 = $sliceType(ptrType$31); + sliceType$37 = $sliceType(monoVertex); + sliceType$38 = $sliceType(monoEdge); + sliceType$39 = $sliceType(action); + sliceType$40 = $sliceType(cleaner); + funcType$1 = $funcType([], [], false); + ptrType$112 = $ptrType(typeparams.IndexExpr); + sliceType$41 = $sliceType(operand); + arrayType$3 = $arrayType(Type, 2); + ptrType$113 = $ptrType(tparamsList); + ptrType$114 = $ptrType(bytes.Buffer); + ptrType$115 = $ptrType(typeWriter); + mapType = $mapType(Type, $Bool); + funcType$2 = $funcType([ptrType$4], [$Bool], false); + funcType$3 = $funcType([Type], [$Bool], false); + ptrType$116 = $ptrType(subster); + funcType$4 = $funcType([], [Object], false); + funcType$5 = $funcType([Object, Object], [], false); + mapType$1 = $mapType($String, Object); + mapType$2 = $mapType(Object, $Bool); + ptrType$117 = $ptrType(object); + funcType$6 = $funcType([ptrType$9], [sliceType$9, Type, sliceType], false); + ptrType$118 = $ptrType(monoGraph); + mapType$3 = $mapType(ptrType$14, ptrType$14); + mapType$4 = $mapType(ptrType$17, $Int); + ptrType$119 = $ptrType(MethodSet); + ptrType$120 = $ptrType(instanceLookup); + mapType$5 = $mapType(ptrType$9, sliceType$7); + mapType$6 = $mapType($String, ptrType$65); + ptrType$121 = $ptrType(tpWalker); + ptrType$122 = $ptrType(cycleFinder); + mapType$7 = $mapType($String, sliceType$34); + mapType$8 = $mapType(Type, $Int); + ptrType$123 = $ptrType(environment); + mapType$9 = $mapType(ptrType$86, $Bool); + ptrType$124 = $ptrType(action); + mapType$10 = $mapType(Type, ast.Expr); + sliceType$42 = $sliceType(ast.Decl); + funcType$7 = $funcType([decl], [], false); + funcType$8 = $funcType([Type], [Type], false); + mapType$11 = $mapType(Object, ptrType$58); + mapType$12 = $mapType(importKey, ptrType$1); + mapType$13 = $mapType($String, $Bool); + mapType$14 = $mapType($String, mapType$13); + mapType$15 = $mapType(ptrType$1, $Bool); + mapType$16 = $mapType(dotImportKey, ptrType$31); + mapType$17 = $mapType(ptrType$30, ptrType$14); + mapType$18 = $mapType(ptrType$17, $Bool); + mapType$19 = $mapType(ptrType$12, ptrType$7); + mapType$20 = $mapType(ptrType$17, sliceType); + mapType$21 = $mapType(ast.Expr, exprInfo); + ptrType$125 = $ptrType(ArgumentError); + funcType$9 = $funcType([$error], [], false); + mapType$22 = $mapType(ast.Expr, TypeAndValue); + mapType$23 = $mapType(ptrType$30, Instance); + mapType$24 = $mapType(ptrType$30, Object); + mapType$25 = $mapType(ast.Node, Object); + mapType$26 = $mapType(ptrType$36, ptrType$3); + mapType$27 = $mapType(ast.Node, ptrType); + $ptrType(Checker).prototype.langCompat = function langCompat(lit) { + var {check, lit, radix, s, $s, $r, $c} = $restore(this, {lit}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + s = lit.Value; + if (s.length <= 2 || check.allowVersion(check.pkg, 1, 13)) { + $s = -1; return; + } + /* */ if (strings.Contains(s, "_")) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (strings.Contains(s, "_")) { */ case 1: + $r = check.error(lit, 135, "underscores in numeric literals requires go1.13 or later"); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 2: + if (!((s.charCodeAt(0) === 48))) { + $s = -1; return; + } + radix = s.charCodeAt(1); + /* */ if ((radix === 98) || (radix === 66)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ((radix === 98) || (radix === 66)) { */ case 4: + $r = check.error(lit, 135, "binary literals requires go1.13 or later"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 5: + /* */ if ((radix === 111) || (radix === 79)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ((radix === 111) || (radix === 79)) { */ case 7: + $r = check.error(lit, 135, "0o/0O-style octal literals requires go1.13 or later"); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 8: + /* */ if (!((lit.Kind === 5)) && ((radix === 120) || (radix === 88))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!((lit.Kind === 5)) && ((radix === 120) || (radix === 88))) { */ case 10: + $r = check.error(lit, 135, "hexadecimal floating-point literals requires go1.13 or later"); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + $s = -1; return; + /* */ } return; } var $f = {$blk: langCompat, $c: true, $r, check, lit, radix, s, $s};return $f; + }; + $ptrType(Checker).prototype.allowVersion = function allowVersion(pkg, major, minor) { + var _tmp, _tmp$1, check, ma, major, mi, minor, pkg; + check = this; + if (!(pkg === check.pkg)) { + return true; + } + _tmp = check.version.major; + _tmp$1 = check.version.minor; + ma = _tmp; + mi = _tmp$1; + return (ma === 0) && (mi === 0) || ma > major || (ma === major) && mi >= minor; + }; + parseGoVersion = function parseGoVersion$1(s) { + var {_r$1, _r$2, _tuple, _tuple$1, err, matches, s, v, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = new version.ptr(0, 0); + err = $ifaceNil; + if (s === "") { + $s = -1; return [v, err]; + } + _r$1 = goVersionRx.FindStringSubmatch(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + matches = _r$1; + /* */ if (matches === sliceType$5.nil) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (matches === sliceType$5.nil) { */ case 2: + _r$2 = fmt.Errorf("should be something like \"go1.12\"", sliceType$6.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + err = _r$2; + $s = -1; return [v, err]; + /* } */ case 3: + _tuple = strconv.Atoi((1 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 1])); + v.major = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [v, err]; + } + _tuple$1 = strconv.Atoi((2 >= matches.$length ? ($throwRuntimeError("index out of range"), undefined) : matches.$array[matches.$offset + 2])); + v.minor = _tuple$1[0]; + err = _tuple$1[1]; + $s = -1; return [v, err]; + /* */ } return; } var $f = {$blk: parseGoVersion$1, $c: true, $r, _r$1, _r$2, _tuple, _tuple$1, err, matches, s, v, $s};return $f; + }; + $ptrType(Checker).prototype.validType = function validType(typ) { + var {_r$1, check, typ, $s, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.validType0(typ, sliceType$7.nil, sliceType$7.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return; + /* */ } return; } var $f = {$blk: validType, $c: true, $r, _r$1, check, typ, $s};return $f; + }; + $ptrType(Checker).prototype.validType0 = function validType0(typ, nest, path) { + var {$24r, $24r$1, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, check, e, etyp, f, i, inst, nest, p, path, start, t, t$1, t$2, t$3, t$4, t$5, t$6, t$7, targ, tparam, typ, x, $s, $r, $c} = $restore(this, {typ, nest, path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _ref = typ; + /* */ if (_ref === $ifaceNil) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 7; continue; } + /* */ $s = 8; continue; + /* switch (0) { default: if (_ref === $ifaceNil) { */ case 1: + t = _ref; + if (false) { + $panic(new $String("validType0(nil)")); + } + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 2: + t$1 = _ref.$val; + _r$1 = check.validType0(t$1.elem, nest, path); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 10; case 10: return $24r; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 3: + t$2 = _ref.$val; + _ref$1 = t$2.fields; + _i = 0; + /* while (true) { */ case 11: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 12; continue; } + f = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _r$2 = check.validType0(f.object.typ, nest, path); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!_r$2) { */ case 13: + $s = -1; return false; + /* } */ case 14: + _i++; + $s = 11; continue; + case 12: + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 4: + t$3 = _ref.$val; + _ref$2 = t$3.terms; + _i$1 = 0; + /* while (true) { */ case 16: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 17; continue; } + t$7 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + _r$3 = check.validType0(t$7.typ, nest, path); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!_r$3) { */ case 18: + $s = -1; return false; + /* } */ case 19: + _i$1++; + $s = 16; continue; + case 17: + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 5: + t$4 = _ref.$val; + _ref$3 = t$4.embeddeds; + _i$2 = 0; + /* while (true) { */ case 21: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 22; continue; } + etyp = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + _r$4 = check.validType0(etyp, nest, path); /* */ $s = 25; case 25: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (!_r$4) { */ case 23: + $s = -1; return false; + /* } */ case 24: + _i$2++; + $s = 21; continue; + case 22: + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 6: + t$5 = _ref.$val; + _r$5 = check.valids.lookup(t$5); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!(_r$5 === ptrType$9.nil)) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!(_r$5 === ptrType$9.nil)) { */ case 26: + /* break; */ $s = 8; continue; + /* } */ case 27: + _r$6 = t$5.Underlying(); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if ($interfaceIsEqual(_r$6, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if ($interfaceIsEqual(_r$6, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { */ case 29: + $s = -1; return false; + /* } */ case 30: + _ref$4 = nest; + _i$3 = 0; + /* while (true) { */ case 32: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 33; continue; } + e = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); + _r$7 = Identical(e, t$5); /* */ $s = 36; case 36: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (_r$7) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (_r$7) { */ case 34: + $r = assert(t$5.obj.object.pkg === check.pkg); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(t$5.Origin().obj.object.pkg === check.pkg); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + t$5.underlying = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + t$5.Origin().underlying = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + _ref$5 = path; + _i$4 = 0; + /* while (true) { */ case 39: + /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 40; continue; } + start = _i$4; + p = ((_i$4 < 0 || _i$4 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$4]); + _r$8 = Identical(p, t$5); /* */ $s = 43; case 43: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (_r$8) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if (_r$8) { */ case 41: + $r = check.cycleError(makeObjList($subslice(path, start))); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 42: + _i$4++; + $s = 39; continue; + case 40: + $panic(new $String("cycle start not found")); + /* } */ case 35: + _i$3++; + $s = 32; continue; + case 33: + _r$9 = check.validType0(t$5.Origin().fromRHS, $append(nest, t$5), $append(path, t$5)); /* */ $s = 47; case 47: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (!_r$9) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if (!_r$9) { */ case 45: + $s = -1; return false; + /* } */ case 46: + check.valids.add(t$5); + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 7: + t$6 = _ref.$val; + /* */ if (nest.$length > 0) { $s = 48; continue; } + /* */ $s = 49; continue; + /* if (nest.$length > 0) { */ case 48: + inst = (x = nest.$length - 1 >> 0, ((x < 0 || x >= nest.$length) ? ($throwRuntimeError("index out of range"), undefined) : nest.$array[nest.$offset + x])); + _r$10 = inst.TypeParams(); /* */ $s = 50; case 50: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = _r$10.list(); /* */ $s = 51; case 51: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _ref$6 = _r$11; + _i$5 = 0; + /* while (true) { */ case 52: + /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 53; continue; } + i = _i$5; + tparam = ((_i$5 < 0 || _i$5 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$5]); + /* */ if (t$6 === tparam && i < inst.TypeArgs().Len()) { $s = 54; continue; } + /* */ $s = 55; continue; + /* if (t$6 === tparam && i < inst.TypeArgs().Len()) { */ case 54: + targ = inst.TypeArgs().At(i); + _r$12 = check.validType0(targ, $subslice(nest, 0, (nest.$length - 1 >> 0)), path); /* */ $s = 56; case 56: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $24r$1 = _r$12; + $s = 57; case 57: return $24r$1; + /* } */ case 55: + _i$5++; + $s = 52; continue; + case 53: + /* } */ case 49: + /* } } */ case 8: + $s = -1; return true; + /* */ } return; } var $f = {$blk: validType0, $c: true, $r, $24r, $24r$1, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, check, e, etyp, f, i, inst, nest, p, path, start, t, t$1, t$2, t$3, t$4, t$5, t$6, t$7, targ, tparam, typ, x, $s};return $f; + }; + makeObjList = function makeObjList$1(tlist) { + var _i, _ref, i, olist, t, tlist; + olist = $makeSlice(sliceType$8, tlist.$length); + _ref = tlist; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ((i < 0 || i >= olist.$length) ? ($throwRuntimeError("index out of range"), undefined) : olist.$array[olist.$offset + i] = t.obj); + _i++; + } + return olist; + }; + defPredeclaredTypes = function defPredeclaredTypes$1() { + var {_i, _i$1, _r$1, _r$2, _ref, _ref$1, err, ityp, ityp$1, obj, obj$1, recv, res, sig, t, t$1, typ, typ$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = $pkg.Typ; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = def(NewTypeName(0, ptrType$1.nil, t.name, t)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + _ref$1 = aliases; + _i$1 = 0; + /* while (true) { */ case 4: + /* if (!(_i$1 < 2)) { break; } */ if(!(_i$1 < 2)) { $s = 5; continue; } + t$1 = ((_i$1 < 0 || _i$1 >= _ref$1.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1[_i$1]); + $r = def(NewTypeName(0, ptrType$1.nil, t$1.name, t$1)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 4; continue; + case 5: + $r = def(NewTypeName(0, ptrType$1.nil, "any", new Interface.ptr(ptrType$5.nil, sliceType.nil, sliceType$2.nil, ptrType$6.nil, false, true, topTypeSet))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + obj = NewTypeName(0, ptrType$1.nil, "error", $ifaceNil); + $r = obj.object.setColor(1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + typ = NewNamed(obj, $ifaceNil, sliceType.nil); + recv = NewVar(0, ptrType$1.nil, "", typ); + res = NewVar(0, ptrType$1.nil, "", (17 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 17])); + _r$1 = NewSignatureType(recv, sliceType$9.nil, sliceType$9.nil, ptrType$15.nil, NewTuple(new sliceType$10([res])), false); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + sig = _r$1; + err = NewFunc(0, ptrType$1.nil, "Error", sig); + ityp = new Interface.ptr(ptrType$5.nil, new sliceType([err]), sliceType$2.nil, ptrType$6.nil, false, true, ptrType$7.nil); + _r$2 = computeInterfaceTypeSet(ptrType$5.nil, 0, ityp); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $r = typ.SetUnderlying(ityp); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = def(obj); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + obj$1 = NewTypeName(0, ptrType$1.nil, "comparable", $ifaceNil); + $r = obj$1.object.setColor(1); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + typ$1 = NewNamed(obj$1, $ifaceNil, sliceType.nil); + ityp$1 = new Interface.ptr(ptrType$5.nil, sliceType.nil, sliceType$2.nil, ptrType$6.nil, false, true, new _TypeSet.ptr(sliceType.nil, allTermlist, true)); + $r = typ$1.SetUnderlying(ityp$1); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = def(obj$1); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: defPredeclaredTypes$1, $c: true, $r, _i, _i$1, _r$1, _r$2, _ref, _ref$1, err, ityp, ityp$1, obj, obj$1, recv, res, sig, t, t$1, typ, typ$1, $s};return $f; + }; + defPredeclaredConsts = function defPredeclaredConsts$1() { + var {_i, _ref, c, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = predeclaredConsts; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < 3)) { break; } */ if(!(_i < 3)) { $s = 2; continue; } + c = $clone(((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]), structType$1); + $r = def(NewConst(0, ptrType$1.nil, c.name, (x = c.kind, ((x < 0 || x >= $pkg.Typ.$length) ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + x])), c.val)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: defPredeclaredConsts$1, $c: true, $r, _i, _ref, c, x, $s};return $f; + }; + defPredeclaredNil = function defPredeclaredNil$1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = def(new Nil.ptr($clone(new object.ptr(ptrType.nil, 0, ptrType$1.nil, "nil", (25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25]), 0, 1, 0), object))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: defPredeclaredNil$1, $c: true, $r, $s};return $f; + }; + defPredeclaredFuncs = function defPredeclaredFuncs$1() { + var {_i, _ref, i, id, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = predeclaredFuncs; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < 26)) { break; } */ if(!(_i < 26)) { $s = 2; continue; } + i = _i; + id = ((i >> 0)); + if ((id === 24) || (id === 25)) { + _i++; + /* continue; */ $s = 1; continue; + } + $r = def(newBuiltin(id)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: defPredeclaredFuncs$1, $c: true, $r, _i, _ref, i, id, $s};return $f; + }; + init = function init$3() { + var {_r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $pkg.Universe = NewScope(ptrType.nil, 0, 0, "universe"); + _r$1 = NewPackage("unsafe", "unsafe"); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $pkg.Unsafe = _r$1; + $pkg.Unsafe.complete = true; + $r = defPredeclaredTypes(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = defPredeclaredConsts(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = defPredeclaredNil(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = defPredeclaredFuncs(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = $pkg.Universe.Lookup("iota"); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + universeIota = _r$2; + _r$3 = $pkg.Universe.Lookup("byte"); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = _r$3.Type(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + universeByte = _r$4; + _r$5 = $pkg.Universe.Lookup("rune"); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = _r$5.Type(); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + universeRune = _r$6; + _r$7 = $pkg.Universe.Lookup("any"); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + universeAny = _r$7; + _r$8 = $pkg.Universe.Lookup("error"); /* */ $s = 12; case 12: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$9 = _r$8.Type(); /* */ $s = 13; case 13: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + universeError = _r$9; + _r$10 = $pkg.Universe.Lookup("comparable"); /* */ $s = 14; case 14: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + universeComparable = _r$10; + $s = -1; return; + /* */ } return; } var $f = {$blk: init$3, $c: true, $r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, $s};return $f; + }; + def = function def$1(obj) { + var {_r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, name, obj, obj$1, obj$2, obj$3, scope, typ, $s, $r, $c} = $restore(this, {obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = obj.color(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = assert(_r$1 === 1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = obj.Name(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + name = _r$2; + if (strings.Contains(name, " ")) { + $s = -1; return; + } + _r$3 = obj.Type(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = $assertType(_r$3, ptrType$9, true); + typ = _tuple[0]; + if (!(typ === ptrType$9.nil)) { + typ.obj = $assertType(obj, ptrType$17); + } + scope = $pkg.Universe; + _r$4 = obj.Exported(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r$4) { */ case 5: + scope = $pkg.Unsafe.scope; + _ref = obj; + if ($assertType(_ref, ptrType$17, true)[1]) { + obj$1 = _ref.$val; + obj$1.object.pkg = $pkg.Unsafe; + } else if ($assertType(_ref, ptrType$18, true)[1]) { + obj$2 = _ref.$val; + obj$2.object.pkg = $pkg.Unsafe; + } else { + obj$3 = _ref; + unreachable(); + } + /* } */ case 6: + _r$5 = scope.Insert(obj); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(_r$5, $ifaceNil))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!($interfaceIsEqual(_r$5, $ifaceNil))) { */ case 8: + $panic(new $String("double declaration of predeclared identifier")); + /* } */ case 9: + $s = -1; return; + /* */ } return; } var $f = {$blk: def$1, $c: true, $r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, name, obj, obj$1, obj$2, obj$3, scope, typ, $s};return $f; + }; + NewUnion = function NewUnion$1(terms) { + var terms; + if (terms.$length === 0) { + $panic(new $String("empty union")); + } + return new Union.ptr(terms); + }; + $pkg.NewUnion = NewUnion; + $ptrType(Union).prototype.Len = function Len() { + var u; + u = this; + return u.terms.$length; + }; + $ptrType(Union).prototype.Term = function Term$1(i) { + var i, u, x; + u = this; + return (x = u.terms, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(Union).prototype.Underlying = function Underlying() { + var u; + u = this; + return u; + }; + $ptrType(Union).prototype.String = function String() { + var {$24r, _r$1, u, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + u = this; + _r$1 = TypeString(u, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String, $c: true, $r, $24r, _r$1, u, $s};return $f; + }; + NewTerm = function NewTerm$1(tilde, typ) { + var tilde, typ; + return new Term.ptr(tilde, typ); + }; + $pkg.NewTerm = NewTerm; + $ptrType(Term).prototype.Tilde = function Tilde() { + var t; + t = this; + return t.tilde; + }; + $ptrType(Term).prototype.Type = function Type$1() { + var t; + t = this; + return t.typ; + }; + $ptrType(Term).prototype.String = function String$1() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = ($pointerOfStructConversion(t, ptrType$4)).String(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + parseUnion = function parseUnion$1(check, uexpr) { + var {_i, _r$1, _ref, _tuple, blist, check, i, term$1, terms, tlist, u, uexpr, x, x$1, $s, $r, $c} = $restore(this, {check, uexpr}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = [check]; + terms = [terms]; + tlist = [tlist]; + _tuple = flattenUnion(sliceType$11.nil, uexpr); + blist = _tuple[0]; + tlist[0] = _tuple[1]; + $r = assert(blist.$length === (tlist[0].$length - 1 >> 0)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + terms[0] = sliceType$12.nil; + u = $ifaceNil; + _ref = tlist[0]; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = parseTilde(check[0], x); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + term$1 = _r$1; + if ((tlist[0].$length === 1) && !term$1.tilde) { + $s = -1; return term$1.typ; + } + /* */ if (terms[0].$length >= 100) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (terms[0].$length >= 100) { */ case 5: + /* */ if (!($interfaceIsEqual(u, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!($interfaceIsEqual(u, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { */ case 8: + $r = check[0].errorf(x, 141, "cannot handle more than %d union terms (implementation limitation)", new sliceType$6([new $Int(100)])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + u = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 9: + $s = 7; continue; + /* } else { */ case 6: + terms[0] = $append(terms[0], term$1); + u = new Union.ptr(terms[0]); + /* } */ case 7: + /* */ if (i > 0) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (i > 0) { */ case 11: + $r = check[0].recordTypeAndValue((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= blist.$length) ? ($throwRuntimeError("index out of range"), undefined) : blist.$array[blist.$offset + x$1])), 3, u, $ifaceNil); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + _i++; + $s = 2; continue; + case 3: + if ($interfaceIsEqual(u, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + $s = -1; return u; + } + check[0].later((function(check, terms, tlist) { return function parseUnion·func1() { + var {_i$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref$1, _tuple$1, f, i$1, j, t, tset, u$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref$1 = terms[0]; + _i$1 = 0; + /* while (true) { */ case 1: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 2; continue; } + i$1 = _i$1; + t = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if ($interfaceIsEqual(t.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + _i$1++; + /* continue; */ $s = 1; continue; + } + _r$2 = under(t.typ); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + u$1 = _r$2; + _tuple$1 = $assertType(u$1, ptrType$13, true); + f = _tuple$1[0]; + /* */ if (t.tilde) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (t.tilde) { */ case 4: + /* */ if (!(f === ptrType$13.nil)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(f === ptrType$13.nil)) { */ case 6: + $r = check[0].errorf(((i$1 < 0 || i$1 >= tlist[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : tlist[0].$array[tlist[0].$offset + i$1]), 141, "invalid use of ~ (%s is an interface)", new sliceType$6([t.typ])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + /* continue; */ $s = 1; continue; + /* } */ case 7: + _r$3 = Identical(u$1, t.typ); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!_r$3) { */ case 9: + $r = check[0].errorf(((i$1 < 0 || i$1 >= tlist[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : tlist[0].$array[tlist[0].$offset + i$1]), 141, "invalid use of ~ (underlying type of %s is %s)", new sliceType$6([t.typ, u$1])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + /* continue; */ $s = 1; continue; + /* } */ case 10: + /* } */ case 5: + /* */ if (!(f === ptrType$13.nil)) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!(f === ptrType$13.nil)) { */ case 13: + _r$4 = f.typeSet(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + tset = _r$4; + /* */ if (!((tset.NumMethods() === 0))) { $s = 17; continue; } + _r$5 = universeComparable.Type(); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if ($interfaceIsEqual(t.typ, _r$5)) { $s = 18; continue; } + /* */ if (tset.comparable) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (!((tset.NumMethods() === 0))) { */ case 17: + $r = check[0].errorf(((i$1 < 0 || i$1 >= tlist[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : tlist[0].$array[tlist[0].$offset + i$1]), 141, "cannot use %s in union (%s contains methods)", new sliceType$6([t, t])); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if ($interfaceIsEqual(t.typ, _r$5)) { */ case 18: + $r = check[0].error(((i$1 < 0 || i$1 >= tlist[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : tlist[0].$array[tlist[0].$offset + i$1]), 141, "cannot use comparable in union"); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if (tset.comparable) { */ case 19: + $r = check[0].errorf(((i$1 < 0 || i$1 >= tlist[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : tlist[0].$array[tlist[0].$offset + i$1]), 141, "cannot use %s in union (%s embeds comparable)", new sliceType$6([t, t])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 20: + case 16: + _i$1++; + /* continue; */ $s = 1; continue; + /* } */ case 14: + _r$6 = overlappingTerm($subslice(terms[0], 0, i$1), t); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + j = _r$6; + /* */ if (j >= 0) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (j >= 0) { */ case 26: + $r = check[0].softErrorf(((i$1 < 0 || i$1 >= tlist[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : tlist[0].$array[tlist[0].$offset + i$1]), 141, "overlapping terms %s and %s", new sliceType$6([t, ((j < 0 || j >= terms[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : terms[0].$array[terms[0].$offset + j])])); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 27: + _i$1++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: parseUnion·func1, $c: true, $r, _i$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref$1, _tuple$1, f, i$1, j, t, tset, u$1, $s};return $f; + }; })(check, terms, tlist)).describef(uexpr, "check term validity %s", new sliceType$6([uexpr])); + $s = -1; return u; + /* */ } return; } var $f = {$blk: parseUnion$1, $c: true, $r, _i, _r$1, _ref, _tuple, blist, check, i, term$1, terms, tlist, u, uexpr, x, x$1, $s};return $f; + }; + parseTilde = function parseTilde$1(check, tx) { + var {_r$1, _tuple, check, op, term$1, tilde, tx, typ, x, $s, $r, $c} = $restore(this, {check, tx}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = tx; + tilde = false; + _tuple = $assertType(x, ptrType$20, true); + op = _tuple[0]; + if (!(op === ptrType$20.nil) && (op.Op === 88)) { + x = op.X; + tilde = true; + } + _r$1 = check.typ(x); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ = _r$1; + /* */ if (isTypeParam(typ)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (isTypeParam(typ)) { */ case 2: + /* */ if (tilde) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (tilde) { */ case 4: + $r = check.errorf(x, 144, "type in term %s cannot be a type parameter", new sliceType$6([tx])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 6; continue; + /* } else { */ case 5: + $r = check.error(x, 144, "term cannot be a type parameter"); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 3: + term$1 = NewTerm(tilde, typ); + /* */ if (tilde) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (tilde) { */ case 9: + $r = check.recordTypeAndValue(tx, 3, new Union.ptr(new sliceType$12([term$1])), $ifaceNil); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + $s = -1; return term$1; + /* */ } return; } var $f = {$blk: parseTilde$1, $c: true, $r, _r$1, _tuple, check, op, term$1, tilde, tx, typ, x, $s};return $f; + }; + overlappingTerm = function overlappingTerm$1(terms, y) { + var {_i, _r$1, _r$2, _r$3, _ref, i, terms, x, y, $s, $r, $c} = $restore(this, {terms, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = IsInterface(y.typ); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = assert(!_r$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = terms; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$2 = IsInterface(x.typ); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r$2) { */ case 5: + _i++; + /* continue; */ $s = 3; continue; + /* } */ case 6: + if (false) { + if (x === ptrType$19.nil || $interfaceIsEqual(x.typ, $ifaceNil) || y === ptrType$19.nil || $interfaceIsEqual(y.typ, $ifaceNil)) { + $panic(new $String("empty or top union term")); + } + } + _r$3 = ($pointerOfStructConversion(x, ptrType$4)).disjoint(($pointerOfStructConversion(y, ptrType$4))); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!_r$3) { */ case 8: + $s = -1; return i; + /* } */ case 9: + _i++; + $s = 3; continue; + case 4: + $s = -1; return -1; + /* */ } return; } var $f = {$blk: overlappingTerm$1, $c: true, $r, _i, _r$1, _r$2, _r$3, _ref, i, terms, x, y, $s};return $f; + }; + flattenUnion = function flattenUnion$1(list, x) { + var _tmp, _tmp$1, _tuple, _tuple$1, blist, list, o, tlist, x; + blist = sliceType$11.nil; + tlist = sliceType$11.nil; + _tuple = $assertType(x, ptrType$21, true); + o = _tuple[0]; + if (!(o === ptrType$21.nil) && (o.Op === 18)) { + _tuple$1 = flattenUnion(list, o.X); + blist = _tuple$1[0]; + tlist = _tuple$1[1]; + blist = $append(blist, o); + x = o.Y; + } + _tmp = blist; + _tmp$1 = $append(tlist, x); + blist = _tmp; + tlist = _tmp$1; + return [blist, tlist]; + }; + newUnifier = function newUnifier$1(exact) { + var exact, u; + u = new unifier.ptr(exact, new tparamsList.ptr(ptrType$22.nil, sliceType$9.nil, sliceType$13.nil), new tparamsList.ptr(ptrType$22.nil, sliceType$9.nil, sliceType$13.nil), sliceType$2.nil, 0); + u.x.unifier = u; + u.y.unifier = u; + return u; + }; + $ptrType(unifier).prototype.unify = function unify(x, y) { + var {$24r, _r$1, u, x, y, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + u = this; + _r$1 = u.nify(x, y, ptrType$23.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: unify, $c: true, $r, $24r, _r$1, u, x, y, $s};return $f; + }; + $ptrType(unifier).prototype.tracef = function tracef(format, args) { + var {_r$1, _r$2, args, format, u, $s, $r, $c} = $restore(this, {format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + u = this; + _r$1 = sprintf(ptrType$24.nil, $throwNilPointerError, true, format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = fmt.Println(new sliceType$6([new $String(strings.Repeat(". ", u.depth) + _r$1)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = -1; return; + /* */ } return; } var $f = {$blk: tracef, $c: true, $r, _r$1, _r$2, args, format, u, $s};return $f; + }; + $ptrType(tparamsList).prototype.String = function String$2() { + var {_i, _ref, buf, d, i, tpar, w, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + d = this; + buf[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + w = newTypeWriter(buf[0], $throwNilPointerError); + w.byte$(91); + _ref = d.tparams; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + tpar = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + w.string(", "); + } + $r = w.typ(tpar); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + w.string(": "); + $r = w.typ(d.at(i)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + w.byte$(93); + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: String$2, $c: true, $r, _i, _ref, buf, d, i, tpar, w, $s};return $f; + }; + $ptrType(tparamsList).prototype.init = function init$4(tparams) { + var {_i, _ref, d, i, tpar, tparams, $s, $r, $c} = $restore(this, {tparams}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + if (tparams.$length === 0) { + $s = -1; return; + } + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + _ref = tparams; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + i = _i; + tpar = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = assert(i === tpar.index); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 3; continue; + case 4: + /* } */ case 2: + d.tparams = tparams; + d.indices = $makeSlice(sliceType$13, tparams.$length); + $s = -1; return; + /* */ } return; } var $f = {$blk: init$4, $c: true, $r, _i, _ref, d, i, tpar, tparams, $s};return $f; + }; + $ptrType(unifier).prototype.join = function join(i, j) { + var {i, j, ti, tj, u, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {i, j}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + u = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = u.tracef("%s \xE2\x87\x84 %s", new sliceType$6([(x = u.x.tparams, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), (x$1 = u.y.tparams, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j]))])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + ti = (x$2 = u.x.indices, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i])); + tj = (x$3 = u.y.indices, ((j < 0 || j >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + j])); + /* */ if ((ti === 0) && (tj === 0)) { $s = 5; continue; } + /* */ if ((ti === 0)) { $s = 6; continue; } + /* */ if ((tj === 0)) { $s = 7; continue; } + /* */ if ((ti === tj)) { $s = 8; continue; } + /* */ if (ti > 0 && tj > 0) { $s = 9; continue; } + /* */ if (ti > 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ((ti === 0) && (tj === 0)) { */ case 5: + u.types = $append(u.types, $ifaceNil); + (x$4 = u.x.indices, ((i < 0 || i >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + i] = -u.types.$length)); + (x$5 = u.y.indices, ((j < 0 || j >= x$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + j] = -u.types.$length)); + $s = 12; continue; + /* } else if ((ti === 0)) { */ case 6: + (x$6 = u.x.indices, ((i < 0 || i >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + i] = tj)); + $s = 12; continue; + /* } else if ((tj === 0)) { */ case 7: + (x$7 = u.y.indices, ((j < 0 || j >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + j] = ti)); + $s = 12; continue; + /* } else if ((ti === tj)) { */ case 8: + /* break; */ $s = 4; continue; + $s = 12; continue; + /* } else if (ti > 0 && tj > 0) { */ case 9: + $s = -1; return false; + /* } else if (ti > 0) { */ case 10: + $r = u.y.setIndex(j, ti); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 12; continue; + /* } else { */ case 11: + $r = u.x.setIndex(i, tj); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + case 4: + $s = -1; return true; + /* */ } return; } var $f = {$blk: join, $c: true, $r, i, j, ti, tj, u, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + $ptrType(tparamsList).prototype.index = function index(typ) { + var _tuple, d, ok, tpar, typ; + d = this; + _tuple = $assertType(typ, ptrType$14, true); + tpar = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return tparamIndex(d.tparams, tpar); + } + return -1; + }; + tparamIndex = function tparamIndex$1(list, tpar) { + var i, list, tpar; + i = tpar.index; + if (0 <= i && i < list.$length && ((i < 0 || i >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + i]) === tpar) { + return i; + } + return -1; + }; + $ptrType(tparamsList).prototype.setIndex = function setIndex(i, tj) { + var {_i, _ref, d, i, k, ti, tj, tk, x, x$1, $s, $r, $c} = $restore(this, {i, tj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + ti = (x = d.indices, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + $r = assert(!((ti === 0)) && !((tj === 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = d.indices; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + k = _i; + tk = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (tk === ti) { + (x$1 = d.indices, ((k < 0 || k >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + k] = tj)); + } + _i++; + } + $s = -1; return; + /* */ } return; } var $f = {$blk: setIndex, $c: true, $r, _i, _ref, d, i, k, ti, tj, tk, x, x$1, $s};return $f; + }; + $ptrType(tparamsList).prototype.at = function at(i) { + var d, i, ti, x, x$1, x$2; + d = this; + ti = (x = d.indices, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + if (ti > 0) { + return (x$1 = d.unifier.types, x$2 = ti - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])); + } + return $ifaceNil; + }; + $ptrType(tparamsList).prototype.set = function set(i, typ) { + var {d, i, ti, typ, u, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {i, typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + $r = assert(!($interfaceIsEqual(typ, $ifaceNil))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + u = d.unifier; + /* */ if (false) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (false) { */ case 2: + $r = u.tracef("%s \xE2\x9E\x9E %s", new sliceType$6([(x = d.tparams, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), typ])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + ti = (x$1 = d.indices, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])); + /* */ if (ti < 0) { $s = 6; continue; } + /* */ if ((ti === 0)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (ti < 0) { */ case 6: + (x$2 = u.types, x$3 = -ti - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3] = typ)); + $r = d.setIndex(i, -ti); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 9; continue; + /* } else if ((ti === 0)) { */ case 7: + u.types = $append(u.types, typ); + (x$4 = d.indices, ((i < 0 || i >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + i] = u.types.$length)); + $s = 9; continue; + /* } else { */ case 8: + $panic(new $String("type already set")); + /* } */ case 9: + case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: set, $c: true, $r, d, i, ti, typ, u, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + $ptrType(tparamsList).prototype.unknowns = function unknowns() { + var _i, _ref, d, n, ti; + d = this; + n = 0; + _ref = d.indices; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + ti = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (ti <= 0) { + n = n + (1) >> 0; + } + _i++; + } + return n; + }; + $ptrType(tparamsList).prototype.types = function types() { + var _i, _ref, d, i, index$1, list, t; + list = sliceType$2.nil; + index$1 = 0; + d = this; + list = $makeSlice(sliceType$2, d.tparams.$length); + index$1 = -1; + _ref = d.tparams; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + t = d.at(i); + ((i < 0 || i >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + i] = t); + if (index$1 < 0 && $interfaceIsEqual(t, $ifaceNil)) { + index$1 = i; + } + _i++; + } + return [list, index$1]; + }; + $ptrType(unifier).prototype.nifyEq = function nifyEq(x, y, p) { + var {$24r, _r$1, _v, p, u, x, y, $s, $r, $c} = $restore(this, {x, y, p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + u = this; + if ($interfaceIsEqual(x, y)) { _v = true; $s = 1; continue s; } + _r$1 = u.nify(x, y, p); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 1: + $24r = _v; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: nifyEq, $c: true, $r, $24r, _r$1, _v, p, u, x, y, $s};return $f; + }; + $ptrType(unifier).prototype.nify = function nify(x, y, p) { + var {$24r, $24r$1, $24r$10, $24r$11, $24r$12, $24r$13, $24r$14, $24r$15, $24r$16, $24r$17, $24r$18, $24r$19, $24r$2, $24r$20, $24r$21, $24r$22, $24r$23, $24r$24, $24r$25, $24r$26, $24r$27, $24r$28, $24r$29, $24r$3, $24r$30, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, $24r$9, _arg, _arg$1, _arg$2, _i, _i$1, _i$2, _i$3, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, a, b, cx, cy, f, f$1, g, g$1, i, i$1, i$2, i$3, i$4, j, nx, ny, ok, ok$1, ok$10, ok$2, ok$3, ok$4, ok$5, ok$6, ok$7, ok$8, ok$9, p, q, result, tx, ty, u, v, w, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xargs, xset, y, y$1, y$10, y$11, y$2, y$3, y$4, y$5, y$6, y$7, y$8, y$9, yargs, yset, $s, $deferred, $r, $c} = $restore(this, {x, y, p}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + result = [result]; + u = [u]; + x = [x]; + y = [y]; + result[0] = false; + u[0] = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = u[0].tracef("%s \xE2\x89\xA1 %s", new sliceType$6([x[0], y[0]])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + /* */ if (u[0].depth >= 50) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (u[0].depth >= 50) { */ case 4: + /* */ if (false) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (false) { */ case 6: + $r = u[0].tracef("depth %d >= %d", new sliceType$6([new $Int(u[0].depth), new $Int(50)])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + if (true) { + $panic(new $String("unification reached recursion depth limit")); + } + result[0] = false; + $s = -1; return result[0]; + /* } */ case 5: + u[0].depth = u[0].depth + (1) >> 0; + $deferred.push([(function(result, u, x, y) { return function unifier·nify·func1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + u[0].depth = u[0].depth - (1) >> 0; + /* */ if (false && !result[0]) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false && !result[0]) { */ case 1: + $r = u[0].tracef("%s \xE2\x89\xA2 %s", new sliceType$6([x[0], y[0]])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: unifier·nify·func1, $c: true, $r, $s};return $f; + }; })(result, u, x, y), []]); + /* */ if (!u[0].exact) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!u[0].exact) { */ case 9: + _tuple = $assertType(x[0], ptrType$9, true); + nx = _tuple[0]; + /* */ if (!(nx === ptrType$9.nil) && !hasName(y[0])) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!(nx === ptrType$9.nil) && !hasName(y[0])) { */ case 11: + /* */ if (false) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (false) { */ case 14: + $r = u[0].tracef("under %s \xE2\x89\xA1 %s", new sliceType$6([nx, y[0]])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 15: + _r$1 = nx.under(); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = u[0].nify(_r$1, y[0], p); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + result[0] = _r$2; + $24r = result[0]; + $s = 19; case 19: return $24r; + /* } else { */ case 12: + _tuple$1 = $assertType(y[0], ptrType$9, true); + ny = _tuple$1[0]; + /* */ if (!(ny === ptrType$9.nil) && !hasName(x[0])) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (!(ny === ptrType$9.nil) && !hasName(x[0])) { */ case 20: + /* */ if (false) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (false) { */ case 22: + $r = u[0].tracef("%s \xE2\x89\xA1 under %s", new sliceType$6([x[0], ny])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 23: + _arg = x[0]; + _r$3 = ny.under(); /* */ $s = 25; case 25: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$1 = _r$3; + _arg$2 = p; + _r$4 = u[0].nify(_arg, _arg$1, _arg$2); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + result[0] = _r$4; + $24r$1 = result[0]; + $s = 27; case 27: return $24r$1; + /* } */ case 21: + /* } */ case 13: + /* } */ case 10: + _tmp = u[0].x.index(x[0]); + _tmp$1 = u[0].y.index(y[0]); + i = _tmp; + j = _tmp$1; + /* */ if (i >= 0 && j >= 0) { $s = 29; continue; } + /* */ if (i >= 0) { $s = 30; continue; } + /* */ if (j >= 0) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (i >= 0 && j >= 0) { */ case 29: + _r$5 = u[0].join(i, j); /* */ $s = 35; case 35: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (_r$5) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (_r$5) { */ case 33: + result[0] = true; + $24r$2 = result[0]; + $s = 36; case 36: return $24r$2; + /* } */ case 34: + _r$6 = u[0].nifyEq(u[0].x.at(i), u[0].y.at(j), p); /* */ $s = 37; case 37: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + result[0] = _r$6; + $24r$3 = result[0]; + $s = 38; case 38: return $24r$3; + /* } else if (i >= 0) { */ case 30: + tx = u[0].x.at(i); + /* */ if (!($interfaceIsEqual(tx, $ifaceNil))) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (!($interfaceIsEqual(tx, $ifaceNil))) { */ case 39: + _r$7 = u[0].nifyEq(tx, y[0], p); /* */ $s = 41; case 41: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + result[0] = _r$7; + $24r$4 = result[0]; + $s = 42; case 42: return $24r$4; + /* } */ case 40: + $r = u[0].x.set(i, y[0]); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + result[0] = true; + $24r$5 = result[0]; + $s = 44; case 44: return $24r$5; + /* } else if (j >= 0) { */ case 31: + ty = u[0].y.at(j); + /* */ if (!($interfaceIsEqual(ty, $ifaceNil))) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if (!($interfaceIsEqual(ty, $ifaceNil))) { */ case 45: + _r$8 = u[0].nifyEq(x[0], ty, p); /* */ $s = 47; case 47: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + result[0] = _r$8; + $24r$6 = result[0]; + $s = 48; case 48: return $24r$6; + /* } */ case 46: + $r = u[0].y.set(j, x[0]); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + result[0] = true; + $24r$7 = result[0]; + $s = 50; case 50: return $24r$7; + /* } */ case 32: + case 28: + /* */ if (true && !u[0].exact) { $s = 51; continue; } + /* */ $s = 52; continue; + /* if (true && !u[0].exact) { */ case 51: + /* */ if (isTypeParam(x[0]) && !hasName(y[0])) { $s = 53; continue; } + /* */ if (isTypeParam(y[0]) && !hasName(x[0])) { $s = 54; continue; } + /* */ $s = 55; continue; + /* if (isTypeParam(x[0]) && !hasName(y[0])) { */ case 53: + _r$9 = coreType(x[0]); /* */ $s = 56; case 56: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + cx = _r$9; + /* */ if (!($interfaceIsEqual(cx, $ifaceNil))) { $s = 57; continue; } + /* */ $s = 58; continue; + /* if (!($interfaceIsEqual(cx, $ifaceNil))) { */ case 57: + /* */ if (false) { $s = 59; continue; } + /* */ $s = 60; continue; + /* if (false) { */ case 59: + $r = u[0].tracef("core %s \xE2\x89\xA1 %s", new sliceType$6([x[0], y[0]])); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 60: + _r$10 = u[0].nify(cx, y[0], p); /* */ $s = 62; case 62: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + result[0] = _r$10; + $24r$8 = result[0]; + $s = 63; case 63: return $24r$8; + /* } */ case 58: + $s = 55; continue; + /* } else if (isTypeParam(y[0]) && !hasName(x[0])) { */ case 54: + _r$11 = coreType(y[0]); /* */ $s = 64; case 64: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + cy = _r$11; + /* */ if (!($interfaceIsEqual(cy, $ifaceNil))) { $s = 65; continue; } + /* */ $s = 66; continue; + /* if (!($interfaceIsEqual(cy, $ifaceNil))) { */ case 65: + /* */ if (false) { $s = 67; continue; } + /* */ $s = 68; continue; + /* if (false) { */ case 67: + $r = u[0].tracef("%s \xE2\x89\xA1 core %s", new sliceType$6([x[0], y[0]])); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 68: + _r$12 = u[0].nify(x[0], cy, p); /* */ $s = 70; case 70: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + result[0] = _r$12; + $24r$9 = result[0]; + $s = 71; case 71: return $24r$9; + /* } */ case 66: + /* } */ case 55: + /* } */ case 52: + _ref = x[0]; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 72; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 73; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 74; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 75; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 76; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 77; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 78; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 79; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 80; continue; } + /* */ if ($assertType(_ref, ptrType$29, true)[1]) { $s = 81; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 82; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 83; continue; } + /* */ if (_ref === $ifaceNil) { $s = 84; continue; } + /* */ $s = 85; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 72: + x$1 = _ref.$val; + _tuple$2 = $assertType(y[0], ptrType$8, true); + y$1 = _tuple$2[0]; + ok = _tuple$2[1]; + /* */ if (ok) { $s = 87; continue; } + /* */ $s = 88; continue; + /* if (ok) { */ case 87: + result[0] = x$1.kind === y$1.kind; + $24r$10 = result[0]; + $s = 89; case 89: return $24r$10; + /* } */ case 88: + $s = 86; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 73: + x$2 = _ref.$val; + _tuple$3 = $assertType(y[0], ptrType$10, true); + y$2 = _tuple$3[0]; + ok$1 = _tuple$3[1]; + /* */ if (ok$1) { $s = 90; continue; } + /* */ $s = 91; continue; + /* if (ok$1) { */ case 90: + if (!((x$15 = x$2.len, (x$15.$high < 0 || (x$15.$high === 0 && x$15.$low < 0))) || (x$16 = y$2.len, (x$16.$high < 0 || (x$16.$high === 0 && x$16.$low < 0))) || (x$17 = x$2.len, x$18 = y$2.len, (x$17.$high === x$18.$high && x$17.$low === x$18.$low)))) { _v = false; $s = 92; continue s; } + _r$13 = u[0].nify(x$2.elem, y$2.elem, p); /* */ $s = 93; case 93: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _v = _r$13; case 92: + result[0] = _v; + $24r$11 = result[0]; + $s = 94; case 94: return $24r$11; + /* } */ case 91: + $s = 86; continue; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 74: + x$3 = _ref.$val; + _tuple$4 = $assertType(y[0], ptrType$25, true); + y$3 = _tuple$4[0]; + ok$2 = _tuple$4[1]; + /* */ if (ok$2) { $s = 95; continue; } + /* */ $s = 96; continue; + /* if (ok$2) { */ case 95: + _r$14 = u[0].nify(x$3.elem, y$3.elem, p); /* */ $s = 97; case 97: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + result[0] = _r$14; + $24r$12 = result[0]; + $s = 98; case 98: return $24r$12; + /* } */ case 96: + $s = 86; continue; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 75: + x$4 = _ref.$val; + _tuple$5 = $assertType(y[0], ptrType$11, true); + y$4 = _tuple$5[0]; + ok$3 = _tuple$5[1]; + /* */ if (ok$3) { $s = 99; continue; } + /* */ $s = 100; continue; + /* if (ok$3) { */ case 99: + /* */ if (x$4.NumFields() === y$4.NumFields()) { $s = 101; continue; } + /* */ $s = 102; continue; + /* if (x$4.NumFields() === y$4.NumFields()) { */ case 101: + _ref$1 = x$4.fields; + _i = 0; + /* while (true) { */ case 103: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 104; continue; } + i$1 = _i; + f = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + g = (x$19 = y$4.fields, ((i$1 < 0 || i$1 >= x$19.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$19.$array[x$19.$offset + i$1])); + if (!(f.embedded === g.embedded) || !(x$4.Tag(i$1) === y$4.Tag(i$1)) || !f.object.sameId(g.object.pkg, g.object.name)) { _v$1 = true; $s = 107; continue s; } + _r$15 = u[0].nify(f.object.typ, g.object.typ, p); /* */ $s = 108; case 108: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _v$1 = !_r$15; case 107: + /* */ if (_v$1) { $s = 105; continue; } + /* */ $s = 106; continue; + /* if (_v$1) { */ case 105: + result[0] = false; + $24r$13 = result[0]; + $s = 109; case 109: return $24r$13; + /* } */ case 106: + _i++; + $s = 103; continue; + case 104: + result[0] = true; + $24r$14 = result[0]; + $s = 110; case 110: return $24r$14; + /* } */ case 102: + /* } */ case 100: + $s = 86; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 76: + x$5 = _ref.$val; + _tuple$6 = $assertType(y[0], ptrType$26, true); + y$5 = _tuple$6[0]; + ok$4 = _tuple$6[1]; + /* */ if (ok$4) { $s = 111; continue; } + /* */ $s = 112; continue; + /* if (ok$4) { */ case 111: + _r$16 = u[0].nify(x$5.base, y$5.base, p); /* */ $s = 113; case 113: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + result[0] = _r$16; + $24r$15 = result[0]; + $s = 114; case 114: return $24r$15; + /* } */ case 112: + $s = 86; continue; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 77: + x$6 = _ref.$val; + _tuple$7 = $assertType(y[0], ptrType$15, true); + y$6 = _tuple$7[0]; + ok$5 = _tuple$7[1]; + /* */ if (ok$5) { $s = 115; continue; } + /* */ $s = 116; continue; + /* if (ok$5) { */ case 115: + /* */ if (x$6.Len() === y$6.Len()) { $s = 117; continue; } + /* */ $s = 118; continue; + /* if (x$6.Len() === y$6.Len()) { */ case 117: + /* */ if (!(x$6 === ptrType$15.nil)) { $s = 119; continue; } + /* */ $s = 120; continue; + /* if (!(x$6 === ptrType$15.nil)) { */ case 119: + _ref$2 = x$6.vars; + _i$1 = 0; + /* while (true) { */ case 121: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 122; continue; } + i$2 = _i$1; + v = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + w = (x$20 = y$6.vars, ((i$2 < 0 || i$2 >= x$20.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$20.$array[x$20.$offset + i$2])); + _r$17 = u[0].nify(v.object.typ, w.object.typ, p); /* */ $s = 125; case 125: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + /* */ if (!_r$17) { $s = 123; continue; } + /* */ $s = 124; continue; + /* if (!_r$17) { */ case 123: + result[0] = false; + $24r$16 = result[0]; + $s = 126; case 126: return $24r$16; + /* } */ case 124: + _i$1++; + $s = 121; continue; + case 122: + /* } */ case 120: + result[0] = true; + $24r$17 = result[0]; + $s = 127; case 127: return $24r$17; + /* } */ case 118: + /* } */ case 116: + $s = 86; continue; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 78: + x$7 = _ref.$val; + _tuple$8 = $assertType(y[0], ptrType$27, true); + y$7 = _tuple$8[0]; + ok$6 = _tuple$8[1]; + /* */ if (ok$6) { $s = 128; continue; } + /* */ $s = 129; continue; + /* if (ok$6) { */ case 128: + if (!(x$7.variadic === y$7.variadic)) { _v$3 = false; $s = 131; continue s; } + _r$18 = u[0].nify(x$7.params, y$7.params, p); /* */ $s = 132; case 132: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _v$3 = _r$18; case 131: + if (!(_v$3)) { _v$2 = false; $s = 130; continue s; } + _r$19 = u[0].nify(x$7.results, y$7.results, p); /* */ $s = 133; case 133: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _v$2 = _r$19; case 130: + result[0] = _v$2; + $24r$18 = result[0]; + $s = 134; case 134: return $24r$18; + /* } */ case 129: + $s = 86; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 79: + x$8 = _ref.$val; + _tuple$9 = $assertType(y[0], ptrType$13, true); + y$8 = _tuple$9[0]; + ok$7 = _tuple$9[1]; + /* */ if (ok$7) { $s = 135; continue; } + /* */ $s = 136; continue; + /* if (ok$7) { */ case 135: + _r$20 = x$8.typeSet(); /* */ $s = 137; case 137: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + xset = _r$20; + _r$21 = y$8.typeSet(); /* */ $s = 138; case 138: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + yset = _r$21; + /* */ if (!(xset.comparable === yset.comparable)) { $s = 139; continue; } + /* */ $s = 140; continue; + /* if (!(xset.comparable === yset.comparable)) { */ case 139: + result[0] = false; + $24r$19 = result[0]; + $s = 141; case 141: return $24r$19; + /* } */ case 140: + _r$22 = xset.terms.equal(yset.terms); /* */ $s = 144; case 144: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* */ if (!_r$22) { $s = 142; continue; } + /* */ $s = 143; continue; + /* if (!_r$22) { */ case 142: + result[0] = false; + $24r$20 = result[0]; + $s = 145; case 145: return $24r$20; + /* } */ case 143: + a = xset.methods; + b = yset.methods; + /* */ if (a.$length === b.$length) { $s = 146; continue; } + /* */ $s = 147; continue; + /* if (a.$length === b.$length) { */ case 146: + q = new ifacePair.ptr(x$8, y$8, p); + /* while (true) { */ case 148: + /* if (!(!(p === ptrType$23.nil))) { break; } */ if(!(!(p === ptrType$23.nil))) { $s = 149; continue; } + /* */ if (p.identical(q)) { $s = 150; continue; } + /* */ $s = 151; continue; + /* if (p.identical(q)) { */ case 150: + result[0] = true; + $24r$21 = result[0]; + $s = 152; case 152: return $24r$21; + /* } */ case 151: + p = p.prev; + $s = 148; continue; + case 149: + /* */ if (false) { $s = 153; continue; } + /* */ $s = 154; continue; + /* if (false) { */ case 153: + $r = assertSortedMethods(a); /* */ $s = 155; case 155: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assertSortedMethods(b); /* */ $s = 156; case 156: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 154: + _ref$3 = a; + _i$2 = 0; + /* while (true) { */ case 157: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 158; continue; } + i$3 = _i$2; + f$1 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + g$1 = ((i$3 < 0 || i$3 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i$3]); + if (!(f$1.object.Id() === g$1.object.Id())) { _v$4 = true; $s = 161; continue s; } + _r$23 = u[0].nify(f$1.object.typ, g$1.object.typ, q); /* */ $s = 162; case 162: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _v$4 = !_r$23; case 161: + /* */ if (_v$4) { $s = 159; continue; } + /* */ $s = 160; continue; + /* if (_v$4) { */ case 159: + result[0] = false; + $24r$22 = result[0]; + $s = 163; case 163: return $24r$22; + /* } */ case 160: + _i$2++; + $s = 157; continue; + case 158: + result[0] = true; + $24r$23 = result[0]; + $s = 164; case 164: return $24r$23; + /* } */ case 147: + /* } */ case 136: + $s = 86; continue; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 80: + x$9 = _ref.$val; + _tuple$10 = $assertType(y[0], ptrType$28, true); + y$9 = _tuple$10[0]; + ok$8 = _tuple$10[1]; + /* */ if (ok$8) { $s = 165; continue; } + /* */ $s = 166; continue; + /* if (ok$8) { */ case 165: + _r$24 = u[0].nify(x$9.key, y$9.key, p); /* */ $s = 168; case 168: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + if (!(_r$24)) { _v$5 = false; $s = 167; continue s; } + _r$25 = u[0].nify(x$9.elem, y$9.elem, p); /* */ $s = 169; case 169: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _v$5 = _r$25; case 167: + result[0] = _v$5; + $24r$24 = result[0]; + $s = 170; case 170: return $24r$24; + /* } */ case 166: + $s = 86; continue; + /* } else if ($assertType(_ref, ptrType$29, true)[1]) { */ case 81: + x$10 = _ref.$val; + _tuple$11 = $assertType(y[0], ptrType$29, true); + y$10 = _tuple$11[0]; + ok$9 = _tuple$11[1]; + /* */ if (ok$9) { $s = 171; continue; } + /* */ $s = 172; continue; + /* if (ok$9) { */ case 171: + if (!(!u[0].exact || (x$10.dir === y$10.dir))) { _v$6 = false; $s = 173; continue s; } + _r$26 = u[0].nify(x$10.elem, y$10.elem, p); /* */ $s = 174; case 174: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _v$6 = _r$26; case 173: + result[0] = _v$6; + $24r$25 = result[0]; + $s = 175; case 175: return $24r$25; + /* } */ case 172: + $s = 86; continue; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 82: + x$11 = _ref.$val; + _tuple$12 = $assertType(y[0], ptrType$9, true); + y$11 = _tuple$12[0]; + ok$10 = _tuple$12[1]; + /* */ if (ok$10) { $s = 176; continue; } + /* */ $s = 177; continue; + /* if (ok$10) { */ case 176: + xargs = x$11.TypeArgs().list(); + yargs = y$11.TypeArgs().list(); + /* */ if (!((xargs.$length === yargs.$length))) { $s = 178; continue; } + /* */ $s = 179; continue; + /* if (!((xargs.$length === yargs.$length))) { */ case 178: + result[0] = false; + $24r$26 = result[0]; + $s = 180; case 180: return $24r$26; + /* } */ case 179: + /* */ if (x$11.obj.object.pkg === y$11.obj.object.pkg && x$11.obj.object.name === y$11.obj.object.name) { $s = 181; continue; } + /* */ $s = 182; continue; + /* if (x$11.obj.object.pkg === y$11.obj.object.pkg && x$11.obj.object.name === y$11.obj.object.name) { */ case 181: + _ref$4 = xargs; + _i$3 = 0; + /* while (true) { */ case 183: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 184; continue; } + i$4 = _i$3; + x$21 = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); + _r$27 = u[0].nify(x$21, ((i$4 < 0 || i$4 >= yargs.$length) ? ($throwRuntimeError("index out of range"), undefined) : yargs.$array[yargs.$offset + i$4]), p); /* */ $s = 187; case 187: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + /* */ if (!_r$27) { $s = 185; continue; } + /* */ $s = 186; continue; + /* if (!_r$27) { */ case 185: + result[0] = false; + $24r$27 = result[0]; + $s = 188; case 188: return $24r$27; + /* } */ case 186: + _i$3++; + $s = 183; continue; + case 184: + result[0] = true; + $24r$28 = result[0]; + $s = 189; case 189: return $24r$28; + /* } */ case 182: + /* } */ case 177: + $s = 86; continue; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 83: + x$12 = _ref.$val; + result[0] = $interfaceIsEqual(x$12, y[0]); + $24r$29 = result[0]; + $s = 190; case 190: return $24r$29; + /* } else if (_ref === $ifaceNil) { */ case 84: + x$13 = _ref; + $s = 86; continue; + /* } else { */ case 85: + x$14 = _ref; + _r$28 = sprintf(ptrType$24.nil, $throwNilPointerError, true, "u.nify(%s, %s), u.x.tparams = %s", new sliceType$6([x$14, y[0], u[0].x.tparams])); /* */ $s = 191; case 191: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + $panic(new $String(_r$28)); + /* } */ case 86: + result[0] = false; + $24r$30 = result[0]; + $s = 192; case 192: return $24r$30; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return result[0]; } if($curGoroutine.asleep) { var $f = {$blk: nify, $c: true, $r, $24r, $24r$1, $24r$10, $24r$11, $24r$12, $24r$13, $24r$14, $24r$15, $24r$16, $24r$17, $24r$18, $24r$19, $24r$2, $24r$20, $24r$21, $24r$22, $24r$23, $24r$24, $24r$25, $24r$26, $24r$27, $24r$28, $24r$29, $24r$3, $24r$30, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, $24r$9, _arg, _arg$1, _arg$2, _i, _i$1, _i$2, _i$3, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, a, b, cx, cy, f, f$1, g, g$1, i, i$1, i$2, i$3, i$4, j, nx, ny, ok, ok$1, ok$10, ok$2, ok$3, ok$4, ok$5, ok$6, ok$7, ok$8, ok$9, p, q, result, tx, ty, u, v, w, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xargs, xset, y, y$1, y$10, y$11, y$2, y$3, y$4, y$5, y$6, y$7, y$8, y$9, yargs, yset, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.ident = function ident(x, e, def$2, wantType) { + var {_1, _entry, _entry$1, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, _tuple$1, check, def$2, e, gotType, obj, obj$1, obj$2, obj$3, obj$4, obj$5, obj$6, obj$7, obj$8, pkgName, scope, tpar, typ, wantType, x, $s, $r, $c} = $restore(this, {x, e, def$2, wantType}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + x.mode = 0; + x.expr = e; + _r$1 = check.environment.scope.LookupParent(e.Name, check.environment.pos); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + scope = _tuple[0]; + obj = _tuple[1]; + _1 = obj; + /* */ if ($interfaceIsEqual(_1, $ifaceNil)) { $s = 3; continue; } + /* */ if ($interfaceIsEqual(_1, (universeAny)) || $interfaceIsEqual(_1, (universeComparable))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($interfaceIsEqual(_1, $ifaceNil)) { */ case 3: + /* */ if (e.Name === "_") { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (e.Name === "_") { */ case 6: + tpar = (_entry = $mapIndex(check.recvTParamMap,ptrType$30.keyFor(e)), _entry !== undefined ? _entry.v : ptrType$14.nil); + /* */ if (!(tpar === ptrType$14.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(tpar === ptrType$14.nil)) { */ case 9: + x.mode = 3; + x.typ = tpar; + $s = 11; continue; + /* } else { */ case 10: + $r = check.error(e, 35, "cannot use _ as value or type"); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + $s = 8; continue; + /* } else { */ case 7: + $r = check.errorf(e, 75, "undefined: %s", new sliceType$6([new $String(e.Name)])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + $s = -1; return; + /* } else if ($interfaceIsEqual(_1, (universeAny)) || $interfaceIsEqual(_1, (universeComparable))) { */ case 4: + /* */ if (!check.allowVersion(check.pkg, 1, 18)) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!check.allowVersion(check.pkg, 1, 18)) { */ case 14: + $r = check.versionErrorf(e, "go1.18", "predeclared %s", new sliceType$6([new $String(e.Name)])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 15: + /* } */ case 5: + case 2: + $r = check.recordUse(e, obj); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = obj.Type(); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + typ = _r$2; + _tuple$1 = $assertType(obj, ptrType$17, true); + gotType = _tuple$1[1]; + /* */ if ($interfaceIsEqual(typ, $ifaceNil) || gotType && wantType) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if ($interfaceIsEqual(typ, $ifaceNil) || gotType && wantType) { */ case 19: + $r = check.objDecl(obj, def$2); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = obj.Type(); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + typ = _r$3; + /* } */ case 20: + $r = assert(!($interfaceIsEqual(typ, $ifaceNil))); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$4 = obj.Name(); /* */ $s = 24; case 24: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + pkgName = (_entry$1 = $mapIndex(check.dotImportMap,dotImportKey.keyFor(new dotImportKey.ptr(scope, _r$4))), _entry$1 !== undefined ? _entry$1.v : ptrType$31.nil); + if (!(pkgName === ptrType$31.nil)) { + pkgName.used = true; + } + _ref = obj; + /* */ if ($assertType(_ref, ptrType$31, true)[1]) { $s = 25; continue; } + /* */ if ($assertType(_ref, ptrType$32, true)[1]) { $s = 26; continue; } + /* */ if ($assertType(_ref, ptrType$17, true)[1]) { $s = 27; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 28; continue; } + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 29; continue; } + /* */ if ($assertType(_ref, ptrType$18, true)[1]) { $s = 30; continue; } + /* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if ($assertType(_ref, ptrType$31, true)[1]) { */ case 25: + obj$1 = _ref.$val; + $r = check.errorf(e, 4, "use of package %s not in selector", new sliceType$6([new $String(obj$1.object.name)])); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } else if ($assertType(_ref, ptrType$32, true)[1]) { */ case 26: + obj$2 = _ref.$val; + check.addDeclDep(obj$2); + if ($interfaceIsEqual(typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + $s = -1; return; + } + /* */ if ($interfaceIsEqual(obj$2, universeIota)) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if ($interfaceIsEqual(obj$2, universeIota)) { */ case 35: + /* */ if ($interfaceIsEqual(check.environment.iota, $ifaceNil)) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if ($interfaceIsEqual(check.environment.iota, $ifaceNil)) { */ case 38: + $r = check.error(e, 36, "cannot use iota outside constant declaration"); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 39: + x.val = check.environment.iota; + $s = 37; continue; + /* } else { */ case 36: + x.val = obj$2.val; + /* } */ case 37: + $r = assert(!($interfaceIsEqual(x.val, $ifaceNil))); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 4; + $s = 33; continue; + /* } else if ($assertType(_ref, ptrType$17, true)[1]) { */ case 27: + obj$3 = _ref.$val; + /* */ if (check.isBrokenAlias(obj$3)) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (check.isBrokenAlias(obj$3)) { */ case 42: + $r = check.errorf(e, 11, "invalid use of type alias %s in recursive type (see issue #50729)", new sliceType$6([new $String(obj$3.object.name)])); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 43: + x.mode = 3; + $s = 33; continue; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 28: + obj$4 = _ref.$val; + if (obj$4.object.pkg === check.pkg) { + obj$4.used = true; + } + check.addDeclDep(obj$4); + if ($interfaceIsEqual(typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + $s = -1; return; + } + x.mode = 5; + $s = 33; continue; + /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 29: + obj$5 = _ref.$val; + check.addDeclDep(obj$5); + x.mode = 7; + $s = 33; continue; + /* } else if ($assertType(_ref, ptrType$18, true)[1]) { */ case 30: + obj$6 = _ref.$val; + x.id = obj$6.id; + x.mode = 2; + $s = 33; continue; + /* } else if ($assertType(_ref, ptrType$33, true)[1]) { */ case 31: + obj$7 = _ref.$val; + x.mode = 7; + $s = 33; continue; + /* } else { */ case 32: + obj$8 = _ref; + unreachable(); + /* } */ case 33: + x.typ = typ; + $s = -1; return; + /* */ } return; } var $f = {$blk: ident, $c: true, $r, _1, _entry, _entry$1, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, _tuple$1, check, def$2, e, gotType, obj, obj$1, obj$2, obj$3, obj$4, obj$5, obj$6, obj$7, obj$8, pkgName, scope, tpar, typ, wantType, x, $s};return $f; + }; + $ptrType(Checker).prototype.typ = function typ(e) { + var {$24r, _r$1, check, e, $s, $r, $c} = $restore(this, {e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.definedType(e, ptrType$9.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: typ, $c: true, $r, $24r, _r$1, check, e, $s};return $f; + }; + $ptrType(Checker).prototype.varType = function varType(e) { + var {_r$1, check, e, typ$1, $s, $r, $c} = $restore(this, {e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.definedType(e, ptrType$9.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ$1 = _r$1; + check.validVarType(e, typ$1); + $s = -1; return typ$1; + /* */ } return; } var $f = {$blk: varType, $c: true, $r, _r$1, check, e, typ$1, $s};return $f; + }; + $ptrType(Checker).prototype.validVarType = function validVarType(e, typ$1) { + var check, e, typ$1; + check = this; + if (isTypeParam(typ$1)) { + return; + } + check.later((function Checker·validVarType·func1() { + var {_arg, _arg$1, _arg$2, _r$1, _r$2, _r$3, _tuple, t, tset, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = under(typ$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$13, true); + t = _tuple[0]; + /* */ if (!(t === ptrType$13.nil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(t === ptrType$13.nil)) { */ case 2: + _arg = check; + _r$2 = e.Pos(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = _r$2; + _arg$2 = t; + _r$3 = computeInterfaceTypeSet(_arg, _arg$1, _arg$2); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + tset = _r$3; + /* */ if (!tset.IsMethodSet()) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!tset.IsMethodSet()) { */ case 6: + /* */ if (tset.comparable) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (tset.comparable) { */ case 8: + $r = check.softErrorf(e, 142, "cannot use type %s outside a type constraint: interface is (or embeds) comparable", new sliceType$6([typ$1])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 10; continue; + /* } else { */ case 9: + $r = check.softErrorf(e, 142, "cannot use type %s outside a type constraint: interface contains type constraints", new sliceType$6([typ$1])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + /* } */ case 7: + /* } */ case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·validVarType·func1, $c: true, $r, _arg, _arg$1, _arg$2, _r$1, _r$2, _r$3, _tuple, t, tset, $s};return $f; + })).describef(e, "check var type %s", new sliceType$6([typ$1])); + }; + $ptrType(Checker).prototype.definedType = function definedType(e, def$2) { + var {_r$1, _r$2, check, def$2, e, typ$1, $s, $r, $c} = $restore(this, {e, def$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.typInternal(e, def$2); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ$1 = _r$1; + $r = assert(isTyped(typ$1)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = isGeneric(typ$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$2) { */ case 3: + $r = check.errorf(e, 137, "cannot use generic type %s without instantiation", new sliceType$6([typ$1])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + typ$1 = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 4: + $r = check.recordTypeAndValue(e, 3, typ$1, $ifaceNil); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return typ$1; + /* */ } return; } var $f = {$blk: definedType, $c: true, $r, _r$1, _r$2, check, def$2, e, typ$1, $s};return $f; + }; + $ptrType(Checker).prototype.genericType = function genericType(e, cause) { + var {_r$1, _r$2, _r$3, _v, cause, check, e, typ$1, $s, $r, $c} = $restore(this, {e, cause}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.typInternal(e, ptrType$9.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ$1 = _r$1; + $r = assert(isTyped(typ$1)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!(!($interfaceIsEqual(typ$1, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))))) { _v = false; $s = 5; continue s; } + _r$2 = isGeneric(typ$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = !_r$2; case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + /* */ if (!(cause === ptrType$34.nil)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(cause === ptrType$34.nil)) { */ case 7: + _r$3 = check.sprintf("%s is not a generic type", new sliceType$6([typ$1])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + cause.$set(_r$3); + /* } */ case 8: + typ$1 = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 4: + $r = check.recordTypeAndValue(e, 3, typ$1, $ifaceNil); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return typ$1; + /* */ } return; } var $f = {$blk: genericType, $c: true, $r, _r$1, _r$2, _r$3, _v, cause, check, e, typ$1, $s};return $f; + }; + goTypeName = function goTypeName$1(typ$1) { + var {$24r, _r$1, _r$2, typ$1, $s, $r, $c} = $restore(this, {typ$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = fmt.Sprintf("%T", new sliceType$6([typ$1])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = strings.ReplaceAll(_r$1, "types.", ""); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: goTypeName$1, $c: true, $r, $24r, _r$1, _r$2, typ$1, $s};return $f; + }; + $ptrType(Checker).prototype.typInternal = function typInternal(e0, def$2) { + var {$24r, $24r$1, $24r$10, $24r$11, $24r$12, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, $24r$9, T, _1, _2, _3, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, check, def$2, dir$1, e, e$1, e$10, e$11, e$12, e$13, e$2, e$3, e$4, e$5, e$6, e$7, e$8, e$9, e0, ix, ok, typ$1, typ$10, typ$11, typ$2, typ$3, typ$4, typ$5, typ$6, typ$7, typ$8, typ$9, x, x$1, x$2, x$3, $s, $deferred, $r, $c} = $restore(this, {e0, def$2}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + T = [T]; + check = [check]; + e = [e]; + e0 = [e0]; + typ$1 = [typ$1]; + x = [x]; + x$1 = [x$1]; + T[0] = $ifaceNil; + check[0] = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + _r$1 = e0[0].Pos(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = check[0].trace(_r$1, "-- type %s", new sliceType$6([e0[0]])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].indent = check[0].indent + (1) >> 0; + $deferred.push([(function(T, check, e, e0, typ$1, x, x$1) { return function Checker·typInternal·func1() { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _r$2, _r$3, _r$4, _r$5, _r$6, under$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check[0].indent = check[0].indent - (1) >> 0; + under$1 = $ifaceNil; + /* */ if (!($interfaceIsEqual(T[0], $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(T[0], $ifaceNil))) { */ case 1: + _r$2 = safeUnderlying(T[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + under$1 = _r$2; + /* } */ case 2: + /* */ if ($interfaceIsEqual(T[0], under$1)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($interfaceIsEqual(T[0], under$1)) { */ case 4: + _r$3 = e0[0].Pos(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg = _r$3; + _arg$1 = T[0]; + _r$4 = goTypeName(T[0]); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$2 = new $String(_r$4); + $r = check[0].trace(_arg, "=> %s // %s", new sliceType$6([_arg$1, _arg$2])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 6; continue; + /* } else { */ case 5: + _r$5 = e0[0].Pos(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$3 = _r$5; + _arg$4 = T[0]; + _arg$5 = under$1; + _r$6 = goTypeName(T[0]); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg$6 = new $String(_r$6); + $r = check[0].trace(_arg$3, "=> %s (under = %s) // %s", new sliceType$6([_arg$4, _arg$5, _arg$6])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·typInternal·func1, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _r$2, _r$3, _r$4, _r$5, _r$6, under$1, $s};return $f; + }; })(T, check, e, e0, typ$1, x, x$1), []]); + /* } */ case 2: + _ref = e0[0]; + /* */ if ($assertType(_ref, ptrType$35, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$30, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$36, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$37, true)[1] || $assertType(_ref, ptrType$38, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$39, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$40, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$42, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$43, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$44, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$45, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, ptrType$46, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, ptrType$47, true)[1]) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if ($assertType(_ref, ptrType$35, true)[1]) { */ case 5: + e$1 = _ref.$val; + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$30, true)[1]) { */ case 6: + e$2 = _ref.$val; + x[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check[0].ident(x[0], e$2, def$2, true); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _1 = x[0].mode; + /* */ if (_1 === (3)) { $s = 22; continue; } + /* */ if (_1 === (0)) { $s = 23; continue; } + /* */ if (_1 === (1)) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (_1 === (3)) { */ case 22: + typ$2 = x[0].typ; + def$2.setUnderlying(typ$2); + T[0] = typ$2; + $24r = T[0]; + $s = 27; case 27: return $24r; + /* } else if (_1 === (0)) { */ case 23: + $s = 26; continue; + /* } else if (_1 === (1)) { */ case 24: + $r = check[0].errorf(x[0], 25, "%s used as type", new sliceType$6([x[0]])); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 26; continue; + /* } else { */ case 25: + $r = check[0].errorf(x[0], 25, "%s is not a type", new sliceType$6([x[0]])); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 26: + case 21: + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$36, true)[1]) { */ case 7: + e$3 = _ref.$val; + x$1[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check[0].selector(x$1[0], e$3, def$2, true); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _2 = x$1[0].mode; + /* */ if (_2 === (3)) { $s = 32; continue; } + /* */ if (_2 === (0)) { $s = 33; continue; } + /* */ if (_2 === (1)) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (_2 === (3)) { */ case 32: + typ$3 = x$1[0].typ; + def$2.setUnderlying(typ$3); + T[0] = typ$3; + $24r$1 = T[0]; + $s = 37; case 37: return $24r$1; + /* } else if (_2 === (0)) { */ case 33: + $s = 36; continue; + /* } else if (_2 === (1)) { */ case 34: + $r = check[0].errorf(x$1[0], 25, "%s used as type", new sliceType$6([x$1[0]])); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 36; continue; + /* } else { */ case 35: + $r = check[0].errorf(x$1[0], 25, "%s is not a type", new sliceType$6([x$1[0]])); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 36: + case 31: + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$37, true)[1] || $assertType(_ref, ptrType$38, true)[1]) { */ case 8: + e$4 = _ref; + ix = typeparams.UnpackIndexExpr(e$4); + /* */ if (!check[0].allowVersion(check[0].pkg, 1, 18)) { $s = 40; continue; } + /* */ $s = 41; continue; + /* if (!check[0].allowVersion(check[0].pkg, 1, 18)) { */ case 40: + _r$2 = inNode(e$4, ix.IndexListExpr.Lbrack); /* */ $s = 42; case 42: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = check[0].softErrorf((x$2 = _r$2, new x$2.constructor.elem(x$2)), 135, "type instantiation requires go1.18 or later", sliceType$6.nil); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 41: + _r$3 = check[0].instantiatedType(ix, def$2); /* */ $s = 44; case 44: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + T[0] = _r$3; + $24r$2 = T[0]; + $s = 45; case 45: return $24r$2; + /* } else if ($assertType(_ref, ptrType$39, true)[1]) { */ case 9: + e$5 = _ref.$val; + _r$4 = check[0].definedType(e$5.X, def$2); /* */ $s = 46; case 46: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + T[0] = _r$4; + $24r$3 = T[0]; + $s = 47; case 47: return $24r$3; + /* } else if ($assertType(_ref, ptrType$40, true)[1]) { */ case 10: + e$6 = _ref.$val; + /* */ if ($interfaceIsEqual(e$6.Len, $ifaceNil)) { $s = 48; continue; } + /* */ $s = 49; continue; + /* if ($interfaceIsEqual(e$6.Len, $ifaceNil)) { */ case 48: + typ$4 = new Slice.ptr($ifaceNil); + def$2.setUnderlying(typ$4); + _r$5 = check[0].varType(e$6.Elt); /* */ $s = 50; case 50: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + typ$4.elem = _r$5; + T[0] = typ$4; + $24r$4 = T[0]; + $s = 51; case 51: return $24r$4; + /* } */ case 49: + typ$5 = new Array.ptr(new $Int64(0, 0), $ifaceNil); + def$2.setUnderlying(typ$5); + _tuple = $assertType(e$6.Len, ptrType$41, true); + ok = _tuple[1]; + /* */ if (ok) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if (ok) { */ case 52: + $r = check[0].error(e$6.Len, 77, "invalid use of [...] array (outside a composite literal)"); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + typ$5.len = new $Int64(-1, 4294967295); + $s = 54; continue; + /* } else { */ case 53: + _r$6 = check[0].arrayLength(e$6.Len); /* */ $s = 56; case 56: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + typ$5.len = _r$6; + /* } */ case 54: + _r$7 = check[0].varType(e$6.Elt); /* */ $s = 57; case 57: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + typ$5.elem = _r$7; + /* */ if ((x$3 = typ$5.len, (x$3.$high > 0 || (x$3.$high === 0 && x$3.$low >= 0)))) { $s = 58; continue; } + /* */ $s = 59; continue; + /* if ((x$3 = typ$5.len, (x$3.$high > 0 || (x$3.$high === 0 && x$3.$low >= 0)))) { */ case 58: + T[0] = typ$5; + $24r$5 = T[0]; + $s = 60; case 60: return $24r$5; + /* } */ case 59: + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$41, true)[1]) { */ case 11: + e$7 = _ref.$val; + $r = check[0].error(e$7, 81, "invalid use of '...'"); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].use(new sliceType$11([e$7.Elt])); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$42, true)[1]) { */ case 12: + e$8 = _ref.$val; + typ$6 = new Struct.ptr(sliceType$10.nil, sliceType$5.nil); + def$2.setUnderlying(typ$6); + $r = check[0].structType(typ$6, e$8); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + T[0] = typ$6; + $24r$6 = T[0]; + $s = 64; case 64: return $24r$6; + /* } else if ($assertType(_ref, ptrType$43, true)[1]) { */ case 13: + e$9 = _ref.$val; + typ$7 = new Pointer.ptr($ifaceNil); + typ$7.base = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + def$2.setUnderlying(typ$7); + _r$8 = check[0].varType(e$9.X); /* */ $s = 65; case 65: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + typ$7.base = _r$8; + T[0] = typ$7; + $24r$7 = T[0]; + $s = 66; case 66: return $24r$7; + /* } else if ($assertType(_ref, ptrType$44, true)[1]) { */ case 14: + e$10 = _ref.$val; + typ$8 = new Signature.ptr(ptrType$48.nil, ptrType$48.nil, ptrType.nil, ptrType$16.nil, ptrType$15.nil, ptrType$15.nil, false); + def$2.setUnderlying(typ$8); + $r = check[0].funcType(typ$8, ptrType$49.nil, e$10); /* */ $s = 67; case 67: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + T[0] = typ$8; + $24r$8 = T[0]; + $s = 68; case 68: return $24r$8; + /* } else if ($assertType(_ref, ptrType$45, true)[1]) { */ case 15: + e$11 = _ref.$val; + typ$9 = check[0].newInterface(); + def$2.setUnderlying(typ$9); + $r = check[0].interfaceType(typ$9, e$11, def$2); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + T[0] = typ$9; + $24r$9 = T[0]; + $s = 70; case 70: return $24r$9; + /* } else if ($assertType(_ref, ptrType$46, true)[1]) { */ case 16: + e[0] = _ref.$val; + typ$1[0] = new Map.ptr($ifaceNil, $ifaceNil); + def$2.setUnderlying(typ$1[0]); + _r$9 = check[0].varType(e[0].Key); /* */ $s = 71; case 71: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + typ$1[0].key = _r$9; + _r$10 = check[0].varType(e[0].Value); /* */ $s = 72; case 72: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + typ$1[0].elem = _r$10; + check[0].later((function(T, check, e, e0, typ$1, x, x$1) { return function Checker·typInternal·func2() { + var {_r$11, why, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$11 = Comparable(typ$1[0].key); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* */ if (!_r$11) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r$11) { */ case 1: + why = ""; + if (isTypeParam(typ$1[0].key)) { + why = " (missing comparable constraint)"; + } + $r = check[0].errorf(e[0].Key, 28, "invalid map key type %s%s", new sliceType$6([typ$1[0].key, new $String(why)])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·typInternal·func2, $c: true, $r, _r$11, why, $s};return $f; + }; })(T, check, e, e0, typ$1, x, x$1)).describef(e[0].Key, "check map key %s", new sliceType$6([typ$1[0].key])); + T[0] = typ$1[0]; + $24r$10 = T[0]; + $s = 73; case 73: return $24r$10; + /* } else if ($assertType(_ref, ptrType$47, true)[1]) { */ case 17: + e$12 = _ref.$val; + typ$10 = new Chan.ptr(0, $ifaceNil); + def$2.setUnderlying(typ$10); + dir$1 = 0; + _3 = e$12.Dir; + /* */ if (_3 === (3)) { $s = 75; continue; } + /* */ if (_3 === (1)) { $s = 76; continue; } + /* */ if (_3 === (2)) { $s = 77; continue; } + /* */ $s = 78; continue; + /* if (_3 === (3)) { */ case 75: + $s = 79; continue; + /* } else if (_3 === (1)) { */ case 76: + dir$1 = 1; + $s = 79; continue; + /* } else if (_3 === (2)) { */ case 77: + dir$1 = 2; + $s = 79; continue; + /* } else { */ case 78: + $r = check[0].errorf(e$12, -1, "unknown channel direction %d", new sliceType$6([new ast.ChanDir(e$12.Dir)])); /* */ $s = 80; case 80: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 79: + case 74: + typ$10.dir = dir$1; + _r$11 = check[0].varType(e$12.Value); /* */ $s = 81; case 81: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + typ$10.elem = _r$11; + T[0] = typ$10; + $24r$11 = T[0]; + $s = 82; case 82: return $24r$11; + /* } else { */ case 18: + e$13 = _ref; + $r = check[0].errorf(e0[0], 25, "%s is not a type", new sliceType$6([e0[0]])); /* */ $s = 83; case 83: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].use(new sliceType$11([e0[0]])); /* */ $s = 84; case 84: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 19: + typ$11 = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + def$2.setUnderlying(typ$11); + T[0] = typ$11; + $24r$12 = T[0]; + $s = 85; case 85: return $24r$12; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return T[0]; } if($curGoroutine.asleep) { var $f = {$blk: typInternal, $c: true, $r, $24r, $24r$1, $24r$10, $24r$11, $24r$12, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, $24r$9, T, _1, _2, _3, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, check, def$2, dir$1, e, e$1, e$10, e$11, e$12, e$13, e$2, e$3, e$4, e$5, e$6, e$7, e$8, e$9, e0, ix, ok, typ$1, typ$10, typ$11, typ$2, typ$3, typ$4, typ$5, typ$6, typ$7, typ$8, typ$9, x, x$1, x$2, x$3, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.instantiatedType = function instantiatedType(ix, def$2) { + var {$24r, $24r$1, $24r$2, _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, cause, check, def$2, gtyp, inst, ix, orig, res, targs, $s, $deferred, $r, $c} = $restore(this, {ix, def$2}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + cause = [cause]; + check = [check]; + inst = [inst]; + ix = [ix]; + res = [res]; + res[0] = $ifaceNil; + check[0] = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + _r$1 = ix[0].IndexListExpr.Pos(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = check[0].trace(_r$1, "-- instantiating type %s with %s", new sliceType$6([ix[0].IndexListExpr.X, ix[0].IndexListExpr.Indices])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].indent = check[0].indent + (1) >> 0; + $deferred.push([(function(cause, check, inst, ix, res) { return function Checker·instantiatedType·func1() { + var {_r$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check[0].indent = check[0].indent - (1) >> 0; + _r$2 = ix[0].IndexListExpr.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = check[0].trace(_r$2, "=> %s", new sliceType$6([res[0]])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·instantiatedType·func1, $c: true, $r, _r$2, $s};return $f; + }; })(cause, check, inst, ix, res), []]); + /* } */ case 2: + cause[0] = ""; + _r$2 = check[0].genericType(ix[0].IndexListExpr.X, (cause.$ptr || (cause.$ptr = new ptrType$34(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, cause)))); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + gtyp = _r$2; + /* */ if (!(cause[0] === "")) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(cause[0] === "")) { */ case 6: + $r = check[0].errorf(ix[0].Orig, 136, "invalid operation: %s (%s)", new sliceType$6([ix[0].Orig, new $String(cause[0])])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + /* */ if ($interfaceIsEqual(gtyp, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ($interfaceIsEqual(gtyp, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { */ case 9: + res[0] = gtyp; + $24r = res[0]; + $s = 11; case 11: return $24r; + /* } */ case 10: + _tuple = $assertType(gtyp, ptrType$9, true); + orig = _tuple[0]; + /* */ if (orig === ptrType$9.nil) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (orig === ptrType$9.nil) { */ case 12: + _r$3 = ix[0].IndexListExpr.Pos(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg = new token.Pos(_r$3); + _arg$1 = gtyp; + _r$4 = fmt.Sprintf("%v: cannot instantiate %v", new sliceType$6([_arg, _arg$1])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $panic(new $String(_r$4)); + /* } */ case 13: + _r$5 = check[0].typeList(ix[0].IndexListExpr.Indices); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + targs = _r$5; + /* */ if (targs === sliceType$2.nil) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (targs === sliceType$2.nil) { */ case 17: + def$2.setUnderlying((0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])); + res[0] = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + $24r$1 = res[0]; + $s = 19; case 19: return $24r$1; + /* } */ case 18: + _r$6 = ix[0].IndexListExpr.Pos(); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = check[0].instance(_r$6, orig, targs, ptrType$9.nil, check[0].context()); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + inst[0] = $assertType(_r$7, ptrType$9); + def$2.setUnderlying(inst[0]); + check[0].later((function(cause, check, inst, ix, res) { return function Checker·instantiatedType·func2() { + var {_arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$20, _r$21, _r$8, _r$9, _tuple$1, err, i, pos, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = check[0].recordInstance(ix[0].Orig, inst[0].TypeArgs().list(), inst[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$8 = ix[0].IndexListExpr.Pos(); /* */ $s = 4; case 4: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _arg$2 = _r$8; + _r$9 = inst[0].TypeParams(); /* */ $s = 5; case 5: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$10 = _r$9.Len(); /* */ $s = 6; case 6: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _arg$3 = _r$10; + _arg$4 = inst[0].TypeArgs().Len(); + _r$11 = check[0].validateTArgLen(_arg$2, _arg$3, _arg$4); /* */ $s = 7; case 7: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* */ if (_r$11) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_r$11) { */ case 2: + _r$12 = ix[0].IndexListExpr.Pos(); /* */ $s = 8; case 8: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _arg$5 = _r$12; + _r$13 = inst[0].TypeParams(); /* */ $s = 9; case 9: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$14 = _r$13.list(); /* */ $s = 10; case 10: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _arg$6 = _r$14; + _arg$7 = inst[0].TypeArgs().list(); + _arg$8 = check[0].context(); + _r$15 = check[0].verify(_arg$5, _arg$6, _arg$7, _arg$8); /* */ $s = 11; case 11: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _tuple$1 = _r$15; + i = _tuple$1[0]; + err = _tuple$1[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 12: + _r$16 = ix[0].IndexListExpr.Pos(); /* */ $s = 15; case 15: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + pos = _r$16; + /* */ if (i < ix[0].IndexListExpr.Indices.$length) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (i < ix[0].IndexListExpr.Indices.$length) { */ case 16: + _r$17 = (x = ix[0].IndexListExpr.Indices, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).Pos(); /* */ $s = 18; case 18: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + pos = _r$17; + /* } */ case 17: + _arg$9 = new atPos(((pos >> 0))); + _r$18 = err.Error(); /* */ $s = 19; case 19: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _arg$10 = _r$18; + $r = check[0].softErrorf(_arg$9, 139, _arg$10, sliceType$6.nil); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else { */ case 13: + _arg$11 = check[0].pkg; + _r$19 = ix[0].IndexListExpr.Pos(); /* */ $s = 21; case 21: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _arg$12 = _r$19; + _r$20 = inst[0].TypeParams(); /* */ $s = 22; case 22: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _r$21 = _r$20.list(); /* */ $s = 23; case 23: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + _arg$13 = _r$21; + _arg$14 = inst[0].TypeArgs().list(); + _arg$15 = ix[0].IndexListExpr.Indices; + $r = check[0].mono.recordInstance(_arg$11, _arg$12, _arg$13, _arg$14, _arg$15); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 14: + /* } */ case 3: + $r = check[0].validType(inst[0]); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·instantiatedType·func2, $c: true, $r, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$20, _r$21, _r$8, _r$9, _tuple$1, err, i, pos, x, $s};return $f; + }; })(cause, check, inst, ix, res)).describef(ix[0], "resolve instance %s", new sliceType$6([inst[0]])); + res[0] = inst[0]; + $24r$2 = res[0]; + $s = 22; case 22: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return res[0]; } if($curGoroutine.asleep) { var $f = {$blk: instantiatedType, $c: true, $r, $24r, $24r$1, $24r$2, _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, cause, check, def$2, gtyp, inst, ix, orig, res, targs, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.arrayLength = function arrayLength(e) { + var {_r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, _tuple$2, _v, check, e, n, name, obj, ok, ok$1, val, x, $s, $r, $c} = $restore(this, {e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = [x]; + check = this; + _tuple = $assertType(e, ptrType$30, true); + name = _tuple[0]; + /* */ if (!(name === ptrType$30.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(name === ptrType$30.nil)) { */ case 1: + _r$1 = check.environment.lookup(name.Name); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + obj = _r$1; + /* */ if ($interfaceIsEqual(obj, $ifaceNil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($interfaceIsEqual(obj, $ifaceNil)) { */ case 4: + $r = check.errorf(name, 26, "undefined array length %s or missing type constraint", new sliceType$6([new $String(name.Name)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return new $Int64(-1, 4294967295); + /* } */ case 5: + _tuple$1 = $assertType(obj, ptrType$32, true); + ok = _tuple$1[1]; + /* */ if (!ok) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!ok) { */ case 7: + $r = check.errorf(name, 26, "invalid array length %s", new sliceType$6([new $String(name.Name)])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return new $Int64(-1, 4294967295); + /* } */ case 8: + /* } */ case 2: + x[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.expr(x[0], e); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!((x[0].mode === 4))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!((x[0].mode === 4))) { */ case 11: + /* */ if (!((x[0].mode === 0))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!((x[0].mode === 0))) { */ case 13: + $r = check.errorf(x[0], 26, "array length %s must be constant", new sliceType$6([x[0]])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 14: + $s = -1; return new $Int64(-1, 4294967295); + /* } */ case 12: + if (isUntyped(x[0].typ)) { _v = true; $s = 18; continue s; } + _r$2 = isInteger(x[0].typ); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2; case 18: + /* */ if (_v) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_v) { */ case 16: + _r$3 = constant.ToInt(x[0].val); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + val = _r$3; + _r$4 = val.Kind(); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4 === 3) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (_r$4 === 3) { */ case 21: + _r$5 = representableConst(val, check, (2 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 2]), ptrType$50.nil); /* */ $s = 26; case 26: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (_r$5) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (_r$5) { */ case 24: + _r$6 = constant.Int64Val(val); /* */ $s = 27; case 27: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$2 = _r$6; + n = _tuple$2[0]; + ok$1 = _tuple$2[1]; + if (ok$1 && (n.$high > 0 || (n.$high === 0 && n.$low >= 0))) { + $s = -1; return n; + } + $r = check.errorf(x[0], 26, "invalid array length %s", new sliceType$6([x[0]])); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return new $Int64(-1, 4294967295); + /* } */ case 25: + /* } */ case 22: + /* } */ case 17: + $r = check.errorf(x[0], 26, "array length %s must be integer", new sliceType$6([x[0]])); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return new $Int64(-1, 4294967295); + /* */ } return; } var $f = {$blk: arrayLength, $c: true, $r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, _tuple$2, _v, check, e, n, name, obj, ok, ok$1, val, x, $s};return $f; + }; + $ptrType(Checker).prototype.typeList = function typeList(list) { + var {_i, _r$1, _ref, check, i, list, res, t, x, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + res = $makeSlice(sliceType$2, list.$length); + _ref = list; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = check.varType(x); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + t = _r$1; + if ($interfaceIsEqual(t, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + res = sliceType$2.nil; + } + if (!(res === sliceType$2.nil)) { + ((i < 0 || i >= res.$length) ? ($throwRuntimeError("index out of range"), undefined) : res.$array[res.$offset + i] = t); + } + _i++; + $s = 1; continue; + case 2: + $s = -1; return res; + /* */ } return; } var $f = {$blk: typeList, $c: true, $r, _i, _r$1, _ref, check, i, list, res, t, x, $s};return $f; + }; + $ptrType(term).prototype.String = function String$3() { + var {$24r, $24r$1, _r$1, _r$2, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (x === ptrType$4.nil) { $s = 2; continue; } + /* */ if ($interfaceIsEqual(x.typ, $ifaceNil)) { $s = 3; continue; } + /* */ if (x.tilde) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (x === ptrType$4.nil) { */ case 2: + $s = -1; return "\xE2\x88\x85"; + /* } else if ($interfaceIsEqual(x.typ, $ifaceNil)) { */ case 3: + $s = -1; return "\xF0\x9D\x93\xA4"; + /* } else if (x.tilde) { */ case 4: + _r$1 = x.typ.String(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = "~" + _r$1; + $s = 8; case 8: return $24r; + /* } else { */ case 5: + _r$2 = x.typ.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = _r$2; + $s = 10; case 10: return $24r$1; + /* } */ case 6: + case 1: + $s = -1; return ""; + /* */ } return; } var $f = {$blk: String$3, $c: true, $r, $24r, $24r$1, _r$1, _r$2, x, $s};return $f; + }; + $ptrType(term).prototype.union = function union(y) { + var {_, _$1, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, x, y, $s, $r, $c} = $restore(this, {y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ = ptrType$4.nil; + _$1 = ptrType$4.nil; + x = this; + if (x === ptrType$4.nil && y === ptrType$4.nil) { + _tmp = ptrType$4.nil; + _tmp$1 = ptrType$4.nil; + _ = _tmp; + _$1 = _tmp$1; + $s = -1; return [_, _$1]; + } else if (x === ptrType$4.nil) { + _tmp$2 = y; + _tmp$3 = ptrType$4.nil; + _ = _tmp$2; + _$1 = _tmp$3; + $s = -1; return [_, _$1]; + } else if (y === ptrType$4.nil) { + _tmp$4 = x; + _tmp$5 = ptrType$4.nil; + _ = _tmp$4; + _$1 = _tmp$5; + $s = -1; return [_, _$1]; + } else if ($interfaceIsEqual(x.typ, $ifaceNil)) { + _tmp$6 = x; + _tmp$7 = ptrType$4.nil; + _ = _tmp$6; + _$1 = _tmp$7; + $s = -1; return [_, _$1]; + } else if ($interfaceIsEqual(y.typ, $ifaceNil)) { + _tmp$8 = y; + _tmp$9 = ptrType$4.nil; + _ = _tmp$8; + _$1 = _tmp$9; + $s = -1; return [_, _$1]; + } + _r$1 = x.disjoint(y); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r$1) { */ case 1: + _tmp$10 = x; + _tmp$11 = y; + _ = _tmp$10; + _$1 = _tmp$11; + $s = -1; return [_, _$1]; + /* } */ case 2: + if (x.tilde || !y.tilde) { + _tmp$12 = x; + _tmp$13 = ptrType$4.nil; + _ = _tmp$12; + _$1 = _tmp$13; + $s = -1; return [_, _$1]; + } + _tmp$14 = y; + _tmp$15 = ptrType$4.nil; + _ = _tmp$14; + _$1 = _tmp$15; + $s = -1; return [_, _$1]; + /* */ } return; } var $f = {$blk: union, $c: true, $r, _, _$1, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, x, y, $s};return $f; + }; + $ptrType(term).prototype.intersect = function intersect(y) { + var {_r$1, x, y, $s, $r, $c} = $restore(this, {y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (x === ptrType$4.nil || y === ptrType$4.nil) { + $s = -1; return ptrType$4.nil; + } else if ($interfaceIsEqual(x.typ, $ifaceNil)) { + $s = -1; return y; + } else if ($interfaceIsEqual(y.typ, $ifaceNil)) { + $s = -1; return x; + } + _r$1 = x.disjoint(y); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r$1) { */ case 1: + $s = -1; return ptrType$4.nil; + /* } */ case 2: + if (!x.tilde || y.tilde) { + $s = -1; return x; + } + $s = -1; return y; + /* */ } return; } var $f = {$blk: intersect, $c: true, $r, _r$1, x, y, $s};return $f; + }; + $ptrType(term).prototype.includes = function includes(t) { + var {$24r, _r$1, _r$2, t, u, x, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (x === ptrType$4.nil) { + $s = -1; return false; + } else if ($interfaceIsEqual(x.typ, $ifaceNil)) { + $s = -1; return true; + } + u = t; + /* */ if (x.tilde) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.tilde) { */ case 1: + _r$1 = under(u); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + u = _r$1; + /* } */ case 2: + _r$2 = Identical(x.typ, u); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: includes, $c: true, $r, $24r, _r$1, _r$2, t, u, x, $s};return $f; + }; + $ptrType(term).prototype.subsetOf = function subsetOf(y) { + var {_r$1, x, y, $s, $r, $c} = $restore(this, {y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (x === ptrType$4.nil) { + $s = -1; return true; + } else if (y === ptrType$4.nil) { + $s = -1; return false; + } else if ($interfaceIsEqual(y.typ, $ifaceNil)) { + $s = -1; return true; + } else if ($interfaceIsEqual(x.typ, $ifaceNil)) { + $s = -1; return false; + } + _r$1 = x.disjoint(y); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r$1) { */ case 1: + $s = -1; return false; + /* } */ case 2: + $s = -1; return !x.tilde || y.tilde; + /* */ } return; } var $f = {$blk: subsetOf, $c: true, $r, _r$1, x, y, $s};return $f; + }; + $ptrType(term).prototype.disjoint = function disjoint(y) { + var {$24r, _r$1, _r$2, _r$3, ux, uy, x, y, $s, $r, $c} = $restore(this, {y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (false && ($interfaceIsEqual(x.typ, $ifaceNil) || $interfaceIsEqual(y.typ, $ifaceNil))) { + $panic(new $String("invalid argument(s)")); + } + ux = x.typ; + /* */ if (y.tilde) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (y.tilde) { */ case 1: + _r$1 = under(ux); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ux = _r$1; + /* } */ case 2: + uy = y.typ; + /* */ if (x.tilde) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (x.tilde) { */ case 4: + _r$2 = under(uy); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + uy = _r$2; + /* } */ case 5: + _r$3 = Identical(ux, uy); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = !_r$3; + $s = 8; case 8: return $24r; + /* */ } return; } var $f = {$blk: disjoint, $c: true, $r, $24r, _r$1, _r$2, _r$3, ux, uy, x, y, $s};return $f; + }; + RelativeTo = function RelativeTo$1(pkg) { + var pkg; + if (pkg === ptrType$1.nil) { + return $throwNilPointerError; + } + return (function RelativeTo·func1(other) { + var other; + if (pkg === other) { + return ""; + } + return other.Path(); + }); + }; + $pkg.RelativeTo = RelativeTo; + TypeString = function TypeString$1(typ$1, qf) { + var {buf, qf, typ$1, $s, $r, $c} = $restore(this, {typ$1, qf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + buf[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + $r = WriteType(buf[0], typ$1, qf); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: TypeString$1, $c: true, $r, buf, qf, typ$1, $s};return $f; + }; + $pkg.TypeString = TypeString; + WriteType = function WriteType$1(buf, typ$1, qf) { + var {buf, qf, typ$1, $s, $r, $c} = $restore(this, {buf, typ$1, qf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = newTypeWriter(buf, qf).typ(typ$1); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: WriteType$1, $c: true, $r, buf, qf, typ$1, $s};return $f; + }; + $pkg.WriteType = WriteType; + WriteSignature = function WriteSignature$1(buf, sig, qf) { + var {buf, qf, sig, $s, $r, $c} = $restore(this, {buf, sig, qf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = newTypeWriter(buf, qf).signature(sig); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: WriteSignature$1, $c: true, $r, buf, qf, sig, $s};return $f; + }; + $pkg.WriteSignature = WriteSignature; + newTypeWriter = function newTypeWriter$1(buf, qf) { + var buf, qf; + return new typeWriter.ptr(buf, new $global.Map(), qf, ptrType$51.nil, ptrType$48.nil, true, false, false); + }; + newTypeHasher = function newTypeHasher$1(buf, ctxt) { + var {buf, ctxt, $s, $r, $c} = $restore(this, {buf, ctxt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = assert(!(ctxt === ptrType$51.nil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return new typeWriter.ptr(buf, new $global.Map(), $throwNilPointerError, ctxt, ptrType$48.nil, false, false, false); + /* */ } return; } var $f = {$blk: newTypeHasher$1, $c: true, $r, buf, ctxt, $s};return $f; + }; + $ptrType(typeWriter).prototype.byte$ = function byte$1(b) { + var b, w; + w = this; + if (!(w.ctxt === ptrType$51.nil)) { + if (b === 32) { + b = 35; + } + w.buf.WriteByte(b); + return; + } + w.buf.WriteByte(b); + if ((b === 44) || (b === 59)) { + w.buf.WriteByte(32); + } + }; + $ptrType(typeWriter).prototype.string = function string(s) { + var s, w; + w = this; + w.buf.WriteString(s); + }; + $ptrType(typeWriter).prototype.error = function error(msg) { + var msg, w; + w = this; + if (!(w.ctxt === ptrType$51.nil)) { + $panic(new $String(msg)); + } + w.buf.WriteString("<" + msg + ">"); + }; + $ptrType(typeWriter).prototype.typ = function typ$1(typ$2) { + var {_1, _arg, _arg$1, _entry, _i, _i$1, _i$2, _i$3, _key, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tuple, _tuple$1, _v, c, f, first, i, i$1, i$2, m, obj, parens, pkgAnnotate, s, t, t$1, t$10, t$11, t$12, t$13, t$14, t$15, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, tag, typ$2, typ$3, w, x, $s, $deferred, $r, $c} = $restore(this, {typ$2}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + w = this; + /* */ if ((_entry = $mapIndex(w.seen,Type.keyFor(typ$2)), _entry !== undefined ? _entry.v : false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((_entry = $mapIndex(w.seen,Type.keyFor(typ$2)), _entry !== undefined ? _entry.v : false)) { */ case 1: + _r$1 = goTypeName(typ$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = w.error("cycle to " + _r$1); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 2: + _key = typ$2; (w.seen || $throwRuntimeError("assignment to entry in nil map")).set(Type.keyFor(_key), { k: _key, v: true }); + $deferred.push([function(_arg, _arg$1) { $mapDelete(_arg, Type.keyFor(_arg$1)); }, [w.seen, typ$2]]); + _ref = typ$2; + /* */ if (_ref === $ifaceNil) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, ptrType$29, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 17; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 18; continue; } + /* */ $s = 19; continue; + /* switch (0) { default: if (_ref === $ifaceNil) { */ case 5: + t = _ref; + w.error("nil"); + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 6: + t$1 = _ref.$val; + /* */ if (token.IsExported(t$1.name)) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (token.IsExported(t$1.name)) { */ case 21: + _r$2 = $pkg.Unsafe.scope.Lookup(t$1.name); /* */ $s = 23; case 23: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = $assertType(_r$2, ptrType$17, true); + obj = _tuple[0]; + /* */ if (!(obj === ptrType$17.nil)) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!(obj === ptrType$17.nil)) { */ case 24: + $r = w.typeName(obj); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 20; continue; + /* } */ case 25: + /* } */ case 22: + w.string(t$1.name); + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 7: + t$2 = _ref.$val; + w.byte$(91); + w.string(strconv.FormatInt(t$2.len, 10)); + w.byte$(93); + $r = w.typ(t$2.elem); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 8: + t$3 = _ref.$val; + w.string("[]"); + $r = w.typ(t$3.elem); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 9: + t$4 = _ref.$val; + w.string("struct{"); + _ref$1 = t$4.fields; + _i = 0; + /* while (true) { */ case 29: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 30; continue; } + i = _i; + f = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + if (i > 0) { + w.byte$(59); + } + pkgAnnotate = false; + if (w.qf === $throwNilPointerError && w.pkgInfo && !token.IsExported(f.object.name)) { + pkgAnnotate = true; + w.pkgInfo = false; + } + if (!f.embedded) { + w.string(f.object.name); + w.byte$(32); + } + $r = w.typ(f.object.typ); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (pkgAnnotate) { + w.string(" /* package "); + w.string(f.object.pkg.Path()); + w.string(" */ "); + } + tag = t$4.Tag(i); + if (!(tag === "")) { + w.byte$(32); + w.string(strconv.Quote(tag)); + } + _i++; + $s = 29; continue; + case 30: + w.byte$(125); + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 10: + t$5 = _ref.$val; + w.byte$(42); + $r = w.typ(t$5.base); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 11: + t$6 = _ref.$val; + $r = w.tuple(t$6, false); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 12: + t$7 = _ref.$val; + w.string("func"); + $r = w.signature(t$7); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 13: + t$8 = _ref.$val; + if (t$8.Len() === 0) { + w.error("empty union"); + /* break; */ $s = 20; continue; + } + _ref$2 = t$8.terms; + _i$1 = 0; + /* while (true) { */ case 35: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 36; continue; } + i$1 = _i$1; + t$15 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + if (i$1 > 0) { + w.string(" | "); + } + if (t$15.tilde) { + w.byte$(126); + } + $r = w.typ(t$15.typ); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 35; continue; + case 36: + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 14: + t$9 = _ref.$val; + /* */ if (w.ctxt === ptrType$51.nil) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (w.ctxt === ptrType$51.nil) { */ case 38: + _r$3 = universeAny.Type(); /* */ $s = 42; case 42: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if ($interfaceIsEqual(t$9, _r$3)) { $s = 40; continue; } + /* */ $s = 41; continue; + /* if ($interfaceIsEqual(t$9, _r$3)) { */ case 40: + w.string("any"); + /* break; */ $s = 20; continue; + /* } */ case 41: + _r$4 = universeComparable.Type(); /* */ $s = 45; case 45: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if ($interfaceIsEqual(t$9, $assertType(_r$4, ptrType$9).underlying)) { $s = 43; continue; } + /* */ $s = 44; continue; + /* if ($interfaceIsEqual(t$9, $assertType(_r$4, ptrType$9).underlying)) { */ case 43: + w.string("interface{comparable}"); + /* break; */ $s = 20; continue; + /* } */ case 44: + /* } */ case 39: + /* */ if (t$9.implicit) { $s = 46; continue; } + /* */ $s = 47; continue; + /* if (t$9.implicit) { */ case 46: + /* */ if ((t$9.methods.$length === 0) && (t$9.embeddeds.$length === 1)) { $s = 48; continue; } + /* */ $s = 49; continue; + /* if ((t$9.methods.$length === 0) && (t$9.embeddeds.$length === 1)) { */ case 48: + $r = w.typ((x = t$9.embeddeds, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 20; continue; + /* } */ case 49: + w.string("/* implicit */ "); + /* } */ case 47: + w.string("interface{"); + first = true; + /* */ if (!(w.ctxt === ptrType$51.nil)) { $s = 51; continue; } + /* */ $s = 52; continue; + /* if (!(w.ctxt === ptrType$51.nil)) { */ case 51: + _r$5 = t$9.typeSet(); /* */ $s = 54; case 54: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $r = w.typeSet(_r$5); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 53; continue; + /* } else { */ case 52: + _ref$3 = t$9.methods; + _i$2 = 0; + /* while (true) { */ case 56: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 57; continue; } + m = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + if (!first) { + w.byte$(59); + } + first = false; + w.string(m.object.name); + $r = w.signature($assertType(m.object.typ, ptrType$27)); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + $s = 56; continue; + case 57: + _ref$4 = t$9.embeddeds; + _i$3 = 0; + /* while (true) { */ case 59: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 60; continue; } + typ$3 = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); + if (!first) { + w.byte$(59); + } + first = false; + $r = w.typ(typ$3); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$3++; + $s = 59; continue; + case 60: + /* } */ case 53: + w.byte$(125); + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 15: + t$10 = _ref.$val; + w.string("map["); + $r = w.typ(t$10.key); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + w.byte$(93); + $r = w.typ(t$10.elem); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$29, true)[1]) { */ case 16: + t$11 = _ref.$val; + s = ""; + parens = false; + _1 = t$11.dir; + if (_1 === (0)) { + s = "chan "; + _tuple$1 = $assertType(t$11.elem, ptrType$29, true); + c = _tuple$1[0]; + if (!(c === ptrType$29.nil) && (c.dir === 2)) { + parens = true; + } + } else if (_1 === (1)) { + s = "chan<- "; + } else if (_1 === (2)) { + s = "<-chan "; + } else { + w.error("unknown channel direction"); + } + w.string(s); + if (parens) { + w.byte$(40); + } + $r = w.typ(t$11.elem); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (parens) { + w.byte$(41); + } + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 17: + t$12 = _ref.$val; + /* */ if (!(w.ctxt === ptrType$51.nil)) { $s = 65; continue; } + /* */ $s = 66; continue; + /* if (!(w.ctxt === ptrType$51.nil)) { */ case 65: + _r$6 = w.ctxt.getID(t$12); /* */ $s = 67; case 67: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = strconv.Itoa(_r$6); /* */ $s = 68; case 68: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $r = w.string(_r$7); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 66: + $r = w.typeName(t$12.obj); /* */ $s = 70; case 70: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(t$12.inst === ptrType$52.nil)) { $s = 71; continue; } + if (!(w.ctxt === ptrType$51.nil)) { _v = false; $s = 74; continue s; } + _r$8 = t$12.TypeParams(); /* */ $s = 75; case 75: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$9 = _r$8.Len(); /* */ $s = 76; case 76: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _v = !((_r$9 === 0)); case 74: + /* */ if (_v) { $s = 72; continue; } + /* */ $s = 73; continue; + /* if (!(t$12.inst === ptrType$52.nil)) { */ case 71: + $r = w.typeList(t$12.inst.targs.list()); /* */ $s = 77; case 77: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 73; continue; + /* } else if (_v) { */ case 72: + _r$10 = t$12.TypeParams(); /* */ $s = 78; case 78: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = _r$10.list(); /* */ $s = 79; case 79: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $r = w.tParamList(_r$11); /* */ $s = 80; case 80: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 73: + $s = 20; continue; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 18: + t$13 = _ref.$val; + if (t$13.obj === ptrType$17.nil) { + w.error("unnamed type parameter"); + /* break; */ $s = 20; continue; + } + i$2 = tparamIndex(w.tparams.list(), t$13); + /* */ if (i$2 >= 0) { $s = 81; continue; } + /* */ $s = 82; continue; + /* if (i$2 >= 0) { */ case 81: + _r$12 = fmt.Sprintf("$%d", new sliceType$6([new $Int(i$2)])); /* */ $s = 84; case 84: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $r = w.string(_r$12); /* */ $s = 85; case 85: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 83; continue; + /* } else { */ case 82: + w.string(t$13.obj.object.name); + if (w.tpSubscripts || !(w.ctxt === ptrType$51.nil)) { + w.string(subscript(t$13.id)); + } + /* } */ case 83: + $s = 20; continue; + /* } else { */ case 19: + t$14 = _ref; + _r$13 = t$14.String(); /* */ $s = 86; case 86: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + $r = w.string(_r$13); /* */ $s = 87; case 87: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } } */ case 20: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: typ$1, $c: true, $r, _1, _arg, _arg$1, _entry, _i, _i$1, _i$2, _i$3, _key, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tuple, _tuple$1, _v, c, f, first, i, i$1, i$2, m, obj, parens, pkgAnnotate, s, t, t$1, t$10, t$11, t$12, t$13, t$14, t$15, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, tag, typ$2, typ$3, w, x, $s, $deferred};return $f; } } + }; + $ptrType(typeWriter).prototype.typeSet = function typeSet(s) { + var {_i, _i$1, _r$1, _r$2, _ref, _ref$1, buf, first, m, s, term$1, termHashes, w, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + $r = assert(!(w.ctxt === ptrType$51.nil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + first = true; + _ref = s.methods; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + m = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!first) { + w.byte$(59); + } + first = false; + w.string(m.object.name); + $r = w.signature($assertType(m.object.typ, ptrType$27)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 2; continue; + case 3: + /* */ if (s.terms.isAll()) { $s = 6; continue; } + /* */ if (s.terms.isEmpty()) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (s.terms.isAll()) { */ case 6: + $s = 9; continue; + /* } else if (s.terms.isEmpty()) { */ case 7: + _r$1 = s.terms.String(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = w.string(_r$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 9; continue; + /* } else { */ case 8: + termHashes = sliceType$5.nil; + _ref$1 = s.terms; + _i$1 = 0; + /* while (true) { */ case 12: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 13; continue; } + buf = [buf]; + term$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + buf[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + if (term$1.tilde) { + buf[0].WriteByte(126); + } + _r$2 = newTypeHasher(buf[0], w.ctxt); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = _r$2.typ(term$1.typ); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + termHashes = $append(termHashes, buf[0].String()); + _i$1++; + $s = 12; continue; + case 13: + $r = sort.Strings(termHashes); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!first) { + w.byte$(59); + } + w.string(strings.Join(termHashes, "|")); + /* } */ case 9: + case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: typeSet, $c: true, $r, _i, _i$1, _r$1, _r$2, _ref, _ref$1, buf, first, m, s, term$1, termHashes, w, $s};return $f; + }; + $ptrType(typeWriter).prototype.typeList = function typeList$1(list) { + var {_i, _ref, i, list, typ$2, w, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + w.byte$(91); + _ref = list; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + typ$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + w.byte$(44); + } + $r = w.typ(typ$2); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + w.byte$(93); + $s = -1; return; + /* */ } return; } var $f = {$blk: typeList$1, $c: true, $r, _i, _ref, i, list, typ$2, w, $s};return $f; + }; + $ptrType(typeWriter).prototype.tParamList = function tParamList(list) { + var {_i, _ref, i, list, prev, tpar, w, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + w.byte$(91); + prev = $ifaceNil; + _ref = list; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + tpar = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (tpar === ptrType$14.nil) { + w.error("nil type parameter"); + _i++; + /* continue; */ $s = 1; continue; + } + /* */ if (i > 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (i > 0) { */ case 3: + /* */ if (!($interfaceIsEqual(tpar.bound, prev))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!($interfaceIsEqual(tpar.bound, prev))) { */ case 5: + w.byte$(32); + $r = w.typ(prev); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + w.byte$(44); + /* } */ case 4: + prev = tpar.bound; + $r = w.typ(tpar); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + /* */ if (!($interfaceIsEqual(prev, $ifaceNil))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!($interfaceIsEqual(prev, $ifaceNil))) { */ case 9: + w.byte$(32); + $r = w.typ(prev); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + w.byte$(93); + $s = -1; return; + /* */ } return; } var $f = {$blk: tParamList, $c: true, $r, _i, _ref, i, list, prev, tpar, w, $s};return $f; + }; + $ptrType(typeWriter).prototype.typeName = function typeName(obj) { + var {_r$1, obj, w, $s, $r, $c} = $restore(this, {obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + _r$1 = packagePrefix(obj.object.pkg, w.qf); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = w.string(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + w.string(obj.object.name); + $s = -1; return; + /* */ } return; } var $f = {$blk: typeName, $c: true, $r, _r$1, obj, w, $s};return $f; + }; + $ptrType(typeWriter).prototype.tuple = function tuple(tup, variadic) { + var {_i, _r$1, _ref, _tuple, _tuple$1, i, ok, s, t, tup, typ$2, v, variadic, w, $s, $r, $c} = $restore(this, {tup, variadic}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + w.byte$(40); + /* */ if (!(tup === ptrType$15.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(tup === ptrType$15.nil)) { */ case 1: + _ref = tup.vars; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + i = _i; + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + w.byte$(44); + } + if (w.ctxt === ptrType$51.nil && !(v.object.name === "") && w.paramNames) { + w.string(v.object.name); + w.byte$(32); + } + typ$2 = v.object.typ; + /* */ if (variadic && (i === (tup.vars.$length - 1 >> 0))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (variadic && (i === (tup.vars.$length - 1 >> 0))) { */ case 5: + _tuple = $assertType(typ$2, ptrType$25, true); + s = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (ok) { */ case 7: + w.string("..."); + typ$2 = s.elem; + $s = 9; continue; + /* } else { */ case 8: + _r$1 = under(typ$2); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$1, ptrType$8, true); + t = _tuple$1[0]; + if (t === ptrType$8.nil || !((t.kind === 17))) { + w.error("expected string type"); + _i++; + /* continue; */ $s = 3; continue; + } + $r = w.typ(typ$2); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + w.string("..."); + _i++; + /* continue; */ $s = 3; continue; + /* } */ case 9: + /* } */ case 6: + $r = w.typ(typ$2); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 3; continue; + case 4: + /* } */ case 2: + w.byte$(41); + $s = -1; return; + /* */ } return; } var $f = {$blk: tuple, $c: true, $r, _i, _r$1, _ref, _tuple, _tuple$1, i, ok, s, t, tup, typ$2, v, variadic, w, $s};return $f; + }; + $ptrType(typeWriter).prototype.signature = function signature(sig) { + var {n, sig, w, x, x$1, $s, $deferred, $r, $c} = $restore(this, {sig}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + w = [w]; + w[0] = this; + /* */ if (!((sig.TypeParams().Len() === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((sig.TypeParams().Len() === 0))) { */ case 1: + /* */ if (!(w[0].ctxt === ptrType$51.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(w[0].ctxt === ptrType$51.nil)) { */ case 3: + $r = assert(w[0].tparams === ptrType$48.nil); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + w[0].tparams = sig.TypeParams(); + $deferred.push([(function(w) { return function typeWriter·signature·func1() { + w[0].tparams = ptrType$48.nil; + }; })(w), []]); + /* } */ case 4: + $r = w[0].tParamList(sig.TypeParams().list()); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $r = w[0].tuple(sig.params, sig.variadic); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + n = sig.results.Len(); + if (n === 0) { + $s = -1; return; + } + w[0].byte$(32); + /* */ if ((n === 1) && (!(w[0].ctxt === ptrType$51.nil) || (x = sig.results.vars, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).object.name === "")) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ((n === 1) && (!(w[0].ctxt === ptrType$51.nil) || (x = sig.results.vars, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).object.name === "")) { */ case 8: + $r = w[0].typ((x$1 = sig.results.vars, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])).object.typ); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 9: + $r = w[0].tuple(sig.results, false); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: signature, $c: true, $r, n, sig, w, x, x$1, $s, $deferred};return $f; } } + }; + subscript = function subscript$1(x) { + var buf, i, x; + buf = arrayType.zero(); + i = 96; + while (true) { + i = i - (3) >> 0; + utf8.EncodeRune($subslice(new sliceType$14(buf), i), 8320 + (($div64(x, new $Uint64(0, 10), true).$low >> 0)) >> 0); + x = $div64(x, (new $Uint64(0, 10)), false); + if ((x.$high === 0 && x.$low === 0)) { + break; + } + } + return ($bytesToString($subslice(new sliceType$14(buf), i))); + }; + $ptrType(_TypeSet).prototype.IsEmpty = function IsEmpty() { + var s; + s = this; + return s.terms.isEmpty(); + }; + $ptrType(_TypeSet).prototype.IsAll = function IsAll() { + var s; + s = this; + return s.IsMethodSet() && (s.methods.$length === 0); + }; + $ptrType(_TypeSet).prototype.IsMethodSet = function IsMethodSet() { + var s; + s = this; + return !s.comparable && s.terms.isAll(); + }; + $ptrType(_TypeSet).prototype.IsComparable = function IsComparable(seen) { + var {$24r, _r$1, s, seen, $s, $r, $c} = $restore(this, {seen}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + seen = [seen]; + s = this; + if (s.terms.isAll()) { + $s = -1; return s.comparable; + } + _r$1 = s.is((function(seen) { return function _TypeSet·IsComparable·func1(t) { + var {$24r, _r$1, _v, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(!(t === ptrType$4.nil))) { _v = false; $s = 1; continue s; } + _r$1 = comparable(t.typ, false, seen[0], $throwNilPointerError); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 1: + $24r = _v; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: _TypeSet·IsComparable·func1, $c: true, $r, $24r, _r$1, _v, t, $s};return $f; + }; })(seen)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: IsComparable, $c: true, $r, $24r, _r$1, s, seen, $s};return $f; + }; + $ptrType(_TypeSet).prototype.NumMethods = function NumMethods() { + var s; + s = this; + return s.methods.$length; + }; + $ptrType(_TypeSet).prototype.Method = function Method(i) { + var i, s, x; + s = this; + return (x = s.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(_TypeSet).prototype.LookupMethod = function LookupMethod(pkg, name, foldCase) { + var foldCase, name, pkg, s; + s = this; + return lookupMethod(s.methods, pkg, name, foldCase); + }; + $ptrType(_TypeSet).prototype.String = function String$4() { + var {_i, _r$1, _r$2, _r$3, _r$4, _ref, buf, hasMethods, hasTerms, i, m, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + if (s.IsEmpty()) { + $s = -1; return "\xE2\x88\x85"; + } else if (s.IsAll()) { + $s = -1; return "\xF0\x9D\x93\xA4"; + } + hasMethods = s.methods.$length > 0; + hasTerms = s.hasTerms(); + buf = new strings.Builder.ptr(ptrType$53.nil, sliceType$14.nil); + buf.WriteByte(123); + if (s.comparable) { + buf.WriteString("comparable"); + if (hasMethods || hasTerms) { + buf.WriteString("; "); + } + } + _ref = s.methods; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + m = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + buf.WriteString("; "); + } + _r$1 = m.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = buf.WriteString(_r$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _i++; + $s = 1; continue; + case 2: + if (hasMethods && hasTerms) { + buf.WriteString("; "); + } + /* */ if (hasTerms) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (hasTerms) { */ case 5: + _r$3 = s.terms.String(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = buf.WriteString(_r$3); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + /* } */ case 6: + buf.WriteString("}"); + $s = -1; return buf.String(); + /* */ } return; } var $f = {$blk: String$4, $c: true, $r, _i, _r$1, _r$2, _r$3, _r$4, _ref, buf, hasMethods, hasTerms, i, m, s, $s};return $f; + }; + $ptrType(_TypeSet).prototype.hasTerms = function hasTerms() { + var s; + s = this; + return !s.terms.isEmpty() && !s.terms.isAll(); + }; + $ptrType(_TypeSet).prototype.subsetOf = function subsetOf$1(s2) { + var {$24r, _r$1, s1, s2, $s, $r, $c} = $restore(this, {s2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s1 = this; + _r$1 = s1.terms.subsetOf(s2.terms); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: subsetOf$1, $c: true, $r, $24r, _r$1, s1, s2, $s};return $f; + }; + $ptrType(_TypeSet).prototype.is = function is(f) { + var {$24r, _i, _r$1, _r$2, _ref, f, s, t, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (!s.hasTerms()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!s.hasTerms()) { */ case 1: + _r$1 = f(ptrType$4.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + _ref = s.terms; + _i = 0; + /* while (true) { */ case 5: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = assert(!($interfaceIsEqual(t.typ, $ifaceNil))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = f(t); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!_r$2) { */ case 8: + $s = -1; return false; + /* } */ case 9: + _i++; + $s = 5; continue; + case 6: + $s = -1; return true; + /* */ } return; } var $f = {$blk: is, $c: true, $r, $24r, _i, _r$1, _r$2, _ref, f, s, t, $s};return $f; + }; + $ptrType(_TypeSet).prototype.underIs = function underIs$1(f) { + var {$24r, _arg, _arg$1, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, f, s, t, u, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (!s.hasTerms()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!s.hasTerms()) { */ case 1: + _r$1 = f($ifaceNil); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + _ref = s.terms; + _i = 0; + /* while (true) { */ case 5: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = assert(!($interfaceIsEqual(t.typ, $ifaceNil))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + u = t.typ; + /* */ if (!t.tilde) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!t.tilde) { */ case 8: + _r$2 = under(u); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + u = _r$2; + /* } */ case 9: + /* */ if (false) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (false) { */ case 11: + _arg = u; + _r$3 = under(u); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$1 = _r$3; + _r$4 = Identical(_arg, _arg$1); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $r = assert(_r$4); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + _r$5 = f(u); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!_r$5) { */ case 16: + $s = -1; return false; + /* } */ case 17: + _i++; + $s = 5; continue; + case 6: + $s = -1; return true; + /* */ } return; } var $f = {$blk: underIs$1, $c: true, $r, $24r, _arg, _arg$1, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, f, s, t, u, $s};return $f; + }; + computeInterfaceTypeSet = function computeInterfaceTypeSet$1(check, pos, ityp) { + var {$24r, _i, _i$1, _i$2, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$2, _ref$3, _tuple, _v, addMethod, allComparable, allMethods, allTerms, check, comparable$1, i, ityp, m, m$1, mpos, pos, pos$1, seen, terms, tset, tset$1, typ$2, u, u$1, u$2, unionSets, x, x$1, $s, $deferred, $r, $c} = $restore(this, {check, pos, ityp}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + allMethods = [allMethods]; + check = [check]; + ityp = [ityp]; + mpos = [mpos]; + pos = [pos]; + seen = [seen]; + if (!(ityp[0].tset === ptrType$7.nil)) { + $s = -1; return ityp[0].tset; + } + if (!ityp[0].complete) { + $s = -1; return topTypeSet; + } + /* */ if (!(check[0] === ptrType$5.nil) && false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(check[0] === ptrType$5.nil) && false) { */ case 1: + if (!new token.Pos(pos[0]).IsValid() && ityp[0].methods.$length > 0) { + pos[0] = (x = ityp[0].methods, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).object.pos; + } + $r = check[0].trace(pos[0], "-- type set for %s", new sliceType$6([ityp[0]])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].indent = check[0].indent + (1) >> 0; + $deferred.push([(function(allMethods, check, ityp, mpos, pos, seen) { return function computeInterfaceTypeSet·func1() { + var {_arg, _arg$1, _r$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check[0].indent = check[0].indent - (1) >> 0; + _arg = pos[0]; + _r$1 = ityp[0].typeSet(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = _r$1; + $r = check[0].trace(_arg, "=> %s ", new sliceType$6([_arg$1])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: computeInterfaceTypeSet·func1, $c: true, $r, _arg, _arg$1, _r$1, $s};return $f; + }; })(allMethods, check, ityp, mpos, pos, seen), []]); + /* } */ case 2: + ityp[0].tset = new _TypeSet.ptr(sliceType.nil, allTermlist, false); + unionSets = false; + if (!(check[0] === ptrType$5.nil)) { + if (check[0].unionTypeSets === false) { + check[0].unionTypeSets = new $global.Map(); + } + unionSets = check[0].unionTypeSets; + } else { + unionSets = new $global.Map(); + } + seen[0] = false; + allMethods[0] = sliceType.nil; + mpos[0] = new $global.Map(); + addMethod = (function(allMethods, check, ityp, mpos, pos, seen) { return function computeInterfaceTypeSet·func2(pos$1, m, explicit) { + var {_entry, _key, _r$1, explicit, m, other, pos$1, $s, $r, $c} = $restore(this, {pos$1, m, explicit}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = [m]; + other = [other]; + pos$1 = [pos$1]; + _r$1 = (seen.$ptr || (seen.$ptr = new ptrType$54(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, seen))).insert(m[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + other[0] = _r$1; + /* */ if ($interfaceIsEqual(other[0], $ifaceNil)) { $s = 3; continue; } + /* */ if (explicit) { $s = 4; continue; } + /* */ if (!(check[0] === ptrType$5.nil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($interfaceIsEqual(other[0], $ifaceNil)) { */ case 3: + allMethods[0] = $append(allMethods[0], m[0]); + _key = m[0]; (mpos[0] || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$2.keyFor(_key), { k: _key, v: pos$1[0] }); + $s = 6; continue; + /* } else if (explicit) { */ case 4: + /* */ if (!(check[0] === ptrType$5.nil)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(check[0] === ptrType$5.nil)) { */ case 7: + $r = check[0].errorf(new atPos(((pos$1[0] >> 0))), 10, "duplicate method %s", new sliceType$6([new $String(m[0].object.name)])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].errorf(new atPos((((_entry = $mapIndex(mpos[0],ptrType$2.keyFor($assertType(other[0], ptrType$2))), _entry !== undefined ? _entry.v : 0) >> 0))), 10, "\tother declaration of %s", new sliceType$6([new $String(m[0].object.name)])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + $s = 6; continue; + /* } else if (!(check[0] === ptrType$5.nil)) { */ case 5: + check[0].later((function(allMethods, check, ityp, m, mpos, other, pos, pos$1, seen) { return function computeInterfaceTypeSet·func2·func1() { + var {_arg, _arg$1, _entry$1, _r$2, _r$3, _v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!check[0].allowVersion(m[0].object.pkg, 1, 14)) { _v = true; $s = 3; continue s; } + _arg = m[0].object.typ; + _r$2 = other[0].Type(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = _r$2; + _r$3 = Identical(_arg, _arg$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = !_r$3; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $r = check[0].errorf(new atPos(((pos$1[0] >> 0))), 10, "duplicate method %s", new sliceType$6([new $String(m[0].object.name)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].errorf(new atPos((((_entry$1 = $mapIndex(mpos[0],ptrType$2.keyFor($assertType(other[0], ptrType$2))), _entry$1 !== undefined ? _entry$1.v : 0) >> 0))), 10, "\tother declaration of %s", new sliceType$6([new $String(m[0].object.name)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: computeInterfaceTypeSet·func2·func1, $c: true, $r, _arg, _arg$1, _entry$1, _r$2, _r$3, _v, $s};return $f; + }; })(allMethods, check, ityp, m, mpos, other, pos, pos$1, seen)).describef(new atPos(((pos$1[0] >> 0))), "duplicate method check for %s", new sliceType$6([new $String(m[0].object.name)])); + /* } */ case 6: + case 1: + $s = -1; return; + /* */ } return; } var $f = {$blk: computeInterfaceTypeSet·func2, $c: true, $r, _entry, _key, _r$1, explicit, m, other, pos$1, $s};return $f; + }; })(allMethods, check, ityp, mpos, pos, seen); + _ref = ityp[0].methods; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + m = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = addMethod(m.object.pos, m, true); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 4; continue; + case 5: + allTerms = allTermlist; + allComparable = false; + _ref$1 = ityp[0].embeddeds; + _i$1 = 0; + /* while (true) { */ case 7: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 8; continue; } + i = _i$1; + typ$2 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + pos$1 = 0; + if (!(ityp[0].embedPos === ptrType$6.nil)) { + pos$1 = (x$1 = ityp[0].embedPos.$get(), ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])); + } + comparable$1 = false; + terms = termlist.nil; + _r$1 = under(typ$2); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref$2 = _r$1; + /* */ if ($assertType(_ref$2, ptrType$13, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref$2, ptrType$12, true)[1]) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if ($assertType(_ref$2, ptrType$13, true)[1]) { */ case 10: + u = _ref$2.$val; + $r = assert(!isTypeParam(typ$2)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = computeInterfaceTypeSet(check[0], pos$1, u); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + tset = _r$2; + if (!(!(check[0] === ptrType$5.nil))) { _v = false; $s = 18; continue s; } + _r$3 = check[0].isImportedConstraint(typ$2); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3; case 18: + /* */ if (_v && !check[0].allowVersion(check[0].pkg, 1, 18)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_v && !check[0].allowVersion(check[0].pkg, 1, 18)) { */ case 16: + $r = check[0].errorf(new atPos(((pos$1 >> 0))), 135, "embedding constraint interface %s requires go1.18 or later", new sliceType$6([typ$2])); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + /* continue; */ $s = 7; continue; + /* } */ case 17: + comparable$1 = tset.comparable; + _ref$3 = tset.methods; + _i$2 = 0; + /* while (true) { */ case 21: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 22; continue; } + m$1 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + $r = addMethod(pos$1, m$1, false); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + $s = 21; continue; + case 22: + terms = tset.terms; + $s = 13; continue; + /* } else if ($assertType(_ref$2, ptrType$12, true)[1]) { */ case 11: + u$1 = _ref$2.$val; + /* */ if (!(check[0] === ptrType$5.nil) && !check[0].allowVersion(check[0].pkg, 1, 18)) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!(check[0] === ptrType$5.nil) && !check[0].allowVersion(check[0].pkg, 1, 18)) { */ case 24: + $r = check[0].errorf(new atPos(((pos$1 >> 0))), 135, "embedding interface element %s requires go1.18 or later", new sliceType$6([u$1])); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + /* continue; */ $s = 7; continue; + /* } */ case 25: + _r$4 = computeUnionTypeSet(check[0], unionSets, pos$1, u$1); /* */ $s = 27; case 27: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + tset$1 = _r$4; + if (tset$1 === invalidTypeSet) { + _i$1++; + /* continue; */ $s = 7; continue; + } + $r = assert(!tset$1.comparable); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(tset$1.methods.$length === 0); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + terms = tset$1.terms; + $s = 13; continue; + /* } else { */ case 12: + u$2 = _ref$2; + if ($interfaceIsEqual(u$2, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + _i$1++; + /* continue; */ $s = 7; continue; + } + /* */ if (!(check[0] === ptrType$5.nil) && !check[0].allowVersion(check[0].pkg, 1, 18)) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (!(check[0] === ptrType$5.nil) && !check[0].allowVersion(check[0].pkg, 1, 18)) { */ case 30: + $r = check[0].errorf(new atPos(((pos$1 >> 0))), 135, "embedding non-interface type %s requires go1.18 or later", new sliceType$6([typ$2])); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + /* continue; */ $s = 7; continue; + /* } */ case 31: + terms = new termlist([new term.ptr(false, typ$2)]); + /* } */ case 13: + _r$5 = intersectTermLists(allTerms, allComparable, terms, comparable$1); /* */ $s = 33; case 33: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple = _r$5; + allTerms = _tuple[0]; + allComparable = _tuple[1]; + _i$1++; + $s = 7; continue; + case 8: + ityp[0].embedPos = ptrType$6.nil; + ityp[0].tset.comparable = allComparable; + /* */ if (!((allMethods[0].$length === 0))) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (!((allMethods[0].$length === 0))) { */ case 34: + $r = sortMethods(allMethods[0]); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ityp[0].tset.methods = allMethods[0]; + /* } */ case 35: + ityp[0].tset.terms = allTerms; + $24r = ityp[0].tset; + $s = 37; case 37: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$7.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: computeInterfaceTypeSet$1, $c: true, $r, $24r, _i, _i$1, _i$2, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$2, _ref$3, _tuple, _v, addMethod, allComparable, allMethods, allTerms, check, comparable$1, i, ityp, m, m$1, mpos, pos, pos$1, seen, terms, tset, tset$1, typ$2, u, u$1, u$2, unionSets, x, x$1, $s, $deferred};return $f; } } + }; + intersectTermLists = function intersectTermLists$1(xterms, xcomp, yterms, ycomp) { + var {_i, _r$1, _r$2, _ref, comp, i, t, terms, xcomp, xterms, ycomp, yterms, $s, $r, $c} = $restore(this, {xterms, xcomp, yterms, ycomp}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = xterms.intersect(yterms); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + terms = _r$1; + comp = xcomp || ycomp; + /* */ if (comp && !terms.isAll()) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (comp && !terms.isAll()) { */ case 2: + i = 0; + _ref = terms; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = assert(!($interfaceIsEqual(t.typ, $ifaceNil))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = comparable(t.typ, false, false, $throwNilPointerError); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_r$2) { */ case 7: + ((i < 0 || i >= terms.$length) ? ($throwRuntimeError("index out of range"), undefined) : terms.$array[terms.$offset + i] = t); + i = i + (1) >> 0; + /* } */ case 8: + _i++; + $s = 4; continue; + case 5: + terms = $subslice(terms, 0, i); + if (!terms.isAll()) { + comp = false; + } + /* } */ case 3: + $r = assert(!comp || terms.isAll()); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [terms, comp]; + /* */ } return; } var $f = {$blk: intersectTermLists$1, $c: true, $r, _i, _r$1, _r$2, _ref, comp, i, t, terms, xcomp, xterms, ycomp, yterms, $s};return $f; + }; + sortMethods = function sortMethods$1(list) { + var {list, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = sort.Sort(($convertSliceType(list, byUniqueMethodName))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: sortMethods$1, $c: true, $r, list, $s};return $f; + }; + assertSortedMethods = function assertSortedMethods$1(list) { + var {_r$1, list, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (true) { + $panic(new $String("assertSortedMethods called outside debug mode")); + } + _r$1 = sort.IsSorted(($convertSliceType(list, byUniqueMethodName))); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r$1) { */ case 1: + $panic(new $String("methods not sorted")); + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: assertSortedMethods$1, $c: true, $r, _r$1, list, $s};return $f; + }; + byUniqueMethodName.prototype.Len = function Len$1() { + var a; + a = this; + return a.$length; + }; + $ptrType(byUniqueMethodName).prototype.Len = function(...$args) { return this.$get().Len(...$args); }; + byUniqueMethodName.prototype.Less = function Less(i, j) { + var a, i, j; + a = this; + return ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]).object.Id() < ((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]).object.Id(); + }; + $ptrType(byUniqueMethodName).prototype.Less = function(...$args) { return this.$get().Less(...$args); }; + byUniqueMethodName.prototype.Swap = function Swap(i, j) { + var _tmp, _tmp$1, a, i, j; + a = this; + _tmp = ((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]); + _tmp$1 = ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]); + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = _tmp); + ((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j] = _tmp$1); + }; + $ptrType(byUniqueMethodName).prototype.Swap = function(...$args) { return this.$get().Swap(...$args); }; + computeUnionTypeSet = function computeUnionTypeSet$1(check, unionSets, pos, utyp) { + var {_entry, _entry$1, _entry$2, _entry$3, _i, _key, _key$1, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, _tuple$1, _v, allTerms, check, pos, t, terms, tset, u, ui, unionSets, utyp, $s, $r, $c} = $restore(this, {check, unionSets, pos, utyp}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = (_entry = $mapIndex(unionSets,ptrType$12.keyFor(utyp)), _entry !== undefined ? [_entry.v, true] : [ptrType$7.nil, false]); + tset = _tuple[0]; + if (!(tset === ptrType$7.nil)) { + $s = -1; return tset; + } + _key = utyp; (unionSets || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$12.keyFor(_key), { k: _key, v: new _TypeSet.ptr(sliceType.nil, termlist.nil, false) }); + allTerms = termlist.nil; + _ref = utyp.terms; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + terms = termlist.nil; + _r$1 = under(t.typ); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + u = _r$1; + _tuple$1 = $assertType(u, ptrType$13, true); + ui = _tuple$1[0]; + /* */ if (!(ui === ptrType$13.nil)) { $s = 4; continue; } + /* */ if ($interfaceIsEqual(u, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(ui === ptrType$13.nil)) { */ case 4: + $r = assert(!isTypeParam(t.typ)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = computeInterfaceTypeSet(check, pos, ui); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + terms = _r$2.terms; + $s = 7; continue; + /* } else if ($interfaceIsEqual(u, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { */ case 5: + _i++; + /* continue; */ $s = 1; continue; + $s = 7; continue; + /* } else { */ case 6: + if (!(t.tilde)) { _v = false; $s = 12; continue s; } + _r$3 = Identical(t.typ, u); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = !_r$3; case 12: + /* */ if (_v) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v) { */ case 10: + t = ptrType$19.nil; + /* } */ case 11: + terms = new termlist([($pointerOfStructConversion(t, ptrType$4))]); + /* } */ case 7: + _r$4 = allTerms.union(terms); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + allTerms = _r$4; + /* */ if (allTerms.$length > 100) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (allTerms.$length > 100) { */ case 15: + /* */ if (!(check === ptrType$5.nil)) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (!(check === ptrType$5.nil)) { */ case 17: + $r = check.errorf(new atPos(((pos >> 0))), 141, "cannot handle more than %d union terms (implementation limitation)", new sliceType$6([new $Int(100)])); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + _key$1 = utyp; (unionSets || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$12.keyFor(_key$1), { k: _key$1, v: invalidTypeSet }); + $s = -1; return (_entry$1 = $mapIndex(unionSets,ptrType$12.keyFor(utyp)), _entry$1 !== undefined ? _entry$1.v : ptrType$7.nil); + /* } */ case 16: + _i++; + $s = 1; continue; + case 2: + (_entry$2 = $mapIndex(unionSets,ptrType$12.keyFor(utyp)), _entry$2 !== undefined ? _entry$2.v : ptrType$7.nil).terms = allTerms; + $s = -1; return (_entry$3 = $mapIndex(unionSets,ptrType$12.keyFor(utyp)), _entry$3 !== undefined ? _entry$3.v : ptrType$7.nil); + /* */ } return; } var $f = {$blk: computeUnionTypeSet$1, $c: true, $r, _entry, _entry$1, _entry$2, _entry$3, _i, _key, _key$1, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, _tuple$1, _v, allTerms, check, pos, t, terms, tset, u, ui, unionSets, utyp, $s};return $f; + }; + nextID = function nextID$1() { + return (new $Uint64(0, atomic.AddUint32((lastID$24ptr || (lastID$24ptr = new ptrType$55(function() { return lastID; }, function($v) { lastID = $v; }))), 1))); + }; + NewTypeParam = function NewTypeParam$1(obj, constraint) { + var {$24r, _r$1, constraint, obj, $s, $r, $c} = $restore(this, {obj, constraint}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = (ptrType$5.nil).newTypeParam(obj, constraint); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: NewTypeParam$1, $c: true, $r, $24r, _r$1, constraint, obj, $s};return $f; + }; + $pkg.NewTypeParam = NewTypeParam; + $ptrType(Checker).prototype.newTypeParam = function newTypeParam(obj, constraint) { + var {_r$1, check, constraint, id, obj, typ$2, x, x$1, $s, $r, $c} = $restore(this, {obj, constraint}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + id = nextID(); + if (!(check === ptrType$5.nil)) { + check.nextID = (x = check.nextID, x$1 = new $Uint64(0, 1), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)); + id = check.nextID; + } + typ$2 = new TypeParam.ptr(check, id, obj, -1, constraint); + if ($interfaceIsEqual(obj.object.typ, $ifaceNil)) { + obj.object.typ = typ$2; + } + /* */ if (!(check === ptrType$5.nil)) { $s = 1; continue; } + /* */ if (!($interfaceIsEqual(constraint, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(check === ptrType$5.nil)) { */ case 1: + check.needsCleanup(typ$2); + $s = 3; continue; + /* } else if (!($interfaceIsEqual(constraint, $ifaceNil))) { */ case 2: + _r$1 = typ$2.iface(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 3: + $s = -1; return typ$2; + /* */ } return; } var $f = {$blk: newTypeParam, $c: true, $r, _r$1, check, constraint, id, obj, typ$2, x, x$1, $s};return $f; + }; + $ptrType(TypeParam).prototype.Index = function Index() { + var t; + t = this; + return t.index; + }; + $ptrType(TypeParam).prototype.Obj = function Obj() { + var t; + t = this; + return t.obj; + }; + $ptrType(TypeParam).prototype.Constraint = function Constraint() { + var t; + t = this; + return t.bound; + }; + $ptrType(TypeParam).prototype.SetConstraint = function SetConstraint(bound) { + var {_r$1, bound, t, $s, $r, $c} = $restore(this, {bound}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if ($interfaceIsEqual(bound, $ifaceNil)) { + $panic(new $String("nil constraint")); + } + t.bound = bound; + _r$1 = t.iface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return; + /* */ } return; } var $f = {$blk: SetConstraint, $c: true, $r, _r$1, bound, t, $s};return $f; + }; + $ptrType(TypeParam).prototype.Underlying = function Underlying$1() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.iface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Underlying$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(TypeParam).prototype.String = function String$5() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$5, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(TypeParam).prototype.cleanup = function cleanup() { + var {_r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.iface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + t.check = ptrType$5.nil; + $s = -1; return; + /* */ } return; } var $f = {$blk: cleanup, $c: true, $r, _r$1, t, $s};return $f; + }; + $ptrType(TypeParam).prototype.iface = function iface() { + var {_r$1, _r$2, _r$3, _ref, _tuple, bound, ityp, n, pos, t, u, u$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + bound = t.bound; + ityp = ptrType$13.nil; + _r$1 = under(bound); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 2: + u = _ref.$val; + if (u === (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])) { + $s = -1; return emptyInterface; + } + $s = 4; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 3: + u$1 = _ref.$val; + if (isTypeParam(bound)) { + $s = -1; return emptyInterface; + } + ityp = u$1; + /* } */ case 4: + /* */ if (ityp === ptrType$13.nil) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (ityp === ptrType$13.nil) { */ case 5: + _r$2 = NewInterfaceType(sliceType.nil, new sliceType$2([bound])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ityp = _r$2; + ityp.implicit = true; + t.bound = ityp; + /* } */ case 6: + /* */ if (ityp.tset === ptrType$7.nil) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (ityp.tset === ptrType$7.nil) { */ case 8: + pos = t.obj.object.pos; + _tuple = $assertType(bound, ptrType$9, true); + n = _tuple[0]; + if (!(n === ptrType$9.nil)) { + pos = n.obj.object.pos; + } + _r$3 = computeInterfaceTypeSet(t.check, pos, ityp); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + /* } */ case 9: + $s = -1; return ityp; + /* */ } return; } var $f = {$blk: iface, $c: true, $r, _r$1, _r$2, _r$3, _ref, _tuple, bound, ityp, n, pos, t, u, u$1, $s};return $f; + }; + $ptrType(TypeParam).prototype.is = function is$1(f) { + var {$24r, _r$1, _r$2, _r$3, f, t, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.iface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.typeSet(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.is(f); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: is$1, $c: true, $r, $24r, _r$1, _r$2, _r$3, f, t, $s};return $f; + }; + $ptrType(TypeParam).prototype.underIs = function underIs$2(f) { + var {$24r, _r$1, _r$2, _r$3, f, t, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.iface(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.typeSet(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.underIs(f); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: underIs$2, $c: true, $r, $24r, _r$1, _r$2, _r$3, f, t, $s};return $f; + }; + $ptrType(TypeParamList).prototype.Len = function Len$2() { + var l; + l = this; + return l.list().$length; + }; + $ptrType(TypeParamList).prototype.At = function At(i) { + var i, l, x; + l = this; + return (x = l.tparams, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(TypeParamList).prototype.list = function list() { + var l; + l = this; + if (l === ptrType$48.nil) { + return sliceType$9.nil; + } + return l.tparams; + }; + newTypeList = function newTypeList$1(list$1) { + var list$1; + if (list$1.$length === 0) { + return ptrType$56.nil; + } + return new TypeList.ptr(list$1); + }; + $ptrType(TypeList).prototype.Len = function Len$3() { + var l; + l = this; + return l.list().$length; + }; + $ptrType(TypeList).prototype.At = function At$1(i) { + var i, l, x; + l = this; + return (x = l.types, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(TypeList).prototype.list = function list$1() { + var l; + l = this; + if (l === ptrType$56.nil) { + return sliceType$2.nil; + } + return l.types; + }; + bindTParams = function bindTParams$1(list$2) { + var _i, _ref, i, list$2, typ$2; + if (list$2.$length === 0) { + return ptrType$48.nil; + } + _ref = list$2; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + typ$2 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (typ$2.index >= 0) { + $panic(new $String("type parameter bound more than once")); + } + typ$2.index = i; + _i++; + } + return new TypeParamList.ptr(list$2); + }; + under = function under$1(t) { + var {$24r, $24r$1, _r$1, _r$2, _tuple, t, t$1, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = $assertType(t, ptrType$9, true); + t$1 = _tuple[0]; + /* */ if (!(t$1 === ptrType$9.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(t$1 === ptrType$9.nil)) { */ case 1: + _r$1 = t$1.under(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$2 = t.Underlying(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = _r$2; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: under$1, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _tuple, t, t$1, $s};return $f; + }; + coreType = function coreType$1(t) { + var {$24r, _r$1, _r$2, _tuple, su, t, tpar, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + su = [su]; + _tuple = $assertType(t, ptrType$14, true); + tpar = _tuple[0]; + /* */ if (tpar === ptrType$14.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (tpar === ptrType$14.nil) { */ case 1: + _r$1 = under(t); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + su[0] = $ifaceNil; + _r$2 = tpar.underIs((function(su) { return function coreType·func1(u) { + var {_r$2, u, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(u, $ifaceNil)) { + $s = -1; return false; + } + /* */ if (!($interfaceIsEqual(su[0], $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(su[0], $ifaceNil))) { */ case 1: + _r$2 = match(su[0], u); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + u = _r$2; + if ($interfaceIsEqual(u, $ifaceNil)) { + $s = -1; return false; + } + /* } */ case 2: + su[0] = u; + $s = -1; return true; + /* */ } return; } var $f = {$blk: coreType·func1, $c: true, $r, _r$2, u, $s};return $f; + }; })(su)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r$2) { */ case 5: + $s = -1; return su[0]; + /* } */ case 6: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: coreType$1, $c: true, $r, $24r, _r$1, _r$2, _tuple, su, t, tpar, $s};return $f; + }; + coreString = function coreString$1(t) { + var {$24r, _r$1, _r$2, _tuple, hasString, su, t, tpar, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + hasString = [hasString]; + su = [su]; + _tuple = $assertType(t, ptrType$14, true); + tpar = _tuple[0]; + /* */ if (tpar === ptrType$14.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (tpar === ptrType$14.nil) { */ case 1: + _r$1 = under(t); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + su[0] = $ifaceNil; + hasString[0] = false; + _r$2 = tpar.underIs((function(hasString, su) { return function coreString·func1(u) { + var {_r$2, _r$3, u, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(u, $ifaceNil)) { + $s = -1; return false; + } + _r$2 = isString(u); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r$2) { */ case 1: + u = NewSlice(universeByte); + hasString[0] = true; + /* } */ case 2: + /* */ if (!($interfaceIsEqual(su[0], $ifaceNil))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!($interfaceIsEqual(su[0], $ifaceNil))) { */ case 4: + _r$3 = match(su[0], u); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + u = _r$3; + if ($interfaceIsEqual(u, $ifaceNil)) { + $s = -1; return false; + } + /* } */ case 5: + su[0] = u; + $s = -1; return true; + /* */ } return; } var $f = {$blk: coreString·func1, $c: true, $r, _r$2, _r$3, u, $s};return $f; + }; })(hasString, su)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r$2) { */ case 5: + if (hasString[0]) { + $s = -1; return (17 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 17]); + } + $s = -1; return su[0]; + /* } */ case 6: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: coreString$1, $c: true, $r, $24r, _r$1, _r$2, _tuple, hasString, su, t, tpar, $s};return $f; + }; + match = function match$1(x, y) { + var {_r$1, _r$2, _tuple, _tuple$1, _v, x, x$1, y, y$1, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = Identical(x, y); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r$1) { */ case 1: + $s = -1; return x; + /* } */ case 2: + _tuple = $assertType(x, ptrType$29, true); + x$1 = _tuple[0]; + /* */ if (!(x$1 === ptrType$29.nil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(x$1 === ptrType$29.nil)) { */ case 4: + _tuple$1 = $assertType(y, ptrType$29, true); + y$1 = _tuple$1[0]; + if (!(!(y$1 === ptrType$29.nil))) { _v = false; $s = 8; continue s; } + _r$2 = Identical(x$1.elem, y$1.elem); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2; case 8: + /* */ if (_v) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_v) { */ case 6: + if ((x$1.dir === 0)) { + $s = -1; return y$1; + } else if ((y$1.dir === 0)) { + $s = -1; return x$1; + } + /* } */ case 7: + /* } */ case 5: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: match$1, $c: true, $r, _r$1, _r$2, _tuple, _tuple$1, _v, x, x$1, y, y$1, $s};return $f; + }; + NewTuple = function NewTuple$1(x) { + var x; + if (x.$length > 0) { + return new Tuple.ptr(x); + } + return ptrType$15.nil; + }; + $pkg.NewTuple = NewTuple; + $ptrType(Tuple).prototype.Len = function Len$4() { + var t; + t = this; + if (!(t === ptrType$15.nil)) { + return t.vars.$length; + } + return 0; + }; + $ptrType(Tuple).prototype.At = function At$2(i) { + var i, t, x; + t = this; + return (x = t.vars, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(Tuple).prototype.Underlying = function Underlying$2() { + var t; + t = this; + return t; + }; + $ptrType(Tuple).prototype.String = function String$6() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$6, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + termlist.prototype.String = function String$7() { + var {_i, _r$1, _r$2, _ref, buf, i, x, xl, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + if (xl.$length === 0) { + $s = -1; return "\xE2\x88\x85"; + } + buf = new strings.Builder.ptr(ptrType$53.nil, sliceType$14.nil); + _ref = xl; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + buf.WriteString(" | "); + } + _r$1 = x.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = buf.WriteString(_r$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _i++; + $s = 1; continue; + case 2: + $s = -1; return buf.String(); + /* */ } return; } var $f = {$blk: String$7, $c: true, $r, _i, _r$1, _r$2, _ref, buf, i, x, xl, $s};return $f; + }; + $ptrType(termlist).prototype.String = function(...$args) { return this.$get().String(...$args); }; + termlist.prototype.isEmpty = function isEmpty() { + var _i, _ref, x, xl; + xl = this; + _ref = xl; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(x === ptrType$4.nil)) { + return false; + } + _i++; + } + return true; + }; + $ptrType(termlist).prototype.isEmpty = function(...$args) { return this.$get().isEmpty(...$args); }; + termlist.prototype.isAll = function isAll() { + var _i, _ref, x, xl; + xl = this; + _ref = xl; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(x === ptrType$4.nil) && $interfaceIsEqual(x.typ, $ifaceNil)) { + return true; + } + _i++; + } + return false; + }; + $ptrType(termlist).prototype.isAll = function(...$args) { return this.$get().isAll(...$args); }; + termlist.prototype.norm = function norm() { + var {_i, _r$1, _ref, _tuple, i, j, rl, u1, u2, used, xi, xj, xl, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + used = $makeSlice(sliceType$15, xl.$length); + rl = termlist.nil; + _ref = xl; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + xi = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (xi === ptrType$4.nil || ((i < 0 || i >= used.$length) ? ($throwRuntimeError("index out of range"), undefined) : used.$array[used.$offset + i])) { + _i++; + /* continue; */ $s = 1; continue; + } + j = i + 1 >> 0; + /* while (true) { */ case 3: + /* if (!(j < xl.$length)) { break; } */ if(!(j < xl.$length)) { $s = 4; continue; } + xj = ((j < 0 || j >= xl.$length) ? ($throwRuntimeError("index out of range"), undefined) : xl.$array[xl.$offset + j]); + if (xj === ptrType$4.nil || ((j < 0 || j >= used.$length) ? ($throwRuntimeError("index out of range"), undefined) : used.$array[used.$offset + j])) { + j = j + (1) >> 0; + /* continue; */ $s = 3; continue; + } + _r$1 = xi.union(xj); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + u1 = _tuple[0]; + u2 = _tuple[1]; + if (u2 === ptrType$4.nil) { + if ($interfaceIsEqual(u1.typ, $ifaceNil)) { + $s = -1; return allTermlist; + } + xi = u1; + ((j < 0 || j >= used.$length) ? ($throwRuntimeError("index out of range"), undefined) : used.$array[used.$offset + j] = true); + } + j = j + (1) >> 0; + $s = 3; continue; + case 4: + rl = $append(rl, xi); + _i++; + $s = 1; continue; + case 2: + $s = -1; return rl; + /* */ } return; } var $f = {$blk: norm, $c: true, $r, _i, _r$1, _ref, _tuple, i, j, rl, u1, u2, used, xi, xj, xl, $s};return $f; + }; + $ptrType(termlist).prototype.norm = function(...$args) { return this.$get().norm(...$args); }; + termlist.prototype.union = function union$1(yl) { + var {$24r, _r$1, xl, yl, $s, $r, $c} = $restore(this, {yl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + _r$1 = $appendSlice(xl, $convertSliceType(yl, sliceType$16)).norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: union$1, $c: true, $r, $24r, _r$1, xl, yl, $s};return $f; + }; + $ptrType(termlist).prototype.union = function(...$args) { return this.$get().union(...$args); }; + termlist.prototype.intersect = function intersect$1(yl) { + var {$24r, _i, _i$1, _r$1, _r$2, _ref, _ref$1, r, rl, x, xl, y, yl, $s, $r, $c} = $restore(this, {yl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + if (xl.isEmpty() || yl.isEmpty()) { + $s = -1; return termlist.nil; + } + rl = termlist.nil; + _ref = xl; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = yl; + _i$1 = 0; + /* while (true) { */ case 3: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 4; continue; } + y = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r$1 = x.intersect(y); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + r = _r$1; + if (!(r === ptrType$4.nil)) { + rl = $append(rl, r); + } + _i$1++; + $s = 3; continue; + case 4: + _i++; + $s = 1; continue; + case 2: + _r$2 = rl.norm(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 7; case 7: return $24r; + /* */ } return; } var $f = {$blk: intersect$1, $c: true, $r, $24r, _i, _i$1, _r$1, _r$2, _ref, _ref$1, r, rl, x, xl, y, yl, $s};return $f; + }; + $ptrType(termlist).prototype.intersect = function(...$args) { return this.$get().intersect(...$args); }; + termlist.prototype.equal = function equal$1(yl) { + var {$24r, _r$1, _r$2, _v, xl, yl, $s, $r, $c} = $restore(this, {yl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + _r$1 = xl.subsetOf(yl); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (!(_r$1)) { _v = false; $s = 1; continue s; } + _r$2 = yl.subsetOf(xl); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2; case 1: + $24r = _v; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: equal$1, $c: true, $r, $24r, _r$1, _r$2, _v, xl, yl, $s};return $f; + }; + $ptrType(termlist).prototype.equal = function(...$args) { return this.$get().equal(...$args); }; + termlist.prototype.includes = function includes$1(t) { + var {_i, _r$1, _ref, t, x, xl, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + _ref = xl; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = x.includes(t); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$1) { */ case 3: + $s = -1; return true; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: includes$1, $c: true, $r, _i, _r$1, _ref, t, x, xl, $s};return $f; + }; + $ptrType(termlist).prototype.includes = function(...$args) { return this.$get().includes(...$args); }; + termlist.prototype.supersetOf = function supersetOf(y) { + var {_i, _r$1, _ref, x, xl, y, $s, $r, $c} = $restore(this, {y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + _ref = xl; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = y.subsetOf(x); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$1) { */ case 3: + $s = -1; return true; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: supersetOf, $c: true, $r, _i, _r$1, _ref, x, xl, y, $s};return $f; + }; + $ptrType(termlist).prototype.supersetOf = function(...$args) { return this.$get().supersetOf(...$args); }; + termlist.prototype.subsetOf = function subsetOf$2(yl) { + var {_i, _r$1, _ref, x, xl, yl, $s, $r, $c} = $restore(this, {yl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + if (yl.isEmpty()) { + $s = -1; return xl.isEmpty(); + } + _ref = xl; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = yl.supersetOf(x); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r$1) { */ case 3: + $s = -1; return false; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return true; + /* */ } return; } var $f = {$blk: subsetOf$2, $c: true, $r, _i, _r$1, _ref, x, xl, yl, $s};return $f; + }; + $ptrType(termlist).prototype.subsetOf = function(...$args) { return this.$get().subsetOf(...$args); }; + makeSubstMap = function makeSubstMap$1(tpars, targs) { + var {_i, _key, _ref, i, proj, targs, tpar, tpars, x, $s, $r, $c} = $restore(this, {tpars, targs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = assert(tpars.$length === targs.$length); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + proj = (x = tpars.$length, ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : new $global.Map())); + _ref = tpars; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + tpar = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _key = tpar; (proj || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$14.keyFor(_key), { k: _key, v: ((i < 0 || i >= targs.$length) ? ($throwRuntimeError("index out of range"), undefined) : targs.$array[targs.$offset + i]) }); + _i++; + } + $s = -1; return proj; + /* */ } return; } var $f = {$blk: makeSubstMap$1, $c: true, $r, _i, _key, _ref, i, proj, targs, tpar, tpars, x, $s};return $f; + }; + makeRenameMap = function makeRenameMap$1(from, to) { + var {_i, _key, _ref, from, i, proj, to, tpar, x, $s, $r, $c} = $restore(this, {from, to}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = assert(from.$length === to.$length); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + proj = (x = from.$length, ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : new $global.Map())); + _ref = from; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + tpar = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _key = tpar; (proj || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$14.keyFor(_key), { k: _key, v: ((i < 0 || i >= to.$length) ? ($throwRuntimeError("index out of range"), undefined) : to.$array[to.$offset + i]) }); + _i++; + } + $s = -1; return proj; + /* */ } return; } var $f = {$blk: makeRenameMap$1, $c: true, $r, _i, _key, _ref, from, i, proj, to, tpar, x, $s};return $f; + }; + substMap.prototype.empty = function empty() { + var m; + m = this.$val; + return (m ? m.size : 0) === 0; + }; + $ptrType(substMap).prototype.empty = function(...$args) { return new substMap(this.$get()).empty(...$args); }; + substMap.prototype.lookup = function lookup(tpar) { + var _entry, m, t, tpar; + m = this.$val; + t = (_entry = $mapIndex(m,ptrType$14.keyFor(tpar)), _entry !== undefined ? _entry.v : $ifaceNil); + if (!($interfaceIsEqual(t, $ifaceNil))) { + return t; + } + return tpar; + }; + $ptrType(substMap).prototype.lookup = function(...$args) { return new substMap(this.$get()).lookup(...$args); }; + $ptrType(Checker).prototype.subst = function subst(pos, typ$2, smap, expanding, ctxt) { + var {$24r, _r$1, _ref, check, ctxt, expanding, pos, smap, subst$1, t, t$1, typ$2, $s, $r, $c} = $restore(this, {pos, typ$2, smap, expanding, ctxt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = assert(!(expanding === ptrType$9.nil) || !(ctxt === ptrType$51.nil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (new substMap(smap).empty()) { + $s = -1; return typ$2; + } + _ref = typ$2; + if ($assertType(_ref, ptrType$8, true)[1]) { + t = _ref.$val; + $s = -1; return typ$2; + } else if ($assertType(_ref, ptrType$14, true)[1]) { + t$1 = _ref.$val; + $s = -1; return new substMap(smap).lookup(t$1); + } + subst$1 = new subster.ptr(pos, smap, check, expanding, ctxt); + _r$1 = subst$1.typ(typ$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: subst, $c: true, $r, $24r, _r$1, _ref, check, ctxt, expanding, pos, smap, subst$1, t, t$1, typ$2, $s};return $f; + }; + $ptrType(subster).prototype.typ = function typ$2(typ$3) { + var {$24r, $24r$1, _i, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, base, copied, copied$1, dump, ecopied, elem, elem$1, elem$2, elem$3, embeddeds, fields, i, iface$1, key, mcopied, methods, n, newTArgs, new_targ, orig, params, recv, results, s, subst$1, t, t$1, t$10, t$11, t$12, t$13, t$14, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, targ, terms, typ$3, $s, $deferred, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + subst$1 = [subst$1]; + subst$1[0] = this; + _ref = typ$3; + /* */ if (_ref === $ifaceNil) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$29, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_ref === $ifaceNil) { */ case 1: + t = _ref; + $panic(new $String("nil typ")); + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 2: + t$1 = _ref.$val; + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 3: + t$2 = _ref.$val; + _r$1 = subst$1[0].typOrNil(t$2.elem); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + elem = _r$1; + if (!($interfaceIsEqual(elem, t$2.elem))) { + $s = -1; return new Array.ptr(t$2.len, elem); + } + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 4: + t$3 = _ref.$val; + _r$2 = subst$1[0].typOrNil(t$3.elem); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + elem$1 = _r$2; + if (!($interfaceIsEqual(elem$1, t$3.elem))) { + $s = -1; return new Slice.ptr(elem$1); + } + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 5: + t$4 = _ref.$val; + _r$3 = subst$1[0].varList(t$4.fields); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + fields = _tuple[0]; + copied = _tuple[1]; + if (copied) { + s = new Struct.ptr(fields, t$4.tags); + s.markComplete(); + $s = -1; return s; + } + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 6: + t$5 = _ref.$val; + _r$4 = subst$1[0].typ(t$5.base); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + base = _r$4; + if (!($interfaceIsEqual(base, t$5.base))) { + $s = -1; return new Pointer.ptr(base); + } + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 7: + t$6 = _ref.$val; + _r$5 = subst$1[0].tuple(t$6); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r = _r$5; + $s = 22; case 22: return $24r; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 8: + t$7 = _ref.$val; + recv = t$7.recv; + _r$6 = subst$1[0].tuple(t$7.params); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + params = _r$6; + _r$7 = subst$1[0].tuple(t$7.results); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + results = _r$7; + if (!(params === t$7.params) || !(results === t$7.results)) { + $s = -1; return new Signature.ptr(t$7.rparams, t$7.tparams, ptrType.nil, recv, params, results, t$7.variadic); + } + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 9: + t$8 = _ref.$val; + _r$8 = subst$1[0].termlist(t$8.terms); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tuple$1 = _r$8; + terms = _tuple$1[0]; + copied$1 = _tuple$1[1]; + if (copied$1) { + $s = -1; return new Union.ptr(terms); + } + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 10: + t$9 = _ref.$val; + _r$9 = subst$1[0].funcList(t$9.methods); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple$2 = _r$9; + methods = _tuple$2[0]; + mcopied = _tuple$2[1]; + _r$10 = subst$1[0].typeList(t$9.embeddeds); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$3 = _r$10; + embeddeds = _tuple$3[0]; + ecopied = _tuple$3[1]; + if (mcopied || ecopied) { + iface$1 = subst$1[0].check.newInterface(); + iface$1.embeddeds = embeddeds; + iface$1.implicit = t$9.implicit; + iface$1.complete = t$9.complete; + _tuple$4 = replaceRecvType(methods, t$9, iface$1); + iface$1.methods = _tuple$4[0]; + $s = -1; return iface$1; + } + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 11: + t$10 = _ref.$val; + _r$11 = subst$1[0].typ(t$10.key); /* */ $s = 28; case 28: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + key = _r$11; + _r$12 = subst$1[0].typ(t$10.elem); /* */ $s = 29; case 29: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + elem$2 = _r$12; + if (!($interfaceIsEqual(key, t$10.key)) || !($interfaceIsEqual(elem$2, t$10.elem))) { + $s = -1; return new Map.ptr(key, elem$2); + } + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$29, true)[1]) { */ case 12: + t$11 = _ref.$val; + _r$13 = subst$1[0].typ(t$11.elem); /* */ $s = 30; case 30: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + elem$3 = _r$13; + if (!($interfaceIsEqual(elem$3, t$11.elem))) { + $s = -1; return new Chan.ptr(t$11.dir, elem$3); + } + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 13: + t$12 = _ref.$val; + dump = (function(subst$1) { return function subster·typ·func1(param, param$1) { + var param, param$1; + }; })(subst$1); + /* */ if (!(subst$1[0].check === ptrType$5.nil) && false) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (!(subst$1[0].check === ptrType$5.nil) && false) { */ case 31: + subst$1[0].check.indent = subst$1[0].check.indent + (1) >> 0; + $deferred.push([(function(subst$1) { return function subster·typ·func2() { + subst$1[0].check.indent = subst$1[0].check.indent - (1) >> 0; + }; })(subst$1), []]); + dump = (function(subst$1) { return function subster·typ·func3(format, args) { + var {args, format, $s, $r, $c} = $restore(this, {format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = subst$1[0].check.trace(subst$1[0].pos, format, args); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: subster·typ·func3, $c: true, $r, args, format, $s};return $f; + }; })(subst$1); + /* } */ case 32: + orig = t$12.Origin(); + _r$14 = orig.TypeParams(); /* */ $s = 33; case 33: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _r$15 = _r$14.Len(); /* */ $s = 34; case 34: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + n = _r$15; + /* */ if (n === 0) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (n === 0) { */ case 35: + $r = dump(">>> %s is not parameterized", new sliceType$6([t$12])); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return t$12; + /* } */ case 36: + newTArgs = sliceType$2.nil; + if (!((t$12.TypeArgs().Len() === n))) { + $s = -1; return (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + } + $r = dump(">>> %s already instantiated", new sliceType$6([t$12])); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$1 = t$12.TypeArgs().list(); + _i = 0; + /* while (true) { */ case 39: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 40; continue; } + i = _i; + targ = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + $r = dump(">>> %d targ = %s", new sliceType$6([new $Int(i), targ])); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$16 = subst$1[0].typ(targ); /* */ $s = 42; case 42: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + new_targ = _r$16; + /* */ if (!($interfaceIsEqual(new_targ, targ))) { $s = 43; continue; } + /* */ $s = 44; continue; + /* if (!($interfaceIsEqual(new_targ, targ))) { */ case 43: + $r = dump(">>> substituted %d targ %s => %s", new sliceType$6([new $Int(i), targ, new_targ])); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (newTArgs === sliceType$2.nil) { + newTArgs = $makeSlice(sliceType$2, n); + $copySlice(newTArgs, t$12.TypeArgs().list()); + } + ((i < 0 || i >= newTArgs.$length) ? ($throwRuntimeError("index out of range"), undefined) : newTArgs.$array[newTArgs.$offset + i] = new_targ); + /* } */ case 44: + _i++; + $s = 39; continue; + case 40: + /* */ if (newTArgs === sliceType$2.nil) { $s = 46; continue; } + /* */ $s = 47; continue; + /* if (newTArgs === sliceType$2.nil) { */ case 46: + $r = dump(">>> nothing to substitute in %s", new sliceType$6([t$12])); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return t$12; + /* } */ case 47: + _r$17 = subst$1[0].check.instance(subst$1[0].pos, orig, newTArgs, subst$1[0].expanding, subst$1[0].ctxt); /* */ $s = 49; case 49: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + $24r$1 = _r$17; + $s = 50; case 50: return $24r$1; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 14: + t$13 = _ref.$val; + $s = -1; return new substMap(subst$1[0].smap).lookup(t$13); + /* } else { */ case 15: + t$14 = _ref; + unreachable(); + /* } */ case 16: + $s = -1; return typ$3; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: typ$2, $c: true, $r, $24r, $24r$1, _i, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, base, copied, copied$1, dump, ecopied, elem, elem$1, elem$2, elem$3, embeddeds, fields, i, iface$1, key, mcopied, methods, n, newTArgs, new_targ, orig, params, recv, results, s, subst$1, t, t$1, t$10, t$11, t$12, t$13, t$14, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, targ, terms, typ$3, $s, $deferred};return $f; } } + }; + $ptrType(subster).prototype.typOrNil = function typOrNil(typ$3) { + var {$24r, _r$1, subst$1, typ$3, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst$1 = this; + if ($interfaceIsEqual(typ$3, $ifaceNil)) { + $s = -1; return (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + } + _r$1 = subst$1.typ(typ$3); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: typOrNil, $c: true, $r, $24r, _r$1, subst$1, typ$3, $s};return $f; + }; + $ptrType(subster).prototype.var_ = function var_(v) { + var {_r$1, subst$1, typ$3, v, $s, $r, $c} = $restore(this, {v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst$1 = this; + /* */ if (!(v === ptrType$16.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(v === ptrType$16.nil)) { */ case 1: + _r$1 = subst$1.typ(v.object.typ); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ$3 = _r$1; + if (!($interfaceIsEqual(typ$3, v.object.typ))) { + $s = -1; return substVar(v, typ$3); + } + /* } */ case 2: + $s = -1; return v; + /* */ } return; } var $f = {$blk: var_, $c: true, $r, _r$1, subst$1, typ$3, v, $s};return $f; + }; + substVar = function substVar$1(v, typ$3) { + var copy, typ$3, v; + copy = $clone(v, Var); + copy.object.typ = typ$3; + copy.origin = v.Origin(); + return copy; + }; + $ptrType(subster).prototype.tuple = function tuple$1(t) { + var {_r$1, _tuple, copied, subst$1, t, vars, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst$1 = this; + /* */ if (!(t === ptrType$15.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(t === ptrType$15.nil)) { */ case 1: + _r$1 = subst$1.varList(t.vars); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + vars = _tuple[0]; + copied = _tuple[1]; + if (copied) { + $s = -1; return new Tuple.ptr(vars); + } + /* } */ case 2: + $s = -1; return t; + /* */ } return; } var $f = {$blk: tuple$1, $c: true, $r, _r$1, _tuple, copied, subst$1, t, vars, $s};return $f; + }; + $ptrType(subster).prototype.varList = function varList(in$1) { + var {_i, _r$1, _ref, copied, i, in$1, new$1, out, subst$1, v, w, $s, $r, $c} = $restore(this, {in$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = sliceType$10.nil; + copied = false; + subst$1 = this; + out = in$1; + _ref = in$1; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = subst$1.var_(v); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + w = _r$1; + if (!(w === v)) { + if (!copied) { + new$1 = $makeSlice(sliceType$10, in$1.$length); + $copySlice(new$1, out); + out = new$1; + copied = true; + } + ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = w); + } + _i++; + $s = 1; continue; + case 2: + $s = -1; return [out, copied]; + /* */ } return; } var $f = {$blk: varList, $c: true, $r, _i, _r$1, _ref, copied, i, in$1, new$1, out, subst$1, v, w, $s};return $f; + }; + $ptrType(subster).prototype.func_ = function func_(f) { + var {_r$1, f, subst$1, typ$3, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst$1 = this; + /* */ if (!(f === ptrType$2.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(f === ptrType$2.nil)) { */ case 1: + _r$1 = subst$1.typ(f.object.typ); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ$3 = _r$1; + if (!($interfaceIsEqual(typ$3, f.object.typ))) { + $s = -1; return substFunc(f, typ$3); + } + /* } */ case 2: + $s = -1; return f; + /* */ } return; } var $f = {$blk: func_, $c: true, $r, _r$1, f, subst$1, typ$3, $s};return $f; + }; + substFunc = function substFunc$1(f, typ$3) { + var copy, f, typ$3; + copy = $clone(f, Func); + copy.object.typ = typ$3; + copy.origin = f.Origin(); + return copy; + }; + $ptrType(subster).prototype.funcList = function funcList(in$1) { + var {_i, _r$1, _ref, copied, f, g, i, in$1, new$1, out, subst$1, $s, $r, $c} = $restore(this, {in$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = sliceType.nil; + copied = false; + subst$1 = this; + out = in$1; + _ref = in$1; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = subst$1.func_(f); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + g = _r$1; + if (!(g === f)) { + if (!copied) { + new$1 = $makeSlice(sliceType, in$1.$length); + $copySlice(new$1, out); + out = new$1; + copied = true; + } + ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = g); + } + _i++; + $s = 1; continue; + case 2: + $s = -1; return [out, copied]; + /* */ } return; } var $f = {$blk: funcList, $c: true, $r, _i, _r$1, _ref, copied, f, g, i, in$1, new$1, out, subst$1, $s};return $f; + }; + $ptrType(subster).prototype.typeList = function typeList$2(in$1) { + var {_i, _r$1, _ref, copied, i, in$1, new$1, out, subst$1, t, u, $s, $r, $c} = $restore(this, {in$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = sliceType$2.nil; + copied = false; + subst$1 = this; + out = in$1; + _ref = in$1; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = subst$1.typ(t); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + u = _r$1; + if (!($interfaceIsEqual(u, t))) { + if (!copied) { + new$1 = $makeSlice(sliceType$2, in$1.$length); + $copySlice(new$1, out); + out = new$1; + copied = true; + } + ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = u); + } + _i++; + $s = 1; continue; + case 2: + $s = -1; return [out, copied]; + /* */ } return; } var $f = {$blk: typeList$2, $c: true, $r, _i, _r$1, _ref, copied, i, in$1, new$1, out, subst$1, t, u, $s};return $f; + }; + $ptrType(subster).prototype.termlist = function termlist$1(in$1) { + var {_i, _r$1, _ref, copied, i, in$1, new$1, out, subst$1, t, u, $s, $r, $c} = $restore(this, {in$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = sliceType$12.nil; + copied = false; + subst$1 = this; + out = in$1; + _ref = in$1; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = subst$1.typ(t.typ); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + u = _r$1; + if (!($interfaceIsEqual(u, t.typ))) { + if (!copied) { + new$1 = $makeSlice(sliceType$12, in$1.$length); + $copySlice(new$1, out); + out = new$1; + copied = true; + } + ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = NewTerm(t.tilde, u)); + } + _i++; + $s = 1; continue; + case 2: + $s = -1; return [out, copied]; + /* */ } return; } var $f = {$blk: termlist$1, $c: true, $r, _i, _r$1, _ref, copied, i, in$1, new$1, out, subst$1, t, u, $s};return $f; + }; + replaceRecvType = function replaceRecvType$1(in$1, old, new$1) { + var _i, _ref, copied, i, in$1, method, new$1, newsig, old, out, sig; + out = sliceType.nil; + copied = false; + out = in$1; + _ref = in$1; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + newsig = [newsig]; + i = _i; + method = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + sig = $assertType(method.object.Type(), ptrType$27); + if (!(sig.recv === ptrType$16.nil) && $interfaceIsEqual(sig.recv.object.Type(), old)) { + if (!copied) { + out = $makeSlice(sliceType, in$1.$length); + $copySlice(out, in$1); + copied = true; + } + newsig[0] = $clone(sig, Signature); + newsig[0].recv = substVar(sig.recv, new$1); + ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = substFunc(method, newsig[0])); + } + _i++; + } + return [out, copied]; + }; + NewStruct = function NewStruct$1(fields, tags) { + var {_i, _r$1, _ref, _v, f, fields, fset, fset$24ptr, s, tags, $s, $r, $c} = $restore(this, {fields, tags}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fset = false; + _ref = fields; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(!(f.object.name === "_"))) { _v = false; $s = 5; continue s; } + _r$1 = (fset$24ptr || (fset$24ptr = new ptrType$54(function() { return fset; }, function($v) { fset = $v; }))).insert(f); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = !($interfaceIsEqual(_r$1, $ifaceNil)); case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + $panic(new $String("multiple fields with the same name")); + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + if (tags.$length > fields.$length) { + $panic(new $String("more tags than fields")); + } + s = new Struct.ptr(fields, tags); + s.markComplete(); + $s = -1; return s; + /* */ } return; } var $f = {$blk: NewStruct$1, $c: true, $r, _i, _r$1, _ref, _v, f, fields, fset, fset$24ptr, s, tags, $s};return $f; + }; + $pkg.NewStruct = NewStruct; + $ptrType(Struct).prototype.NumFields = function NumFields() { + var s; + s = this; + return s.fields.$length; + }; + $ptrType(Struct).prototype.Field = function Field(i) { + var i, s, x; + s = this; + return (x = s.fields, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(Struct).prototype.Tag = function Tag(i) { + var i, s, x; + s = this; + if (i < s.tags.$length) { + return (x = s.tags, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + } + return ""; + }; + $ptrType(Struct).prototype.Underlying = function Underlying$3() { + var t; + t = this; + return t; + }; + $ptrType(Struct).prototype.String = function String$8() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$8, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(Struct).prototype.markComplete = function markComplete() { + var s; + s = this; + if (s.fields === sliceType$10.nil) { + s.fields = $makeSlice(sliceType$10, 0); + } + }; + $ptrType(Checker).prototype.structType = function structType$2(styp, e) { + var {_i, _i$1, _r$1, _r$2, _r$3, _ref, _ref$1, add, addInvalid, check, e, embeddedPos, embeddedTyp, f, fields, fset, list$2, name, name$1, pos, styp, tag, tags, typ$3, $s, $r, $c} = $restore(this, {styp, e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + add = [add]; + check = [check]; + fields = [fields]; + fset = [fset]; + tag = [tag]; + tags = [tags]; + typ$3 = [typ$3]; + check[0] = this; + list$2 = e.Fields; + if (list$2 === ptrType$49.nil) { + styp.markComplete(); + $s = -1; return; + } + fields[0] = sliceType$10.nil; + tags[0] = sliceType$5.nil; + fset[0] = false; + typ$3[0] = $ifaceNil; + tag[0] = ""; + add[0] = (function(add, check, fields, fset, tag, tags, typ$3) { return function Checker·structType·func1(ident$1, embedded, pos) { + var {_r$1, _v, embedded, fld, ident$1, name, pos, $s, $r, $c} = $restore(this, {ident$1, embedded, pos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(tag[0] === "") && tags[0] === sliceType$5.nil) { + tags[0] = $makeSlice(sliceType$5, fields[0].$length); + } + if (!(tags[0] === sliceType$5.nil)) { + tags[0] = $append(tags[0], tag[0]); + } + name = ident$1.Name; + fld = NewField(pos, check[0].pkg, name, typ$3[0], embedded); + if (name === "_") { _v = true; $s = 3; continue s; } + _r$1 = check[0].declareInSet((fset.$ptr || (fset.$ptr = new ptrType$54(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, fset))), pos, fld); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + fields[0] = $append(fields[0], fld); + $r = check[0].recordDef(ident$1, fld); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·structType·func1, $c: true, $r, _r$1, _v, embedded, fld, ident$1, name, pos, $s};return $f; + }; })(add, check, fields, fset, tag, tags, typ$3); + addInvalid = (function(add, check, fields, fset, tag, tags, typ$3) { return function Checker·structType·func2(ident$1, pos) { + var {ident$1, pos, $s, $r, $c} = $restore(this, {ident$1, pos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + typ$3[0] = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + tag[0] = ""; + $r = add[0](ident$1, true, pos); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·structType·func2, $c: true, $r, ident$1, pos, $s};return $f; + }; })(add, check, fields, fset, tag, tags, typ$3); + _ref = list$2.List; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + embeddedPos = [embeddedPos]; + embeddedTyp = [embeddedTyp]; + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = check[0].varType(f.Type); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ$3[0] = _r$1; + _r$2 = check[0].tag(f.Tag); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + tag[0] = _r$2; + /* */ if (f.Names.$length > 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (f.Names.$length > 0) { */ case 5: + _ref$1 = f.Names; + _i$1 = 0; + /* while (true) { */ case 8: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 9; continue; } + name = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + $r = add[0](name, false, name.Pos()); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 8; continue; + case 9: + $s = 7; continue; + /* } else { */ case 6: + _r$3 = f.Type.Pos(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + pos = _r$3; + name$1 = embeddedFieldIdent(f.Type); + /* */ if (name$1 === ptrType$30.nil) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (name$1 === ptrType$30.nil) { */ case 12: + $r = check[0].errorf(f.Type, -1, "embedded field type %s has no name", new sliceType$6([f.Type])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + name$1 = ast.NewIdent("_"); + name$1.NamePos = pos; + $r = addInvalid(name$1, pos); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue; */ $s = 1; continue; + /* } */ case 13: + $r = add[0](name$1, true, pos); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + embeddedTyp[0] = typ$3[0]; + embeddedPos[0] = f.Type; + check[0].later((function(add, check, embeddedPos, embeddedTyp, fields, fset, tag, tags, typ$3) { return function Checker·structType·func3() { + var {_r$4, _ref$2, _tuple, isPtr, t, u, u$1, u$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = deref(embeddedTyp[0]); + t = _tuple[0]; + isPtr = _tuple[1]; + _r$4 = under(t); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _ref$2 = _r$4; + /* */ if ($assertType(_ref$2, ptrType$8, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref$2, ptrType$26, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref$2, ptrType$13, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* switch (0) { default: if ($assertType(_ref$2, ptrType$8, true)[1]) { */ case 2: + u = _ref$2.$val; + if ($interfaceIsEqual(t, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + $s = -1; return; + } + /* */ if (u.kind === 18) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (u.kind === 18) { */ case 6: + $r = check[0].error(embeddedPos[0], 30, "embedded field type cannot be unsafe.Pointer"); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + $s = 5; continue; + /* } else if ($assertType(_ref$2, ptrType$26, true)[1]) { */ case 3: + u$1 = _ref$2.$val; + $r = check[0].error(embeddedPos[0], 30, "embedded field type cannot be a pointer"); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + /* } else if ($assertType(_ref$2, ptrType$13, true)[1]) { */ case 4: + u$2 = _ref$2.$val; + /* */ if (isTypeParam(t)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (isTypeParam(t)) { */ case 10: + $r = check[0].error(embeddedPos[0], 144, "embedded field type cannot be a (pointer to a) type parameter"); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 5; continue; + /* } */ case 11: + /* */ if (isPtr) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (isPtr) { */ case 13: + $r = check[0].error(embeddedPos[0], 30, "embedded field type cannot be a pointer to an interface"); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 14: + /* } } */ case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·structType·func3, $c: true, $r, _r$4, _ref$2, _tuple, isPtr, t, u, u$1, u$2, $s};return $f; + }; })(add, check, embeddedPos, embeddedTyp, fields, fset, tag, tags, typ$3)).describef(embeddedPos[0], "check embedded type %s", new sliceType$6([embeddedTyp[0]])); + /* } */ case 7: + _i++; + $s = 1; continue; + case 2: + styp.fields = fields[0]; + styp.tags = tags[0]; + styp.markComplete(); + $s = -1; return; + /* */ } return; } var $f = {$blk: structType$2, $c: true, $r, _i, _i$1, _r$1, _r$2, _r$3, _ref, _ref$1, add, addInvalid, check, e, embeddedPos, embeddedTyp, f, fields, fset, list$2, name, name$1, pos, styp, tag, tags, typ$3, $s};return $f; + }; + embeddedFieldIdent = function embeddedFieldIdent$1(e) { + var _ref, _tuple, e, e$1, e$2, e$3, e$4, e$5, ok; + _ref = e; + if ($assertType(_ref, ptrType$30, true)[1]) { + e$1 = _ref.$val; + return e$1; + } else if ($assertType(_ref, ptrType$43, true)[1]) { + e$2 = _ref.$val; + _tuple = $assertType(e$2.X, ptrType$43, true); + ok = _tuple[1]; + if (!ok) { + return embeddedFieldIdent(e$2.X); + } + } else if ($assertType(_ref, ptrType$36, true)[1]) { + e$3 = _ref.$val; + return e$3.Sel; + } else if ($assertType(_ref, ptrType$37, true)[1]) { + e$4 = _ref.$val; + return embeddedFieldIdent(e$4.X); + } else if ($assertType(_ref, ptrType$38, true)[1]) { + e$5 = _ref.$val; + return embeddedFieldIdent(e$5.X); + } + return ptrType$30.nil; + }; + $ptrType(Checker).prototype.declareInSet = function declareInSet(oset, pos, obj) { + var {_arg, _arg$1, _r$1, _r$2, alt, check, obj, oset, pos, $s, $r, $c} = $restore(this, {oset, pos, obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = oset.insert(obj); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + alt = _r$1; + /* */ if (!($interfaceIsEqual(alt, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(alt, $ifaceNil))) { */ case 2: + _arg = new atPos(((pos >> 0))); + _r$2 = obj.Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$2); + $r = check.errorf(_arg, 10, "%s redeclared", new sliceType$6([_arg$1])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.reportAltDecl(alt); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: declareInSet, $c: true, $r, _arg, _arg$1, _r$1, _r$2, alt, check, obj, oset, pos, $s};return $f; + }; + $ptrType(Checker).prototype.tag = function tag(t) { + var {_tuple, check, err, t, val, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + /* */ if (!(t === ptrType$57.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(t === ptrType$57.nil)) { */ case 1: + if (t.Kind === 9) { + _tuple = strconv.Unquote(t.Value); + val = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil)) { + $s = -1; return val; + } + } + $r = check.errorf(t, -1, "incorrect tag syntax: %q", new sliceType$6([new $String(t.Value)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return ""; + /* */ } return; } var $f = {$blk: tag, $c: true, $r, _tuple, check, err, t, val, $s};return $f; + }; + $ptrType(Checker).prototype.funcBody = function funcBody(decl$1, name, sig, body, iota) { + var {_r$1, body, check, decl$1, iota, name, sig, $s, $deferred, $r, $c} = $restore(this, {decl$1, name, sig, body, iota}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + check[0] = this; + if (check[0].conf.IgnoreFuncBodies) { + $panic(new $String("function body not ignored")); + } + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = check[0].trace(body.Pos(), "-- %s: %s", new sliceType$6([new $String(name), sig])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + sig.scope.pos = body.Pos(); + _r$1 = body.End(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + sig.scope.end = _r$1; + $deferred.push([(function(check) { return function Checker·funcBody·func1(env, indent) { + var env, indent; + environment.copy(check[0].environment, env); + check[0].indent = indent; + }; })(check), [$clone(check[0].environment, environment), check[0].indent]]); + environment.copy(check[0].environment, new environment.ptr(decl$1, sig.scope, 0, iota, $ifaceNil, false, sig, false, false, false)); + check[0].indent = 0; + $r = check[0].stmtList(0, body.List); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (check[0].environment.hasLabel) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (check[0].environment.hasLabel) { */ case 6: + $r = check[0].labels(body); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + /* */ if (sig.results.Len() > 0 && !check[0].isTerminating(body, "")) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (sig.results.Len() > 0 && !check[0].isTerminating(body, "")) { */ case 9: + $r = check[0].error(new atPos(((body.Rbrace >> 0))), 102, "missing return"); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + $r = check[0].usage(sig.scope); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: funcBody, $c: true, $r, _r$1, body, check, decl$1, iota, name, sig, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.usage = function usage(scope) { + var {_entry, _i, _i$1, _i$2, _key, _keys, _r$1, _ref, _ref$1, _ref$2, _size, _tuple, check, elem, name, scope, scope$1, unused, v, v$1, $s, $r, $c} = $restore(this, {scope}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + unused = [unused]; + check = this; + unused[0] = sliceType$10.nil; + _ref = scope.elems; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 1: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 2; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 1; continue; + } + name = _entry.k; + elem = _entry.v; + _r$1 = resolve(name, elem); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + elem = _r$1; + _tuple = $assertType(elem, ptrType$16, true); + v = _tuple[0]; + if (!(v === ptrType$16.nil) && !v.used) { + unused[0] = $append(unused[0], v); + } + _i++; + $s = 1; continue; + case 2: + $r = sort.Slice(unused[0], (function(unused) { return function Checker·usage·func1(i, j) { + var i, j; + return ((i < 0 || i >= unused[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : unused[0].$array[unused[0].$offset + i]).object.pos < ((j < 0 || j >= unused[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : unused[0].$array[unused[0].$offset + j]).object.pos; + }; })(unused)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$1 = unused[0]; + _i$1 = 0; + /* while (true) { */ case 5: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 6; continue; } + v$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + $r = check.softErrorf(v$1, 101, "%s declared and not used", new sliceType$6([new $String(v$1.object.name)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 5; continue; + case 6: + _ref$2 = scope.children; + _i$2 = 0; + /* while (true) { */ case 8: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 9; continue; } + scope$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + /* */ if (!scope$1.isFunc) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!scope$1.isFunc) { */ case 10: + $r = check.usage(scope$1); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + _i$2++; + $s = 8; continue; + case 9: + $s = -1; return; + /* */ } return; } var $f = {$blk: usage, $c: true, $r, _entry, _i, _i$1, _i$2, _key, _keys, _r$1, _ref, _ref$1, _ref$2, _size, _tuple, check, elem, name, scope, scope$1, unused, v, v$1, $s};return $f; + }; + $ptrType(Checker).prototype.simpleStmt = function simpleStmt(s) { + var {check, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + /* */ if (!($interfaceIsEqual(s, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(s, $ifaceNil))) { */ case 1: + $r = check.stmt(0, s); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: simpleStmt, $c: true, $r, check, s, $s};return $f; + }; + trimTrailingEmptyStmts = function trimTrailingEmptyStmts$1(list$2) { + var _tuple, i, list$2, ok, x; + i = list$2.$length; + while (true) { + if (!(i > 0)) { break; } + _tuple = $assertType((x = i - 1 >> 0, ((x < 0 || x >= list$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : list$2.$array[list$2.$offset + x])), ptrType$59, true); + ok = _tuple[1]; + if (!ok) { + return $subslice(list$2, 0, i); + } + i = i - (1) >> 0; + } + return sliceType$17.nil; + }; + $ptrType(Checker).prototype.stmtList = function stmtList(ctxt, list$2) { + var {_i, _ref, check, ctxt, i, inner, inner$1, list$2, ok, s, $s, $r, $c} = $restore(this, {ctxt, list$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + ok = !((((ctxt & 4) >>> 0) === 0)); + inner = (ctxt & ~4) >>> 0; + list$2 = trimTrailingEmptyStmts(list$2); + _ref = list$2; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + inner$1 = inner; + if (ok && ((i + 1 >> 0) === list$2.$length)) { + inner$1 = (inner$1 | (4)) >>> 0; + } + $r = check.stmt(inner$1, s); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: stmtList, $c: true, $r, _i, _ref, check, ctxt, i, inner, inner$1, list$2, ok, s, $s};return $f; + }; + $ptrType(Checker).prototype.multipleDefaults = function multipleDefaults(list$2) { + var {_arg, _arg$1, _i, _r$1, _r$2, _ref, _ref$1, c, c$1, c$2, check, d, first, list$2, s, x, $s, $r, $c} = $restore(this, {list$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + first = $ifaceNil; + _ref = list$2; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + d = $ifaceNil; + _ref$1 = s; + /* */ if ($assertType(_ref$1, ptrType$60, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref$1, ptrType$61, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref$1, ptrType$60, true)[1]) { */ case 3: + c = _ref$1.$val; + if (c.List.$length === 0) { + d = s; + } + $s = 6; continue; + /* } else if ($assertType(_ref$1, ptrType$61, true)[1]) { */ case 4: + c$1 = _ref$1.$val; + if ($interfaceIsEqual(c$1.Comm, $ifaceNil)) { + d = s; + } + $s = 6; continue; + /* } else { */ case 5: + c$2 = _ref$1; + $r = check.error(s, -1, "case/communication clause expected"); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + /* */ if (!($interfaceIsEqual(d, $ifaceNil))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!($interfaceIsEqual(d, $ifaceNil))) { */ case 8: + /* */ if (!($interfaceIsEqual(first, $ifaceNil))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!($interfaceIsEqual(first, $ifaceNil))) { */ case 10: + _arg = d; + _r$1 = first.Pos(); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = check.fset.Position(_r$1); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = (x = _r$2, new x.constructor.elem(x)); + $r = check.errorf(_arg, 114, "multiple defaults (first at %s)", new sliceType$6([_arg$1])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 12; continue; + /* } else { */ case 11: + first = d; + /* } */ case 12: + /* } */ case 9: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: multipleDefaults, $c: true, $r, _arg, _arg$1, _i, _r$1, _r$2, _ref, _ref$1, c, c$1, c$2, check, d, first, list$2, s, x, $s};return $f; + }; + $ptrType(Checker).prototype.openScope = function openScope(node, comment) { + var {_arg, _arg$1, _arg$2, _arg$3, _r$1, _r$2, _r$3, check, comment, node, scope, $s, $r, $c} = $restore(this, {node, comment}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _arg = check.environment.scope; + _r$1 = node.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = _r$1; + _r$2 = node.End(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$2 = _r$2; + _arg$3 = comment; + _r$3 = NewScope(_arg, _arg$1, _arg$2, _arg$3); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + scope = _r$3; + $r = check.recordScope(node, scope); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check.environment.scope = scope; + $s = -1; return; + /* */ } return; } var $f = {$blk: openScope, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _r$1, _r$2, _r$3, check, comment, node, scope, $s};return $f; + }; + $ptrType(Checker).prototype.closeScope = function closeScope() { + var check; + check = this; + check.environment.scope = check.environment.scope.Parent(); + }; + assignOp = function assignOp$1(op) { + var op; + if (23 <= op && op <= 33) { + return op + -11 >> 0; + } + return 0; + }; + $ptrType(Checker).prototype.suspendedCall = function suspendedCall(keyword, call) { + var {_1, _r$1, call, check, code, keyword, msg, x, $s, $r, $c} = $restore(this, {keyword, call}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = [x]; + check = this; + x[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + msg = ""; + code = 0; + _r$1 = check.rawExpr(x[0], call, $ifaceNil, false); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _1 = _r$1; + if (_1 === (0)) { + msg = "requires function call, not conversion"; + code = 129; + if (keyword === "go") { + code = 130; + } + } else if (_1 === (1)) { + msg = "discards result of"; + code = 128; + } else if (_1 === (2)) { + $s = -1; return; + } else { + unreachable(); + } + case 1: + $r = check.errorf(x[0], code, "%s %s %s", new sliceType$6([new $String(keyword), new $String(msg), x[0]])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: suspendedCall, $c: true, $r, _1, _r$1, call, check, code, keyword, msg, x, $s};return $f; + }; + goVal = function goVal$1(val) { + var {$24r, _1, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, ok, ok$1, ok$2, val, x, x$1, x$2, $s, $r, $c} = $restore(this, {val}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(val, $ifaceNil)) { + $s = -1; return $ifaceNil; + } + _r$1 = val.Kind(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _1 = _r$1; + /* */ if (_1 === (3)) { $s = 3; continue; } + /* */ if (_1 === (4)) { $s = 4; continue; } + /* */ if (_1 === (2)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (3)) { */ case 3: + _r$2 = constant.Int64Val(val); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + x = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return x; + } + _r$3 = constant.Uint64Val(val); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = _r$3; + x$1 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + $s = -1; return x$1; + } + $s = 6; continue; + /* } else if (_1 === (4)) { */ case 4: + _r$4 = constant.Float64Val(val); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$2 = _r$4; + x$2 = _tuple$2[0]; + ok$2 = _tuple$2[1]; + if (ok$2) { + $s = -1; return new $Float64(x$2); + } + $s = 6; continue; + /* } else if (_1 === (2)) { */ case 5: + _r$5 = constant.StringVal(val); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r = new $String(_r$5); + $s = 11; case 11: return $24r; + /* } */ case 6: + case 1: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: goVal$1, $c: true, $r, $24r, _1, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, ok, ok$1, ok$2, val, x, x$1, x$2, $s};return $f; + }; + $ptrType(Checker).prototype.caseValues = function caseValues(x, values, seen) { + var {_entry, _entry$1, _i, _i$1, _key, _r$1, _r$2, _r$3, _ref, _ref$1, check, e, res, seen, v, val, values, vt, x, $s, $r, $c} = $restore(this, {x, values, seen}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _ref = values; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + res = [res]; + v = [v]; + e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + v[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.expr(v[0], e); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if ((x.mode === 0) || (v[0].mode === 0)) { + _i++; + /* continue L; */ $s = 1; continue s; + } + $r = check.convertUntyped(v[0], x.typ); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (v[0].mode === 0) { + _i++; + /* continue L; */ $s = 1; continue s; + } + res[0] = $clone(v[0], operand); + $r = check.comparison(res[0], x, 39, true); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (res[0].mode === 0) { + _i++; + /* continue L; */ $s = 1; continue s; + } + if (!((v[0].mode === 4))) { + _i++; + /* continue L; */ $s = 1; continue s; + } + _r$1 = goVal(v[0].val); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + val = _r$1; + /* */ if (!($interfaceIsEqual(val, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(val, $ifaceNil))) { */ case 7: + _ref$1 = (_entry = $mapIndex(seen,$emptyInterface.keyFor(val)), _entry !== undefined ? _entry.v : sliceType$18.nil); + _i$1 = 0; + /* while (true) { */ case 9: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 10; continue; } + vt = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), valueType); + _r$2 = Identical(v[0].typ, vt.typ); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_r$2) { */ case 11: + $r = check.errorf(v[0], 113, "duplicate case %s in expression switch", new sliceType$6([v[0]])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.error(new atPos(((vt.pos >> 0))), 113, "\tprevious case"); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue L; */ $s = 1; continue s; + /* } */ case 12: + _i$1++; + $s = 9; continue; + case 10: + _r$3 = v[0].Pos(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _key = val; (seen || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key), { k: _key, v: $append((_entry$1 = $mapIndex(seen,$emptyInterface.keyFor(val)), _entry$1 !== undefined ? _entry$1.v : sliceType$18.nil), new valueType.ptr(_r$3, v[0].typ)) }); + /* } */ case 8: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: caseValues, $c: true, $r, _entry, _entry$1, _i, _i$1, _key, _r$1, _r$2, _r$3, _ref, _ref$1, check, e, res, seen, v, val, values, vt, x, $s};return $f; + }; + $ptrType(Checker).prototype.isNil = function isNil(e) { + var {_r$1, _tuple, _tuple$1, check, e, name, ok, $s, $r, $c} = $restore(this, {e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _tuple = $assertType(unparen(e), ptrType$30, true); + name = _tuple[0]; + /* */ if (!(name === ptrType$30.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(name === ptrType$30.nil)) { */ case 1: + _r$1 = check.environment.lookup(name.Name); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$1, ptrType$33, true); + ok = _tuple$1[1]; + $s = -1; return ok; + /* } */ case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: isNil, $c: true, $r, _r$1, _tuple, _tuple$1, check, e, name, ok, $s};return $f; + }; + $ptrType(Checker).prototype.caseTypes = function caseTypes(x, types$1, seen) { + var {T, Ts, _entry, _i, _i$1, _key, _key$1, _keys, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _size, _v, _v$1, check, dummy, e, other, seen, t, types$1, x, $s, $r, $c} = $restore(this, {x, types$1, seen}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dummy = [dummy]; + T = $ifaceNil; + check = this; + dummy[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + _ref = types$1; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = check.isNil(e); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$1) { */ case 3: + T = $ifaceNil; + $r = check.expr(dummy[0], e); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + /* } else { */ case 4: + _r$2 = check.varType(e); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + T = _r$2; + if ($interfaceIsEqual(T, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + _i++; + /* continue L; */ $s = 1; continue s; + } + /* } */ case 5: + _ref$1 = seen; + _i$1 = 0; + _keys = _ref$1 ? _ref$1.keys() : undefined; + _size = _ref$1 ? _ref$1.size : 0; + /* while (true) { */ case 9: + /* if (!(_i$1 < _size)) { break; } */ if(!(_i$1 < _size)) { $s = 10; continue; } + _key = _keys.next().value; + _entry = _ref$1.get(_key); + if (_entry === undefined) { + _i$1++; + /* continue; */ $s = 9; continue; + } + t = _entry.k; + other = _entry.v; + if ($interfaceIsEqual(T, $ifaceNil) && $interfaceIsEqual(t, $ifaceNil)) { _v = true; $s = 13; continue s; } + if (!(!($interfaceIsEqual(T, $ifaceNil)) && !($interfaceIsEqual(t, $ifaceNil)))) { _v$1 = false; $s = 14; continue s; } + _r$3 = Identical(T, t); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v$1 = _r$3; case 14: + _v = _v$1; case 13: + /* */ if (_v) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_v) { */ case 11: + Ts = "nil"; + /* */ if (!($interfaceIsEqual(T, $ifaceNil))) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!($interfaceIsEqual(T, $ifaceNil))) { */ case 16: + _r$4 = TypeString(T, $methodVal(check, "qualifier")); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + Ts = _r$4; + /* } */ case 17: + $r = check.errorf(e, 113, "duplicate case %s in type switch", new sliceType$6([new $String(Ts)])); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.error(other, 113, "\tprevious case"); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue L; */ $s = 1; continue s; + /* } */ case 12: + _i$1++; + $s = 9; continue; + case 10: + _key$1 = T; (seen || $throwRuntimeError("assignment to entry in nil map")).set(Type.keyFor(_key$1), { k: _key$1, v: e }); + /* */ if (!(x === ptrType$62.nil) && !($interfaceIsEqual(T, $ifaceNil))) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!(x === ptrType$62.nil) && !($interfaceIsEqual(T, $ifaceNil))) { */ case 21: + $r = check.typeAssertion(e, x, T, true); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 22: + _i++; + $s = 1; continue; + case 2: + $s = -1; return T; + /* */ } return; } var $f = {$blk: caseTypes, $c: true, $r, T, Ts, _entry, _i, _i$1, _key, _key$1, _keys, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _size, _v, _v$1, check, dummy, e, other, seen, t, types$1, x, $s};return $f; + }; + $ptrType(Checker).prototype.stmt = function stmt(ctxt, s) { + var {T, Y, _1, _2, _3, _4, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$10, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, _v$2, _v$3, alt, c, cause, ch, check, clause, clause$1, clause$2, code, ctxt, expr, guard, guard$1, guard$2, i, i$1, i$2, ident$1, inner, inner$1, key, kind, lhs, lhs$1, lhs$2, lhs$3, lhs$4, lhsVars, msg, msg$1, n, name, obj, obj$1, obj$2, obj$3, ok, op, op$1, res, rhs, rhs$1, rhs$2, s, s$1, s$10, s$11, s$12, s$13, s$14, s$15, s$16, s$17, s$18, s$19, s$2, s$20, s$21, s$22, s$23, s$24, s$25, s$3, s$4, s$5, s$6, s$7, s$8, s$9, scopePos, scopePos$1, seen, seen$1, sx, t, t$1, typ$3, typ$4, u, u$1, uch, used, v, val, val$1, valid, vars, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $deferred, $r, $c} = $restore(this, {ctxt, s}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + ch = [ch]; + check = [check]; + val = [val]; + x = [x]; + x$1 = [x$1]; + x$2 = [x$2]; + x$3 = [x$3]; + x$4 = [x$4]; + x$5 = [x$5]; + x$6 = [x$6]; + x$7 = [x$7]; + check[0] = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $deferred.push([(function(ch, check, val, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7) { return function Checker·stmt·func1(scope) { + var {p, scope, $s, $r, $c} = $restore(this, {scope}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = $recover(); + if (!($interfaceIsEqual(p, $ifaceNil))) { + $panic(p); + } + $r = assert(scope === check[0].environment.scope); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·stmt·func1, $c: true, $r, p, scope, $s};return $f; + }; })(ch, check, val, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7), [check[0].environment.scope]]); + /* } */ case 2: + $deferred.push([$methodVal(check[0], "processDelayed"), [check[0].delayed.$length]]); + inner = (ctxt & ~28) >>> 0; + _ref = s; + /* */ if ($assertType(_ref, ptrType$63, true)[1] || $assertType(_ref, ptrType$59, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$64, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$65, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$66, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$67, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$68, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$69, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$70, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$71, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$72, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$73, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$74, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$75, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, ptrType$76, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, ptrType$77, true)[1]) { $s = 17; continue; } + /* */ if ($assertType(_ref, ptrType$78, true)[1]) { $s = 18; continue; } + /* */ if ($assertType(_ref, ptrType$79, true)[1]) { $s = 19; continue; } + /* */ if ($assertType(_ref, ptrType$80, true)[1]) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if ($assertType(_ref, ptrType$63, true)[1] || $assertType(_ref, ptrType$59, true)[1]) { */ case 3: + s$1 = _ref; + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$64, true)[1]) { */ case 4: + s$2 = _ref.$val; + $r = check[0].declStmt(s$2.Decl); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$65, true)[1]) { */ case 5: + s$3 = _ref.$val; + check[0].environment.hasLabel = true; + $r = check[0].stmt(ctxt, s$3.Stmt); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$66, true)[1]) { */ case 6: + s$4 = _ref.$val; + x[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + _r$1 = check[0].rawExpr(x[0], s$4.X, $ifaceNil, false); /* */ $s = 25; case 25: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + kind = _r$1; + msg = ""; + code = 0; + _1 = x[0].mode; + /* */ if (_1 === (2)) { $s = 27; continue; } + /* */ if (_1 === (3)) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (_1 === (2)) { */ case 27: + msg = "must be called"; + code = 82; + $s = 30; continue; + /* } else if (_1 === (3)) { */ case 28: + msg = "is not an expression"; + code = 42; + $s = 30; continue; + /* } else { */ case 29: + /* */ if (kind === 2) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (kind === 2) { */ case 31: + $s = 33; case 33: return; + /* } */ case 32: + msg = "is not used"; + code = 100; + /* } */ case 30: + case 26: + $r = check[0].errorf(x[0], code, "%s %s", new sliceType$6([x[0], new $String(msg)])); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$67, true)[1]) { */ case 7: + s$5 = _ref.$val; + _tmp = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + _tmp$1 = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + ch[0] = $clone(_tmp, operand); + val[0] = $clone(_tmp$1, operand); + $r = check[0].expr(ch[0], s$5.Chan); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].expr(val[0], s$5.Value); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if ((ch[0].mode === 0) || (val[0].mode === 0)) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if ((ch[0].mode === 0) || (val[0].mode === 0)) { */ case 37: + $s = 39; case 39: return; + /* } */ case 38: + _r$2 = coreType(ch[0].typ); /* */ $s = 40; case 40: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + u = _r$2; + /* */ if ($interfaceIsEqual(u, $ifaceNil)) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if ($interfaceIsEqual(u, $ifaceNil)) { */ case 41: + _r$3 = inNode(s$5, s$5.Arrow); /* */ $s = 43; case 43: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = check[0].errorf((x$8 = _r$3, new x$8.constructor.elem(x$8)), 59, "invalid operation: cannot send to %s: no core type", new sliceType$6([ch[0]])); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 45; case 45: return; + /* } */ case 42: + _tuple = $assertType(u, ptrType$29, true); + uch = _tuple[0]; + /* */ if (uch === ptrType$29.nil) { $s = 46; continue; } + /* */ $s = 47; continue; + /* if (uch === ptrType$29.nil) { */ case 46: + _r$4 = inNode(s$5, s$5.Arrow); /* */ $s = 48; case 48: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $r = check[0].errorf((x$9 = _r$4, new x$9.constructor.elem(x$9)), 59, "invalid operation: cannot send to non-channel %s", new sliceType$6([ch[0]])); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 50; case 50: return; + /* } */ case 47: + /* */ if (uch.dir === 2) { $s = 51; continue; } + /* */ $s = 52; continue; + /* if (uch.dir === 2) { */ case 51: + _r$5 = inNode(s$5, s$5.Arrow); /* */ $s = 53; case 53: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $r = check[0].errorf((x$10 = _r$5, new x$10.constructor.elem(x$10)), 59, "invalid operation: cannot send to receive-only channel %s", new sliceType$6([ch[0]])); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 55; case 55: return; + /* } */ case 52: + $r = check[0].assignment(val[0], uch.elem, "send"); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$68, true)[1]) { */ case 8: + s$6 = _ref.$val; + op = 0; + _2 = s$6.Tok; + /* */ if (_2 === (37)) { $s = 58; continue; } + /* */ if (_2 === (38)) { $s = 59; continue; } + /* */ $s = 60; continue; + /* if (_2 === (37)) { */ case 58: + op = 12; + $s = 61; continue; + /* } else if (_2 === (38)) { */ case 59: + op = 13; + $s = 61; continue; + /* } else { */ case 60: + _r$6 = inNode(s$6, s$6.TokPos); /* */ $s = 62; case 62: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $r = check[0].errorf((x$11 = _r$6, new x$11.constructor.elem(x$11)), -1, "unknown inc/dec operation %s", new sliceType$6([new token.Token(s$6.Tok)])); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 64; case 64: return; + /* } */ case 61: + case 57: + x$1[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check[0].expr(x$1[0], s$6.X); /* */ $s = 65; case 65: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (x$1[0].mode === 0) { $s = 66; continue; } + /* */ $s = 67; continue; + /* if (x$1[0].mode === 0) { */ case 66: + $s = 68; case 68: return; + /* } */ case 67: + _r$7 = allNumeric(x$1[0].typ); /* */ $s = 71; case 71: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (!_r$7) { $s = 69; continue; } + /* */ $s = 70; continue; + /* if (!_r$7) { */ case 69: + $r = check[0].errorf(s$6.X, 48, "invalid operation: %s%s (non-numeric type %s)", new sliceType$6([s$6.X, new token.Token(s$6.Tok), x$1[0].typ])); /* */ $s = 72; case 72: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 73; case 73: return; + /* } */ case 70: + _r$8 = s$6.X.Pos(); /* */ $s = 74; case 74: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + Y = new ast.BasicLit.ptr(_r$8, 5, "1"); + $r = check[0].binary(x$1[0], $ifaceNil, s$6.X, Y, op, s$6.TokPos); /* */ $s = 75; case 75: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (x$1[0].mode === 0) { $s = 76; continue; } + /* */ $s = 77; continue; + /* if (x$1[0].mode === 0) { */ case 76: + $s = 78; case 78: return; + /* } */ case 77: + _r$9 = check[0].assignVar(s$6.X, x$1[0]); /* */ $s = 79; case 79: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$9; + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$69, true)[1]) { */ case 9: + s$7 = _ref.$val; + _3 = s$7.Tok; + /* */ if ((_3 === (42)) || (_3 === (47))) { $s = 81; continue; } + /* */ $s = 82; continue; + /* if ((_3 === (42)) || (_3 === (47))) { */ case 81: + /* */ if (s$7.Lhs.$length === 0) { $s = 84; continue; } + /* */ $s = 85; continue; + /* if (s$7.Lhs.$length === 0) { */ case 84: + $r = check[0].error(s$7, -1, "missing lhs in assignment"); /* */ $s = 86; case 86: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 87; case 87: return; + /* } */ case 85: + /* */ if (s$7.Tok === 47) { $s = 88; continue; } + /* */ $s = 89; continue; + /* if (s$7.Tok === 47) { */ case 88: + _r$10 = inNode(s$7, s$7.TokPos); /* */ $s = 91; case 91: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $r = check[0].shortVarDecl((x$12 = _r$10, new x$12.constructor.elem(x$12)), s$7.Lhs, s$7.Rhs); /* */ $s = 92; case 92: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 90; continue; + /* } else { */ case 89: + $r = check[0].assignVars(s$7.Lhs, s$7.Rhs); /* */ $s = 93; case 93: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 90: + $s = 83; continue; + /* } else { */ case 82: + /* */ if (!((s$7.Lhs.$length === 1)) || !((s$7.Rhs.$length === 1))) { $s = 94; continue; } + /* */ $s = 95; continue; + /* if (!((s$7.Lhs.$length === 1)) || !((s$7.Rhs.$length === 1))) { */ case 94: + _r$11 = inNode(s$7, s$7.TokPos); /* */ $s = 96; case 96: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $r = check[0].errorf((x$13 = _r$11, new x$13.constructor.elem(x$13)), 20, "assignment operation %s requires single-valued expressions", new sliceType$6([new token.Token(s$7.Tok)])); /* */ $s = 97; case 97: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 98; case 98: return; + /* } */ case 95: + op$1 = assignOp(s$7.Tok); + /* */ if (op$1 === 0) { $s = 99; continue; } + /* */ $s = 100; continue; + /* if (op$1 === 0) { */ case 99: + $r = check[0].errorf(new atPos(((s$7.TokPos >> 0))), -1, "unknown assignment operation %s", new sliceType$6([new token.Token(s$7.Tok)])); /* */ $s = 101; case 101: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 102; case 102: return; + /* } */ case 100: + x$2[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check[0].binary(x$2[0], $ifaceNil, (x$14 = s$7.Lhs, (0 >= x$14.$length ? ($throwRuntimeError("index out of range"), undefined) : x$14.$array[x$14.$offset + 0])), (x$15 = s$7.Rhs, (0 >= x$15.$length ? ($throwRuntimeError("index out of range"), undefined) : x$15.$array[x$15.$offset + 0])), op$1, s$7.TokPos); /* */ $s = 103; case 103: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (x$2[0].mode === 0) { $s = 104; continue; } + /* */ $s = 105; continue; + /* if (x$2[0].mode === 0) { */ case 104: + $s = 106; case 106: return; + /* } */ case 105: + _r$12 = check[0].assignVar((x$16 = s$7.Lhs, (0 >= x$16.$length ? ($throwRuntimeError("index out of range"), undefined) : x$16.$array[x$16.$offset + 0])), x$2[0]); /* */ $s = 107; case 107: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$12; + /* } */ case 83: + case 80: + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$70, true)[1]) { */ case 10: + s$8 = _ref.$val; + $r = check[0].suspendedCall("go", s$8.Call); /* */ $s = 108; case 108: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$71, true)[1]) { */ case 11: + s$9 = _ref.$val; + $r = check[0].suspendedCall("defer", s$9.Call); /* */ $s = 109; case 109: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$72, true)[1]) { */ case 12: + s$10 = _ref.$val; + res = check[0].environment.sig.results; + /* */ if ((s$10.Results.$length === 0) && res.Len() > 0 && !((x$17 = res.vars, (0 >= x$17.$length ? ($throwRuntimeError("index out of range"), undefined) : x$17.$array[x$17.$offset + 0])).object.name === "")) { $s = 110; continue; } + /* */ $s = 111; continue; + /* if ((s$10.Results.$length === 0) && res.Len() > 0 && !((x$17 = res.vars, (0 >= x$17.$length ? ($throwRuntimeError("index out of range"), undefined) : x$17.$array[x$17.$offset + 0])).object.name === "")) { */ case 110: + _ref$1 = res.vars; + _i = 0; + /* while (true) { */ case 113: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 114; continue; } + obj = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _r$13 = check[0].environment.lookup(obj.object.name); /* */ $s = 115; case 115: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + alt = _r$13; + /* */ if (!($interfaceIsEqual(alt, $ifaceNil)) && !($interfaceIsEqual(alt, obj))) { $s = 116; continue; } + /* */ $s = 117; continue; + /* if (!($interfaceIsEqual(alt, $ifaceNil)) && !($interfaceIsEqual(alt, obj))) { */ case 116: + $r = check[0].errorf(s$10, 104, "result parameter %s not in scope at return", new sliceType$6([new $String(obj.object.name)])); /* */ $s = 118; case 118: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].errorf(alt, 104, "\tinner declaration of %s", new sliceType$6([obj])); /* */ $s = 119; case 119: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 117: + _i++; + $s = 113; continue; + case 114: + $s = 112; continue; + /* } else { */ case 111: + lhs = sliceType$10.nil; + if (res.Len() > 0) { + lhs = res.vars; + } + $r = check[0].initVars(lhs, s$10.Results, s$10); /* */ $s = 120; case 120: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 112: + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$73, true)[1]) { */ case 13: + s$11 = _ref.$val; + /* */ if (!(s$11.Label === ptrType$30.nil)) { $s = 121; continue; } + /* */ $s = 122; continue; + /* if (!(s$11.Label === ptrType$30.nil)) { */ case 121: + check[0].environment.hasLabel = true; + $s = 123; case 123: return; + /* } */ case 122: + _4 = s$11.Tok; + /* */ if (_4 === (61)) { $s = 125; continue; } + /* */ if (_4 === (65)) { $s = 126; continue; } + /* */ if (_4 === (69)) { $s = 127; continue; } + /* */ $s = 128; continue; + /* if (_4 === (61)) { */ case 125: + /* */ if (((ctxt & 1) >>> 0) === 0) { $s = 130; continue; } + /* */ $s = 131; continue; + /* if (((ctxt & 1) >>> 0) === 0) { */ case 130: + $r = check[0].error(s$11, 110, "break not in for, switch, or select statement"); /* */ $s = 132; case 132: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 131: + $s = 129; continue; + /* } else if (_4 === (65)) { */ case 126: + /* */ if (((ctxt & 2) >>> 0) === 0) { $s = 133; continue; } + /* */ $s = 134; continue; + /* if (((ctxt & 2) >>> 0) === 0) { */ case 133: + $r = check[0].error(s$11, 111, "continue not in for statement"); /* */ $s = 135; case 135: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 134: + $s = 129; continue; + /* } else if (_4 === (69)) { */ case 127: + /* */ if (((ctxt & 4) >>> 0) === 0) { $s = 136; continue; } + /* */ $s = 137; continue; + /* if (((ctxt & 4) >>> 0) === 0) { */ case 136: + msg$1 = ""; + if (!((((ctxt & 8) >>> 0) === 0))) { + msg$1 = "cannot fallthrough final case in switch"; + } else if (!((((ctxt & 16) >>> 0) === 0))) { + msg$1 = "cannot fallthrough in type switch"; + } else { + msg$1 = "fallthrough statement out of place"; + } + $r = check[0].error(s$11, 112, msg$1); /* */ $s = 138; case 138: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 137: + $s = 129; continue; + /* } else { */ case 128: + $r = check[0].errorf(s$11, -1, "branch statement: %s", new sliceType$6([new token.Token(s$11.Tok)])); /* */ $s = 139; case 139: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 129: + case 124: + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$74, true)[1]) { */ case 14: + s$12 = _ref.$val; + $r = check[0].openScope(s$12, "block"); /* */ $s = 140; case 140: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(check[0], "closeScope"), []]); + $r = check[0].stmtList(inner, s$12.List); /* */ $s = 141; case 141: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$75, true)[1]) { */ case 15: + s$13 = _ref.$val; + $r = check[0].openScope(s$13, "if"); /* */ $s = 142; case 142: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(check[0], "closeScope"), []]); + $r = check[0].simpleStmt(s$13.Init); /* */ $s = 143; case 143: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x$3[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check[0].expr(x$3[0], s$13.Cond); /* */ $s = 144; case 144: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!(!((x$3[0].mode === 0)))) { _v = false; $s = 147; continue s; } + _r$14 = allBoolean(x$3[0].typ); /* */ $s = 148; case 148: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _v = !_r$14; case 147: + /* */ if (_v) { $s = 145; continue; } + /* */ $s = 146; continue; + /* if (_v) { */ case 145: + $r = check[0].error(s$13.Cond, 105, "non-boolean condition in if statement"); /* */ $s = 149; case 149: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 146: + $r = check[0].stmt(inner, s$13.Body); /* */ $s = 150; case 150: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$2 = s$13.Else; + /* */ if (_ref$2 === $ifaceNil || $assertType(_ref$2, ptrType$63, true)[1]) { $s = 151; continue; } + /* */ if ($assertType(_ref$2, ptrType$75, true)[1] || $assertType(_ref$2, ptrType$74, true)[1]) { $s = 152; continue; } + /* */ $s = 153; continue; + /* if (_ref$2 === $ifaceNil || $assertType(_ref$2, ptrType$63, true)[1]) { */ case 151: + $s = 154; continue; + /* } else if ($assertType(_ref$2, ptrType$75, true)[1] || $assertType(_ref$2, ptrType$74, true)[1]) { */ case 152: + $r = check[0].stmt(inner, s$13.Else); /* */ $s = 155; case 155: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 154; continue; + /* } else { */ case 153: + $r = check[0].error(s$13.Else, -1, "invalid else branch in if statement"); /* */ $s = 156; case 156: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 154: + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$76, true)[1]) { */ case 16: + s$14 = _ref.$val; + inner = (inner | (1)) >>> 0; + $r = check[0].openScope(s$14, "switch"); /* */ $s = 157; case 157: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(check[0], "closeScope"), []]); + $r = check[0].simpleStmt(s$14.Init); /* */ $s = 158; case 158: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x$4[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + /* */ if (!($interfaceIsEqual(s$14.Tag, $ifaceNil))) { $s = 159; continue; } + /* */ $s = 160; continue; + /* if (!($interfaceIsEqual(s$14.Tag, $ifaceNil))) { */ case 159: + $r = check[0].expr(x$4[0], s$14.Tag); /* */ $s = 162; case 162: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].assignment(x$4[0], $ifaceNil, "switch expression"); /* */ $s = 163; case 163: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!(!((x$4[0].mode === 0)))) { _v$2 = false; $s = 167; continue s; } + _r$15 = Comparable(x$4[0].typ); /* */ $s = 168; case 168: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _v$2 = !_r$15; case 167: + if (!(_v$2)) { _v$1 = false; $s = 166; continue s; } + _r$16 = hasNil(x$4[0].typ); /* */ $s = 169; case 169: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _v$1 = !_r$16; case 166: + /* */ if (_v$1) { $s = 164; continue; } + /* */ $s = 165; continue; + /* if (_v$1) { */ case 164: + $r = check[0].errorf(x$4[0], 117, "cannot switch on %s (%s is not comparable)", new sliceType$6([x$4[0], x$4[0].typ])); /* */ $s = 170; case 170: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x$4[0].mode = 0; + /* } */ case 165: + $s = 161; continue; + /* } else { */ case 160: + x$4[0].mode = 4; + x$4[0].typ = (1 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 1]); + x$4[0].val = constant.MakeBool(true); + x$4[0].expr = new ast.Ident.ptr(s$14.Body.Lbrace, "true", ptrType$81.nil); + /* } */ case 161: + $r = check[0].multipleDefaults(s$14.Body.List); /* */ $s = 171; case 171: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + seen = new $global.Map(); + _ref$3 = s$14.Body.List; + _i$1 = 0; + /* while (true) { */ case 172: + /* if (!(_i$1 < _ref$3.$length)) { break; } */ if(!(_i$1 < _ref$3.$length)) { $s = 173; continue; } + i = _i$1; + c = ((_i$1 < 0 || _i$1 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$1]); + _tuple$1 = $assertType(c, ptrType$60, true); + clause = _tuple$1[0]; + /* */ if (clause === ptrType$60.nil) { $s = 174; continue; } + /* */ $s = 175; continue; + /* if (clause === ptrType$60.nil) { */ case 174: + $r = check[0].error(c, -1, "incorrect expression switch case"); /* */ $s = 176; case 176: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + /* continue; */ $s = 172; continue; + /* } */ case 175: + $r = check[0].caseValues(x$4[0], clause.List, seen); /* */ $s = 177; case 177: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].openScope(clause, "case"); /* */ $s = 178; case 178: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + inner$1 = inner; + if ((i + 1 >> 0) < s$14.Body.List.$length) { + inner$1 = (inner$1 | (4)) >>> 0; + } else { + inner$1 = (inner$1 | (8)) >>> 0; + } + $r = check[0].stmtList(inner$1, clause.Body); /* */ $s = 179; case 179: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].closeScope(); + _i$1++; + $s = 172; continue; + case 173: + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$77, true)[1]) { */ case 17: + s$15 = _ref.$val; + inner = (inner | (17)) >>> 0; + $r = check[0].openScope(s$15, "type switch"); /* */ $s = 180; case 180: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(check[0], "closeScope"), []]); + $r = check[0].simpleStmt(s$15.Init); /* */ $s = 181; case 181: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + lhs$1 = ptrType$30.nil; + rhs = $ifaceNil; + _ref$4 = s$15.Assign; + /* */ if ($assertType(_ref$4, ptrType$66, true)[1]) { $s = 182; continue; } + /* */ if ($assertType(_ref$4, ptrType$69, true)[1]) { $s = 183; continue; } + /* */ $s = 184; continue; + /* if ($assertType(_ref$4, ptrType$66, true)[1]) { */ case 182: + guard = _ref$4.$val; + rhs = guard.X; + $s = 185; continue; + /* } else if ($assertType(_ref$4, ptrType$69, true)[1]) { */ case 183: + guard$1 = _ref$4.$val; + /* */ if (!((guard$1.Lhs.$length === 1)) || !((guard$1.Tok === 47)) || !((guard$1.Rhs.$length === 1))) { $s = 186; continue; } + /* */ $s = 187; continue; + /* if (!((guard$1.Lhs.$length === 1)) || !((guard$1.Tok === 47)) || !((guard$1.Rhs.$length === 1))) { */ case 186: + $r = check[0].error(s$15, -1, "incorrect form of type switch guard"); /* */ $s = 188; case 188: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 189; case 189: return; + /* } */ case 187: + _tuple$2 = $assertType((x$18 = guard$1.Lhs, (0 >= x$18.$length ? ($throwRuntimeError("index out of range"), undefined) : x$18.$array[x$18.$offset + 0])), ptrType$30, true); + lhs$1 = _tuple$2[0]; + /* */ if (lhs$1 === ptrType$30.nil) { $s = 190; continue; } + /* */ $s = 191; continue; + /* if (lhs$1 === ptrType$30.nil) { */ case 190: + $r = check[0].error(s$15, -1, "incorrect form of type switch guard"); /* */ $s = 192; case 192: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 193; case 193: return; + /* } */ case 191: + /* */ if (lhs$1.Name === "_") { $s = 194; continue; } + /* */ $s = 195; continue; + /* if (lhs$1.Name === "_") { */ case 194: + $r = check[0].softErrorf(lhs$1, 19, "no new variable on left side of :=", sliceType$6.nil); /* */ $s = 197; case 197: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + lhs$1 = ptrType$30.nil; + $s = 196; continue; + /* } else { */ case 195: + $r = check[0].recordDef(lhs$1, $ifaceNil); /* */ $s = 198; case 198: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 196: + rhs = (x$19 = guard$1.Rhs, (0 >= x$19.$length ? ($throwRuntimeError("index out of range"), undefined) : x$19.$array[x$19.$offset + 0])); + $s = 185; continue; + /* } else { */ case 184: + guard$2 = _ref$4; + $r = check[0].error(s$15, -1, "incorrect form of type switch guard"); /* */ $s = 199; case 199: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 200; case 200: return; + /* } */ case 185: + _tuple$3 = $assertType(rhs, ptrType$82, true); + expr = _tuple$3[0]; + /* */ if (expr === ptrType$82.nil || !($interfaceIsEqual(expr.Type, $ifaceNil))) { $s = 201; continue; } + /* */ $s = 202; continue; + /* if (expr === ptrType$82.nil || !($interfaceIsEqual(expr.Type, $ifaceNil))) { */ case 201: + $r = check[0].error(s$15, -1, "incorrect form of type switch guard"); /* */ $s = 203; case 203: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 204; case 204: return; + /* } */ case 202: + x$5[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check[0].expr(x$5[0], expr.X); /* */ $s = 205; case 205: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (x$5[0].mode === 0) { $s = 206; continue; } + /* */ $s = 207; continue; + /* if (x$5[0].mode === 0) { */ case 206: + $s = 208; case 208: return; + /* } */ case 207: + sx = ptrType$62.nil; + /* */ if (isTypeParam(x$5[0].typ)) { $s = 209; continue; } + /* */ $s = 210; continue; + /* if (isTypeParam(x$5[0].typ)) { */ case 209: + $r = check[0].errorf(x$5[0], 116, "cannot use type switch on type parameter value %s", new sliceType$6([x$5[0]])); /* */ $s = 212; case 212: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 211; continue; + /* } else { */ case 210: + _r$17 = under(x$5[0].typ); /* */ $s = 213; case 213: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _tuple$4 = $assertType(_r$17, ptrType$13, true); + ok = _tuple$4[1]; + /* */ if (ok) { $s = 214; continue; } + /* */ $s = 215; continue; + /* if (ok) { */ case 214: + sx = x$5[0]; + $s = 216; continue; + /* } else { */ case 215: + $r = check[0].errorf(x$5[0], 116, "%s is not an interface", new sliceType$6([x$5[0]])); /* */ $s = 217; case 217: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 216: + /* } */ case 211: + $r = check[0].multipleDefaults(s$15.Body.List); /* */ $s = 218; case 218: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + lhsVars = sliceType$10.nil; + seen$1 = new $global.Map(); + _ref$5 = s$15.Body.List; + _i$2 = 0; + /* while (true) { */ case 219: + /* if (!(_i$2 < _ref$5.$length)) { break; } */ if(!(_i$2 < _ref$5.$length)) { $s = 220; continue; } + s$20 = ((_i$2 < 0 || _i$2 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$2]); + _tuple$5 = $assertType(s$20, ptrType$60, true); + clause$1 = _tuple$5[0]; + /* */ if (clause$1 === ptrType$60.nil) { $s = 221; continue; } + /* */ $s = 222; continue; + /* if (clause$1 === ptrType$60.nil) { */ case 221: + $r = check[0].error(s$20, -1, "incorrect type switch case"); /* */ $s = 223; case 223: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + /* continue; */ $s = 219; continue; + /* } */ case 222: + _r$18 = check[0].caseTypes(sx, clause$1.List, seen$1); /* */ $s = 224; case 224: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + T = _r$18; + $r = check[0].openScope(clause$1, "case"); /* */ $s = 225; case 225: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(lhs$1 === ptrType$30.nil)) { $s = 226; continue; } + /* */ $s = 227; continue; + /* if (!(lhs$1 === ptrType$30.nil)) { */ case 226: + if (!((clause$1.List.$length === 1)) || $interfaceIsEqual(T, $ifaceNil)) { + T = x$5[0].typ; + } + obj$1 = NewVar(lhs$1.Pos(), check[0].pkg, lhs$1.Name, T); + scopePos = clause$1.Pos() + 7 >> 0; + n = clause$1.List.$length; + /* */ if (n > 0) { $s = 228; continue; } + /* */ $s = 229; continue; + /* if (n > 0) { */ case 228: + _r$19 = (x$20 = clause$1.List, x$21 = n - 1 >> 0, ((x$21 < 0 || x$21 >= x$20.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$20.$array[x$20.$offset + x$21])).End(); /* */ $s = 230; case 230: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + scopePos = _r$19; + /* } */ case 229: + $r = check[0].declare(check[0].environment.scope, ptrType$30.nil, obj$1, scopePos); /* */ $s = 231; case 231: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].recordImplicit(clause$1, obj$1); /* */ $s = 232; case 232: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + lhsVars = $append(lhsVars, obj$1); + /* } */ case 227: + $r = check[0].stmtList(inner, clause$1.Body); /* */ $s = 233; case 233: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].closeScope(); + _i$2++; + $s = 219; continue; + case 220: + /* */ if (!(lhs$1 === ptrType$30.nil)) { $s = 234; continue; } + /* */ $s = 235; continue; + /* if (!(lhs$1 === ptrType$30.nil)) { */ case 234: + used = false; + _ref$6 = lhsVars; + _i$3 = 0; + while (true) { + if (!(_i$3 < _ref$6.$length)) { break; } + v = ((_i$3 < 0 || _i$3 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$3]); + if (v.used) { + used = true; + } + v.used = true; + _i$3++; + } + /* */ if (!used) { $s = 236; continue; } + /* */ $s = 237; continue; + /* if (!used) { */ case 236: + $r = check[0].softErrorf(lhs$1, 101, "%s declared and not used", new sliceType$6([new $String(lhs$1.Name)])); /* */ $s = 238; case 238: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 237: + /* } */ case 235: + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$78, true)[1]) { */ case 18: + s$16 = _ref.$val; + inner = (inner | (1)) >>> 0; + $r = check[0].multipleDefaults(s$16.Body.List); /* */ $s = 239; case 239: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$7 = s$16.Body.List; + _i$4 = 0; + /* while (true) { */ case 240: + /* if (!(_i$4 < _ref$7.$length)) { break; } */ if(!(_i$4 < _ref$7.$length)) { $s = 241; continue; } + s$21 = ((_i$4 < 0 || _i$4 >= _ref$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$7.$array[_ref$7.$offset + _i$4]); + _tuple$6 = $assertType(s$21, ptrType$61, true); + clause$2 = _tuple$6[0]; + if (clause$2 === ptrType$61.nil) { + _i$4++; + /* continue; */ $s = 240; continue; + } + valid = false; + rhs$1 = $ifaceNil; + _ref$8 = clause$2.Comm; + if (_ref$8 === $ifaceNil || $assertType(_ref$8, ptrType$67, true)[1]) { + s$22 = _ref$8; + valid = true; + } else if ($assertType(_ref$8, ptrType$69, true)[1]) { + s$23 = _ref$8.$val; + if (s$23.Rhs.$length === 1) { + rhs$1 = (x$22 = s$23.Rhs, (0 >= x$22.$length ? ($throwRuntimeError("index out of range"), undefined) : x$22.$array[x$22.$offset + 0])); + } + } else if ($assertType(_ref$8, ptrType$66, true)[1]) { + s$24 = _ref$8.$val; + rhs$1 = s$24.X; + } + if (!($interfaceIsEqual(rhs$1, $ifaceNil))) { + _tuple$7 = $assertType(unparen(rhs$1), ptrType$20, true); + x$23 = _tuple$7[0]; + if (!(x$23 === ptrType$20.nil) && (x$23.Op === 36)) { + valid = true; + } + } + /* */ if (!valid) { $s = 242; continue; } + /* */ $s = 243; continue; + /* if (!valid) { */ case 242: + $r = check[0].error(clause$2.Comm, 118, "select case must be send or receive (possibly with assignment)"); /* */ $s = 244; case 244: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$4++; + /* continue; */ $s = 240; continue; + /* } */ case 243: + $r = check[0].openScope(s$21, "case"); /* */ $s = 245; case 245: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(clause$2.Comm, $ifaceNil))) { $s = 246; continue; } + /* */ $s = 247; continue; + /* if (!($interfaceIsEqual(clause$2.Comm, $ifaceNil))) { */ case 246: + $r = check[0].stmt(inner, clause$2.Comm); /* */ $s = 248; case 248: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 247: + $r = check[0].stmtList(inner, clause$2.Body); /* */ $s = 249; case 249: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].closeScope(); + _i$4++; + $s = 240; continue; + case 241: + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$79, true)[1]) { */ case 19: + s$17 = _ref.$val; + inner = (inner | (3)) >>> 0; + $r = check[0].openScope(s$17, "for"); /* */ $s = 250; case 250: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(check[0], "closeScope"), []]); + $r = check[0].simpleStmt(s$17.Init); /* */ $s = 251; case 251: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(s$17.Cond, $ifaceNil))) { $s = 252; continue; } + /* */ $s = 253; continue; + /* if (!($interfaceIsEqual(s$17.Cond, $ifaceNil))) { */ case 252: + x$6[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check[0].expr(x$6[0], s$17.Cond); /* */ $s = 254; case 254: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!(!((x$6[0].mode === 0)))) { _v$3 = false; $s = 257; continue s; } + _r$20 = allBoolean(x$6[0].typ); /* */ $s = 258; case 258: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _v$3 = !_r$20; case 257: + /* */ if (_v$3) { $s = 255; continue; } + /* */ $s = 256; continue; + /* if (_v$3) { */ case 255: + $r = check[0].error(s$17.Cond, 105, "non-boolean condition in for statement"); /* */ $s = 259; case 259: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 256: + /* } */ case 253: + $r = check[0].simpleStmt(s$17.Post); /* */ $s = 260; case 260: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple$8 = $assertType(s$17.Post, ptrType$69, true); + s$25 = _tuple$8[0]; + /* */ if (!(s$25 === ptrType$69.nil) && (s$25.Tok === 47)) { $s = 261; continue; } + /* */ $s = 262; continue; + /* if (!(s$25 === ptrType$69.nil) && (s$25.Tok === 47)) { */ case 261: + $r = check[0].softErrorf(s$25, 106, "cannot declare in post statement", sliceType$6.nil); /* */ $s = 263; case 263: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].use(s$25.Lhs); /* */ $s = 264; case 264: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 262: + $r = check[0].stmt(inner, s$17.Body); /* */ $s = 265; case 265: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$80, true)[1]) { */ case 20: + s$18 = _ref.$val; + inner = (inner | (3)) >>> 0; + x$7[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check[0].expr(x$7[0], s$18.X); /* */ $s = 266; case 266: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp$2 = $ifaceNil; + _tmp$3 = $ifaceNil; + key = _tmp$2; + val$1 = _tmp$3; + /* */ if (!((x$7[0].mode === 0))) { $s = 267; continue; } + /* */ $s = 268; continue; + /* if (!((x$7[0].mode === 0))) { */ case 267: + cause = ""; + _r$21 = coreType(x$7[0].typ); /* */ $s = 269; case 269: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + u$1 = _r$21; + _ref$9 = u$1; + /* */ if (_ref$9 === $ifaceNil) { $s = 270; continue; } + /* */ if ($assertType(_ref$9, ptrType$29, true)[1]) { $s = 271; continue; } + /* */ $s = 272; continue; + /* if (_ref$9 === $ifaceNil) { */ case 270: + t = _ref$9; + _r$22 = check[0].sprintf("%s has no core type", new sliceType$6([x$7[0].typ])); /* */ $s = 273; case 273: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + cause = _r$22; + $s = 272; continue; + /* } else if ($assertType(_ref$9, ptrType$29, true)[1]) { */ case 271: + t$1 = _ref$9.$val; + /* */ if (!($interfaceIsEqual(s$18.Value, $ifaceNil))) { $s = 274; continue; } + /* */ $s = 275; continue; + /* if (!($interfaceIsEqual(s$18.Value, $ifaceNil))) { */ case 274: + $r = check[0].softErrorf(s$18.Value, 108, "range over %s permits only one iteration variable", new sliceType$6([x$7[0]])); /* */ $s = 276; case 276: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 275: + if (t$1.dir === 1) { + cause = "receive from send-only channel"; + } + /* } */ case 272: + _r$23 = rangeKeyVal(u$1); /* */ $s = 277; case 277: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _tuple$9 = _r$23; + key = _tuple$9[0]; + val$1 = _tuple$9[1]; + /* */ if ($interfaceIsEqual(key, $ifaceNil) || !(cause === "")) { $s = 278; continue; } + /* */ $s = 279; continue; + /* if ($interfaceIsEqual(key, $ifaceNil) || !(cause === "")) { */ case 278: + /* */ if (cause === "") { $s = 280; continue; } + /* */ $s = 281; continue; + /* if (cause === "") { */ case 280: + $r = check[0].softErrorf(x$7[0], 109, "cannot range over %s", new sliceType$6([x$7[0]])); /* */ $s = 283; case 283: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 282; continue; + /* } else { */ case 281: + $r = check[0].softErrorf(x$7[0], 109, "cannot range over %s (%s)", new sliceType$6([x$7[0], new $String(cause)])); /* */ $s = 284; case 284: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 282: + /* } */ case 279: + /* } */ case 268: + $r = check[0].openScope(s$18, "range"); /* */ $s = 285; case 285: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(check[0], "closeScope"), []]); + lhs$2 = $toNativeArray($kindInterface, [s$18.Key, s$18.Value]); + rhs$2 = $toNativeArray($kindInterface, [key, val$1]); + /* */ if (s$18.Tok === 47) { $s = 286; continue; } + /* */ $s = 287; continue; + /* if (s$18.Tok === 47) { */ case 286: + vars = sliceType$10.nil; + _ref$10 = lhs$2; + _i$5 = 0; + /* while (true) { */ case 289: + /* if (!(_i$5 < 2)) { break; } */ if(!(_i$5 < 2)) { $s = 290; continue; } + i$1 = _i$5; + lhs$3 = ((_i$5 < 0 || _i$5 >= _ref$10.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$10[_i$5]); + if ($interfaceIsEqual(lhs$3, $ifaceNil)) { + _i$5++; + /* continue; */ $s = 289; continue; + } + obj$2 = ptrType$16.nil; + _tuple$10 = $assertType(lhs$3, ptrType$30, true); + ident$1 = _tuple$10[0]; + /* */ if (!(ident$1 === ptrType$30.nil)) { $s = 291; continue; } + /* */ $s = 292; continue; + /* if (!(ident$1 === ptrType$30.nil)) { */ case 291: + name = ident$1.Name; + obj$2 = NewVar(ident$1.Pos(), check[0].pkg, name, $ifaceNil); + $r = check[0].recordDef(ident$1, obj$2); /* */ $s = 294; case 294: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!(name === "_")) { + vars = $append(vars, obj$2); + } + $s = 293; continue; + /* } else { */ case 292: + $r = check[0].errorf(lhs$3, -1, "cannot declare %s", new sliceType$6([lhs$3])); /* */ $s = 295; case 295: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$24 = lhs$3.Pos(); /* */ $s = 296; case 296: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _r$25 = NewVar(_r$24, check[0].pkg, "_", $ifaceNil); /* */ $s = 297; case 297: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + obj$2 = _r$25; + /* } */ case 293: + typ$3 = ((i$1 < 0 || i$1 >= rhs$2.length) ? ($throwRuntimeError("index out of range"), undefined) : rhs$2[i$1]); + /* */ if (!($interfaceIsEqual(typ$3, $ifaceNil))) { $s = 298; continue; } + /* */ $s = 299; continue; + /* if (!($interfaceIsEqual(typ$3, $ifaceNil))) { */ case 298: + x$7[0].mode = 7; + x$7[0].expr = lhs$3; + x$7[0].typ = typ$3; + _r$26 = check[0].initVar(obj$2, x$7[0], "range clause"); /* */ $s = 301; case 301: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _r$26; + $s = 300; continue; + /* } else { */ case 299: + obj$2.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + obj$2.used = true; + /* } */ case 300: + _i$5++; + $s = 289; continue; + case 290: + /* */ if (vars.$length > 0) { $s = 302; continue; } + /* */ $s = 303; continue; + /* if (vars.$length > 0) { */ case 302: + scopePos$1 = s$18.Body.Pos(); + _ref$11 = vars; + _i$6 = 0; + /* while (true) { */ case 305: + /* if (!(_i$6 < _ref$11.$length)) { break; } */ if(!(_i$6 < _ref$11.$length)) { $s = 306; continue; } + obj$3 = ((_i$6 < 0 || _i$6 >= _ref$11.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$11.$array[_ref$11.$offset + _i$6]); + $r = check[0].declare(check[0].environment.scope, ptrType$30.nil, obj$3, scopePos$1); /* */ $s = 307; case 307: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$6++; + $s = 305; continue; + case 306: + $s = 304; continue; + /* } else { */ case 303: + _r$27 = inNode(s$18, s$18.TokPos); /* */ $s = 308; case 308: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + $r = check[0].error((x$24 = _r$27, new x$24.constructor.elem(x$24)), 19, "no new variables on left side of :="); /* */ $s = 309; case 309: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 304: + $s = 288; continue; + /* } else { */ case 287: + _ref$12 = lhs$2; + _i$7 = 0; + /* while (true) { */ case 310: + /* if (!(_i$7 < 2)) { break; } */ if(!(_i$7 < 2)) { $s = 311; continue; } + i$2 = _i$7; + lhs$4 = ((_i$7 < 0 || _i$7 >= _ref$12.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$12[_i$7]); + if ($interfaceIsEqual(lhs$4, $ifaceNil)) { + _i$7++; + /* continue; */ $s = 310; continue; + } + typ$4 = ((i$2 < 0 || i$2 >= rhs$2.length) ? ($throwRuntimeError("index out of range"), undefined) : rhs$2[i$2]); + /* */ if (!($interfaceIsEqual(typ$4, $ifaceNil))) { $s = 312; continue; } + /* */ $s = 313; continue; + /* if (!($interfaceIsEqual(typ$4, $ifaceNil))) { */ case 312: + x$7[0].mode = 7; + x$7[0].expr = lhs$4; + x$7[0].typ = typ$4; + _r$28 = check[0].assignVar(lhs$4, x$7[0]); /* */ $s = 314; case 314: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _r$28; + /* } */ case 313: + _i$7++; + $s = 310; continue; + case 311: + /* } */ case 288: + $r = check[0].stmt(inner, s$18.Body); /* */ $s = 315; case 315: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else { */ case 21: + s$19 = _ref; + $r = check[0].error(s$19, -1, "invalid statement"); /* */ $s = 316; case 316: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 22: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: stmt, $c: true, $r, T, Y, _1, _2, _3, _4, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$10, _ref$11, _ref$12, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$10, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, _v$2, _v$3, alt, c, cause, ch, check, clause, clause$1, clause$2, code, ctxt, expr, guard, guard$1, guard$2, i, i$1, i$2, ident$1, inner, inner$1, key, kind, lhs, lhs$1, lhs$2, lhs$3, lhs$4, lhsVars, msg, msg$1, n, name, obj, obj$1, obj$2, obj$3, ok, op, op$1, res, rhs, rhs$1, rhs$2, s, s$1, s$10, s$11, s$12, s$13, s$14, s$15, s$16, s$17, s$18, s$19, s$2, s$20, s$21, s$22, s$23, s$24, s$25, s$3, s$4, s$5, s$6, s$7, s$8, s$9, scopePos, scopePos$1, seen, seen$1, sx, t, t$1, typ$3, typ$4, u, u$1, uch, used, v, val, val$1, valid, vars, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $deferred};return $f; } } + }; + rangeKeyVal = function rangeKeyVal$1(typ$3) { + var {_r$1, _r$2, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, key, typ$3, typ$4, typ$5, typ$6, typ$7, typ$8, val, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + key = $ifaceNil; + val = $ifaceNil; + _r$1 = arrayPtrDeref(typ$3); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$29, true)[1]) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 2: + typ$4 = _ref.$val; + _r$2 = isString(typ$4); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_r$2) { */ case 8: + _tmp = (2 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 2]); + _tmp$1 = universeRune; + key = _tmp; + val = _tmp$1; + $s = -1; return [key, val]; + /* } */ case 9: + $s = 7; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 3: + typ$5 = _ref.$val; + _tmp$2 = (2 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 2]); + _tmp$3 = typ$5.elem; + key = _tmp$2; + val = _tmp$3; + $s = -1; return [key, val]; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 4: + typ$6 = _ref.$val; + _tmp$4 = (2 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 2]); + _tmp$5 = typ$6.elem; + key = _tmp$4; + val = _tmp$5; + $s = -1; return [key, val]; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 5: + typ$7 = _ref.$val; + _tmp$6 = typ$7.key; + _tmp$7 = typ$7.elem; + key = _tmp$6; + val = _tmp$7; + $s = -1; return [key, val]; + /* } else if ($assertType(_ref, ptrType$29, true)[1]) { */ case 6: + typ$8 = _ref.$val; + _tmp$8 = typ$8.elem; + _tmp$9 = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + key = _tmp$8; + val = _tmp$9; + $s = -1; return [key, val]; + /* } */ case 7: + $s = -1; return [key, val]; + /* */ } return; } var $f = {$blk: rangeKeyVal$1, $c: true, $r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, key, typ$3, typ$4, typ$5, typ$6, typ$7, typ$8, val, $s};return $f; + }; + NewSlice = function NewSlice$1(elem) { + var elem; + return new Slice.ptr(elem); + }; + $pkg.NewSlice = NewSlice; + $ptrType(Slice).prototype.Elem = function Elem() { + var s; + s = this; + return s.elem; + }; + $ptrType(Slice).prototype.Underlying = function Underlying$4() { + var t; + t = this; + return t; + }; + $ptrType(Slice).prototype.String = function String$9() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$9, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(StdSizes).prototype.Alignof = function Alignof(T) { + var {$24r, T, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, a, a$1, f, max, s, t, t$1, t$2, t$3, t$4, x, $s, $r, $c} = $restore(this, {T}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r$1 = under(T); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1] || $assertType(_ref, ptrType$13, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1] || $assertType(_ref, ptrType$12, true)[1]) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ($assertType(_ref, ptrType$10, true)[1]) { */ case 2: + t = _ref.$val; + _r$2 = s.Alignof(t.elem); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 9; case 9: return $24r; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 3: + t$1 = _ref.$val; + if ((t$1.fields.$length === 0) && isSyncAtomicAlign64(T)) { + $s = -1; return new $Int64(0, 8); + } + max = new $Int64(0, 1); + _ref$1 = t$1.fields; + _i = 0; + /* while (true) { */ case 10: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 11; continue; } + f = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _r$3 = s.Alignof(f.object.typ); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + a = _r$3; + if ((a.$high > max.$high || (a.$high === max.$high && a.$low > max.$low))) { + max = a; + } + _i++; + $s = 10; continue; + case 11: + $s = -1; return max; + /* } else if ($assertType(_ref, ptrType$25, true)[1] || $assertType(_ref, ptrType$13, true)[1]) { */ case 4: + t$2 = _ref; + $r = assert(!isTypeParam(T)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return s.WordSize; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 5: + t$3 = _ref.$val; + if (!(((t$3.Info() & 32) === 0))) { + $s = -1; return s.WordSize; + } + $s = 7; continue; + /* } else if ($assertType(_ref, ptrType$14, true)[1] || $assertType(_ref, ptrType$12, true)[1]) { */ case 6: + t$4 = _ref; + unreachable(); + /* } */ case 7: + _r$4 = s.Sizeof(T); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + a$1 = _r$4; + if ((a$1.$high < 0 || (a$1.$high === 0 && a$1.$low < 1))) { + $s = -1; return new $Int64(0, 1); + } + _r$5 = isComplex(T); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (_r$5) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (_r$5) { */ case 15: + a$1 = $div64(a$1, (new $Int64(0, 2)), false); + /* } */ case 16: + if ((x = s.MaxAlign, (a$1.$high > x.$high || (a$1.$high === x.$high && a$1.$low > x.$low)))) { + $s = -1; return s.MaxAlign; + } + $s = -1; return a$1; + /* */ } return; } var $f = {$blk: Alignof, $c: true, $r, $24r, T, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, a, a$1, f, max, s, t, t$1, t$2, t$3, t$4, x, $s};return $f; + }; + isSyncAtomicAlign64 = function isSyncAtomicAlign64$1(T) { + var T, _tuple, named, obj, ok; + _tuple = $assertType(T, ptrType$9, true); + named = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + return false; + } + obj = named.Obj(); + return obj.object.Name() === "align64" && !(obj.object.Pkg() === ptrType$1.nil) && (obj.object.Pkg().Path() === "sync/atomic" || obj.object.Pkg().Path() === "runtime/internal/atomic"); + }; + $ptrType(StdSizes).prototype.Offsetsof = function Offsetsof(fields) { + var {_i, _r$1, _r$2, _ref, a, f, fields, i, o, offsets, s, x, $s, $r, $c} = $restore(this, {fields}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + offsets = $makeSlice(sliceType$19, fields.$length); + o = new $Int64(0, 0); + _ref = fields; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = s.Alignof(f.object.typ); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + a = _r$1; + o = align(o, a); + ((i < 0 || i >= offsets.$length) ? ($throwRuntimeError("index out of range"), undefined) : offsets.$array[offsets.$offset + i] = o); + _r$2 = s.Sizeof(f.object.typ); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + o = (x = _r$2, new $Int64(o.$high + x.$high, o.$low + x.$low)); + _i++; + $s = 1; continue; + case 2: + $s = -1; return offsets; + /* */ } return; } var $f = {$blk: Offsetsof, $c: true, $r, _i, _r$1, _r$2, _ref, a, f, fields, i, o, offsets, s, x, $s};return $f; + }; + $ptrType(StdSizes).prototype.Sizeof = function Sizeof(T) { + var {$24r, T, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, a, k, n, n$1, offsets, s, s$1, t, t$1, t$2, t$3, t$4, t$5, x, x$1, x$2, x$3, x$4, x$5, z, $s, $r, $c} = $restore(this, {T}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r$1 = under(T); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1] || $assertType(_ref, ptrType$12, true)[1]) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 2: + t = _ref.$val; + $r = assert(isTyped(T)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + k = t.kind; + if (((k >> 0)) < 17) { + s$1 = ((k < 0 || k >= basicSizes.length) ? ($throwRuntimeError("index out of range"), undefined) : basicSizes[k]); + if (s$1 > 0) { + $s = -1; return (new $Int64(0, s$1)); + } + } + if (k === 17) { + $s = -1; return $mul64(s.WordSize, new $Int64(0, 2)); + } + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 3: + t$1 = _ref.$val; + n = t$1.len; + if ((n.$high < 0 || (n.$high === 0 && n.$low <= 0))) { + $s = -1; return new $Int64(0, 0); + } + _r$2 = s.Alignof(t$1.elem); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + a = _r$2; + _r$3 = s.Sizeof(t$1.elem); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + z = _r$3; + $s = -1; return (x = $mul64(align(z, a), (new $Int64(n.$high - 0, n.$low - 1))), new $Int64(x.$high + z.$high, x.$low + z.$low)); + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 4: + t$2 = _ref.$val; + $s = -1; return $mul64(s.WordSize, new $Int64(0, 3)); + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 5: + t$3 = _ref.$val; + n$1 = t$3.NumFields(); + if (n$1 === 0) { + $s = -1; return new $Int64(0, 0); + } + _r$4 = s.Offsetsof(t$3.fields); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + offsets = _r$4; + _r$5 = s.Sizeof((x$4 = t$3.fields, x$5 = n$1 - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])).object.typ); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r = (x$1 = (x$2 = n$1 - 1 >> 0, ((x$2 < 0 || x$2 >= offsets.$length) ? ($throwRuntimeError("index out of range"), undefined) : offsets.$array[offsets.$offset + x$2])), x$3 = _r$5, new $Int64(x$1.$high + x$3.$high, x$1.$low + x$3.$low)); + $s = 14; case 14: return $24r; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 6: + t$4 = _ref.$val; + $r = assert(!isTypeParam(T)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return $mul64(s.WordSize, new $Int64(0, 2)); + /* } else if ($assertType(_ref, ptrType$14, true)[1] || $assertType(_ref, ptrType$12, true)[1]) { */ case 7: + t$5 = _ref; + unreachable(); + /* } */ case 8: + $s = -1; return s.WordSize; + /* */ } return; } var $f = {$blk: Sizeof, $c: true, $r, $24r, T, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, a, k, n, n$1, offsets, s, s$1, t, t$1, t$2, t$3, t$4, t$5, x, x$1, x$2, x$3, x$4, x$5, z, $s};return $f; + }; + SizesFor = function SizesFor$1(compiler, arch) { + var _1, _entry, _tuple, arch, compiler, m, ok, s; + m = false; + _1 = compiler; + if (_1 === ("gc")) { + m = gcArchSizes; + } else if (_1 === ("gccgo")) { + m = gccgoArchSizes; + } else { + return $ifaceNil; + } + _tuple = (_entry = $mapIndex(m,$String.keyFor(arch)), _entry !== undefined ? [_entry.v, true] : [ptrType$83.nil, false]); + s = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + return $ifaceNil; + } + return s; + }; + $pkg.SizesFor = SizesFor; + $ptrType(Config).prototype.alignof = function alignof(T) { + var {$24r, T, _r$1, _r$2, a, conf, s, $s, $r, $c} = $restore(this, {T}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + conf = this; + s = conf.Sizes; + /* */ if (!($interfaceIsEqual(s, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(s, $ifaceNil))) { */ case 1: + _r$1 = s.Alignof(T); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + a = _r$1; + if ((a.$high > 0 || (a.$high === 0 && a.$low >= 1))) { + $s = -1; return a; + } + $panic(new $String("Config.Sizes.Alignof returned an alignment < 1")); + /* } */ case 2: + _r$2 = stdSizes.Alignof(T); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: alignof, $c: true, $r, $24r, T, _r$1, _r$2, a, conf, s, $s};return $f; + }; + $ptrType(Config).prototype.offsetsof = function offsetsof(T) { + var {T, _i, _r$1, _r$2, _ref, conf, o, offsets, s, $s, $r, $c} = $restore(this, {T}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + conf = this; + offsets = sliceType$19.nil; + /* */ if (T.NumFields() > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (T.NumFields() > 0) { */ case 1: + s = conf.Sizes; + /* */ if (!($interfaceIsEqual(s, $ifaceNil))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!($interfaceIsEqual(s, $ifaceNil))) { */ case 3: + _r$1 = s.Offsetsof(T.fields); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + offsets = _r$1; + if (!((offsets.$length === T.NumFields()))) { + $panic(new $String("Config.Sizes.Offsetsof returned the wrong number of offsets")); + } + _ref = offsets; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + o = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if ((o.$high < 0 || (o.$high === 0 && o.$low < 0))) { + $panic(new $String("Config.Sizes.Offsetsof returned an offset < 0")); + } + _i++; + } + $s = 5; continue; + /* } else { */ case 4: + _r$2 = stdSizes.Offsetsof(T.fields); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + offsets = _r$2; + /* } */ case 5: + /* } */ case 2: + $s = -1; return offsets; + /* */ } return; } var $f = {$blk: offsetsof, $c: true, $r, T, _i, _r$1, _r$2, _ref, conf, o, offsets, s, $s};return $f; + }; + $ptrType(Config).prototype.offsetof = function offsetof(typ$3, index$1) { + var {_i, _r$1, _r$2, _ref, conf, i, index$1, o, s, typ$3, x, x$1, x$2, $s, $r, $c} = $restore(this, {typ$3, index$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + conf = this; + o = new $Int64(0, 0); + _ref = index$1; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = under(typ$3); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + s = $assertType(_r$1, ptrType$11); + _r$2 = conf.offsetsof(s); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + o = (x = (x$1 = _r$2, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])), new $Int64(o.$high + x.$high, o.$low + x.$low)); + typ$3 = (x$2 = s.fields, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i])).object.typ; + _i++; + $s = 1; continue; + case 2: + $s = -1; return o; + /* */ } return; } var $f = {$blk: offsetof, $c: true, $r, _i, _r$1, _r$2, _ref, conf, i, index$1, o, s, typ$3, x, x$1, x$2, $s};return $f; + }; + $ptrType(Config).prototype.sizeof = function sizeof(T) { + var {$24r, T, _r$1, _r$2, conf, s, z, $s, $r, $c} = $restore(this, {T}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + conf = this; + s = conf.Sizes; + /* */ if (!($interfaceIsEqual(s, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(s, $ifaceNil))) { */ case 1: + _r$1 = s.Sizeof(T); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + z = _r$1; + if ((z.$high > 0 || (z.$high === 0 && z.$low >= 0))) { + $s = -1; return z; + } + $panic(new $String("Config.Sizes.Sizeof returned a size < 0")); + /* } */ case 2: + _r$2 = stdSizes.Sizeof(T); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: sizeof, $c: true, $r, $24r, T, _r$1, _r$2, conf, s, z, $s};return $f; + }; + align = function align$1(x, a) { + var a, x, x$1, x$2, y; + y = (x$1 = new $Int64(x.$high + a.$high, x.$low + a.$low), new $Int64(x$1.$high - 0, x$1.$low - 1)); + return (x$2 = $div64(y, a, true), new $Int64(y.$high - x$2.$high, y.$low - x$2.$low)); + }; + NewSignatureType = function NewSignatureType$1(recv, recvTypeParams, typeParams, params, results, variadic) { + var {_arg, _r$1, _r$2, _r$3, _r$4, _tuple, _v, core, n, ok, params, recv, recvTypeParams, results, sig, typeParams, variadic, $s, $r, $c} = $restore(this, {recv, recvTypeParams, typeParams, params, results, variadic}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (variadic) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (variadic) { */ case 1: + n = params.Len(); + if (n === 0) { + $panic(new $String("variadic function must have at least one parameter")); + } + _r$1 = coreString(params.At(n - 1 >> 0).object.typ); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + core = _r$1; + _tuple = $assertType(core, ptrType$25, true); + ok = _tuple[1]; + if (!(!ok)) { _v = false; $s = 6; continue s; } + _r$2 = isString(core); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = !_r$2; case 6: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + _r$3 = core.String(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg = new $String(_r$3); + _r$4 = fmt.Sprintf("got %s, want variadic parameter with unnamed slice type or string as core type", new sliceType$6([_arg])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $panic(new $String(_r$4)); + /* } */ case 5: + /* } */ case 2: + sig = new Signature.ptr(ptrType$48.nil, ptrType$48.nil, ptrType.nil, recv, params, results, variadic); + if (!((recvTypeParams.$length === 0))) { + if (recv === ptrType$16.nil) { + $panic(new $String("function with receiver type parameters must have a receiver")); + } + sig.rparams = bindTParams(recvTypeParams); + } + if (!((typeParams.$length === 0))) { + if (!(recv === ptrType$16.nil)) { + $panic(new $String("function with type parameters cannot have a receiver")); + } + sig.tparams = bindTParams(typeParams); + } + $s = -1; return sig; + /* */ } return; } var $f = {$blk: NewSignatureType$1, $c: true, $r, _arg, _r$1, _r$2, _r$3, _r$4, _tuple, _v, core, n, ok, params, recv, recvTypeParams, results, sig, typeParams, variadic, $s};return $f; + }; + $pkg.NewSignatureType = NewSignatureType; + $ptrType(Signature).prototype.Recv = function Recv() { + var s; + s = this; + return s.recv; + }; + $ptrType(Signature).prototype.TypeParams = function TypeParams() { + var s; + s = this; + return s.tparams; + }; + $ptrType(Signature).prototype.RecvTypeParams = function RecvTypeParams() { + var s; + s = this; + return s.rparams; + }; + $ptrType(Signature).prototype.Params = function Params() { + var s; + s = this; + return s.params; + }; + $ptrType(Signature).prototype.Results = function Results() { + var s; + s = this; + return s.results; + }; + $ptrType(Signature).prototype.Variadic = function Variadic() { + var s; + s = this; + return s.variadic; + }; + $ptrType(Signature).prototype.Underlying = function Underlying$5() { + var t; + t = this; + return t; + }; + $ptrType(Signature).prototype.String = function String$10() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$10, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(Checker).prototype.funcType = function funcType(sig, recvPar, ftyp) { + var {_1, _i, _i$1, _key, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, check, ftyp, got, i, i$1, p, params, recv, recv$1, recvList, recvPar, recvTPar, recvTParams, results, rname, rparams, scope, sig, smap, tpar, tparams, variadic, x, x$1, $s, $deferred, $r, $c} = $restore(this, {sig, recvPar, ftyp}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + recv = [recv]; + sig = [sig]; + check[0] = this; + $r = check[0].openScope(ftyp, "function"); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].environment.scope.isFunc = true; + $r = check[0].recordScope(ftyp, check[0].environment.scope); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + sig[0].scope = check[0].environment.scope; + $deferred.push([$methodVal(check[0], "closeScope"), []]); + /* */ if (!(recvPar === ptrType$49.nil) && recvPar.List.$length > 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(recvPar === ptrType$49.nil) && recvPar.List.$length > 0) { */ case 3: + _r$1 = check[0].unpackRecv((x = recvPar.List, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Type, true); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + rname = _tuple[1]; + rparams = _tuple[2]; + /* */ if (rparams.$length > 0) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (rparams.$length > 0) { */ case 6: + _r$2 = check[0].declareTypeParams(sliceType$9.nil, rparams); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + tparams = _r$2; + sig[0].rparams = bindTParams(tparams); + _ref = rparams; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (p.Name === "_") { + if (check[0].recvTParamMap === false) { + check[0].recvTParamMap = new $global.Map(); + } + _key = p; (check[0].recvTParamMap || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$30.keyFor(_key), { k: _key, v: ((i < 0 || i >= tparams.$length) ? ($throwRuntimeError("index out of range"), undefined) : tparams.$array[tparams.$offset + i]) }); + } + _i++; + } + recvTParams = sliceType$9.nil; + /* */ if (!(rname === ptrType$30.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(rname === ptrType$30.nil)) { */ case 9: + _r$3 = check[0].genericType(rname, ptrType$34.nil); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$3, ptrType$9, true); + recv$1 = _tuple$1[0]; + /* */ if (!(recv$1 === ptrType$9.nil)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!(recv$1 === ptrType$9.nil)) { */ case 12: + _r$4 = recv$1.TypeParams(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = _r$4.list(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + recvTParams = _r$5; + /* } */ case 13: + /* } */ case 10: + /* */ if (tparams.$length === recvTParams.$length) { $s = 16; continue; } + /* */ if (tparams.$length < recvTParams.$length) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (tparams.$length === recvTParams.$length) { */ case 16: + _r$6 = makeRenameMap(recvTParams, tparams); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + smap = _r$6; + _ref$1 = tparams; + _i$1 = 0; + /* while (true) { */ case 20: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 21; continue; } + i$1 = _i$1; + tpar = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + recvTPar = ((i$1 < 0 || i$1 >= recvTParams.$length) ? ($throwRuntimeError("index out of range"), undefined) : recvTParams.$array[recvTParams.$offset + i$1]); + check[0].mono.recordCanon(tpar, recvTPar); + _r$7 = check[0].subst(tpar.obj.object.pos, recvTPar.bound, smap, ptrType$9.nil, check[0].context()); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + tpar.bound = _r$7; + _i$1++; + $s = 20; continue; + case 21: + $s = 18; continue; + /* } else if (tparams.$length < recvTParams.$length) { */ case 17: + _r$8 = measure(tparams.$length, "type parameter"); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + got = _r$8; + $r = check[0].errorf(recvPar, 31, "got %s, but receiver base type declares %d", new sliceType$6([new $String(got), new $Int(recvTParams.$length)])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + /* } */ case 7: + /* } */ case 4: + /* */ if (!(ftyp.TypeParams === ptrType$49.nil)) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (!(ftyp.TypeParams === ptrType$49.nil)) { */ case 25: + $r = check[0].collectTypeParams((sig[0].$ptr_tparams || (sig[0].$ptr_tparams = new ptrType$84(function() { return this.$target.tparams; }, function($v) { this.$target.tparams = $v; }, sig[0]))), ftyp.TypeParams); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(recvPar === ptrType$49.nil)) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (!(recvPar === ptrType$49.nil)) { */ case 28: + $r = check[0].error(ftyp.TypeParams, 143, "methods cannot have type parameters"); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 29: + /* } */ case 26: + scope = NewScope(check[0].environment.scope, 0, 0, "function body (temp. scope)"); + _r$9 = check[0].collectParams(scope, recvPar, false); /* */ $s = 31; case 31: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple$2 = _r$9; + recvList = _tuple$2[0]; + _r$10 = check[0].collectParams(scope, ftyp.Params, true); /* */ $s = 32; case 32: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$3 = _r$10; + params = _tuple$3[0]; + variadic = _tuple$3[1]; + _r$11 = check[0].collectParams(scope, ftyp.Results, false); /* */ $s = 33; case 33: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$4 = _r$11; + results = _tuple$4[0]; + $r = scope.squash((function(check, recv, sig) { return function Checker·funcType·func1(obj, alt) { + var {_arg, _arg$1, _r$12, alt, obj, $s, $r, $c} = $restore(this, {obj, alt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = obj; + _r$12 = obj.Name(); /* */ $s = 1; case 1: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$12); + $r = check[0].errorf(_arg, 10, "%s redeclared in this block", new sliceType$6([_arg$1])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].reportAltDecl(alt); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·funcType·func1, $c: true, $r, _arg, _arg$1, _r$12, alt, obj, $s};return $f; + }; })(check, recv, sig)); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(recvPar === ptrType$49.nil)) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (!(recvPar === ptrType$49.nil)) { */ case 35: + recv[0] = ptrType$16.nil; + _1 = recvList.$length; + /* */ if (_1 === (0)) { $s = 38; continue; } + /* */ if (_1 === (1)) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (_1 === (0)) { */ case 38: + recv[0] = NewParam(0, ptrType$1.nil, "", (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])); + $s = 41; continue; + /* } else if (_1 === (1)) { */ case 39: + recv[0] = (0 >= recvList.$length ? ($throwRuntimeError("index out of range"), undefined) : recvList.$array[recvList.$offset + 0]); + $s = 41; continue; + /* } else { */ case 40: + $r = check[0].error((x$1 = recvList.$length - 1 >> 0, ((x$1 < 0 || x$1 >= recvList.$length) ? ($throwRuntimeError("index out of range"), undefined) : recvList.$array[recvList.$offset + x$1])), 32, "method has multiple receivers"); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + recv[0] = (0 >= recvList.$length ? ($throwRuntimeError("index out of range"), undefined) : recvList.$array[recvList.$offset + 0]); + /* } */ case 41: + case 37: + sig[0].recv = recv[0]; + check[0].later((function(check, recv, sig) { return function Checker·funcType·func2() { + var {T, T$1, T$2, _r$12, _ref$2, _ref$3, _tuple$5, cause, rtyp, u, u$1, u$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple$5 = deref(recv[0].object.typ); + rtyp = _tuple$5[0]; + if ($interfaceIsEqual(rtyp, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + $s = -1; return; + } + _ref$2 = rtyp; + /* */ if ($assertType(_ref$2, ptrType$9, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref$2, ptrType$8, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* switch (0) { default: if ($assertType(_ref$2, ptrType$9, true)[1]) { */ case 1: + T = _ref$2.$val; + /* */ if (!(T.TypeArgs() === ptrType$56.nil) && sig[0].RecvTypeParams() === ptrType$48.nil) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(T.TypeArgs() === ptrType$56.nil) && sig[0].RecvTypeParams() === ptrType$48.nil) { */ case 5: + $r = check[0].errorf(recv[0], 32, "cannot define new methods on instantiated type %s", new sliceType$6([rtyp])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 4; continue; + /* } */ case 6: + /* */ if (!(T.obj.object.pkg === check[0].pkg)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!(T.obj.object.pkg === check[0].pkg)) { */ case 8: + $r = check[0].errorf(recv[0], 32, "cannot define new methods on non-local type %s", new sliceType$6([rtyp])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 4; continue; + /* } */ case 9: + cause = ""; + _r$12 = T.under(); /* */ $s = 11; case 11: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _ref$3 = _r$12; + /* */ if ($assertType(_ref$3, ptrType$8, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref$3, ptrType$26, true)[1] || $assertType(_ref$3, ptrType$13, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref$3, ptrType$14, true)[1]) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if ($assertType(_ref$3, ptrType$8, true)[1]) { */ case 12: + u = _ref$3.$val; + if (u.kind === 18) { + cause = "unsafe.Pointer"; + } + $s = 15; continue; + /* } else if ($assertType(_ref$3, ptrType$26, true)[1] || $assertType(_ref$3, ptrType$13, true)[1]) { */ case 13: + u$1 = _ref$3; + cause = "pointer or interface type"; + $s = 15; continue; + /* } else if ($assertType(_ref$3, ptrType$14, true)[1]) { */ case 14: + u$2 = _ref$3.$val; + unreachable(); + /* } */ case 15: + /* */ if (!(cause === "")) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!(cause === "")) { */ case 16: + $r = check[0].errorf(recv[0], 32, "invalid receiver type %s (%s)", new sliceType$6([rtyp, new $String(cause)])); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 17: + $s = 4; continue; + /* } else if ($assertType(_ref$2, ptrType$8, true)[1]) { */ case 2: + T$1 = _ref$2.$val; + $r = check[0].errorf(recv[0], 32, "cannot define new methods on non-local type %s", new sliceType$6([rtyp])); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 4; continue; + /* } else { */ case 3: + T$2 = _ref$2; + $r = check[0].errorf(recv[0], 32, "invalid receiver type %s", new sliceType$6([recv[0].object.typ])); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } } */ case 4: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·funcType·func2, $c: true, $r, T, T$1, T$2, _r$12, _ref$2, _ref$3, _tuple$5, cause, rtyp, u, u$1, u$2, $s};return $f; + }; })(check, recv, sig)).describef(recv[0], "validate receiver %s", new sliceType$6([recv[0]])); + /* } */ case 36: + sig[0].params = NewTuple(params); + sig[0].results = NewTuple(results); + sig[0].variadic = variadic; + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: funcType, $c: true, $r, _1, _i, _i$1, _key, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, check, ftyp, got, i, i$1, p, params, recv, recv$1, recvList, recvPar, recvTPar, recvTParams, results, rname, rparams, scope, sig, smap, tpar, tparams, variadic, x, x$1, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.collectParams = function collectParams(scope, list$2, variadicOk) { + var {_i, _i$1, _r$1, _r$2, _r$3, _ref, _ref$1, _tmp, _tmp$1, _tuple, anonymous, check, field, ftype, i, last, list$2, name, named, par, par$1, params, scope, t, typ$3, variadic, variadicOk, x, x$1, x$2, $s, $r, $c} = $restore(this, {scope, list$2, variadicOk}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + params = sliceType$10.nil; + variadic = false; + check = this; + if (list$2 === ptrType$49.nil) { + $s = -1; return [params, variadic]; + } + _tmp = false; + _tmp$1 = false; + named = _tmp; + anonymous = _tmp$1; + _ref = list$2.List; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ftype = field.Type; + _tuple = $assertType(ftype, ptrType$41, true); + t = _tuple[0]; + /* */ if (!(t === ptrType$41.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(t === ptrType$41.nil)) { */ case 3: + ftype = t.Elt; + /* */ if (variadicOk && (i === (list$2.List.$length - 1 >> 0)) && field.Names.$length <= 1) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (variadicOk && (i === (list$2.List.$length - 1 >> 0)) && field.Names.$length <= 1) { */ case 5: + variadic = true; + $s = 7; continue; + /* } else { */ case 6: + $r = check.softErrorf(t, 79, "can only use ... with final parameter in list", sliceType$6.nil); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + /* } */ case 4: + _r$1 = check.varType(ftype); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ$3 = _r$1; + /* */ if (field.Names.$length > 0) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (field.Names.$length > 0) { */ case 10: + _ref$1 = field.Names; + _i$1 = 0; + /* while (true) { */ case 13: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 14; continue; } + name = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + /* */ if (name.Name === "") { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (name.Name === "") { */ case 15: + $r = check.error(name, -1, "anonymous parameter"); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 16: + par = NewParam(name.Pos(), check.pkg, name.Name, typ$3); + $r = check.declare(scope, name, par, scope.pos); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + params = $append(params, par); + _i$1++; + $s = 13; continue; + case 14: + named = true; + $s = 12; continue; + /* } else { */ case 11: + _r$2 = ftype.Pos(); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = NewParam(_r$2, check.pkg, "", typ$3); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + par$1 = _r$3; + $r = check.recordImplicit(field, par$1); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + params = $append(params, par$1); + anonymous = true; + /* } */ case 12: + _i++; + $s = 1; continue; + case 2: + /* */ if (named && anonymous) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (named && anonymous) { */ case 22: + $r = check.error(list$2, -1, "list contains both named and anonymous parameters"); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 23: + /* */ if (variadic) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (variadic) { */ case 25: + last = (x = params.$length - 1 >> 0, ((x < 0 || x >= params.$length) ? ($throwRuntimeError("index out of range"), undefined) : params.$array[params.$offset + x])); + last.object.typ = new Slice.ptr(last.object.typ); + $r = check.recordTypeAndValue((x$1 = list$2.List, x$2 = list$2.List.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])).Type, 3, last.object.typ, $ifaceNil); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 26: + $s = -1; return [params, variadic]; + /* */ } return; } var $f = {$blk: collectParams, $c: true, $r, _i, _i$1, _r$1, _r$2, _r$3, _ref, _ref$1, _tmp, _tmp$1, _tuple, anonymous, check, field, ftype, i, last, list$2, name, named, par, par$1, params, scope, t, typ$3, variadic, variadicOk, x, x$1, x$2, $s};return $f; + }; + $ptrType(Selection).prototype.Kind = function Kind() { + var s; + s = this; + return s.kind; + }; + $ptrType(Selection).prototype.Recv = function Recv$1() { + var s; + s = this; + return s.recv; + }; + $ptrType(Selection).prototype.Obj = function Obj$1() { + var s; + s = this; + return s.obj; + }; + $ptrType(Selection).prototype.Type = function Type$2() { + var {$24r, _1, _r$1, arg0, params, recv, s, sig, sig$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + arg0 = [arg0]; + recv = [recv]; + sig = [sig]; + sig$1 = [sig$1]; + s = this; + _1 = s.kind; + if (_1 === (1)) { + sig[0] = $clone($assertType($assertType(s.obj, ptrType$2).object.typ, ptrType$27), Signature); + recv[0] = $clone(sig[0].recv, Var); + recv[0].object.typ = s.recv; + sig[0].recv = recv[0]; + $s = -1; return sig[0]; + } else if (_1 === (2)) { + sig$1[0] = $clone($assertType($assertType(s.obj, ptrType$2).object.typ, ptrType$27), Signature); + arg0[0] = $clone(sig$1[0].recv, Var); + sig$1[0].recv = ptrType$16.nil; + arg0[0].object.typ = s.recv; + params = sliceType$10.nil; + if (!(sig$1[0].params === ptrType$15.nil)) { + params = sig$1[0].params.vars; + } + sig$1[0].params = NewTuple($appendSlice(new sliceType$10([arg0[0]]), params)); + $s = -1; return sig$1[0]; + } + _r$1 = s.obj.Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Type$2, $c: true, $r, $24r, _1, _r$1, arg0, params, recv, s, sig, sig$1, $s};return $f; + }; + $ptrType(Selection).prototype.Index = function Index$1() { + var s; + s = this; + return s.index; + }; + $ptrType(Selection).prototype.Indirect = function Indirect() { + var s; + s = this; + return s.indirect; + }; + $ptrType(Selection).prototype.String = function String$11() { + var {$24r, _r$1, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r$1 = SelectionString(s, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$11, $c: true, $r, $24r, _r$1, s, $s};return $f; + }; + SelectionString = function SelectionString$1(s, qf) { + var {T, _1, _arg, _arg$1, _r$1, _r$2, _r$3, buf, k, qf, s, $s, $r, $c} = $restore(this, {s, qf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + k = ""; + _1 = s.kind; + if (_1 === (0)) { + k = "field "; + } else if (_1 === (1)) { + k = "method "; + } else if (_1 === (2)) { + k = "method expr "; + } else { + unreachable(); + } + buf[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + buf[0].WriteString(k); + buf[0].WriteByte(40); + $r = WriteType(buf[0], s.Recv(), qf); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _arg = buf[0]; + _r$1 = s.obj.Name(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$1); + _r$2 = fmt.Fprintf(_arg, ") %s", new sliceType$6([_arg$1])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _r$3 = s.Type(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + T = _r$3; + /* */ if (s.kind === 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (s.kind === 0) { */ case 5: + buf[0].WriteByte(32); + $r = WriteType(buf[0], T, qf); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + /* } else { */ case 6: + $r = WriteSignature(buf[0], $assertType(T, ptrType$27), qf); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: SelectionString$1, $c: true, $r, T, _1, _arg, _arg$1, _r$1, _r$2, _r$3, buf, k, qf, s, $s};return $f; + }; + $pkg.SelectionString = SelectionString; + NewScope = function NewScope$1(parent, pos, end, comment) { + var comment, end, parent, pos, s; + s = new Scope.ptr(parent, sliceType$20.nil, 0, false, pos, end, comment, false); + if (!(parent === ptrType.nil) && !(parent === $pkg.Universe)) { + parent.children = $append(parent.children, s); + s.number = parent.children.$length; + } + return s; + }; + $pkg.NewScope = NewScope; + $ptrType(Scope).prototype.Parent = function Parent() { + var s; + s = this; + return s.parent; + }; + $ptrType(Scope).prototype.Len = function Len$5() { + var s; + s = this; + return (s.elems ? s.elems.size : 0); + }; + $ptrType(Scope).prototype.Names = function Names() { + var {_entry, _i, _key, _keys, _ref, _size, i, name, names, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + names = $makeSlice(sliceType$5, (s.elems ? s.elems.size : 0)); + i = 0; + _ref = s.elems; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + name = _entry.k; + ((i < 0 || i >= names.$length) ? ($throwRuntimeError("index out of range"), undefined) : names.$array[names.$offset + i] = name); + i = i + (1) >> 0; + _i++; + } + $r = sort.Strings(names); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return names; + /* */ } return; } var $f = {$blk: Names, $c: true, $r, _entry, _i, _key, _keys, _ref, _size, i, name, names, s, $s};return $f; + }; + $ptrType(Scope).prototype.NumChildren = function NumChildren() { + var s; + s = this; + return s.children.$length; + }; + $ptrType(Scope).prototype.Child = function Child(i) { + var i, s, x; + s = this; + return (x = s.children, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(Scope).prototype.Lookup = function Lookup(name) { + var {$24r, _entry, _r$1, name, s, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r$1 = resolve(name, (_entry = $mapIndex(s.elems,$String.keyFor(name)), _entry !== undefined ? _entry.v : $ifaceNil)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Lookup, $c: true, $r, $24r, _entry, _r$1, name, s, $s};return $f; + }; + $ptrType(Scope).prototype.LookupParent = function LookupParent(name, pos) { + var {_r$1, _r$2, _v, _v$1, name, obj, pos, s, $s, $r, $c} = $restore(this, {name, pos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* while (true) { */ case 1: + /* if (!(!(s === ptrType.nil))) { break; } */ if(!(!(s === ptrType.nil))) { $s = 2; continue; } + _r$1 = s.Lookup(name); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + obj = _r$1; + if (!(!($interfaceIsEqual(obj, $ifaceNil)))) { _v = false; $s = 6; continue s; } + if (!new token.Pos(pos).IsValid()) { _v$1 = true; $s = 7; continue s; } + _r$2 = obj.scopePos(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$1 = _r$2 <= pos; case 7: + _v = _v$1; case 6: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + $s = -1; return [s, obj]; + /* } */ case 5: + s = s.parent; + $s = 1; continue; + case 2: + $s = -1; return [ptrType.nil, $ifaceNil]; + /* */ } return; } var $f = {$blk: LookupParent, $c: true, $r, _r$1, _r$2, _v, _v$1, name, obj, pos, s, $s};return $f; + }; + $ptrType(Scope).prototype.Insert = function Insert(obj) { + var {_r$1, _r$2, _r$3, alt, name, obj, s, $s, $r, $c} = $restore(this, {obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r$1 = obj.Name(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + name = _r$1; + _r$2 = s.Lookup(name); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + alt = _r$2; + if (!($interfaceIsEqual(alt, $ifaceNil))) { + $s = -1; return alt; + } + s.insert(name, obj); + _r$3 = obj.Parent(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3 === ptrType.nil) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$3 === ptrType.nil) { */ case 3: + $r = obj.setParent(s); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Insert, $c: true, $r, _r$1, _r$2, _r$3, alt, name, obj, s, $s};return $f; + }; + $ptrType(Scope).prototype.insert = function insert(name, obj) { + var _key, name, obj, s; + s = this; + if (s.elems === false) { + s.elems = new $global.Map(); + } + _key = name; (s.elems || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: obj }); + }; + $ptrType(Scope).prototype.squash = function squash(err) { + var {_entry, _i, _i$1, _key, _keys, _r$1, _r$2, _ref, _ref$1, _size, alt, ch, err, i, j, k, name, obj, p, s, x, x$1, $s, $r, $c} = $restore(this, {err}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + p = s.parent; + $r = assert(!(p === ptrType.nil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = s.elems; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 2: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 3; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 2; continue; + } + name = _entry.k; + obj = _entry.v; + _r$1 = resolve(name, obj); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + obj = _r$1; + $r = obj.setParent(ptrType.nil); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = p.Insert(obj); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + alt = _r$2; + /* */ if (!($interfaceIsEqual(alt, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(alt, $ifaceNil))) { */ case 7: + $r = err(obj, alt); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _i++; + $s = 2; continue; + case 3: + j = -1; + _ref$1 = p.children; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i = _i$1; + ch = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (ch === s) { + j = i; + break; + } + _i$1++; + } + $r = assert(j >= 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + k = p.children.$length - 1 >> 0; + (x$1 = p.children, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j] = (x = p.children, ((k < 0 || k >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + k])))); + p.children = $subslice(p.children, 0, k); + p.children = $appendSlice(p.children, s.children); + s.children = sliceType$20.nil; + s.elems = false; + $s = -1; return; + /* */ } return; } var $f = {$blk: squash, $c: true, $r, _entry, _i, _i$1, _key, _keys, _r$1, _r$2, _ref, _ref$1, _size, alt, ch, err, i, j, k, name, obj, p, s, x, x$1, $s};return $f; + }; + $ptrType(Scope).prototype.Pos = function Pos() { + var s; + s = this; + return s.pos; + }; + $ptrType(Scope).prototype.End = function End() { + var s; + s = this; + return s.end; + }; + $ptrType(Scope).prototype.Contains = function Contains(pos) { + var pos, s; + s = this; + return s.pos <= pos && pos < s.end; + }; + $ptrType(Scope).prototype.Innermost = function Innermost(pos) { + var _i, _i$1, _ref, _ref$1, inner, pos, s, s$1, s$2; + s = this; + if (s.parent === $pkg.Universe) { + _ref = s.children; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + s$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + inner = s$1.Innermost(pos); + if (!(inner === ptrType.nil)) { + return inner; + } + _i++; + } + } + if (s.Contains(pos)) { + _ref$1 = s.children; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + s$2 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (s$2.Contains(pos)) { + return s$2.Innermost(pos); + } + _i$1++; + } + return s; + } + return ptrType.nil; + }; + $ptrType(Scope).prototype.WriteTo = function WriteTo(w, n, recurse) { + var {_arg, _arg$1, _arg$2, _i, _i$1, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, indn, indn1, n, name, recurse, s, s$1, w, $s, $r, $c} = $restore(this, {w, n, recurse}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + indn = strings.Repeat(". ", n); + _r$1 = fmt.Fprintf(w, "%s%s scope %p {\n", new sliceType$6([new $String(indn), new $String(s.comment), s])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + indn1 = indn + ". "; + _r$2 = s.Names(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _ref = _r$2; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + name = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _arg = w; + _arg$1 = new $String(indn1); + _r$3 = s.Lookup(name); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$2 = _r$3; + _r$4 = fmt.Fprintf(_arg, "%s%s\n", new sliceType$6([_arg$1, _arg$2])); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + _i++; + $s = 3; continue; + case 4: + /* */ if (recurse) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (recurse) { */ case 7: + _ref$1 = s.children; + _i$1 = 0; + /* while (true) { */ case 9: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 10; continue; } + s$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + $r = s$1.WriteTo(w, n + 1 >> 0, recurse); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 9; continue; + case 10: + /* } */ case 8: + _r$5 = fmt.Fprintf(w, "%s}\n", new sliceType$6([new $String(indn)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + $s = -1; return; + /* */ } return; } var $f = {$blk: WriteTo, $c: true, $r, _arg, _arg$1, _arg$2, _i, _i$1, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, indn, indn1, n, name, recurse, s, s$1, w, $s};return $f; + }; + $ptrType(Scope).prototype.String = function String$12() { + var {buf, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + s = this; + buf[0] = new strings.Builder.ptr(ptrType$53.nil, sliceType$14.nil); + $r = s.WriteTo(buf[0], 0, false); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: String$12, $c: true, $r, buf, s, $s};return $f; + }; + resolve = function resolve$1(name, obj) { + var {_tuple, lazy, name, obj, ok, $s, $r, $c} = $restore(this, {name, obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + lazy = [lazy]; + name = [name]; + _tuple = $assertType(obj, ptrType$85, true); + lazy[0] = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + $r = lazy[0].once.Do((function(lazy, name) { return function resolve·func1() { + var {_r$1, _r$2, _r$3, _tuple$1, obj$1, ok$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = lazy[0].resolve(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + obj$1 = _r$1; + _tuple$1 = $assertType(obj$1, ptrType$85, true); + ok$1 = _tuple$1[1]; + if (ok$1) { + $panic(new $String("recursive lazy object")); + } + _r$2 = obj$1.Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!(_r$2 === name[0])) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(_r$2 === name[0])) { */ case 2: + $panic(new $String("lazy object has unexpected name")); + /* } */ case 3: + _r$3 = obj$1.Parent(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3 === ptrType.nil) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r$3 === ptrType.nil) { */ case 5: + $r = obj$1.setParent(lazy[0].parent); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + lazy[0].obj = obj$1; + $s = -1; return; + /* */ } return; } var $f = {$blk: resolve·func1, $c: true, $r, _r$1, _r$2, _r$3, _tuple$1, obj$1, ok$1, $s};return $f; + }; })(lazy, name)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + obj = lazy[0].obj; + /* } */ case 2: + $s = -1; return obj; + /* */ } return; } var $f = {$blk: resolve$1, $c: true, $r, _tuple, lazy, name, obj, ok, $s};return $f; + }; + $ptrType(lazyObject).prototype.Parent = function Parent$1() { + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.Pos = function Pos$1() { + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.Pkg = function Pkg() { + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.Name = function Name() { + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.Type = function Type$3() { + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.Exported = function Exported() { + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.Id = function Id$1() { + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.String = function String$13() { + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.order = function order() { + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.color = function color$1() { + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.setOrder = function setOrder(param) { + var param; + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.setColor = function setColor(color$2) { + var color$2; + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.setParent = function setParent(param) { + var param; + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.sameId = function sameId(pkg, name) { + var name, pkg; + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.scopePos = function scopePos() { + $panic(new $String("unreachable")); + }; + $ptrType(lazyObject).prototype.setScopePos = function setScopePos(pos) { + var pos; + $panic(new $String("unreachable")); + }; + $ptrType(Checker).prototype.isTerminating = function isTerminating(s, label) { + var _entry, _i, _ref, _ref$1, _tuple, call, cc, check, label, ok, s, s$1, s$10, s$11, s$12, s$13, s$2, s$3, s$4, s$5, s$6, s$7, s$8, s$9; + check = this; + _ref = s; + if ($assertType(_ref, ptrType$63, true)[1] || $assertType(_ref, ptrType$64, true)[1] || $assertType(_ref, ptrType$59, true)[1] || $assertType(_ref, ptrType$67, true)[1] || $assertType(_ref, ptrType$68, true)[1] || $assertType(_ref, ptrType$69, true)[1] || $assertType(_ref, ptrType$70, true)[1] || $assertType(_ref, ptrType$71, true)[1] || $assertType(_ref, ptrType$80, true)[1]) { + s$2 = _ref; + } else if ($assertType(_ref, ptrType$65, true)[1]) { + s$3 = _ref.$val; + return check.isTerminating(s$3.Stmt, s$3.Label.Name); + } else if ($assertType(_ref, ptrType$66, true)[1]) { + s$4 = _ref.$val; + _tuple = $assertType(unparen(s$4.X), ptrType$86, true); + call = _tuple[0]; + ok = _tuple[1]; + if (ok && (_entry = $mapIndex(check.environment.isPanic,ptrType$86.keyFor(call)), _entry !== undefined ? _entry.v : false)) { + return true; + } + } else if ($assertType(_ref, ptrType$72, true)[1]) { + s$5 = _ref.$val; + return true; + } else if ($assertType(_ref, ptrType$73, true)[1]) { + s$6 = _ref.$val; + if ((s$6.Tok === 73) || (s$6.Tok === 69)) { + return true; + } + } else if ($assertType(_ref, ptrType$74, true)[1]) { + s$7 = _ref.$val; + return check.isTerminatingList(s$7.List, ""); + } else if ($assertType(_ref, ptrType$75, true)[1]) { + s$8 = _ref.$val; + if (!($interfaceIsEqual(s$8.Else, $ifaceNil)) && check.isTerminating(s$8.Body, "") && check.isTerminating(s$8.Else, "")) { + return true; + } + } else if ($assertType(_ref, ptrType$76, true)[1]) { + s$9 = _ref.$val; + return check.isTerminatingSwitch(s$9.Body, label); + } else if ($assertType(_ref, ptrType$77, true)[1]) { + s$10 = _ref.$val; + return check.isTerminatingSwitch(s$10.Body, label); + } else if ($assertType(_ref, ptrType$78, true)[1]) { + s$11 = _ref.$val; + _ref$1 = s$11.Body.List; + _i = 0; + while (true) { + if (!(_i < _ref$1.$length)) { break; } + s$13 = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + cc = $assertType(s$13, ptrType$61); + if (!check.isTerminatingList(cc.Body, "") || hasBreakList(cc.Body, label, true)) { + return false; + } + _i++; + } + return true; + } else if ($assertType(_ref, ptrType$79, true)[1]) { + s$12 = _ref.$val; + if ($interfaceIsEqual(s$12.Cond, $ifaceNil) && !hasBreak(s$12.Body, label, true)) { + return true; + } + } else { + s$1 = _ref; + unreachable(); + } + return false; + }; + $ptrType(Checker).prototype.isTerminatingList = function isTerminatingList(list$2, label) { + var _tuple, check, i, label, list$2, ok; + check = this; + i = list$2.$length - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + _tuple = $assertType(((i < 0 || i >= list$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : list$2.$array[list$2.$offset + i]), ptrType$59, true); + ok = _tuple[1]; + if (!ok) { + return check.isTerminating(((i < 0 || i >= list$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : list$2.$array[list$2.$offset + i]), label); + } + i = i - (1) >> 0; + } + return false; + }; + $ptrType(Checker).prototype.isTerminatingSwitch = function isTerminatingSwitch(body, label) { + var _i, _ref, body, cc, check, hasDefault, label, s; + check = this; + hasDefault = false; + _ref = body.List; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + cc = $assertType(s, ptrType$60); + if (cc.List === sliceType$11.nil) { + hasDefault = true; + } + if (!check.isTerminatingList(cc.Body, "") || hasBreakList(cc.Body, label, true)) { + return false; + } + _i++; + } + return hasDefault; + }; + hasBreak = function hasBreak$1(s, label, implicit) { + var _ref, implicit, label, s, s$1, s$10, s$11, s$12, s$13, s$2, s$3, s$4, s$5, s$6, s$7, s$8, s$9; + _ref = s; + if ($assertType(_ref, ptrType$63, true)[1] || $assertType(_ref, ptrType$64, true)[1] || $assertType(_ref, ptrType$59, true)[1] || $assertType(_ref, ptrType$66, true)[1] || $assertType(_ref, ptrType$67, true)[1] || $assertType(_ref, ptrType$68, true)[1] || $assertType(_ref, ptrType$69, true)[1] || $assertType(_ref, ptrType$70, true)[1] || $assertType(_ref, ptrType$71, true)[1] || $assertType(_ref, ptrType$72, true)[1]) { + s$2 = _ref; + } else if ($assertType(_ref, ptrType$65, true)[1]) { + s$3 = _ref.$val; + return hasBreak(s$3.Stmt, label, implicit); + } else if ($assertType(_ref, ptrType$73, true)[1]) { + s$4 = _ref.$val; + if (s$4.Tok === 61) { + if (s$4.Label === ptrType$30.nil) { + return implicit; + } + if (s$4.Label.Name === label) { + return true; + } + } + } else if ($assertType(_ref, ptrType$74, true)[1]) { + s$5 = _ref.$val; + return hasBreakList(s$5.List, label, implicit); + } else if ($assertType(_ref, ptrType$75, true)[1]) { + s$6 = _ref.$val; + if (hasBreak(s$6.Body, label, implicit) || !($interfaceIsEqual(s$6.Else, $ifaceNil)) && hasBreak(s$6.Else, label, implicit)) { + return true; + } + } else if ($assertType(_ref, ptrType$60, true)[1]) { + s$7 = _ref.$val; + return hasBreakList(s$7.Body, label, implicit); + } else if ($assertType(_ref, ptrType$76, true)[1]) { + s$8 = _ref.$val; + if (!(label === "") && hasBreak(s$8.Body, label, false)) { + return true; + } + } else if ($assertType(_ref, ptrType$77, true)[1]) { + s$9 = _ref.$val; + if (!(label === "") && hasBreak(s$9.Body, label, false)) { + return true; + } + } else if ($assertType(_ref, ptrType$61, true)[1]) { + s$10 = _ref.$val; + return hasBreakList(s$10.Body, label, implicit); + } else if ($assertType(_ref, ptrType$78, true)[1]) { + s$11 = _ref.$val; + if (!(label === "") && hasBreak(s$11.Body, label, false)) { + return true; + } + } else if ($assertType(_ref, ptrType$79, true)[1]) { + s$12 = _ref.$val; + if (!(label === "") && hasBreak(s$12.Body, label, false)) { + return true; + } + } else if ($assertType(_ref, ptrType$80, true)[1]) { + s$13 = _ref.$val; + if (!(label === "") && hasBreak(s$13.Body, label, false)) { + return true; + } + } else { + s$1 = _ref; + unreachable(); + } + return false; + }; + hasBreakList = function hasBreakList$1(list$2, label, implicit) { + var _i, _ref, implicit, label, list$2, s; + _ref = list$2; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (hasBreak(s, label, implicit)) { + return true; + } + _i++; + } + return false; + }; + $ptrType(declInfo).prototype.hasInitializer = function hasInitializer() { + var d; + d = this; + return !($interfaceIsEqual(d.init, $ifaceNil)) || !(d.fdecl === ptrType$87.nil) && !(d.fdecl.Body === ptrType$74.nil); + }; + $ptrType(declInfo).prototype.addDep = function addDep(obj) { + var _key, d, m, obj; + d = this; + m = d.deps; + if (m === false) { + m = new $global.Map(); + d.deps = m; + } + _key = obj; (m || $throwRuntimeError("assignment to entry in nil map")).set(Object.keyFor(_key), { k: _key, v: true }); + }; + $ptrType(Checker).prototype.arityMatch = function arityMatch(s, init$5) { + var {_arg, _arg$1, _r$1, check, init$5, l, n, n$1, r, s, x, x$1, x$2, $s, $r, $c} = $restore(this, {s, init$5}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + l = s.Names.$length; + r = s.Values.$length; + if (!(init$5 === ptrType$88.nil)) { + r = init$5.Values.$length; + } + /* */ if (init$5 === ptrType$88.nil && (r === 0)) { $s = 2; continue; } + /* */ if (l < r) { $s = 3; continue; } + /* */ if (l > r && (!(init$5 === ptrType$88.nil) || !((r === 1)))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (init$5 === ptrType$88.nil && (r === 0)) { */ case 2: + /* */ if ($interfaceIsEqual(s.Type, $ifaceNil)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ($interfaceIsEqual(s.Type, $ifaceNil)) { */ case 6: + $r = check.error(s, 17, "missing type or init expr"); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + $s = 5; continue; + /* } else if (l < r) { */ case 3: + /* */ if (l < s.Values.$length) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (l < s.Values.$length) { */ case 9: + n = (x = s.Values, ((l < 0 || l >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + l])); + $r = check.errorf(n, 17, "extra init expr %s", new sliceType$6([n])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 11; continue; + /* } else { */ case 10: + _arg = s; + _r$1 = check.fset.Position(init$5.Pos()); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = (x$1 = _r$1, new x$1.constructor.elem(x$1)); + $r = check.errorf(_arg, 17, "extra init expr at %s", new sliceType$6([_arg$1])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + $s = 5; continue; + /* } else if (l > r && (!(init$5 === ptrType$88.nil) || !((r === 1)))) { */ case 4: + n$1 = (x$2 = s.Names, ((r < 0 || r >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + r])); + $r = check.errorf(n$1, 17, "missing init expr for %s", new sliceType$6([n$1])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + case 1: + $s = -1; return; + /* */ } return; } var $f = {$blk: arityMatch, $c: true, $r, _arg, _arg$1, _r$1, check, init$5, l, n, n$1, r, s, x, x$1, x$2, $s};return $f; + }; + validatedImportPath = function validatedImportPath$1(path) { + var {$24r, $24r$1, _i, _r$1, _r$2, _ref, _rune, _tuple, err, path, r, s, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = strconv.Unquote(path); + s = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return ["", err]; + } + /* */ if (s === "") { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (s === "") { */ case 1: + _r$1 = fmt.Errorf("empty string", sliceType$6.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = ["", _r$1]; + $s = 4; case 4: return $24r; + /* } */ case 2: + _ref = s; + _i = 0; + /* while (true) { */ case 5: + /* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 6; continue; } + _rune = $decodeRune(_ref, _i); + r = _rune[0]; + /* */ if (!unicode.IsGraphic(r) || unicode.IsSpace(r) || strings.ContainsRune("!\"#$%&'()*,:;<=>?[\\]^{|}`\xEF\xBF\xBD", r)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!unicode.IsGraphic(r) || unicode.IsSpace(r) || strings.ContainsRune("!\"#$%&'()*,:;<=>?[\\]^{|}`\xEF\xBF\xBD", r)) { */ case 7: + _r$2 = fmt.Errorf("invalid character %#U", new sliceType$6([new $Int32(r)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = [s, _r$2]; + $s = 10; case 10: return $24r$1; + /* } */ case 8: + _i += _rune[1]; + $s = 5; continue; + case 6: + $s = -1; return [s, $ifaceNil]; + /* */ } return; } var $f = {$blk: validatedImportPath$1, $c: true, $r, $24r, $24r$1, _i, _r$1, _r$2, _ref, _rune, _tuple, err, path, r, s, $s};return $f; + }; + $ptrType(Checker).prototype.declarePkgObj = function declarePkgObj(ident$1, obj, d) { + var {_key, _r$1, check, d, ident$1, obj, $s, $r, $c} = $restore(this, {ident$1, obj, d}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = obj.Name(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = assert(ident$1.Name === _r$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (ident$1.Name === "init") { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (ident$1.Name === "init") { */ case 3: + $r = check.error(ident$1, 39, "cannot declare init - must be func"); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 4: + /* */ if (ident$1.Name === "main" && check.pkg.name === "main") { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (ident$1.Name === "main" && check.pkg.name === "main") { */ case 6: + $r = check.error(ident$1, 40, "cannot declare main - must be func"); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 7: + $r = check.declare(check.pkg.scope, ident$1, obj, 0); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _key = obj; (check.objMap || $throwRuntimeError("assignment to entry in nil map")).set(Object.keyFor(_key), { k: _key, v: d }); + $r = obj.setOrder((((check.objMap ? check.objMap.size : 0) >>> 0))); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: declarePkgObj, $c: true, $r, _key, _r$1, check, d, ident$1, obj, $s};return $f; + }; + $ptrType(Checker).prototype.filename = function filename(fileNo) { + var {$24r, $24r$1, _r$1, _r$2, _r$3, check, file, fileNo, pos, x, $s, $r, $c} = $restore(this, {fileNo}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + file = (x = check.files, ((fileNo < 0 || fileNo >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + fileNo])); + pos = file.Pos(); + /* */ if (new token.Pos(pos).IsValid()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (new token.Pos(pos).IsValid()) { */ case 1: + _r$1 = check.fset.File(pos); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 5; case 5: return $24r; + /* } */ case 2: + _r$3 = fmt.Sprintf("file[%d]", new sliceType$6([new $Int(fileNo)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = _r$3; + $s = 7; case 7: return $24r$1; + /* */ } return; } var $f = {$blk: filename, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, check, file, fileNo, pos, x, $s};return $f; + }; + $ptrType(Checker).prototype.importPackage = function importPackage(at$1, path, dir$1) { + var {_entry, _key, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, at$1, check, dir$1, err, i, i$1, imp, importer, importerFrom, key, name, ok, path, $s, $r, $c} = $restore(this, {at$1, path, dir$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + key = new importKey.ptr(path, dir$1); + imp = (_entry = $mapIndex(check.impMap,importKey.keyFor(key)), _entry !== undefined ? _entry.v : ptrType$1.nil); + if (!(imp === ptrType$1.nil)) { + $s = -1; return imp; + } + /* */ if (path === "C" && (check.conf.FakeImportC || check.conf.go115UsesCgo)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (path === "C" && (check.conf.FakeImportC || check.conf.go115UsesCgo)) { */ case 1: + _r$1 = NewPackage("C", "C"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + imp = _r$1; + imp.fake = true; + imp.cgo = check.conf.go115UsesCgo; + $s = 3; continue; + /* } else { */ case 2: + err = $ifaceNil; + importer = check.conf.Importer; + /* */ if ($interfaceIsEqual(importer, $ifaceNil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($interfaceIsEqual(importer, $ifaceNil)) { */ case 5: + _r$2 = fmt.Errorf("Config.Importer not installed", sliceType$6.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + err = _r$2; + $s = 7; continue; + /* } else { */ case 6: + _tuple = $assertType(importer, ImporterFrom, true); + importerFrom = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (ok) { */ case 9: + _r$3 = importerFrom.ImportFrom(path, dir$1, 0); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = _r$3; + imp = _tuple$1[0]; + err = _tuple$1[1]; + /* */ if (imp === ptrType$1.nil && $interfaceIsEqual(err, $ifaceNil)) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (imp === ptrType$1.nil && $interfaceIsEqual(err, $ifaceNil)) { */ case 13: + _r$4 = fmt.Errorf("Config.Importer.ImportFrom(%s, %s, 0) returned nil but no error", new sliceType$6([new $String(path), new $String(dir$1)])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + err = _r$4; + /* } */ case 14: + $s = 11; continue; + /* } else { */ case 10: + _r$5 = importer.Import(path); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$2 = _r$5; + imp = _tuple$2[0]; + err = _tuple$2[1]; + /* */ if (imp === ptrType$1.nil && $interfaceIsEqual(err, $ifaceNil)) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (imp === ptrType$1.nil && $interfaceIsEqual(err, $ifaceNil)) { */ case 17: + _r$6 = fmt.Errorf("Config.Importer.Import(%s) returned nil but no error", new sliceType$6([new $String(path)])); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + err = _r$6; + /* } */ case 18: + /* } */ case 11: + /* } */ case 7: + /* */ if ($interfaceIsEqual(err, $ifaceNil) && !(imp === ptrType$1.nil) && (imp.name === "_" || imp.name === "")) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if ($interfaceIsEqual(err, $ifaceNil) && !(imp === ptrType$1.nil) && (imp.name === "_" || imp.name === "")) { */ case 20: + _r$7 = fmt.Errorf("invalid package name: %q", new sliceType$6([new $String(imp.name)])); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + err = _r$7; + imp = ptrType$1.nil; + /* } */ case 21: + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 23: + $r = check.errorf(at$1, 6, "could not import %s (%s)", new sliceType$6([new $String(path), err])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (imp === ptrType$1.nil) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (imp === ptrType$1.nil) { */ case 26: + name = path; + i = name.length; + if (i > 0 && (name.charCodeAt((i - 1 >> 0)) === 47)) { + name = $substring(name, 0, (i - 1 >> 0)); + } + i$1 = strings.LastIndex(name, "/"); + if (i$1 >= 0) { + name = $substring(name, (i$1 + 1 >> 0)); + } + _r$8 = NewPackage(path, name); /* */ $s = 28; case 28: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + imp = _r$8; + /* } */ case 27: + imp.fake = true; + /* } */ case 24: + /* } */ case 3: + if (imp.complete || imp.fake) { + _key = $clone(key, importKey); (check.impMap || $throwRuntimeError("assignment to entry in nil map")).set(importKey.keyFor(_key), { k: _key, v: imp }); + if (!(check.pkgPathMap === false)) { + check.markImports(imp); + } + $s = -1; return imp; + } + $s = -1; return ptrType$1.nil; + /* */ } return; } var $f = {$blk: importPackage, $c: true, $r, _entry, _key, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, at$1, check, dir$1, err, i, i$1, imp, importer, importerFrom, key, name, ok, path, $s};return $f; + }; + $ptrType(Checker).prototype.collectObjects = function collectObjects() { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _entry, _entry$1, _i, _i$1, _i$2, _i$3, _i$4, _key, _key$1, _key$2, _keys, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _size, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, alt, base, check, end, f, file, fileDir, fileNo, fileScope, fileScopes, i, imp, m, methods, name, obj, ok, pkg, pkg$1, pkgImports, pos, ptr, scope, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = [check]; + methods = [methods]; + pkg = [pkg]; + pkgImports = [pkgImports]; + check[0] = this; + pkg[0] = check[0].pkg; + pkgImports[0] = new $global.Map(); + _ref = pkg[0].imports; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + imp = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _key = imp; (pkgImports[0] || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$1.keyFor(_key), { k: _key, v: true }); + _i++; + } + methods[0] = sliceType$21.nil; + fileScopes = sliceType$20.nil; + _ref$1 = check[0].files; + _i$1 = 0; + /* while (true) { */ case 1: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 2; continue; } + fileDir = [fileDir]; + fileScope = [fileScope]; + fileNo = _i$1; + file = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + $r = check[0].recordDef(file.Name, $ifaceNil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp = file.Pos(); + _r$1 = file.End(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tmp$1 = _r$1; + pos = _tmp; + end = _tmp$1; + _r$2 = check[0].fset.File(file.Pos()); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + f = _r$2; + if (!(f === ptrType$89.nil)) { + _tmp$2 = ((f.Base() >> 0)); + _tmp$3 = (((f.Base() + f.Size() >> 0) >> 0)); + pos = _tmp$2; + end = _tmp$3; + } + _arg = check[0].pkg.scope; + _arg$1 = pos; + _arg$2 = end; + _r$3 = check[0].filename(fileNo); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$3 = _r$3; + _r$4 = NewScope(_arg, _arg$1, _arg$2, _arg$3); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + fileScope[0] = _r$4; + fileScopes = $append(fileScopes, fileScope[0]); + $r = check[0].recordScope(file, fileScope[0]); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$5 = check[0].fset.Position(file.Name.Pos()); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = dir(_r$5.Filename); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + fileDir[0] = _r$6; + $r = check[0].walkDecls(file.Decls, (function(check, fileDir, fileScope, methods, pkg, pkgImports) { return function Checker·collectObjects·func1(d) { + var {_arg$4, _arg$5, _entry, _entry$1, _i$2, _i$3, _i$4, _key$1, _key$2, _key$3, _key$4, _keys, _r$10, _r$11, _r$7, _r$8, _r$9, _ref$2, _ref$3, _ref$4, _ref$5, _size, _tuple, _tuple$1, alt, code, d, d$1, d$2, d$3, d$4, d$5, d$6, d1, di, err, hasTParamError, i, i$1, imp$1, info, init$5, init$6, lhs, name, name$1, name$2, name$3, name$4, obj, obj$1, obj$2, obj$3, obj$4, path, pkgName, ptr, recv, t, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r, $c} = $restore(this, {d}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref$2 = d; + /* */ if ($assertType(_ref$2, importDecl, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref$2, constDecl, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref$2, varDecl, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref$2, typeDecl, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref$2, funcDecl, true)[1]) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($assertType(_ref$2, importDecl, true)[1]) { */ case 1: + d$1 = $clone(_ref$2.$val, importDecl); + if (d$1.spec.Path.Value === "") { + $s = -1; return; + } + _r$7 = validatedImportPath(d$1.spec.Path.Value); /* */ $s = 7; case 7: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple = _r$7; + path = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8: + $r = check[0].errorf(d$1.spec.Path, 5, "invalid import path (%s)", new sliceType$6([err])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 9: + _r$8 = check[0].importPackage(d$1.spec.Path, path, fileDir[0]); /* */ $s = 11; case 11: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + imp$1 = _r$8; + if (imp$1 === ptrType$1.nil) { + $s = -1; return; + } + name = imp$1.name; + /* */ if (!(d$1.spec.Name === ptrType$30.nil)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!(d$1.spec.Name === ptrType$30.nil)) { */ case 12: + name = d$1.spec.Name.Name; + /* */ if (path === "C") { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (path === "C") { */ case 14: + $r = check[0].error(d$1.spec.Name, 7, "cannot rename import \"C\""); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 15: + /* } */ case 13: + /* */ if (name === "init") { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (name === "init") { */ case 17: + $r = check[0].error(d$1.spec, 39, "cannot import package as init - init must be a func"); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 18: + if (!(_entry = $mapIndex(pkgImports[0],ptrType$1.keyFor(imp$1)), _entry !== undefined ? _entry.v : false)) { + _key$1 = imp$1; (pkgImports[0] || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$1.keyFor(_key$1), { k: _key$1, v: true }); + pkg[0].imports = $append(pkg[0].imports, imp$1); + } + pkgName = NewPkgName(d$1.spec.Pos(), pkg[0], name, imp$1); + /* */ if (!(d$1.spec.Name === ptrType$30.nil)) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (!(d$1.spec.Name === ptrType$30.nil)) { */ case 20: + $r = check[0].recordDef(d$1.spec.Name, pkgName); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else { */ case 21: + $r = check[0].recordImplicit(d$1.spec, pkgName); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 22: + if (imp$1.fake) { + pkgName.used = true; + } + check[0].imports = $append(check[0].imports, pkgName); + /* */ if (name === ".") { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (name === ".") { */ case 25: + if (check[0].dotImportMap === false) { + check[0].dotImportMap = new $global.Map(); + } + _ref$3 = imp$1.scope.elems; + _i$2 = 0; + _keys = _ref$3 ? _ref$3.keys() : undefined; + _size = _ref$3 ? _ref$3.size : 0; + /* while (true) { */ case 28: + /* if (!(_i$2 < _size)) { break; } */ if(!(_i$2 < _size)) { $s = 29; continue; } + _key$2 = _keys.next().value; + _entry$1 = _ref$3.get(_key$2); + if (_entry$1 === undefined) { + _i$2++; + /* continue; */ $s = 28; continue; + } + name$1 = _entry$1.k; + obj = _entry$1.v; + /* */ if (token.IsExported(name$1)) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (token.IsExported(name$1)) { */ case 30: + _r$9 = fileScope[0].Lookup(name$1); /* */ $s = 32; case 32: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + alt = _r$9; + /* */ if (!($interfaceIsEqual(alt, $ifaceNil))) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (!($interfaceIsEqual(alt, $ifaceNil))) { */ case 33: + _arg$4 = d$1.spec.Name; + _r$10 = alt.Name(); /* */ $s = 36; case 36: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _arg$5 = new $String(_r$10); + $r = check[0].errorf(_arg$4, 10, "%s redeclared in this block", new sliceType$6([_arg$5])); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].reportAltDecl(alt); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 35; continue; + /* } else { */ case 34: + fileScope[0].insert(name$1, obj); + _key$3 = $clone(new dotImportKey.ptr(fileScope[0], name$1), dotImportKey); (check[0].dotImportMap || $throwRuntimeError("assignment to entry in nil map")).set(dotImportKey.keyFor(_key$3), { k: _key$3, v: pkgName }); + /* } */ case 35: + /* } */ case 31: + _i$2++; + $s = 28; continue; + case 29: + $s = 27; continue; + /* } else { */ case 26: + $r = check[0].declare(fileScope[0], ptrType$30.nil, pkgName, 0); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 27: + $s = 6; continue; + /* } else if ($assertType(_ref$2, constDecl, true)[1]) { */ case 2: + d$2 = $clone(_ref$2.$val, constDecl); + _ref$4 = d$2.spec.Names; + _i$3 = 0; + /* while (true) { */ case 40: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 41; continue; } + i = _i$3; + name$2 = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); + obj$1 = NewConst(name$2.Pos(), pkg[0], name$2.Name, $ifaceNil, constant.MakeInt64((new $Int64(0, d$2.iota)))); + init$5 = $ifaceNil; + if (i < d$2.init.$length) { + init$5 = (x = d$2.init, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + } + d$6 = new declInfo.ptr(fileScope[0], sliceType$10.nil, d$2.typ, init$5, d$2.inherited, ptrType$90.nil, ptrType$87.nil, false); + $r = check[0].declarePkgObj(name$2, obj$1, d$6); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$3++; + $s = 40; continue; + case 41: + $s = 6; continue; + /* } else if ($assertType(_ref$2, varDecl, true)[1]) { */ case 3: + d$3 = $clone(_ref$2.$val, varDecl); + lhs = $makeSlice(sliceType$10, d$3.spec.Names.$length); + d1 = ptrType$58.nil; + if (d$3.spec.Values.$length === 1) { + d1 = new declInfo.ptr(fileScope[0], lhs, d$3.spec.Type, (x$1 = d$3.spec.Values, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), false, ptrType$90.nil, ptrType$87.nil, false); + } + _ref$5 = d$3.spec.Names; + _i$4 = 0; + /* while (true) { */ case 43: + /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 44; continue; } + i$1 = _i$4; + name$3 = ((_i$4 < 0 || _i$4 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$4]); + obj$2 = NewVar(name$3.Pos(), pkg[0], name$3.Name, $ifaceNil); + ((i$1 < 0 || i$1 >= lhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + i$1] = obj$2); + di = d1; + if (di === ptrType$58.nil) { + init$6 = $ifaceNil; + if (i$1 < d$3.spec.Values.$length) { + init$6 = (x$2 = d$3.spec.Values, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1])); + } + di = new declInfo.ptr(fileScope[0], sliceType$10.nil, d$3.spec.Type, init$6, false, ptrType$90.nil, ptrType$87.nil, false); + } + $r = check[0].declarePkgObj(name$3, obj$2, di); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$4++; + $s = 43; continue; + case 44: + $s = 6; continue; + /* } else if ($assertType(_ref$2, typeDecl, true)[1]) { */ case 4: + d$4 = $clone(_ref$2.$val, typeDecl); + /* */ if (!((d$4.spec.TypeParams.NumFields() === 0)) && !check[0].allowVersion(pkg[0], 1, 18)) { $s = 46; continue; } + /* */ $s = 47; continue; + /* if (!((d$4.spec.TypeParams.NumFields() === 0)) && !check[0].allowVersion(pkg[0], 1, 18)) { */ case 46: + $r = check[0].softErrorf((x$3 = d$4.spec.TypeParams.List, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), 135, "type parameter requires go1.18 or later", sliceType$6.nil); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 47: + obj$3 = NewTypeName(d$4.spec.Name.Pos(), pkg[0], d$4.spec.Name.Name, $ifaceNil); + $r = check[0].declarePkgObj(d$4.spec.Name, obj$3, new declInfo.ptr(fileScope[0], sliceType$10.nil, $ifaceNil, $ifaceNil, false, d$4.spec, ptrType$87.nil, false)); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 6; continue; + /* } else if ($assertType(_ref$2, funcDecl, true)[1]) { */ case 5: + d$5 = $clone(_ref$2.$val, funcDecl); + name$4 = d$5.decl.Name.Name; + obj$4 = NewFunc(d$5.decl.Name.Pos(), pkg[0], name$4, ptrType$27.nil); + hasTParamError = false; + /* */ if (d$5.decl.Recv.NumFields() === 0) { $s = 50; continue; } + /* */ $s = 51; continue; + /* if (d$5.decl.Recv.NumFields() === 0) { */ case 50: + /* */ if (!(d$5.decl.Recv === ptrType$49.nil)) { $s = 53; continue; } + /* */ $s = 54; continue; + /* if (!(d$5.decl.Recv === ptrType$49.nil)) { */ case 53: + $r = check[0].error(d$5.decl.Recv, 31, "method has no receiver"); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 54: + /* */ if (name$4 === "init" || (name$4 === "main" && check[0].pkg.name === "main")) { $s = 56; continue; } + /* */ $s = 57; continue; + /* if (name$4 === "init" || (name$4 === "main" && check[0].pkg.name === "main")) { */ case 56: + code = 39; + if (name$4 === "main") { + code = 40; + } + /* */ if (!((d$5.decl.Type.TypeParams.NumFields() === 0))) { $s = 58; continue; } + /* */ $s = 59; continue; + /* if (!((d$5.decl.Type.TypeParams.NumFields() === 0))) { */ case 58: + $r = check[0].softErrorf((x$4 = d$5.decl.Type.TypeParams.List, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])), code, "func %s must have no type parameters", new sliceType$6([new $String(name$4)])); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + hasTParamError = true; + /* } */ case 59: + t = d$5.decl.Type; + /* */ if (!((t.Params.NumFields() === 0)) || !(t.Results === ptrType$49.nil)) { $s = 61; continue; } + /* */ $s = 62; continue; + /* if (!((t.Params.NumFields() === 0)) || !(t.Results === ptrType$49.nil)) { */ case 61: + $r = check[0].softErrorf(d$5.decl.Name, code, "func %s must have no arguments and no return values", new sliceType$6([new $String(name$4)])); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 62: + /* } */ case 57: + /* */ if (name$4 === "init") { $s = 64; continue; } + /* */ $s = 65; continue; + /* if (name$4 === "init") { */ case 64: + obj$4.object.parent = pkg[0].scope; + $r = check[0].recordDef(d$5.decl.Name, obj$4); /* */ $s = 67; case 67: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (d$5.decl.Body === ptrType$74.nil) { $s = 68; continue; } + /* */ $s = 69; continue; + /* if (d$5.decl.Body === ptrType$74.nil) { */ case 68: + $r = check[0].softErrorf(obj$4, 37, "missing function body", sliceType$6.nil); /* */ $s = 70; case 70: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 69: + $s = 66; continue; + /* } else { */ case 65: + $r = check[0].declare(pkg[0].scope, d$5.decl.Name, obj$4, 0); /* */ $s = 71; case 71: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 66: + $s = 52; continue; + /* } else { */ case 51: + _r$11 = check[0].unpackRecv((x$5 = d$5.decl.Recv.List, (0 >= x$5.$length ? ($throwRuntimeError("index out of range"), undefined) : x$5.$array[x$5.$offset + 0])).Type, false); /* */ $s = 72; case 72: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$1 = _r$11; + ptr = _tuple$1[0]; + recv = _tuple$1[1]; + if (!(recv === ptrType$30.nil) && !(name$4 === "_")) { + methods[0] = $append(methods[0], new methodInfo.ptr(obj$4, ptr, recv)); + } + $r = check[0].recordDef(d$5.decl.Name, obj$4); /* */ $s = 73; case 73: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 52: + /* */ if (!((d$5.decl.Type.TypeParams.NumFields() === 0)) && !check[0].allowVersion(pkg[0], 1, 18) && !hasTParamError) { $s = 74; continue; } + /* */ $s = 75; continue; + /* if (!((d$5.decl.Type.TypeParams.NumFields() === 0)) && !check[0].allowVersion(pkg[0], 1, 18) && !hasTParamError) { */ case 74: + $r = check[0].softErrorf((x$6 = d$5.decl.Type.TypeParams.List, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0])), 135, "type parameter requires go1.18 or later", sliceType$6.nil); /* */ $s = 76; case 76: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 75: + info = new declInfo.ptr(fileScope[0], sliceType$10.nil, $ifaceNil, $ifaceNil, false, ptrType$90.nil, d$5.decl, false); + _key$4 = obj$4; (check[0].objMap || $throwRuntimeError("assignment to entry in nil map")).set(Object.keyFor(_key$4), { k: _key$4, v: info }); + $r = obj$4.object.setOrder((((check[0].objMap ? check[0].objMap.size : 0) >>> 0))); /* */ $s = 77; case 77: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·collectObjects·func1, $c: true, $r, _arg$4, _arg$5, _entry, _entry$1, _i$2, _i$3, _i$4, _key$1, _key$2, _key$3, _key$4, _keys, _r$10, _r$11, _r$7, _r$8, _r$9, _ref$2, _ref$3, _ref$4, _ref$5, _size, _tuple, _tuple$1, alt, code, d, d$1, d$2, d$3, d$4, d$5, d$6, d1, di, err, hasTParamError, i, i$1, imp$1, info, init$5, init$6, lhs, name, name$1, name$2, name$3, name$4, obj, obj$1, obj$2, obj$3, obj$4, path, pkgName, ptr, recv, t, x, x$1, x$2, x$3, x$4, x$5, x$6, $s};return $f; + }; })(check, fileDir, fileScope, methods, pkg, pkgImports)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 1; continue; + case 2: + _ref$2 = fileScopes; + _i$2 = 0; + /* while (true) { */ case 12: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 13; continue; } + scope = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + _ref$3 = scope.elems; + _i$3 = 0; + _keys = _ref$3 ? _ref$3.keys() : undefined; + _size = _ref$3 ? _ref$3.size : 0; + /* while (true) { */ case 14: + /* if (!(_i$3 < _size)) { break; } */ if(!(_i$3 < _size)) { $s = 15; continue; } + _key$1 = _keys.next().value; + _entry = _ref$3.get(_key$1); + if (_entry === undefined) { + _i$3++; + /* continue; */ $s = 14; continue; + } + name = _entry.k; + obj = _entry.v; + _r$7 = pkg[0].scope.Lookup(name); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + alt = _r$7; + /* */ if (!($interfaceIsEqual(alt, $ifaceNil))) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (!($interfaceIsEqual(alt, $ifaceNil))) { */ case 17: + _r$8 = resolve(name, obj); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + obj = _r$8; + _tuple = $assertType(obj, ptrType$31, true); + pkg$1 = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (ok) { */ case 20: + _arg$4 = alt; + _r$9 = alt.Name(); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _arg$5 = new $String(_r$9); + _arg$6 = pkg$1.Imported(); + $r = check[0].errorf(_arg$4, 10, "%s already declared through import of %s", new sliceType$6([_arg$5, _arg$6])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].reportAltDecl(pkg$1); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else { */ case 21: + _arg$7 = alt; + _r$10 = alt.Name(); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _arg$8 = new $String(_r$10); + _r$11 = obj.Pkg(); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _arg$9 = _r$11; + $r = check[0].errorf(_arg$7, 10, "%s already declared through dot-import of %s", new sliceType$6([_arg$8, _arg$9])); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].reportAltDecl(obj); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 22: + /* } */ case 18: + _i$3++; + $s = 14; continue; + case 15: + _i$2++; + $s = 12; continue; + case 13: + if (methods[0] === sliceType$21.nil) { + $s = -1; return; + } + check[0].methods = new $global.Map(); + _ref$4 = methods[0]; + _i$4 = 0; + /* while (true) { */ case 30: + /* if (!(_i$4 < _ref$4.$length)) { break; } */ if(!(_i$4 < _ref$4.$length)) { $s = 31; continue; } + i = _i$4; + m = ((i < 0 || i >= methods[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : methods[0].$array[methods[0].$offset + i]); + _r$12 = check[0].resolveBaseTypeName(m.ptr, m.recv); /* */ $s = 32; case 32: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _tuple$1 = _r$12; + ptr = _tuple$1[0]; + base = _tuple$1[1]; + if (!(base === ptrType$17.nil)) { + m.obj.hasPtrRecv_ = ptr; + _key$2 = base; (check[0].methods || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$17.keyFor(_key$2), { k: _key$2, v: $append((_entry$1 = $mapIndex(check[0].methods,ptrType$17.keyFor(base)), _entry$1 !== undefined ? _entry$1.v : sliceType.nil), m.obj) }); + } + _i$4++; + $s = 30; continue; + case 31: + $s = -1; return; + /* */ } return; } var $f = {$blk: collectObjects, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _entry, _entry$1, _i, _i$1, _i$2, _i$3, _i$4, _key, _key$1, _key$2, _keys, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _size, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, alt, base, check, end, f, file, fileDir, fileNo, fileScope, fileScopes, i, imp, m, methods, name, obj, ok, pkg, pkg$1, pkgImports, pos, ptr, scope, $s};return $f; + }; + $ptrType(Checker).prototype.unpackRecv = function unpackRecv(rtyp, unpackParams) { + var {_i, _r$1, _ref, _ref$1, _ref$2, _ref$3, _tuple, arg, arg$1, arg$2, arg$3, arg$4, check, ix, name, par, ptr, rname, rtyp, t, t$1, t$2, tparams, unpackParams, $s, $r, $c} = $restore(this, {rtyp, unpackParams}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ptr = false; + rname = ptrType$30.nil; + tparams = sliceType$22.nil; + check = this; + L: + while (true) { + _ref = rtyp; + if ($assertType(_ref, ptrType$39, true)[1]) { + t = _ref.$val; + rtyp = t.X; + } else if ($assertType(_ref, ptrType$43, true)[1]) { + t$1 = _ref.$val; + ptr = true; + rtyp = t$1.X; + } else { + t$2 = _ref; + break L; + } + } + _ref$1 = rtyp; + /* */ if ($assertType(_ref$1, ptrType$37, true)[1] || $assertType(_ref$1, ptrType$38, true)[1]) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($assertType(_ref$1, ptrType$37, true)[1] || $assertType(_ref$1, ptrType$38, true)[1]) { */ case 1: + ix = typeparams.UnpackIndexExpr(rtyp); + rtyp = ix.IndexListExpr.X; + /* */ if (unpackParams) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (unpackParams) { */ case 3: + _ref$2 = ix.IndexListExpr.Indices; + _i = 0; + /* while (true) { */ case 5: + /* if (!(_i < _ref$2.$length)) { break; } */ if(!(_i < _ref$2.$length)) { $s = 6; continue; } + arg = ((_i < 0 || _i >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i]); + par = ptrType$30.nil; + _ref$3 = arg; + /* */ if ($assertType(_ref$3, ptrType$30, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref$3, ptrType$35, true)[1]) { $s = 8; continue; } + /* */ if (_ref$3 === $ifaceNil) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ($assertType(_ref$3, ptrType$30, true)[1]) { */ case 7: + arg$1 = _ref$3.$val; + par = arg$1; + $s = 11; continue; + /* } else if ($assertType(_ref$3, ptrType$35, true)[1]) { */ case 8: + arg$2 = _ref$3.$val; + $s = 11; continue; + /* } else if (_ref$3 === $ifaceNil) { */ case 9: + arg$3 = _ref$3; + $r = check.error(ix.Orig, -1, "parameterized receiver contains nil parameters"); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 11; continue; + /* } else { */ case 10: + arg$4 = _ref$3; + $r = check.errorf(arg$4, 131, "receiver type parameter %s must be an identifier", new sliceType$6([arg$4])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + /* */ if (par === ptrType$30.nil) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (par === ptrType$30.nil) { */ case 14: + _r$1 = arg.Pos(); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + par = new ast.Ident.ptr(_r$1, "_", ptrType$81.nil); + /* } */ case 15: + tparams = $append(tparams, par); + _i++; + $s = 5; continue; + case 6: + /* } */ case 4: + /* } */ case 2: + _tuple = $assertType(rtyp, ptrType$30, true); + name = _tuple[0]; + if (!(name === ptrType$30.nil)) { + rname = name; + } + $s = -1; return [ptr, rname, tparams]; + /* */ } return; } var $f = {$blk: unpackRecv, $c: true, $r, _i, _r$1, _ref, _ref$1, _ref$2, _ref$3, _tuple, arg, arg$1, arg$2, arg$3, arg$4, check, ix, name, par, ptr, rname, rtyp, t, t$1, t$2, tparams, unpackParams, $s};return $f; + }; + $ptrType(Checker).prototype.resolveBaseTypeName = function resolveBaseTypeName(seenPtr, name) { + var {_entry, _entry$1, _key, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, base, check, name, name$1, obj, pexpr, ptr, seen, seenPtr, tdecl, tname, typ$3, $s, $r, $c} = $restore(this, {seenPtr, name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ptr = false; + base = ptrType$17.nil; + check = this; + ptr = seenPtr; + seen = false; + typ$3 = name; + /* while (true) { */ case 1: + typ$3 = unparen(typ$3); + _tuple = $assertType(typ$3, ptrType$43, true); + pexpr = _tuple[0]; + if (!(pexpr === ptrType$43.nil)) { + if (ptr) { + _tmp = false; + _tmp$1 = ptrType$17.nil; + ptr = _tmp; + base = _tmp$1; + $s = -1; return [ptr, base]; + } + ptr = true; + typ$3 = unparen(pexpr.X); + } + _tuple$1 = $assertType(typ$3, ptrType$30, true); + name$1 = _tuple$1[0]; + if (name$1 === ptrType$30.nil) { + _tmp$2 = false; + _tmp$3 = ptrType$17.nil; + ptr = _tmp$2; + base = _tmp$3; + $s = -1; return [ptr, base]; + } + _r$1 = check.pkg.scope.Lookup(name$1.Name); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + obj = _r$1; + if ($interfaceIsEqual(obj, $ifaceNil)) { + _tmp$4 = false; + _tmp$5 = ptrType$17.nil; + ptr = _tmp$4; + base = _tmp$5; + $s = -1; return [ptr, base]; + } + _tuple$2 = $assertType(obj, ptrType$17, true); + tname = _tuple$2[0]; + if (tname === ptrType$17.nil) { + _tmp$6 = false; + _tmp$7 = ptrType$17.nil; + ptr = _tmp$6; + base = _tmp$7; + $s = -1; return [ptr, base]; + } + if ((_entry = $mapIndex(seen,ptrType$17.keyFor(tname)), _entry !== undefined ? _entry.v : false)) { + _tmp$8 = false; + _tmp$9 = ptrType$17.nil; + ptr = _tmp$8; + base = _tmp$9; + $s = -1; return [ptr, base]; + } + tdecl = (_entry$1 = $mapIndex(check.objMap,Object.keyFor(tname)), _entry$1 !== undefined ? _entry$1.v : ptrType$58.nil).tdecl; + if (!new token.Pos(tdecl.Assign).IsValid()) { + _tmp$10 = ptr; + _tmp$11 = tname; + ptr = _tmp$10; + base = _tmp$11; + $s = -1; return [ptr, base]; + } + typ$3 = tdecl.Type; + if (seen === false) { + seen = new $global.Map(); + } + _key = tname; (seen || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$17.keyFor(_key), { k: _key, v: true }); + $s = 1; continue; + case 2: + $s = -1; return [ptr, base]; + /* */ } return; } var $f = {$blk: resolveBaseTypeName, $c: true, $r, _entry, _entry$1, _key, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, base, check, name, name$1, obj, pexpr, ptr, seen, seenPtr, tdecl, tname, typ$3, $s};return $f; + }; + $ptrType(Checker).prototype.packageObjects = function packageObjects() { + var {_entry, _entry$1, _i, _i$1, _i$2, _i$3, _i$4, _key, _keys, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _size, _tuple, _tuple$1, aliasList, check, i, obj, obj$1, obj$2, obj$3, obj$4, obj$5, objList, othersList, tname, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + objList = $makeSlice(sliceType$8, (check.objMap ? check.objMap.size : 0)); + i = 0; + _ref = check.objMap; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + obj = _entry.k; + ((i < 0 || i >= objList.$length) ? ($throwRuntimeError("index out of range"), undefined) : objList.$array[objList.$offset + i] = obj); + i = i + (1) >> 0; + _i++; + } + $r = sort.Sort(($convertSliceType(objList, inSourceOrder))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$1 = objList; + _i$1 = 0; + /* while (true) { */ case 2: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 3; continue; } + obj$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _tuple = $assertType(obj$1, ptrType$17, true); + obj$2 = _tuple[0]; + /* */ if (!(obj$2 === ptrType$17.nil) && !($interfaceIsEqual(obj$2.object.typ, $ifaceNil))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(obj$2 === ptrType$17.nil) && !($interfaceIsEqual(obj$2.object.typ, $ifaceNil))) { */ case 4: + $r = check.collectMethods(obj$2); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + _i$1++; + $s = 2; continue; + case 3: + aliasList = sliceType$23.nil; + othersList = sliceType$8.nil; + _ref$2 = objList; + _i$2 = 0; + /* while (true) { */ case 7: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 8; continue; } + obj$3 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + _tuple$1 = $assertType(obj$3, ptrType$17, true); + tname = _tuple$1[0]; + /* */ if (!(tname === ptrType$17.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(tname === ptrType$17.nil)) { */ case 9: + /* */ if (new token.Pos((_entry$1 = $mapIndex(check.objMap,Object.keyFor(tname)), _entry$1 !== undefined ? _entry$1.v : ptrType$58.nil).tdecl.Assign).IsValid()) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (new token.Pos((_entry$1 = $mapIndex(check.objMap,Object.keyFor(tname)), _entry$1 !== undefined ? _entry$1.v : ptrType$58.nil).tdecl.Assign).IsValid()) { */ case 12: + aliasList = $append(aliasList, tname); + $s = 14; continue; + /* } else { */ case 13: + $r = check.objDecl(obj$3, ptrType$9.nil); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 14: + $s = 11; continue; + /* } else { */ case 10: + othersList = $append(othersList, obj$3); + /* } */ case 11: + _i$2++; + $s = 7; continue; + case 8: + _ref$3 = aliasList; + _i$3 = 0; + /* while (true) { */ case 16: + /* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 17; continue; } + obj$4 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]); + $r = check.objDecl(obj$4, ptrType$9.nil); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$3++; + $s = 16; continue; + case 17: + _ref$4 = othersList; + _i$4 = 0; + /* while (true) { */ case 19: + /* if (!(_i$4 < _ref$4.$length)) { break; } */ if(!(_i$4 < _ref$4.$length)) { $s = 20; continue; } + obj$5 = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]); + $r = check.objDecl(obj$5, ptrType$9.nil); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$4++; + $s = 19; continue; + case 20: + check.methods = false; + $s = -1; return; + /* */ } return; } var $f = {$blk: packageObjects, $c: true, $r, _entry, _entry$1, _i, _i$1, _i$2, _i$3, _i$4, _key, _keys, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _size, _tuple, _tuple$1, aliasList, check, i, obj, obj$1, obj$2, obj$3, obj$4, obj$5, objList, othersList, tname, $s};return $f; + }; + inSourceOrder.prototype.Len = function Len$6() { + var a; + a = this; + return a.$length; + }; + $ptrType(inSourceOrder).prototype.Len = function(...$args) { return this.$get().Len(...$args); }; + inSourceOrder.prototype.Less = function Less$1(i, j) { + var {$24r, _r$1, _r$2, a, i, j, $s, $r, $c} = $restore(this, {i, j}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = this; + _r$1 = ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]).order(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = ((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]).order(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$1 < _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Less$1, $c: true, $r, $24r, _r$1, _r$2, a, i, j, $s};return $f; + }; + $ptrType(inSourceOrder).prototype.Less = function(...$args) { return this.$get().Less(...$args); }; + inSourceOrder.prototype.Swap = function Swap$1(i, j) { + var _tmp, _tmp$1, a, i, j; + a = this; + _tmp = ((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]); + _tmp$1 = ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]); + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = _tmp); + ((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j] = _tmp$1); + }; + $ptrType(inSourceOrder).prototype.Swap = function(...$args) { return this.$get().Swap(...$args); }; + $ptrType(Checker).prototype.unusedImports = function unusedImports() { + var {_i, _ref, check, obj, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + if (check.conf.IgnoreFuncBodies) { + $s = -1; return; + } + _ref = check.imports; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + obj = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (!obj.used && !(obj.object.name === "_")) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!obj.used && !(obj.object.name === "_")) { */ case 3: + $r = check.errorUnusedPkg(obj); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: unusedImports, $c: true, $r, _i, _ref, check, obj, $s};return $f; + }; + $ptrType(Checker).prototype.errorUnusedPkg = function errorUnusedPkg(obj) { + var {check, elem, i, obj, path, $s, $r, $c} = $restore(this, {obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + path = obj.imported.path; + elem = path; + i = strings.LastIndex(elem, "/"); + if (i >= 0) { + elem = $substring(elem, (i + 1 >> 0)); + } + /* */ if (obj.object.name === "" || obj.object.name === "." || obj.object.name === elem) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (obj.object.name === "" || obj.object.name === "." || obj.object.name === elem) { */ case 1: + $r = check.softErrorf(obj, 8, "%q imported and not used", new sliceType$6([new $String(path)])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 3; continue; + /* } else { */ case 2: + $r = check.softErrorf(obj, 8, "%q imported as %s and not used", new sliceType$6([new $String(path), new $String(obj.object.name)])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: errorUnusedPkg, $c: true, $r, check, elem, i, obj, path, $s};return $f; + }; + dir = function dir$1(path) { + var i, path; + i = strings.LastIndexAny(path, "/\\"); + if (i > 0) { + return $substring(path, 0, i); + } + return "."; + }; + isBoolean = function isBoolean$1(t) { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = isBasic(t, 1); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: isBoolean$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + isInteger = function isInteger$1(t) { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = isBasic(t, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: isInteger$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + isUnsigned = function isUnsigned$1(t) { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = isBasic(t, 4); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: isUnsigned$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + isFloat = function isFloat$1(t) { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = isBasic(t, 8); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: isFloat$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + isComplex = function isComplex$1(t) { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = isBasic(t, 16); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: isComplex$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + isNumeric = function isNumeric$1(t) { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = isBasic(t, 26); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: isNumeric$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + isString = function isString$1(t) { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = isBasic(t, 32); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: isString$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + isIntegerOrFloat = function isIntegerOrFloat$1(t) { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = isBasic(t, 10); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: isIntegerOrFloat$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + isConstType = function isConstType$1(t) { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = isBasic(t, 59); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: isConstType$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + isBasic = function isBasic$1(t, info) { + var {_r$1, _tuple, info, t, u, $s, $r, $c} = $restore(this, {t, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = under(t); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$8, true); + u = _tuple[0]; + $s = -1; return !(u === ptrType$8.nil) && !(((u.info & info) === 0)); + /* */ } return; } var $f = {$blk: isBasic$1, $c: true, $r, _r$1, _tuple, info, t, u, $s};return $f; + }; + allBoolean = function allBoolean$1(typ$3) { + var {$24r, _r$1, typ$3, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = allBasic(typ$3, 1); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: allBoolean$1, $c: true, $r, $24r, _r$1, typ$3, $s};return $f; + }; + allInteger = function allInteger$1(typ$3) { + var {$24r, _r$1, typ$3, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = allBasic(typ$3, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: allInteger$1, $c: true, $r, $24r, _r$1, typ$3, $s};return $f; + }; + allUnsigned = function allUnsigned$1(typ$3) { + var {$24r, _r$1, typ$3, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = allBasic(typ$3, 4); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: allUnsigned$1, $c: true, $r, $24r, _r$1, typ$3, $s};return $f; + }; + allNumeric = function allNumeric$1(typ$3) { + var {$24r, _r$1, typ$3, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = allBasic(typ$3, 26); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: allNumeric$1, $c: true, $r, $24r, _r$1, typ$3, $s};return $f; + }; + allString = function allString$1(typ$3) { + var {$24r, _r$1, typ$3, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = allBasic(typ$3, 32); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: allString$1, $c: true, $r, $24r, _r$1, typ$3, $s};return $f; + }; + allOrdered = function allOrdered$1(typ$3) { + var {$24r, _r$1, typ$3, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = allBasic(typ$3, 42); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: allOrdered$1, $c: true, $r, $24r, _r$1, typ$3, $s};return $f; + }; + allNumericOrString = function allNumericOrString$1(typ$3) { + var {$24r, _r$1, typ$3, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = allBasic(typ$3, 58); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: allNumericOrString$1, $c: true, $r, $24r, _r$1, typ$3, $s};return $f; + }; + allBasic = function allBasic$1(t, info) { + var {$24r, $24r$1, _r$1, _r$2, _tuple, info, t, tpar, $s, $r, $c} = $restore(this, {t, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + info = [info]; + _tuple = $assertType(t, ptrType$14, true); + tpar = _tuple[0]; + /* */ if (!(tpar === ptrType$14.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(tpar === ptrType$14.nil)) { */ case 1: + _r$1 = tpar.is((function(info) { return function allBasic·func1(t$1) { + var {$24r, _r$1, _v, t$1, $s, $r, $c} = $restore(this, {t$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(!(t$1 === ptrType$4.nil))) { _v = false; $s = 1; continue s; } + _r$1 = isBasic(t$1.typ, info[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 1: + $24r = _v; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: allBasic·func1, $c: true, $r, $24r, _r$1, _v, t$1, $s};return $f; + }; })(info)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$2 = isBasic(t, info[0]); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = _r$2; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: allBasic$1, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _tuple, info, t, tpar, $s};return $f; + }; + hasName = function hasName$1(t) { + var _ref, t; + _ref = t; + if ($assertType(_ref, ptrType$8, true)[1] || $assertType(_ref, ptrType$9, true)[1] || $assertType(_ref, ptrType$14, true)[1]) { + return true; + } + return false; + }; + isTyped = function isTyped$1(t) { + var _tuple, b, t; + _tuple = $assertType(t, ptrType$8, true); + b = _tuple[0]; + return b === ptrType$8.nil || ((b.info & 64) === 0); + }; + isUntyped = function isUntyped$1(t) { + var t; + return !isTyped(t); + }; + IsInterface = function IsInterface$1(t) { + var {_r$1, _tuple, ok, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = under(t); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$13, true); + ok = _tuple[1]; + $s = -1; return ok; + /* */ } return; } var $f = {$blk: IsInterface$1, $c: true, $r, _r$1, _tuple, ok, t, $s};return $f; + }; + $pkg.IsInterface = IsInterface; + isNonTypeParamInterface = function isNonTypeParamInterface$1(t) { + var {$24r, _r$1, _v, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(!isTypeParam(t))) { _v = false; $s = 1; continue s; } + _r$1 = IsInterface(t); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 1: + $24r = _v; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: isNonTypeParamInterface$1, $c: true, $r, $24r, _r$1, _v, t, $s};return $f; + }; + isTypeParam = function isTypeParam$1(t) { + var _tuple, ok, t; + _tuple = $assertType(t, ptrType$14, true); + ok = _tuple[1]; + return ok; + }; + hasEmptyTypeset = function hasEmptyTypeset$1(t) { + var {_r$1, _tuple, _tuple$1, iface$1, t, tpar, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = $assertType(t, ptrType$14, true); + tpar = _tuple[0]; + /* */ if (!(tpar === ptrType$14.nil) && !($interfaceIsEqual(tpar.bound, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(tpar === ptrType$14.nil) && !($interfaceIsEqual(tpar.bound, $ifaceNil))) { */ case 1: + _r$1 = safeUnderlying(tpar.bound); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$1, ptrType$13, true); + iface$1 = _tuple$1[0]; + $s = -1; return !(iface$1 === ptrType$13.nil) && !(iface$1.tset === ptrType$7.nil) && iface$1.tset.IsEmpty(); + /* } */ case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: hasEmptyTypeset$1, $c: true, $r, _r$1, _tuple, _tuple$1, iface$1, t, tpar, $s};return $f; + }; + isGeneric = function isGeneric$1(t) { + var {$24r, _r$1, _r$2, _tuple, _v, named, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = $assertType(t, ptrType$9, true); + named = _tuple[0]; + if (!(!(named === ptrType$9.nil) && !(named.obj === ptrType$17.nil) && named.inst === ptrType$52.nil)) { _v = false; $s = 1; continue s; } + _r$1 = named.TypeParams(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Len(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2 > 0; case 1: + $24r = _v; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: isGeneric$1, $c: true, $r, $24r, _r$1, _r$2, _tuple, _v, named, t, $s};return $f; + }; + Comparable = function Comparable$1(T) { + var {$24r, T, _r$1, $s, $r, $c} = $restore(this, {T}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = comparable(T, true, false, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Comparable$1, $c: true, $r, $24r, T, _r$1, $s};return $f; + }; + $pkg.Comparable = Comparable; + comparable = function comparable$1(T, dynamic, seen, reportf) { + var {T, _entry, _i, _key, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _v, dynamic, f, reportf, seen, t, t$1, t$2, t$3, t$4, $s, $r, $c} = $restore(this, {T, dynamic, seen, reportf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ((_entry = $mapIndex(seen,Type.keyFor(T)), _entry !== undefined ? _entry.v : false)) { + $s = -1; return true; + } + if (seen === false) { + seen = new $global.Map(); + } + _key = T; (seen || $throwRuntimeError("assignment to entry in nil map")).set(Type.keyFor(_key), { k: _key, v: true }); + _r$1 = under(T); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1] || $assertType(_ref, ptrType$29, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 2: + t = _ref.$val; + $s = -1; return !((t.kind === 25)); + /* } else if ($assertType(_ref, ptrType$26, true)[1] || $assertType(_ref, ptrType$29, true)[1]) { */ case 3: + t$1 = _ref; + $s = -1; return true; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 4: + t$2 = _ref.$val; + _ref$1 = t$2.fields; + _i = 0; + /* while (true) { */ case 8: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 9; continue; } + f = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _r$2 = comparable(f.object.typ, dynamic, seen, $throwNilPointerError); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!_r$2) { */ case 10: + /* */ if (!(reportf === $throwNilPointerError)) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!(reportf === $throwNilPointerError)) { */ case 13: + $r = reportf("struct containing %s cannot be compared", new sliceType$6([f.object.typ])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 14: + $s = -1; return false; + /* } */ case 11: + _i++; + $s = 8; continue; + case 9: + $s = -1; return true; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 5: + t$3 = _ref.$val; + _r$3 = comparable(t$3.elem, dynamic, seen, $throwNilPointerError); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!_r$3) { */ case 16: + /* */ if (!(reportf === $throwNilPointerError)) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (!(reportf === $throwNilPointerError)) { */ case 19: + $r = reportf("%s cannot be compared", new sliceType$6([t$3])); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 20: + $s = -1; return false; + /* } */ case 17: + $s = -1; return true; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 6: + t$4 = _ref.$val; + if (dynamic && !isTypeParam(T)) { _v = true; $s = 24; continue s; } + _r$4 = t$4.typeSet(); /* */ $s = 25; case 25: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = _r$4.IsComparable(seen); /* */ $s = 26; case 26: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _v = _r$5; case 24: + /* */ if (_v) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (_v) { */ case 22: + $s = -1; return true; + /* } */ case 23: + /* */ if (!(reportf === $throwNilPointerError)) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (!(reportf === $throwNilPointerError)) { */ case 27: + _r$6 = t$4.typeSet(); /* */ $s = 32; case 32: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = _r$6.IsEmpty(); /* */ $s = 33; case 33: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (_r$7) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (_r$7) { */ case 29: + $r = reportf("empty type set", sliceType$6.nil); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 31; continue; + /* } else { */ case 30: + $r = reportf("incomparable types in type set", sliceType$6.nil); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 31: + /* } */ case 28: + /* } */ case 7: + $s = -1; return false; + /* */ } return; } var $f = {$blk: comparable$1, $c: true, $r, T, _entry, _i, _key, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _v, dynamic, f, reportf, seen, t, t$1, t$2, t$3, t$4, $s};return $f; + }; + hasNil = function hasNil$1(t) { + var {$24r, _r$1, _r$2, _r$3, _ref, _v, t, u, u$1, u$2, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = under(t); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1] || $assertType(_ref, ptrType$26, true)[1] || $assertType(_ref, ptrType$27, true)[1] || $assertType(_ref, ptrType$28, true)[1] || $assertType(_ref, ptrType$29, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 2: + u = _ref.$val; + $s = -1; return u.kind === 18; + /* } else if ($assertType(_ref, ptrType$25, true)[1] || $assertType(_ref, ptrType$26, true)[1] || $assertType(_ref, ptrType$27, true)[1] || $assertType(_ref, ptrType$28, true)[1] || $assertType(_ref, ptrType$29, true)[1]) { */ case 3: + u$1 = _ref; + $s = -1; return true; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 4: + u$2 = _ref.$val; + if (!isTypeParam(t)) { _v = true; $s = 6; continue s; } + _r$2 = u$2.typeSet(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.underIs((function hasNil·func1(u$3) { + var {$24r, _r$3, _v$1, u$3, $s, $r, $c} = $restore(this, {u$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(!($interfaceIsEqual(u$3, $ifaceNil)))) { _v$1 = false; $s = 1; continue s; } + _r$3 = hasNil(u$3); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v$1 = _r$3; case 1: + $24r = _v$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: hasNil·func1, $c: true, $r, $24r, _r$3, _v$1, u$3, $s};return $f; + })); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3; case 6: + $24r = _v; + $s = 9; case 9: return $24r; + /* } */ case 5: + $s = -1; return false; + /* */ } return; } var $f = {$blk: hasNil$1, $c: true, $r, $24r, _r$1, _r$2, _r$3, _ref, _v, t, u, u$1, u$2, $s};return $f; + }; + $ptrType(ifacePair).prototype.identical = function identical$1(q) { + var p, q; + p = this; + return p.x === q.x && p.y === q.y || p.x === q.y && p.y === q.x; + }; + identical = function identical$2(x, y, cmpTags, p) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, a, b, check, cmpTags, ctxt, f, f$1, g, g$1, i, i$1, i$2, i$3, i$4, i$5, ok, ok$1, ok$2, ok$3, ok$4, ok$5, ok$6, ok$7, ok$8, ok$9, p, q, smap, targs, unionSets, v, w, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xa, xargs, xset, xset$1, xtparam, xtparams, y, y$1, y$10, y$11, y$12, y$2, y$3, y$4, y$5, y$6, y$7, y$8, y$9, yargs, ybound, yparams, yresults, yset, yset$1, ytparams, $s, $r, $c} = $restore(this, {x, y, cmpTags, p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(x, y)) { + $s = -1; return true; + } + _ref = x; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$29, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 13; continue; } + /* */ if (_ref === $ifaceNil) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 1: + x$1 = _ref.$val; + _tuple = $assertType(y, ptrType$8, true); + y$1 = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return x$1.kind === y$1.kind; + } + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 2: + x$2 = _ref.$val; + _tuple$1 = $assertType(y, ptrType$10, true); + y$2 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + /* */ if (ok$1) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (ok$1) { */ case 17: + if (!((x$16 = x$2.len, (x$16.$high < 0 || (x$16.$high === 0 && x$16.$low < 0))) || (x$17 = y$2.len, (x$17.$high < 0 || (x$17.$high === 0 && x$17.$low < 0))) || (x$18 = x$2.len, x$19 = y$2.len, (x$18.$high === x$19.$high && x$18.$low === x$19.$low)))) { _v = false; $s = 19; continue s; } + _r$1 = identical(x$2.elem, y$2.elem, cmpTags, p); /* */ $s = 20; case 20: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 19: + $24r = _v; + $s = 21; case 21: return $24r; + /* } */ case 18: + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 3: + x$3 = _ref.$val; + _tuple$2 = $assertType(y, ptrType$25, true); + y$3 = _tuple$2[0]; + ok$2 = _tuple$2[1]; + /* */ if (ok$2) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (ok$2) { */ case 22: + _r$2 = identical(x$3.elem, y$3.elem, cmpTags, p); /* */ $s = 24; case 24: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = _r$2; + $s = 25; case 25: return $24r$1; + /* } */ case 23: + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 4: + x$4 = _ref.$val; + _tuple$3 = $assertType(y, ptrType$11, true); + y$4 = _tuple$3[0]; + ok$3 = _tuple$3[1]; + /* */ if (ok$3) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (ok$3) { */ case 26: + /* */ if (x$4.NumFields() === y$4.NumFields()) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (x$4.NumFields() === y$4.NumFields()) { */ case 28: + _ref$1 = x$4.fields; + _i = 0; + /* while (true) { */ case 30: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 31; continue; } + i = _i; + f = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + g = (x$20 = y$4.fields, ((i < 0 || i >= x$20.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$20.$array[x$20.$offset + i])); + if (!(f.embedded === g.embedded) || cmpTags && !(x$4.Tag(i) === y$4.Tag(i)) || !f.object.sameId(g.object.pkg, g.object.name)) { _v$1 = true; $s = 34; continue s; } + _r$3 = identical(f.object.typ, g.object.typ, cmpTags, p); /* */ $s = 35; case 35: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v$1 = !_r$3; case 34: + /* */ if (_v$1) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (_v$1) { */ case 32: + $s = -1; return false; + /* } */ case 33: + _i++; + $s = 30; continue; + case 31: + $s = -1; return true; + /* } */ case 29: + /* } */ case 27: + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 5: + x$5 = _ref.$val; + _tuple$4 = $assertType(y, ptrType$26, true); + y$5 = _tuple$4[0]; + ok$4 = _tuple$4[1]; + /* */ if (ok$4) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (ok$4) { */ case 36: + _r$4 = identical(x$5.base, y$5.base, cmpTags, p); /* */ $s = 38; case 38: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$2 = _r$4; + $s = 39; case 39: return $24r$2; + /* } */ case 37: + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 6: + x$6 = _ref.$val; + _tuple$5 = $assertType(y, ptrType$15, true); + y$6 = _tuple$5[0]; + ok$5 = _tuple$5[1]; + /* */ if (ok$5) { $s = 40; continue; } + /* */ $s = 41; continue; + /* if (ok$5) { */ case 40: + /* */ if (x$6.Len() === y$6.Len()) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (x$6.Len() === y$6.Len()) { */ case 42: + /* */ if (!(x$6 === ptrType$15.nil)) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (!(x$6 === ptrType$15.nil)) { */ case 44: + _ref$2 = x$6.vars; + _i$1 = 0; + /* while (true) { */ case 46: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 47; continue; } + i$1 = _i$1; + v = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + w = (x$21 = y$6.vars, ((i$1 < 0 || i$1 >= x$21.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$21.$array[x$21.$offset + i$1])); + _r$5 = identical(v.object.typ, w.object.typ, cmpTags, p); /* */ $s = 50; case 50: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 48; continue; } + /* */ $s = 49; continue; + /* if (!_r$5) { */ case 48: + $s = -1; return false; + /* } */ case 49: + _i$1++; + $s = 46; continue; + case 47: + /* } */ case 45: + $s = -1; return true; + /* } */ case 43: + /* } */ case 41: + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 7: + x$7 = _ref.$val; + _tuple$6 = $assertType(y, ptrType$27, true); + y$7 = _tuple$6[0]; + if (y$7 === ptrType$27.nil) { + $s = -1; return false; + } + if (!((x$7.TypeParams().Len() === y$7.TypeParams().Len()))) { + $s = -1; return false; + } + yparams = y$7.params; + yresults = y$7.results; + /* */ if (x$7.TypeParams().Len() > 0) { $s = 51; continue; } + /* */ $s = 52; continue; + /* if (x$7.TypeParams().Len() > 0) { */ case 51: + xtparams = x$7.TypeParams().list(); + ytparams = y$7.TypeParams().list(); + targs = sliceType$2.nil; + _ref$3 = xtparams; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$3.$length)) { break; } + i$2 = _i$2; + targs = $append(targs, x$7.TypeParams().At(i$2)); + _i$2++; + } + _r$6 = makeSubstMap(ytparams, targs); /* */ $s = 53; case 53: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + smap = _r$6; + check = ptrType$5.nil; + ctxt = NewContext(); + _ref$4 = xtparams; + _i$3 = 0; + /* while (true) { */ case 54: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 55; continue; } + i$3 = _i$3; + xtparam = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); + _r$7 = check.subst(0, ((i$3 < 0 || i$3 >= ytparams.$length) ? ($throwRuntimeError("index out of range"), undefined) : ytparams.$array[ytparams.$offset + i$3]).bound, smap, ptrType$9.nil, ctxt); /* */ $s = 56; case 56: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + ybound = _r$7; + _r$8 = identical(xtparam.bound, ybound, cmpTags, p); /* */ $s = 59; case 59: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (!_r$8) { $s = 57; continue; } + /* */ $s = 58; continue; + /* if (!_r$8) { */ case 57: + $s = -1; return false; + /* } */ case 58: + _i$3++; + $s = 54; continue; + case 55: + _r$9 = check.subst(0, y$7.params, smap, ptrType$9.nil, ctxt); /* */ $s = 60; case 60: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + yparams = $assertType(_r$9, ptrType$15); + _r$10 = check.subst(0, y$7.results, smap, ptrType$9.nil, ctxt); /* */ $s = 61; case 61: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + yresults = $assertType(_r$10, ptrType$15); + /* } */ case 52: + if (!(x$7.variadic === y$7.variadic)) { _v$3 = false; $s = 63; continue s; } + _r$11 = identical(x$7.params, yparams, cmpTags, p); /* */ $s = 64; case 64: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _v$3 = _r$11; case 63: + if (!(_v$3)) { _v$2 = false; $s = 62; continue s; } + _r$12 = identical(x$7.results, yresults, cmpTags, p); /* */ $s = 65; case 65: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _v$2 = _r$12; case 62: + $24r$3 = _v$2; + $s = 66; case 66: return $24r$3; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 8: + x$8 = _ref.$val; + _tuple$7 = $assertType(y, ptrType$12, true); + y$8 = _tuple$7[0]; + /* */ if (!(y$8 === ptrType$12.nil)) { $s = 67; continue; } + /* */ $s = 68; continue; + /* if (!(y$8 === ptrType$12.nil)) { */ case 67: + unionSets = new $global.Map(); + _r$13 = computeUnionTypeSet(ptrType$5.nil, unionSets, 0, x$8); /* */ $s = 69; case 69: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + xset = _r$13; + _r$14 = computeUnionTypeSet(ptrType$5.nil, unionSets, 0, y$8); /* */ $s = 70; case 70: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + yset = _r$14; + _r$15 = xset.terms.equal(yset.terms); /* */ $s = 71; case 71: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + $24r$4 = _r$15; + $s = 72; case 72: return $24r$4; + /* } */ case 68: + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 9: + x$9 = _ref.$val; + _tuple$8 = $assertType(y, ptrType$13, true); + y$9 = _tuple$8[0]; + ok$6 = _tuple$8[1]; + /* */ if (ok$6) { $s = 73; continue; } + /* */ $s = 74; continue; + /* if (ok$6) { */ case 73: + _r$16 = x$9.typeSet(); /* */ $s = 75; case 75: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + xset$1 = _r$16; + _r$17 = y$9.typeSet(); /* */ $s = 76; case 76: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + yset$1 = _r$17; + if (!(xset$1.comparable === yset$1.comparable)) { + $s = -1; return false; + } + _r$18 = xset$1.terms.equal(yset$1.terms); /* */ $s = 79; case 79: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + /* */ if (!_r$18) { $s = 77; continue; } + /* */ $s = 78; continue; + /* if (!_r$18) { */ case 77: + $s = -1; return false; + /* } */ case 78: + a = xset$1.methods; + b = yset$1.methods; + /* */ if (a.$length === b.$length) { $s = 80; continue; } + /* */ $s = 81; continue; + /* if (a.$length === b.$length) { */ case 80: + q = new ifacePair.ptr(x$9, y$9, p); + while (true) { + if (!(!(p === ptrType$23.nil))) { break; } + if (p.identical(q)) { + $s = -1; return true; + } + p = p.prev; + } + /* */ if (false) { $s = 82; continue; } + /* */ $s = 83; continue; + /* if (false) { */ case 82: + $r = assertSortedMethods(a); /* */ $s = 84; case 84: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assertSortedMethods(b); /* */ $s = 85; case 85: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 83: + _ref$5 = a; + _i$4 = 0; + /* while (true) { */ case 86: + /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 87; continue; } + i$4 = _i$4; + f$1 = ((_i$4 < 0 || _i$4 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$4]); + g$1 = ((i$4 < 0 || i$4 >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i$4]); + if (!(f$1.object.Id() === g$1.object.Id())) { _v$4 = true; $s = 90; continue s; } + _r$19 = identical(f$1.object.typ, g$1.object.typ, cmpTags, q); /* */ $s = 91; case 91: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _v$4 = !_r$19; case 90: + /* */ if (_v$4) { $s = 88; continue; } + /* */ $s = 89; continue; + /* if (_v$4) { */ case 88: + $s = -1; return false; + /* } */ case 89: + _i$4++; + $s = 86; continue; + case 87: + $s = -1; return true; + /* } */ case 81: + /* } */ case 74: + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 10: + x$10 = _ref.$val; + _tuple$9 = $assertType(y, ptrType$28, true); + y$10 = _tuple$9[0]; + ok$7 = _tuple$9[1]; + /* */ if (ok$7) { $s = 92; continue; } + /* */ $s = 93; continue; + /* if (ok$7) { */ case 92: + _r$20 = identical(x$10.key, y$10.key, cmpTags, p); /* */ $s = 95; case 95: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + if (!(_r$20)) { _v$5 = false; $s = 94; continue s; } + _r$21 = identical(x$10.elem, y$10.elem, cmpTags, p); /* */ $s = 96; case 96: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + _v$5 = _r$21; case 94: + $24r$5 = _v$5; + $s = 97; case 97: return $24r$5; + /* } */ case 93: + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$29, true)[1]) { */ case 11: + x$11 = _ref.$val; + _tuple$10 = $assertType(y, ptrType$29, true); + y$11 = _tuple$10[0]; + ok$8 = _tuple$10[1]; + /* */ if (ok$8) { $s = 98; continue; } + /* */ $s = 99; continue; + /* if (ok$8) { */ case 98: + if (!(x$11.dir === y$11.dir)) { _v$6 = false; $s = 100; continue s; } + _r$22 = identical(x$11.elem, y$11.elem, cmpTags, p); /* */ $s = 101; case 101: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _v$6 = _r$22; case 100: + $24r$6 = _v$6; + $s = 102; case 102: return $24r$6; + /* } */ case 99: + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 12: + x$12 = _ref.$val; + _tuple$11 = $assertType(y, ptrType$9, true); + y$12 = _tuple$11[0]; + ok$9 = _tuple$11[1]; + /* */ if (ok$9) { $s = 103; continue; } + /* */ $s = 104; continue; + /* if (ok$9) { */ case 103: + xargs = x$12.TypeArgs().list(); + yargs = y$12.TypeArgs().list(); + if (!((xargs.$length === yargs.$length))) { + $s = -1; return false; + } + /* */ if (xargs.$length > 0) { $s = 105; continue; } + /* */ $s = 106; continue; + /* if (xargs.$length > 0) { */ case 105: + _r$23 = Identical(x$12.Origin(), y$12.Origin()); /* */ $s = 109; case 109: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + /* */ if (!_r$23) { $s = 107; continue; } + /* */ $s = 108; continue; + /* if (!_r$23) { */ case 107: + $s = -1; return false; + /* } */ case 108: + _ref$6 = xargs; + _i$5 = 0; + /* while (true) { */ case 110: + /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 111; continue; } + i$5 = _i$5; + xa = ((_i$5 < 0 || _i$5 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$5]); + _r$24 = Identical(xa, ((i$5 < 0 || i$5 >= yargs.$length) ? ($throwRuntimeError("index out of range"), undefined) : yargs.$array[yargs.$offset + i$5])); /* */ $s = 114; case 114: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + /* */ if (!_r$24) { $s = 112; continue; } + /* */ $s = 113; continue; + /* if (!_r$24) { */ case 112: + $s = -1; return false; + /* } */ case 113: + _i$5++; + $s = 110; continue; + case 111: + $s = -1; return true; + /* } */ case 106: + $s = -1; return x$12.obj === y$12.obj; + /* } */ case 104: + $s = 16; continue; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 13: + x$13 = _ref.$val; + $s = 16; continue; + /* } else if (_ref === $ifaceNil) { */ case 14: + x$14 = _ref; + $s = 16; continue; + /* } else { */ case 15: + x$15 = _ref; + unreachable(); + /* } */ case 16: + $s = -1; return false; + /* */ } return; } var $f = {$blk: identical$2, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, a, b, check, cmpTags, ctxt, f, f$1, g, g$1, i, i$1, i$2, i$3, i$4, i$5, ok, ok$1, ok$2, ok$3, ok$4, ok$5, ok$6, ok$7, ok$8, ok$9, p, q, smap, targs, unionSets, v, w, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xa, xargs, xset, xset$1, xtparam, xtparams, y, y$1, y$10, y$11, y$12, y$2, y$3, y$4, y$5, y$6, y$7, y$8, y$9, yargs, ybound, yparams, yresults, yset, yset$1, ytparams, $s};return $f; + }; + identicalInstance = function identicalInstance$1(xorig, xargs, yorig, yargs) { + var {$24r, _i, _r$1, _r$2, _ref, i, xa, xargs, xorig, yargs, yorig, $s, $r, $c} = $restore(this, {xorig, xargs, yorig, yargs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!((xargs.$length === yargs.$length))) { + $s = -1; return false; + } + _ref = xargs; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + xa = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = Identical(xa, ((i < 0 || i >= yargs.$length) ? ($throwRuntimeError("index out of range"), undefined) : yargs.$array[yargs.$offset + i])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r$1) { */ case 3: + $s = -1; return false; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + _r$2 = Identical(xorig, yorig); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 7; case 7: return $24r; + /* */ } return; } var $f = {$blk: identicalInstance$1, $c: true, $r, $24r, _i, _r$1, _r$2, _ref, i, xa, xargs, xorig, yargs, yorig, $s};return $f; + }; + Default = function Default$1(t) { + var _1, _tuple, ok, t, t$1; + _tuple = $assertType(t, ptrType$8, true); + t$1 = _tuple[0]; + ok = _tuple[1]; + if (ok) { + _1 = t$1.kind; + if (_1 === (19)) { + return (1 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 1]); + } else if (_1 === (20)) { + return (2 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 2]); + } else if (_1 === (21)) { + return universeRune; + } else if (_1 === (22)) { + return (14 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 14]); + } else if (_1 === (23)) { + return (16 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 16]); + } else if (_1 === (24)) { + return (17 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 17]); + } + } + return t; + }; + $pkg.Default = Default; + NewPointer = function NewPointer$1(elem) { + var elem; + return new Pointer.ptr(elem); + }; + $pkg.NewPointer = NewPointer; + $ptrType(Pointer).prototype.Elem = function Elem$1() { + var p; + p = this; + return p.base; + }; + $ptrType(Pointer).prototype.Underlying = function Underlying$6() { + var t; + t = this; + return t; + }; + $ptrType(Pointer).prototype.String = function String$14() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$14, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + NewPackage = function NewPackage$1(path, name) { + var {_arg, _arg$1, _r$1, _r$2, name, path, scope, $s, $r, $c} = $restore(this, {path, name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = $pkg.Universe; + _r$1 = fmt.Sprintf("package %q", new sliceType$6([new $String(path)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = _r$1; + _r$2 = NewScope(_arg, 0, 0, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + scope = _r$2; + $s = -1; return new Package.ptr(path, name, scope, false, sliceType$24.nil, false, false); + /* */ } return; } var $f = {$blk: NewPackage$1, $c: true, $r, _arg, _arg$1, _r$1, _r$2, name, path, scope, $s};return $f; + }; + $pkg.NewPackage = NewPackage; + $ptrType(Package).prototype.Path = function Path() { + var pkg; + pkg = this; + return pkg.path; + }; + $ptrType(Package).prototype.Name = function Name$1() { + var pkg; + pkg = this; + return pkg.name; + }; + $ptrType(Package).prototype.SetName = function SetName(name) { + var name, pkg; + pkg = this; + pkg.name = name; + }; + $ptrType(Package).prototype.Scope = function Scope$1() { + var pkg; + pkg = this; + if (!(pkg === ptrType$1.nil)) { + return pkg.scope; + } + return $pkg.Universe; + }; + $ptrType(Package).prototype.Complete = function Complete() { + var pkg; + pkg = this; + return pkg.complete; + }; + $ptrType(Package).prototype.MarkComplete = function MarkComplete() { + var pkg; + pkg = this; + pkg.complete = true; + }; + $ptrType(Package).prototype.Imports = function Imports() { + var pkg; + pkg = this; + return pkg.imports; + }; + $ptrType(Package).prototype.SetImports = function SetImports(list$2) { + var list$2, pkg; + pkg = this; + pkg.imports = list$2; + }; + $ptrType(Package).prototype.String = function String$15() { + var {$24r, _r$1, pkg, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pkg = this; + _r$1 = fmt.Sprintf("package %s (%q)", new sliceType$6([new $String(pkg.name), new $String(pkg.path)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$15, $c: true, $r, $24r, _r$1, pkg, $s};return $f; + }; + $ptrType(operand).prototype.Pos = function Pos$2() { + var {$24r, _r$1, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if ($interfaceIsEqual(x.expr, $ifaceNil)) { + $s = -1; return 0; + } + _r$1 = x.expr.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Pos$2, $c: true, $r, $24r, _r$1, x, $s};return $f; + }; + operandString = function operandString$1(x, qf) { + var {_1, _2, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, buf, expr, hasType, intro, qf, s, tpar, x, x$1, x$2, $s, $r, $c} = $restore(this, {x, qf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + if ((x.mode === 7) && $interfaceIsEqual(x.typ, (25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25]))) { + $s = -1; return "nil"; + } + buf[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + expr = ""; + /* */ if (!($interfaceIsEqual(x.expr, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(x.expr, $ifaceNil))) { */ case 1: + _r$1 = ExprString(x.expr); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + expr = _r$1; + $s = 3; continue; + /* } else { */ case 2: + _1 = x.mode; + /* */ if (_1 === (2)) { $s = 6; continue; } + /* */ if (_1 === (3)) { $s = 7; continue; } + /* */ if (_1 === (4)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === (2)) { */ case 6: + expr = (x$1 = x.id, ((x$1 < 0 || x$1 >= predeclaredFuncs.length) ? ($throwRuntimeError("index out of range"), undefined) : predeclaredFuncs[x$1])).name; + $s = 9; continue; + /* } else if (_1 === (3)) { */ case 7: + _r$2 = TypeString(x.typ, qf); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + expr = _r$2; + $s = 9; continue; + /* } else if (_1 === (4)) { */ case 8: + _r$3 = x.val.String(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + expr = _r$3; + /* } */ case 9: + case 5: + /* } */ case 3: + if (!(expr === "")) { + buf[0].WriteString(expr); + buf[0].WriteString(" ("); + } + hasType = false; + switch (0) { default: + _2 = x.mode; + if ((_2 === (0)) || (_2 === (1)) || (_2 === (2)) || (_2 === (3))) { + } else if (!($interfaceIsEqual(x.typ, $ifaceNil))) { + if (isUntyped(x.typ)) { + buf[0].WriteString($assertType(x.typ, ptrType$8).name); + buf[0].WriteByte(32); + break; + } + hasType = true; + } + } + buf[0].WriteString((x$2 = x.mode, ((x$2 < 0 || x$2 >= operandModeString.length) ? ($throwRuntimeError("index out of range"), undefined) : operandModeString[x$2]))); + /* */ if (x.mode === 4) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (x.mode === 4) { */ case 12: + _r$4 = x.val.String(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + s = _r$4; + if (!(s === expr)) { + buf[0].WriteByte(32); + buf[0].WriteString(s); + } + /* } */ case 13: + /* */ if (hasType) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (hasType) { */ case 15: + /* */ if (!($interfaceIsEqual(x.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (!($interfaceIsEqual(x.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { */ case 17: + intro = ""; + _r$5 = isGeneric(x.typ); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (_r$5) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (_r$5) { */ case 20: + intro = " of generic type "; + $s = 22; continue; + /* } else { */ case 21: + intro = " of type "; + /* } */ case 22: + buf[0].WriteString(intro); + $r = WriteType(buf[0], x.typ, qf); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple = $assertType(x.typ, ptrType$14, true); + tpar = _tuple[0]; + /* */ if (!(tpar === ptrType$14.nil)) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (!(tpar === ptrType$14.nil)) { */ case 25: + buf[0].WriteString(" constrained by "); + $r = WriteType(buf[0], tpar.bound, qf); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$6 = hasEmptyTypeset(tpar); /* */ $s = 30; case 30: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (_r$6) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (_r$6) { */ case 28: + buf[0].WriteString(" with empty type set"); + /* } */ case 29: + /* } */ case 26: + $s = 19; continue; + /* } else { */ case 18: + buf[0].WriteString(" with invalid type"); + /* } */ case 19: + /* } */ case 16: + if (!(expr === "")) { + buf[0].WriteByte(41); + } + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: operandString$1, $c: true, $r, _1, _2, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, buf, expr, hasType, intro, qf, s, tpar, x, x$1, x$2, $s};return $f; + }; + $ptrType(operand).prototype.String = function String$16() { + var {$24r, _r$1, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r$1 = operandString(x, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$16, $c: true, $r, $24r, _r$1, x, $s};return $f; + }; + $ptrType(operand).prototype.setConst = function setConst(tok, lit) { + var {_1, _r$1, _r$2, kind, lit, tok, val, x, $s, $r, $c} = $restore(this, {tok, lit}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + kind = 0; + _1 = tok; + if (_1 === (5)) { + kind = 20; + } else if (_1 === (6)) { + kind = 22; + } else if (_1 === (7)) { + kind = 23; + } else if (_1 === (8)) { + kind = 21; + } else if (_1 === (9)) { + kind = 24; + } else { + unreachable(); + } + _r$1 = constant.MakeFromLiteral(lit, tok, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + val = _r$1; + _r$2 = val.Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2 === 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_r$2 === 0) { */ case 2: + x.mode = 0; + x.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + $s = -1; return; + /* } */ case 3: + x.mode = 4; + x.typ = ((kind < 0 || kind >= $pkg.Typ.$length) ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + kind]); + x.val = val; + $s = -1; return; + /* */ } return; } var $f = {$blk: setConst, $c: true, $r, _1, _r$1, _r$2, kind, lit, tok, val, x, $s};return $f; + }; + $ptrType(operand).prototype.isNil = function isNil$1() { + var x; + x = this; + return (x.mode === 7) && $interfaceIsEqual(x.typ, (25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25])); + }; + $ptrType(operand).prototype.assignableTo = function assignableTo(check, T, cause) { + var {$24r, T, Tc, Tp, Tu, V, Vc, Vi, Vp, Vu, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _v, _v$1, cause, check, code, code$1, errorf, newType, ok, ok$1, ok$2, ok$3, ok$4, x, x$1, $s, $r, $c} = $restore(this, {check, T, cause}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + T = [T]; + Tp = [Tp]; + Vp = [Vp]; + cause = [cause]; + check = [check]; + code = [code]; + code$1 = [code$1]; + errorf = [errorf]; + ok = [ok]; + ok$1 = [ok$1]; + x = [x]; + x$1 = [x$1]; + x[0] = this; + if ((x[0].mode === 0) || $interfaceIsEqual(T[0], (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + $s = -1; return [true, 0]; + } + V = x[0].typ; + _r$1 = Identical(V, T[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r$1) { */ case 1: + $s = -1; return [true, 0]; + /* } */ case 2: + _r$2 = under(V); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + Vu = _r$2; + _r$3 = under(T[0]); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + Tu = _r$3; + _tuple = $assertType(V, ptrType$14, true); + Vp[0] = _tuple[0]; + _tuple$1 = $assertType(T[0], ptrType$14, true); + Tp[0] = _tuple$1[0]; + /* */ if (isUntyped(Vu)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (isUntyped(Vu)) { */ case 6: + $r = assert(Vp[0] === ptrType$14.nil); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(Tp[0] === ptrType$14.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(Tp[0] === ptrType$14.nil)) { */ case 9: + _r$4 = Tp[0].is((function(T, Tp, Vp, cause, check, code, code$1, errorf, ok, ok$1, x, x$1) { return function operand·assignableTo·func1(t) { + var {_r$4, _tuple$2, newType, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (t === ptrType$4.nil) { + $s = -1; return false; + } + _r$4 = check[0].implicitTypeAndValue(x[0], t.typ); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$2 = _r$4; + newType = _tuple$2[0]; + $s = -1; return !($interfaceIsEqual(newType, $ifaceNil)); + /* */ } return; } var $f = {$blk: operand·assignableTo·func1, $c: true, $r, _r$4, _tuple$2, newType, t, $s};return $f; + }; })(T, Tp, Vp, cause, check, code, code$1, errorf, ok, ok$1, x, x$1)); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = [_r$4, 23]; + $s = 12; case 12: return $24r; + /* } */ case 10: + _r$5 = check[0].implicitTypeAndValue(x[0], T[0]); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$2 = _r$5; + newType = _tuple$2[0]; + $s = -1; return [!($interfaceIsEqual(newType, $ifaceNil)), 23]; + /* } */ case 7: + _r$6 = Identical(Vu, Tu); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (_r$6 && (!hasName(V) || !hasName(T[0])) && Vp[0] === ptrType$14.nil && Tp[0] === ptrType$14.nil) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_r$6 && (!hasName(V) || !hasName(T[0])) && Vp[0] === ptrType$14.nil && Tp[0] === ptrType$14.nil) { */ case 14: + $s = -1; return [true, 0]; + /* } */ case 15: + _tuple$3 = $assertType(Tu, ptrType$13, true); + ok$2 = _tuple$3[1]; + if (ok$2 && Tp[0] === ptrType$14.nil) { _v = true; $s = 19; continue s; } + _r$7 = isInterfacePtr(Tu); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _v = _r$7; case 19: + /* */ if (_v) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_v) { */ case 17: + _r$8 = check[0].implements$(V, T[0], false, cause[0]); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (!_r$8) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!_r$8) { */ case 21: + $s = -1; return [false, 21]; + /* } */ case 22: + $s = -1; return [true, 0]; + /* } */ case 18: + _tuple$4 = $assertType(Vu, ptrType$13, true); + Vi = _tuple$4[0]; + /* */ if (!(Vi === ptrType$13.nil) && Vp[0] === ptrType$14.nil) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!(Vi === ptrType$13.nil) && Vp[0] === ptrType$14.nil) { */ case 24: + _r$9 = check[0].implements$(T[0], V, false, ptrType$34.nil); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (_r$9) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (_r$9) { */ case 26: + if (!(cause[0] === ptrType$34.nil)) { + cause[0].$set("need type assertion"); + } + $s = -1; return [false, 23]; + /* } */ case 27: + /* } */ case 25: + _tuple$5 = $assertType(Vu, ptrType$29, true); + Vc = _tuple$5[0]; + ok$3 = _tuple$5[1]; + /* */ if (ok$3 && (Vc.dir === 0)) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (ok$3 && (Vc.dir === 0)) { */ case 29: + _tuple$6 = $assertType(Tu, ptrType$29, true); + Tc = _tuple$6[0]; + ok$4 = _tuple$6[1]; + if (!(ok$4)) { _v$1 = false; $s = 33; continue s; } + _r$10 = Identical(Vc.elem, Tc.elem); /* */ $s = 34; case 34: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v$1 = _r$10; case 33: + /* */ if (_v$1) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (_v$1) { */ case 31: + $s = -1; return [!hasName(V) || !hasName(T[0]), 22]; + /* } */ case 32: + /* } */ case 30: + if (Vp[0] === ptrType$14.nil && Tp[0] === ptrType$14.nil) { + $s = -1; return [false, 23]; + } + errorf[0] = (function(T, Tp, Vp, cause, check, code, code$1, errorf, ok, ok$1, x, x$1) { return function operand·assignableTo·func2(format, args) { + var {_r$11, args, format, msg, $s, $r, $c} = $restore(this, {format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!(check[0] === ptrType$5.nil) && !(cause[0] === ptrType$34.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(check[0] === ptrType$5.nil) && !(cause[0] === ptrType$34.nil)) { */ case 1: + _r$11 = check[0].sprintf(format, args); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + msg = _r$11; + if (!(cause[0].$get() === "")) { + msg = msg + ("\n\t" + cause[0].$get()); + } + cause[0].$set(msg); + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: operand·assignableTo·func2, $c: true, $r, _r$11, args, format, msg, $s};return $f; + }; })(T, Tp, Vp, cause, check, code, code$1, errorf, ok, ok$1, x, x$1); + /* */ if (!hasName(V) && !(Tp[0] === ptrType$14.nil)) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (!hasName(V) && !(Tp[0] === ptrType$14.nil)) { */ case 35: + ok[0] = false; + code[0] = 23; + _r$11 = Tp[0].is((function(T, Tp, Vp, cause, check, code, code$1, errorf, ok, ok$1, x, x$1) { return function operand·assignableTo·func3(T$1) { + var {T$1, _r$11, _tuple$7, $s, $r, $c} = $restore(this, {T$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (T$1 === ptrType$4.nil) { + $s = -1; return false; + } + _r$11 = x[0].assignableTo(check[0], T$1.typ, cause[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$7 = _r$11; + ok[0] = _tuple$7[0]; + code[0] = _tuple$7[1]; + /* */ if (!ok[0]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok[0]) { */ case 2: + $r = errorf[0]("cannot assign %s to %s (in %s)", new sliceType$6([x[0].typ, T$1.typ, Tp[0]])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: operand·assignableTo·func3, $c: true, $r, T$1, _r$11, _tuple$7, $s};return $f; + }; })(T, Tp, Vp, cause, check, code, code$1, errorf, ok, ok$1, x, x$1)); /* */ $s = 37; case 37: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$11; + $s = -1; return [ok[0], code[0]]; + /* } */ case 36: + /* */ if (!(Vp[0] === ptrType$14.nil) && !hasName(T[0])) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (!(Vp[0] === ptrType$14.nil) && !hasName(T[0])) { */ case 38: + x$1[0] = $clone(x[0], operand); + ok$1[0] = false; + code$1[0] = 23; + _r$12 = Vp[0].is((function(T, Tp, Vp, cause, check, code, code$1, errorf, ok, ok$1, x, x$1) { return function operand·assignableTo·func4(V$1) { + var {V$1, _r$12, _tuple$7, $s, $r, $c} = $restore(this, {V$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (V$1 === ptrType$4.nil) { + $s = -1; return false; + } + x$1[0].typ = V$1.typ; + _r$12 = x$1[0].assignableTo(check[0], T[0], cause[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _tuple$7 = _r$12; + ok$1[0] = _tuple$7[0]; + code$1[0] = _tuple$7[1]; + /* */ if (!ok$1[0]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok$1[0]) { */ case 2: + $r = errorf[0]("cannot assign %s (in %s) to %s", new sliceType$6([V$1.typ, Vp[0], T[0]])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: operand·assignableTo·func4, $c: true, $r, V$1, _r$12, _tuple$7, $s};return $f; + }; })(T, Tp, Vp, cause, check, code, code$1, errorf, ok, ok$1, x, x$1)); /* */ $s = 40; case 40: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$12; + $s = -1; return [ok$1[0], code$1[0]]; + /* } */ case 39: + $s = -1; return [false, 23]; + /* */ } return; } var $f = {$blk: assignableTo, $c: true, $r, $24r, T, Tc, Tp, Tu, V, Vc, Vi, Vp, Vu, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _v, _v$1, cause, check, code, code$1, errorf, newType, ok, ok$1, ok$2, ok$3, ok$4, x, x$1, $s};return $f; + }; + $ptrType(objset).prototype.insert = function insert$1(obj) { + var {_entry, _key, _r$1, alt, id, obj, s, $s, $r, $c} = $restore(this, {obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r$1 = obj.Id(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + id = _r$1; + alt = (_entry = $mapIndex((s.$get()),$String.keyFor(id)), _entry !== undefined ? _entry.v : $ifaceNil); + if (!($interfaceIsEqual(alt, $ifaceNil))) { + $s = -1; return alt; + } + if (s.$get() === false) { + s.$set(new $global.Map()); + } + _key = id; (s.$get() || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: obj }); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: insert$1, $c: true, $r, _entry, _key, _r$1, alt, id, obj, s, $s};return $f; + }; + Id = function Id$2(pkg, name) { + var name, path, pkg; + if (token.IsExported(name)) { + return name; + } + path = "_"; + if (!(pkg === ptrType$1.nil) && !(pkg.path === "")) { + path = pkg.path; + } + return path + "." + name; + }; + $pkg.Id = Id; + color.prototype.String = function String$17() { + var _1, c; + c = this.$val; + _1 = c; + if (_1 === (0)) { + return "white"; + } else if (_1 === (1)) { + return "black"; + } else { + return "grey"; + } + }; + $ptrType(color).prototype.String = function(...$args) { return new color(this.$get()).String(...$args); }; + colorFor = function colorFor$1(t) { + var t; + if (!($interfaceIsEqual(t, $ifaceNil))) { + return 1; + } + return 0; + }; + $ptrType(object).prototype.Parent = function Parent$2() { + var obj; + obj = this; + return obj.parent; + }; + $ptrType(object).prototype.Pos = function Pos$3() { + var obj; + obj = this; + return obj.pos; + }; + $ptrType(object).prototype.Pkg = function Pkg$1() { + var obj; + obj = this; + return obj.pkg; + }; + $ptrType(object).prototype.Name = function Name$2() { + var obj; + obj = this; + return obj.name; + }; + $ptrType(object).prototype.Type = function Type$4() { + var obj; + obj = this; + return obj.typ; + }; + $ptrType(object).prototype.Exported = function Exported$1() { + var obj; + obj = this; + return token.IsExported(obj.name); + }; + $ptrType(object).prototype.Id = function Id$3() { + var obj; + obj = this; + return Id(obj.pkg, obj.name); + }; + $ptrType(object).prototype.String = function String$18() { + var obj; + obj = this; + $panic(new $String("abstract")); + }; + $ptrType(object).prototype.order = function order$1() { + var obj; + obj = this; + return obj.order_; + }; + $ptrType(object).prototype.color = function color$2() { + var obj; + obj = this; + return obj.color_; + }; + $ptrType(object).prototype.scopePos = function scopePos$1() { + var obj; + obj = this; + return obj.scopePos_; + }; + $ptrType(object).prototype.setParent = function setParent$1(parent) { + var obj, parent; + obj = this; + obj.parent = parent; + }; + $ptrType(object).prototype.setOrder = function setOrder$1(order$2) { + var {obj, order$2, $s, $r, $c} = $restore(this, {order$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = this; + $r = assert(order$2 > 0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + obj.order_ = order$2; + $s = -1; return; + /* */ } return; } var $f = {$blk: setOrder$1, $c: true, $r, obj, order$2, $s};return $f; + }; + $ptrType(object).prototype.setColor = function setColor$1(color$3) { + var {color$3, obj, $s, $r, $c} = $restore(this, {color$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = this; + $r = assert(!((color$3 === 0))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + obj.color_ = color$3; + $s = -1; return; + /* */ } return; } var $f = {$blk: setColor$1, $c: true, $r, color$3, obj, $s};return $f; + }; + $ptrType(object).prototype.setScopePos = function setScopePos$1(pos) { + var obj, pos; + obj = this; + obj.scopePos_ = pos; + }; + $ptrType(object).prototype.sameId = function sameId$1(pkg, name) { + var name, obj, pkg; + obj = this; + if (!(name === obj.name)) { + return false; + } + if (obj.Exported()) { + return true; + } + if (pkg === ptrType$1.nil || obj.pkg === ptrType$1.nil) { + return pkg === obj.pkg; + } + return pkg.path === obj.pkg.path; + }; + NewPkgName = function NewPkgName$1(pos, pkg, name, imported) { + var imported, name, pkg, pos; + return new PkgName.ptr($clone(new object.ptr(ptrType.nil, pos, pkg, name, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]), 0, 1, 0), object), imported, false); + }; + $pkg.NewPkgName = NewPkgName; + $ptrType(PkgName).prototype.Imported = function Imported() { + var obj; + obj = this; + return obj.imported; + }; + NewConst = function NewConst$1(pos, pkg, name, typ$3, val) { + var name, pkg, pos, typ$3, val; + return new Const.ptr($clone(new object.ptr(ptrType.nil, pos, pkg, name, typ$3, 0, colorFor(typ$3), 0), object), val); + }; + $pkg.NewConst = NewConst; + $ptrType(Const).prototype.Val = function Val() { + var obj; + obj = this; + return obj.val; + }; + NewTypeName = function NewTypeName$1(pos, pkg, name, typ$3) { + var name, pkg, pos, typ$3; + return new TypeName.ptr($clone(new object.ptr(ptrType.nil, pos, pkg, name, typ$3, 0, colorFor(typ$3), 0), object)); + }; + $pkg.NewTypeName = NewTypeName; + $ptrType(TypeName).prototype.IsAlias = function IsAlias() { + var _ref, obj, t, t$1, t$2, t$3, t$4; + obj = this; + _ref = obj.object.typ; + if (_ref === $ifaceNil) { + t = _ref; + return false; + } else if ($assertType(_ref, ptrType$8, true)[1]) { + t$1 = _ref.$val; + if (obj.object.pkg === $pkg.Unsafe) { + return false; + } + return !(obj.object.pkg === ptrType$1.nil) || !(t$1.name === obj.object.name) || $interfaceIsEqual(t$1, universeByte) || $interfaceIsEqual(t$1, universeRune); + } else if ($assertType(_ref, ptrType$9, true)[1]) { + t$2 = _ref.$val; + return !(obj === t$2.obj); + } else if ($assertType(_ref, ptrType$14, true)[1]) { + t$3 = _ref.$val; + return !(obj === t$3.obj); + } else { + t$4 = _ref; + return true; + } + }; + NewVar = function NewVar$1(pos, pkg, name, typ$3) { + var name, pkg, pos, typ$3; + return new Var.ptr($clone(new object.ptr(ptrType.nil, pos, pkg, name, typ$3, 0, colorFor(typ$3), 0), object), false, false, false, ptrType$16.nil); + }; + $pkg.NewVar = NewVar; + NewParam = function NewParam$1(pos, pkg, name, typ$3) { + var name, pkg, pos, typ$3; + return new Var.ptr($clone(new object.ptr(ptrType.nil, pos, pkg, name, typ$3, 0, colorFor(typ$3), 0), object), false, false, true, ptrType$16.nil); + }; + $pkg.NewParam = NewParam; + NewField = function NewField$1(pos, pkg, name, typ$3, embedded) { + var embedded, name, pkg, pos, typ$3; + return new Var.ptr($clone(new object.ptr(ptrType.nil, pos, pkg, name, typ$3, 0, colorFor(typ$3), 0), object), embedded, true, false, ptrType$16.nil); + }; + $pkg.NewField = NewField; + $ptrType(Var).prototype.Anonymous = function Anonymous() { + var obj; + obj = this; + return obj.embedded; + }; + $ptrType(Var).prototype.Embedded = function Embedded() { + var obj; + obj = this; + return obj.embedded; + }; + $ptrType(Var).prototype.IsField = function IsField() { + var obj; + obj = this; + return obj.isField; + }; + $ptrType(Var).prototype.Origin = function Origin() { + var obj; + obj = this; + if (!(obj.origin === ptrType$16.nil)) { + return obj.origin; + } + return obj; + }; + NewFunc = function NewFunc$1(pos, pkg, name, sig) { + var name, pkg, pos, sig, typ$3; + typ$3 = $ifaceNil; + if (!(sig === ptrType$27.nil)) { + typ$3 = sig; + } + return new Func.ptr($clone(new object.ptr(ptrType.nil, pos, pkg, name, typ$3, 0, colorFor(typ$3), 0), object), false, ptrType$2.nil); + }; + $pkg.NewFunc = NewFunc; + $ptrType(Func).prototype.FullName = function FullName() { + var {buf, obj, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + obj = this; + buf[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + $r = writeFuncName(buf[0], obj, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: FullName, $c: true, $r, buf, obj, $s};return $f; + }; + $ptrType(Func).prototype.Scope = function Scope$2() { + var obj; + obj = this; + return $assertType(obj.object.typ, ptrType$27).scope; + }; + $ptrType(Func).prototype.Origin = function Origin$1() { + var obj; + obj = this; + if (!(obj.origin === ptrType$2.nil)) { + return obj.origin; + } + return obj; + }; + $ptrType(Func).prototype.hasPtrRecv = function hasPtrRecv() { + var _tuple, _tuple$1, isPtr, obj, sig; + obj = this; + _tuple = $assertType(obj.object.typ, ptrType$27, true); + sig = _tuple[0]; + if (!(sig === ptrType$27.nil) && !(sig.recv === ptrType$16.nil)) { + _tuple$1 = deref(sig.recv.object.typ); + isPtr = _tuple$1[1]; + return isPtr; + } + return obj.hasPtrRecv_; + }; + NewLabel = function NewLabel$1(pos, pkg, name) { + var name, pkg, pos; + return new Label.ptr($clone(new object.ptr(ptrType.nil, pos, pkg, name, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]), 0, 1, 0), object), false); + }; + $pkg.NewLabel = NewLabel; + newBuiltin = function newBuiltin$1(id) { + var id; + return new Builtin.ptr($clone(new object.ptr(ptrType.nil, 0, ptrType$1.nil, ((id < 0 || id >= predeclaredFuncs.length) ? ($throwRuntimeError("index out of range"), undefined) : predeclaredFuncs[id]).name, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]), 0, 1, 0), object), id); + }; + writeObject = function writeObject$1(buf, obj, qf) { + var {_r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _v, buf, obj, obj$1, obj$2, obj$3, obj$4, obj$5, obj$6, obj$7, obj$8, obj$9, path, qf, t, t$1, t$2, tname, typ$3, $s, $r, $c} = $restore(this, {buf, obj, qf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + tname = ptrType$17.nil; + _r$1 = obj.Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typ$3 = _r$1; + _ref = obj; + /* */ if ($assertType(_ref, ptrType$31, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$32, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$17, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$91, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$18, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ($assertType(_ref, ptrType$31, true)[1]) { */ case 2: + obj$1 = _ref.$val; + _r$2 = fmt.Fprintf(buf, "package %s", new sliceType$6([new $String(obj$1.object.Name())])); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + path = obj$1.imported.path; + /* */ if (!(path === "") && !(path === obj$1.object.name)) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!(path === "") && !(path === obj$1.object.name)) { */ case 13: + _r$3 = fmt.Fprintf(buf, " (%q)", new sliceType$6([new $String(path)])); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + /* } */ case 14: + $s = -1; return; + /* } else if ($assertType(_ref, ptrType$32, true)[1]) { */ case 3: + obj$2 = _ref.$val; + buf.WriteString("const"); + $s = 11; continue; + /* } else if ($assertType(_ref, ptrType$17, true)[1]) { */ case 4: + obj$3 = _ref.$val; + tname = obj$3; + buf.WriteString("type"); + if (isTypeParam(typ$3)) { + buf.WriteString(" parameter"); + } + $s = 11; continue; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 5: + obj$4 = _ref.$val; + if (obj$4.isField) { + buf.WriteString("field"); + } else { + buf.WriteString("var"); + } + $s = 11; continue; + /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 6: + obj$5 = _ref.$val; + buf.WriteString("func "); + $r = writeFuncName(buf, obj$5, qf); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(typ$3, $ifaceNil))) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (!($interfaceIsEqual(typ$3, $ifaceNil))) { */ case 17: + $r = WriteSignature(buf, $assertType(typ$3, ptrType$27), qf); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + $s = -1; return; + /* } else if ($assertType(_ref, ptrType$91, true)[1]) { */ case 7: + obj$6 = _ref.$val; + buf.WriteString("label"); + typ$3 = $ifaceNil; + $s = 11; continue; + /* } else if ($assertType(_ref, ptrType$18, true)[1]) { */ case 8: + obj$7 = _ref.$val; + buf.WriteString("builtin"); + typ$3 = $ifaceNil; + $s = 11; continue; + /* } else if ($assertType(_ref, ptrType$33, true)[1]) { */ case 9: + obj$8 = _ref.$val; + buf.WriteString("nil"); + $s = -1; return; + /* } else { */ case 10: + obj$9 = _ref; + _r$4 = fmt.Sprintf("writeObject(%T)", new sliceType$6([obj$9])); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $panic(new $String(_r$4)); + /* } */ case 11: + buf.WriteByte(32); + _r$5 = obj.Pkg(); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + if (!(!(_r$5 === ptrType$1.nil))) { _v = false; $s = 23; continue s; } + _r$6 = obj.Pkg(); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = obj.Name(); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = _r$6.scope.Lookup(_r$7); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _v = $interfaceIsEqual(_r$8, obj); case 23: + /* */ if (_v) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (_v) { */ case 21: + _r$9 = obj.Pkg(); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$10 = packagePrefix(_r$9, qf); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = buf.WriteString(_r$10); /* */ $s = 30; case 30: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$11; + /* } */ case 22: + _r$12 = obj.Name(); /* */ $s = 31; case 31: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$13 = buf.WriteString(_r$12); /* */ $s = 32; case 32: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$13; + if ($interfaceIsEqual(typ$3, $ifaceNil)) { + $s = -1; return; + } + /* */ if (!(tname === ptrType$17.nil)) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (!(tname === ptrType$17.nil)) { */ case 33: + _ref$1 = typ$3; + /* */ if ($assertType(_ref$1, ptrType$8, true)[1]) { $s = 35; continue; } + /* */ if ($assertType(_ref$1, ptrType$9, true)[1]) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if ($assertType(_ref$1, ptrType$8, true)[1]) { */ case 35: + t = _ref$1.$val; + $s = -1; return; + /* } else if ($assertType(_ref$1, ptrType$9, true)[1]) { */ case 36: + t$1 = _ref$1.$val; + _r$14 = t$1.TypeParams(); /* */ $s = 40; case 40: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _r$15 = _r$14.Len(); /* */ $s = 41; case 41: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + /* */ if (_r$15 > 0) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (_r$15 > 0) { */ case 38: + _r$16 = t$1.TypeParams(); /* */ $s = 42; case 42: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _r$17 = _r$16.list(); /* */ $s = 43; case 43: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + $r = newTypeWriter(buf, qf).tParamList(_r$17); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 39: + /* } */ case 37: + /* */ if (tname.IsAlias()) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if (tname.IsAlias()) { */ case 45: + buf.WriteString(" ="); + $s = 47; continue; + /* } else { */ case 46: + _tuple = $assertType(typ$3, ptrType$14, true); + t$2 = _tuple[0]; + /* */ if (!(t$2 === ptrType$14.nil)) { $s = 48; continue; } + /* */ $s = 49; continue; + /* if (!(t$2 === ptrType$14.nil)) { */ case 48: + typ$3 = t$2.bound; + $s = 50; continue; + /* } else { */ case 49: + _r$18 = under(typ$3); /* */ $s = 51; case 51: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + typ$3 = _r$18; + /* } */ case 50: + /* } */ case 47: + /* } */ case 34: + /* */ if ($interfaceIsEqual(obj, universeAny)) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if ($interfaceIsEqual(obj, universeAny)) { */ case 52: + _r$19 = Identical(typ$3, emptyInterface); /* */ $s = 54; case 54: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + $r = assert(_r$19); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + typ$3 = emptyInterface; + /* } */ case 53: + buf.WriteByte(32); + $r = WriteType(buf, typ$3, qf); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: writeObject$1, $c: true, $r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _v, buf, obj, obj$1, obj$2, obj$3, obj$4, obj$5, obj$6, obj$7, obj$8, obj$9, path, qf, t, t$1, t$2, tname, typ$3, $s};return $f; + }; + packagePrefix = function packagePrefix$1(pkg, qf) { + var {_r$1, pkg, qf, s, $s, $r, $c} = $restore(this, {pkg, qf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (pkg === ptrType$1.nil) { + $s = -1; return ""; + } + s = ""; + /* */ if (!(qf === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(qf === $throwNilPointerError)) { */ case 1: + _r$1 = qf(pkg); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + s = _r$1; + $s = 3; continue; + /* } else { */ case 2: + s = pkg.Path(); + /* } */ case 3: + if (!(s === "")) { + s = s + ("."); + } + $s = -1; return s; + /* */ } return; } var $f = {$blk: packagePrefix$1, $c: true, $r, _r$1, pkg, qf, s, $s};return $f; + }; + ObjectString = function ObjectString$1(obj, qf) { + var {buf, obj, qf, $s, $r, $c} = $restore(this, {obj, qf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + buf[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + $r = writeObject(buf[0], obj, qf); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: ObjectString$1, $c: true, $r, buf, obj, qf, $s};return $f; + }; + $pkg.ObjectString = ObjectString; + $ptrType(PkgName).prototype.String = function String$19() { + var {$24r, _r$1, obj, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = this; + _r$1 = ObjectString(obj, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$19, $c: true, $r, $24r, _r$1, obj, $s};return $f; + }; + $ptrType(Const).prototype.String = function String$20() { + var {$24r, _r$1, obj, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = this; + _r$1 = ObjectString(obj, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$20, $c: true, $r, $24r, _r$1, obj, $s};return $f; + }; + $ptrType(TypeName).prototype.String = function String$21() { + var {$24r, _r$1, obj, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = this; + _r$1 = ObjectString(obj, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$21, $c: true, $r, $24r, _r$1, obj, $s};return $f; + }; + $ptrType(Var).prototype.String = function String$22() { + var {$24r, _r$1, obj, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = this; + _r$1 = ObjectString(obj, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$22, $c: true, $r, $24r, _r$1, obj, $s};return $f; + }; + $ptrType(Func).prototype.String = function String$23() { + var {$24r, _r$1, obj, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = this; + _r$1 = ObjectString(obj, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$23, $c: true, $r, $24r, _r$1, obj, $s};return $f; + }; + $ptrType(Label).prototype.String = function String$24() { + var {$24r, _r$1, obj, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = this; + _r$1 = ObjectString(obj, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$24, $c: true, $r, $24r, _r$1, obj, $s};return $f; + }; + $ptrType(Builtin).prototype.String = function String$25() { + var {$24r, _r$1, obj, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = this; + _r$1 = ObjectString(obj, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$25, $c: true, $r, $24r, _r$1, obj, $s};return $f; + }; + $ptrType(Nil).prototype.String = function String$26() { + var {$24r, _r$1, obj, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = this; + _r$1 = ObjectString(obj, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$26, $c: true, $r, $24r, _r$1, obj, $s};return $f; + }; + writeFuncName = function writeFuncName$1(buf, f, qf) { + var {_r$1, _r$2, _tuple, buf, f, ok, qf, recv, sig, $s, $r, $c} = $restore(this, {buf, f, qf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!($interfaceIsEqual(f.object.typ, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(f.object.typ, $ifaceNil))) { */ case 1: + sig = $assertType(f.object.typ, ptrType$27); + recv = sig.Recv(); + /* */ if (!(recv === ptrType$16.nil)) { $s = 3; continue; } + /* */ if (!(f.object.pkg === ptrType$1.nil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(recv === ptrType$16.nil)) { */ case 3: + buf.WriteByte(40); + _tuple = $assertType(recv.object.Type(), ptrType$13, true); + ok = _tuple[1]; + /* */ if (ok) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (ok) { */ case 6: + buf.WriteString("interface"); + $s = 8; continue; + /* } else { */ case 7: + $r = WriteType(buf, recv.object.Type(), qf); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + buf.WriteByte(41); + buf.WriteByte(46); + $s = 5; continue; + /* } else if (!(f.object.pkg === ptrType$1.nil)) { */ case 4: + _r$1 = packagePrefix(f.object.pkg, qf); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = buf.WriteString(_r$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* } */ case 5: + /* } */ case 2: + buf.WriteString(f.object.name); + $s = -1; return; + /* */ } return; } var $f = {$blk: writeFuncName$1, $c: true, $r, _r$1, _r$2, _tuple, buf, f, ok, qf, recv, sig, $s};return $f; + }; + NewNamed = function NewNamed$1(obj, underlying, methods) { + var _tuple, methods, obj, ok, underlying; + _tuple = $assertType(underlying, ptrType$9, true); + ok = _tuple[1]; + if (ok) { + $panic(new $String("underlying type must not be *Named")); + } + return (ptrType$5.nil).newNamed(obj, underlying, methods); + }; + $pkg.NewNamed = NewNamed; + $ptrType(Named).prototype.resolve = function resolve$2() { + var {$24r, $24r$1, $24r$2, _r$1, _r$2, _r$3, _tuple, methods, n, orig, tparams, underlying, underlying$1, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + n = this; + if (n.state() >= 1) { + $s = -1; return n; + } + $r = n.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(n.mu, "Unlock"), []]); + /* */ if (n.state() >= 1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (n.state() >= 1) { */ case 2: + $24r = n; + $s = 4; case 4: return $24r; + /* } */ case 3: + /* */ if (!(n.inst === ptrType$52.nil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(n.inst === ptrType$52.nil)) { */ case 5: + $r = assert($interfaceIsEqual(n.underlying, $ifaceNil)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(n.loader === $throwNilPointerError); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + orig = n.inst.orig; + _r$1 = orig.resolve(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = n.expandUnderlying(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + underlying = _r$2; + n.tparams = orig.tparams; + n.underlying = underlying; + n.fromRHS = orig.fromRHS; + if (orig.methods.$length === 0) { + n.setState(2); + n.inst.ctxt = ptrType$51.nil; + } else { + n.setState(1); + } + $24r$1 = n; + $s = 11; case 11: return $24r$1; + /* } */ case 6: + /* */ if (!(n.loader === $throwNilPointerError)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!(n.loader === $throwNilPointerError)) { */ case 12: + $r = assert($interfaceIsEqual(n.underlying, $ifaceNil)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(n.TypeArgs().Len() === 0); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = n.loader(n); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + tparams = _tuple[0]; + underlying$1 = _tuple[1]; + methods = _tuple[2]; + n.tparams = bindTParams(tparams); + n.underlying = underlying$1; + n.fromRHS = underlying$1; + n.methods = methods; + n.loader = $throwNilPointerError; + /* } */ case 13: + n.setState(2); + $24r$2 = n; + $s = 17; case 17: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$9.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: resolve$2, $c: true, $r, $24r, $24r$1, $24r$2, _r$1, _r$2, _r$3, _tuple, methods, n, orig, tparams, underlying, underlying$1, $s, $deferred};return $f; } } + }; + $ptrType(Named).prototype.state = function state() { + var n; + n = this; + return ((atomic.LoadUint32((n.$ptr_state_ || (n.$ptr_state_ = new ptrType$55(function() { return this.$target.state_; }, function($v) { this.$target.state_ = $v; }, n)))) >>> 0)); + }; + $ptrType(Named).prototype.setState = function setState(state$1) { + var n, state$1; + n = this; + atomic.StoreUint32((n.$ptr_state_ || (n.$ptr_state_ = new ptrType$55(function() { return this.$target.state_; }, function($v) { this.$target.state_ = $v; }, n))), ((state$1 >>> 0))); + }; + $ptrType(Checker).prototype.newNamed = function newNamed(obj, underlying, methods) { + var check, methods, obj, typ$3, underlying; + check = this; + typ$3 = new Named.ptr(check, obj, underlying, ptrType$52.nil, new sync.Mutex.ptr(0, 0), 0, underlying, ptrType$48.nil, methods, $throwNilPointerError); + if ($interfaceIsEqual(obj.object.typ, $ifaceNil)) { + obj.object.typ = typ$3; + } + if (!(check === ptrType$5.nil)) { + check.needsCleanup(typ$3); + } + return typ$3; + }; + $ptrType(Checker).prototype.newNamedInstance = function newNamedInstance(pos, orig, targs, expanding) { + var {check, expanding, inst, obj, orig, pos, targs, typ$3, $s, $r, $c} = $restore(this, {pos, orig, targs, expanding}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = assert(targs.$length > 0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + obj = NewTypeName(pos, orig.obj.object.pkg, orig.obj.object.name, $ifaceNil); + inst = new instance.ptr(orig, newTypeList(targs), 0, ptrType$51.nil); + if (!(expanding === ptrType$9.nil) && expanding.Obj().object.pkg === obj.object.pkg) { + inst.ctxt = expanding.inst.ctxt; + } + typ$3 = new Named.ptr(check, obj, $ifaceNil, inst, new sync.Mutex.ptr(0, 0), 0, $ifaceNil, ptrType$48.nil, sliceType.nil, $throwNilPointerError); + obj.object.typ = typ$3; + if (!(check === ptrType$5.nil)) { + check.needsCleanup(typ$3); + } + $s = -1; return typ$3; + /* */ } return; } var $f = {$blk: newNamedInstance, $c: true, $r, check, expanding, inst, obj, orig, pos, targs, typ$3, $s};return $f; + }; + $ptrType(Named).prototype.cleanup = function cleanup$1() { + var {_r$1, _ref, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + $r = assert(t.inst === ptrType$52.nil || t.inst.orig.inst === ptrType$52.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = t.underlying; + /* */ if (_ref === $ifaceNil) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_ref === $ifaceNil) { */ case 2: + if (t.TypeArgs().Len() === 0) { + $panic(new $String("nil underlying")); + } + $s = 4; continue; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 3: + _r$1 = t.under(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 4: + t.check = ptrType$5.nil; + $s = -1; return; + /* */ } return; } var $f = {$blk: cleanup$1, $c: true, $r, _r$1, _ref, t, $s};return $f; + }; + $ptrType(Named).prototype.Obj = function Obj$2() { + var t; + t = this; + if (t.inst === ptrType$52.nil) { + return t.obj; + } + return t.inst.orig.obj; + }; + $ptrType(Named).prototype.Origin = function Origin$2() { + var t; + t = this; + if (t.inst === ptrType$52.nil) { + return t; + } + return t.inst.orig; + }; + $ptrType(Named).prototype.TypeParams = function TypeParams$1() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.resolve(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1.tparams; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: TypeParams$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(Named).prototype.SetTypeParams = function SetTypeParams(tparams) { + var {_r$1, t, tparams, $s, $r, $c} = $restore(this, {tparams}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + $r = assert(t.inst === ptrType$52.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = t.resolve(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1.tparams = bindTParams(tparams); + $s = -1; return; + /* */ } return; } var $f = {$blk: SetTypeParams, $c: true, $r, _r$1, t, tparams, $s};return $f; + }; + $ptrType(Named).prototype.TypeArgs = function TypeArgs() { + var t; + t = this; + if (t.inst === ptrType$52.nil) { + return ptrType$56.nil; + } + return t.inst.targs; + }; + $ptrType(Named).prototype.NumMethods = function NumMethods$1() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.Origin().resolve(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1.methods.$length; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: NumMethods$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(Named).prototype.Method = function Method$1(i) { + var {$24r, _r$1, _r$2, i, orig, t, x, x$1, x$2, x$3, $s, $deferred, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + t = this; + _r$1 = t.resolve(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + if (t.state() >= 2) { + $s = -1; return (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + } + $r = assert(!(t.inst === ptrType$52.nil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + orig = t.inst.orig; + $r = t.mu.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(t.mu, "Unlock"), []]); + /* */ if (!((t.methods.$length === orig.methods.$length))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!((t.methods.$length === orig.methods.$length))) { */ case 4: + $r = assert(t.methods.$length === 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + t.methods = $makeSlice(sliceType, orig.methods.$length); + /* } */ case 5: + /* */ if ((x$1 = t.methods, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])) === ptrType$2.nil) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ((x$1 = t.methods, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])) === ptrType$2.nil) { */ case 7: + $r = assert(!(t.inst.ctxt === ptrType$51.nil)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = t.expandMethod(i); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + (x$2 = t.methods, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i] = _r$2)); + t.inst.expandedMethods = t.inst.expandedMethods + (1) >> 0; + if (t.inst.expandedMethods === orig.methods.$length) { + t.setState(2); + t.inst.ctxt = ptrType$51.nil; + } + /* } */ case 8: + $24r = (x$3 = t.methods, ((i < 0 || i >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i])); + $s = 11; case 11: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ptrType$2.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Method$1, $c: true, $r, $24r, _r$1, _r$2, i, orig, t, x, x$1, x$2, x$3, $s, $deferred};return $f; } } + }; + $ptrType(Named).prototype.expandMethod = function expandMethod(i) { + var {_r$1, _r$2, _r$3, _tuple, check, copy, ctxt, i, origSig, origm, rbase, rtyp, sig, smap, t, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + copy = [copy]; + t = this; + _r$1 = t.inst.orig.Method(i); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + origm = _r$1; + $r = assert(!(origm === ptrType$2.nil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check = t.check; + /* */ if (!(check === ptrType$5.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(check === ptrType$5.nil)) { */ case 3: + $r = check.objDecl(origm, ptrType$9.nil); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + origSig = $assertType(origm.object.typ, ptrType$27); + _tuple = deref(origSig.Recv().object.Type()); + rbase = _tuple[0]; + if ($interfaceIsEqual(rbase, t)) { + $s = -1; return origm; + } + sig = origSig; + /* */ if (origSig.RecvTypeParams().Len() === t.inst.targs.Len()) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (origSig.RecvTypeParams().Len() === t.inst.targs.Len()) { */ case 6: + _r$2 = makeSubstMap(origSig.RecvTypeParams().list(), t.inst.targs.list()); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + smap = _r$2; + ctxt = ptrType$51.nil; + if (!(check === ptrType$5.nil)) { + ctxt = check.context(); + } + _r$3 = check.subst(origm.object.pos, origSig, smap, t, ctxt); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + sig = $assertType(_r$3, ptrType$27); + /* } */ case 7: + if (sig === origSig) { + copy[0] = $clone(origSig, Signature); + sig = copy[0]; + } + rtyp = $ifaceNil; + if (origm.hasPtrRecv()) { + rtyp = NewPointer(t); + } else { + rtyp = t; + } + sig.recv = substVar(origSig.recv, rtyp); + $s = -1; return substFunc(origm, sig); + /* */ } return; } var $f = {$blk: expandMethod, $c: true, $r, _r$1, _r$2, _r$3, _tuple, check, copy, ctxt, i, origSig, origm, rbase, rtyp, sig, smap, t, $s};return $f; + }; + $ptrType(Named).prototype.SetUnderlying = function SetUnderlying(underlying) { + var {_r$1, _tuple, ok, t, underlying, $s, $r, $c} = $restore(this, {underlying}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + $r = assert(t.inst === ptrType$52.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if ($interfaceIsEqual(underlying, $ifaceNil)) { + $panic(new $String("underlying type must not be nil")); + } + _tuple = $assertType(underlying, ptrType$9, true); + ok = _tuple[1]; + if (ok) { + $panic(new $String("underlying type must not be *Named")); + } + _r$1 = t.resolve(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1.underlying = underlying; + if ($interfaceIsEqual(t.fromRHS, $ifaceNil)) { + t.fromRHS = underlying; + } + $s = -1; return; + /* */ } return; } var $f = {$blk: SetUnderlying, $c: true, $r, _r$1, _tuple, ok, t, underlying, $s};return $f; + }; + $ptrType(Named).prototype.AddMethod = function AddMethod(m) { + var {_r$1, _tuple, i, m, t, $s, $r, $c} = $restore(this, {m}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + $r = assert(t.inst === ptrType$52.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = t.resolve(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _tuple = lookupMethod(t.methods, m.object.pkg, m.object.name, false); + i = _tuple[0]; + if (i < 0) { + t.methods = $append(t.methods, m); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: AddMethod, $c: true, $r, _r$1, _tuple, i, m, t, $s};return $f; + }; + $ptrType(Named).prototype.Underlying = function Underlying$7() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.resolve(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1.underlying; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Underlying$7, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(Named).prototype.String = function String$27() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$27, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(Named).prototype.under = function under$2() { + var {_entry, _entry$1, _i, _key, _key$1, _keys, _r$1, _r$2, _ref, _ref$1, _ref$2, _size, _tuple, check, i, n, n$1, n0, n1, ok, path, seen, u, u1, u1$1, u1$2, u1$3, u1$4, u1$5, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n0 = this; + _r$1 = n0.Underlying(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + u = _r$1; + n1 = ptrType$9.nil; + _ref = u; + if (_ref === $ifaceNil) { + u1 = _ref; + $panic(new $String("nil underlying")); + } else if ($assertType(_ref, ptrType$9, true)[1]) { + u1$2 = _ref.$val; + n1 = u1$2; + } else { + u1$1 = _ref; + $s = -1; return u; + } + if (n0.check === ptrType$5.nil) { + $panic(new $String("Named.check == nil but type is incomplete")); + } + check = n0.check; + n = n0; + seen = new $global.Map(); + path = sliceType$8.nil; + /* while (true) { */ case 2: + _key = n; (seen || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$9.keyFor(_key), { k: _key, v: (seen ? seen.size : 0) }); + path = $append(path, n.obj); + n = n1; + _tuple = (_entry = $mapIndex(seen,ptrType$9.keyFor(n)), _entry !== undefined ? [_entry.v, true] : [0, false]); + i = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (ok) { */ case 4: + $r = check.cycleError($subslice(path, i)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + u = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* break; */ $s = 3; continue; + /* } */ case 5: + _r$2 = n.Underlying(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + u = _r$2; + _ref$1 = u; + if (_ref$1 === $ifaceNil) { + u1$3 = _ref$1; + u = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* break loop; */ $s = 3; continue s; + } else if ($assertType(_ref$1, ptrType$9, true)[1]) { + u1$5 = _ref$1.$val; + n1 = u1$5; + } else { + u1$4 = _ref$1; + /* break loop; */ $s = 3; continue s; + } + $s = 2; continue; + case 3: + _ref$2 = seen; + _i = 0; + _keys = _ref$2 ? _ref$2.keys() : undefined; + _size = _ref$2 ? _ref$2.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key$1 = _keys.next().value; + _entry$1 = _ref$2.get(_key$1); + if (_entry$1 === undefined) { + _i++; + continue; + } + n$1 = _entry$1.k; + if (!(n$1.obj.object.pkg === check.pkg)) { + $panic(new $String("imported type with unresolved underlying type")); + } + n$1.underlying = u; + _i++; + } + $s = -1; return u; + /* */ } return; } var $f = {$blk: under$2, $c: true, $r, _entry, _entry$1, _i, _key, _key$1, _keys, _r$1, _r$2, _ref, _ref$1, _ref$2, _size, _tuple, check, i, n, n$1, n0, n1, ok, path, seen, u, u1, u1$1, u1$2, u1$3, u1$4, u1$5, $s};return $f; + }; + $ptrType(Named).prototype.setUnderlying = function setUnderlying(typ$3) { + var n, typ$3; + n = this; + if (!(n === ptrType$9.nil)) { + n.underlying = typ$3; + } + }; + $ptrType(Named).prototype.lookupMethod = function lookupMethod$1(pkg, name, foldCase) { + var {$24r, _r$1, _r$2, _tuple, foldCase, i, n, name, pkg, $s, $r, $c} = $restore(this, {pkg, name, foldCase}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = this; + _r$1 = n.resolve(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _tuple = lookupMethod(n.Origin().methods, pkg, name, foldCase); + i = _tuple[0]; + if (i < 0) { + $s = -1; return [-1, ptrType$2.nil]; + } + _r$2 = n.Method(i); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = [i, _r$2]; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: lookupMethod$1, $c: true, $r, $24r, _r$1, _r$2, _tuple, foldCase, i, n, name, pkg, $s};return $f; + }; + $ptrType(Checker).prototype.context = function context() { + var check; + check = this; + if (check.ctxt === ptrType$51.nil) { + check.ctxt = NewContext(); + } + return check.ctxt; + }; + $ptrType(Named).prototype.expandUnderlying = function expandUnderlying() { + var {$24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, check, copied, ctxt, h, iface$1, methods, n, n2, old, orig, smap, targs, underlying, unexpanded, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + n = [n]; + n[0] = this; + check[0] = n[0].check; + /* */ if (!(check[0] === ptrType$5.nil) && false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(check[0] === ptrType$5.nil) && false) { */ case 1: + $r = check[0].trace(n[0].obj.object.pos, "-- Named.expandUnderlying %s", new sliceType$6([n[0]])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].indent = check[0].indent + (1) >> 0; + $deferred.push([(function(check, n) { return function Named·expandUnderlying·func1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check[0].indent = check[0].indent - (1) >> 0; + $r = check[0].trace(n[0].obj.object.pos, "=> %s (tparams = %s, under = %s)", new sliceType$6([n[0], n[0].tparams.list(), n[0].underlying])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Named·expandUnderlying·func1, $c: true, $r, $s};return $f; + }; })(check, n), []]); + /* } */ case 2: + $r = assert(!($interfaceIsEqual(n[0].inst.orig.underlying, $ifaceNil))); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (n[0].inst.ctxt === ptrType$51.nil) { + n[0].inst.ctxt = NewContext(); + } + orig = n[0].inst.orig; + targs = n[0].inst.targs; + _tuple = $assertType(orig.underlying, ptrType$9, true); + unexpanded = _tuple[1]; + /* */ if (unexpanded) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (unexpanded) { */ case 5: + $r = assert(!(check[0] === ptrType$5.nil)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + /* */ if (!((orig.tparams.Len() === targs.Len()))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!((orig.tparams.Len() === targs.Len()))) { */ case 8: + $24r = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + $s = 10; case 10: return $24r; + /* } */ case 9: + _r$1 = n[0].inst.ctxt.instanceHash(orig, targs.list()); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + h = _r$1; + _r$2 = n[0].inst.ctxt.update(h, orig, n[0].TypeArgs().list(), n[0]); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + n2 = _r$2; + $r = assert($interfaceIsEqual(n[0], n2)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = makeSubstMap(orig.tparams.list(), targs.list()); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + smap = _r$3; + ctxt = ptrType$51.nil; + if (!(check[0] === ptrType$5.nil)) { + ctxt = check[0].context(); + } + _r$4 = n[0].check.subst(n[0].obj.object.pos, orig.underlying, smap, n[0], ctxt); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + underlying = _r$4; + _tuple$1 = $assertType(underlying, ptrType$13, true); + iface$1 = _tuple$1[0]; + if (!(iface$1 === ptrType$13.nil)) { + _tuple$2 = replaceRecvType(iface$1.methods, orig, n[0]); + methods = _tuple$2[0]; + copied = _tuple$2[1]; + if (copied) { + if ($interfaceIsEqual(iface$1, orig.underlying)) { + old = iface$1; + iface$1 = check[0].newInterface(); + iface$1.embeddeds = old.embeddeds; + iface$1.complete = old.complete; + iface$1.implicit = old.implicit; + underlying = iface$1; + } + iface$1.methods = methods; + } + } + $24r$1 = underlying; + $s = 16; case 16: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: expandUnderlying, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, check, copied, ctxt, h, iface$1, methods, n, n2, old, orig, smap, targs, underlying, unexpanded, $s, $deferred};return $f; } } + }; + safeUnderlying = function safeUnderlying$1(typ$3) { + var {$24r, _r$1, _tuple, t, typ$3, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = $assertType(typ$3, ptrType$9, true); + t = _tuple[0]; + if (!(t === ptrType$9.nil)) { + $s = -1; return t.underlying; + } + _r$1 = typ$3.Underlying(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: safeUnderlying$1, $c: true, $r, $24r, _r$1, _tuple, t, typ$3, $s};return $f; + }; + $ptrType(Checker).prototype.monomorph = function monomorph() { + var {_i, _ref, again, check, dst, edge, i, src, w, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + again = true; + /* while (true) { */ case 1: + /* if (!(again)) { break; } */ if(!(again)) { $s = 2; continue; } + again = false; + _ref = check.mono.edges; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + i = _i; + edge = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), monoEdge); + src = (x = check.mono.vertices, x$1 = edge.src, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + dst = (x$2 = check.mono.vertices, x$3 = edge.dst, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])); + w = src.weight + edge.weight >> 0; + if (w <= dst.weight) { + _i++; + /* continue; */ $s = 3; continue; + } + dst.pre = i; + dst.len = src.len + 1 >> 0; + /* */ if (dst.len === check.mono.vertices.$length) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (dst.len === check.mono.vertices.$length) { */ case 5: + $r = check.reportInstanceLoop(edge.dst); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 6: + dst.weight = w; + again = true; + _i++; + $s = 3; continue; + case 4: + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: monomorph, $c: true, $r, _i, _ref, again, check, dst, edge, i, src, w, x, x$1, x$2, x$3, $s};return $f; + }; + $ptrType(Checker).prototype.reportInstanceLoop = function reportInstanceLoop(v) { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _i, _r$1, _r$2, _ref, _ref$1, check, edge, obj, obj0, qf, seen, stack, v, v$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s, $r, $c} = $restore(this, {v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + stack = sliceType$13.nil; + seen = $makeSlice(sliceType$15, check.mono.vertices.$length); + while (true) { + if (!(!((v < 0 || v >= seen.$length) ? ($throwRuntimeError("index out of range"), undefined) : seen.$array[seen.$offset + v]))) { break; } + stack = $append(stack, v); + ((v < 0 || v >= seen.$length) ? ($throwRuntimeError("index out of range"), undefined) : seen.$array[seen.$offset + v] = true); + v = (x = check.mono.edges, x$1 = (x$2 = check.mono.vertices, ((v < 0 || v >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + v])).pre, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).src; + } + while (true) { + if (!(!(((0 >= stack.$length ? ($throwRuntimeError("index out of range"), undefined) : stack.$array[stack.$offset + 0]) === v)))) { break; } + stack = $subslice(stack, 1); + } + obj0 = (x$3 = check.mono.vertices, ((v < 0 || v >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + v])).obj; + $r = check.error(obj0, 140, "instantiation cycle:"); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + qf = RelativeTo(check.pkg); + _ref = stack; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + v$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + edge = $clone((x$4 = check.mono.edges, x$5 = (x$6 = check.mono.vertices, ((v$1 < 0 || v$1 >= x$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + v$1])).pre, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])), monoEdge); + obj = (x$7 = check.mono.vertices, x$8 = edge.dst, ((x$8 < 0 || x$8 >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + x$8])).obj; + _ref$1 = obj.object.Type(); + /* */ if ($assertType(_ref$1, ptrType$9, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref$1, ptrType$14, true)[1]) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($assertType(_ref$1, ptrType$9, true)[1]) { */ case 4: + _arg = new atPos(((edge.pos >> 0))); + _arg$1 = new $String(obj.object.Name()); + _r$1 = TypeString(edge.typ, qf); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$2 = new $String(_r$1); + $r = check.errorf(_arg, 140, "\t%s implicitly parameterized by %s", new sliceType$6([_arg$1, _arg$2])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + /* } else if ($assertType(_ref$1, ptrType$14, true)[1]) { */ case 5: + _arg$3 = new atPos(((edge.pos >> 0))); + _arg$4 = new $String(obj.object.Name()); + _r$2 = TypeString(edge.typ, qf); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$5 = new $String(_r$2); + $r = check.errorf(_arg$3, 140, "\t%s instantiated as %s", new sliceType$6([_arg$4, _arg$5])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + /* } else { */ case 6: + $panic(new $String("unexpected type")); + /* } */ case 7: + _i++; + $s = 2; continue; + case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: reportInstanceLoop, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _i, _r$1, _r$2, _ref, _ref$1, check, edge, obj, obj0, qf, seen, stack, v, v$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s};return $f; + }; + $ptrType(monoGraph).prototype.recordCanon = function recordCanon(mpar, tpar) { + var _key, mpar, tpar, w; + w = this; + if (w.canon === false) { + w.canon = new $global.Map(); + } + _key = mpar; (w.canon || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$14.keyFor(_key), { k: _key, v: tpar }); + }; + $ptrType(monoGraph).prototype.recordInstance = function recordInstance(pkg, pos, tparams, targs, xlist) { + var {_i, _r$1, _ref, i, pkg, pos, pos$1, targs, tpar, tparams, w, xlist, $s, $r, $c} = $restore(this, {pkg, pos, tparams, targs, xlist}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + _ref = tparams; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + tpar = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + pos$1 = pos; + /* */ if (i < xlist.$length) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (i < xlist.$length) { */ case 3: + _r$1 = ((i < 0 || i >= xlist.$length) ? ($throwRuntimeError("index out of range"), undefined) : xlist.$array[xlist.$offset + i]).Pos(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos$1 = _r$1; + /* } */ case 4: + $r = w.assign(pkg, pos$1, tpar, ((i < 0 || i >= targs.$length) ? ($throwRuntimeError("index out of range"), undefined) : targs.$array[targs.$offset + i])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: recordInstance, $c: true, $r, _i, _r$1, _ref, i, pkg, pos, pos$1, targs, tpar, tparams, w, xlist, $s};return $f; + }; + $ptrType(monoGraph).prototype.assign = function assign(pkg, pos, tpar, targ) { + var {do$1, flow, pkg, pos, targ, tpar, w, $s, $r, $c} = $restore(this, {pkg, pos, tpar, targ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + do$1 = [do$1]; + flow = [flow]; + pkg = [pkg]; + pos = [pos]; + targ = [targ]; + tpar = [tpar]; + w = [w]; + w[0] = this; + if (!(tpar[0].Obj().object.Pkg() === pkg[0])) { + $s = -1; return; + } + flow[0] = (function(do$1, flow, pkg, pos, targ, tpar, w) { return function monoGraph·assign·func1(src, typ$3) { + var src, typ$3, weight; + weight = 1; + if ($interfaceIsEqual(typ$3, targ[0])) { + weight = 0; + } + w[0].addEdge(w[0].typeParamVertex(tpar[0]), src, weight, pos[0], targ[0]); + }; })(do$1, flow, pkg, pos, targ, tpar, w); + do$1[0] = $throwNilPointerError; + do$1[0] = (function(do$1, flow, pkg, pos, targ, tpar, w) { return function monoGraph·assign·func2(typ$3) { + var {_r$1, _r$2, _r$3, _ref, i, i$1, i$2, src, targs, tuple$2, typ$10, typ$11, typ$12, typ$13, typ$14, typ$15, typ$3, typ$4, typ$5, typ$6, typ$7, typ$8, typ$9, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = typ$3; + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$29, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if ($assertType(_ref, ptrType$14, true)[1]) { */ case 1: + typ$5 = _ref.$val; + $r = assert(typ$5.Obj().object.Pkg() === pkg[0]); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = flow[0](w[0].typeParamVertex(typ$5), typ$5); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 2: + typ$6 = _ref.$val; + src = w[0].localNamedVertex(pkg[0], typ$6.Origin()); + /* */ if (src >= 0) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (src >= 0) { */ case 16: + $r = flow[0](src, typ$6); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 17: + targs = typ$6.TypeArgs(); + i = 0; + /* while (true) { */ case 19: + /* if (!(i < targs.Len())) { break; } */ if(!(i < targs.Len())) { $s = 20; continue; } + $r = do$1[0](targs.At(i)); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 19; continue; + case 20: + $s = 13; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 3: + typ$7 = _ref.$val; + $r = do$1[0](typ$7.Elem()); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 4: + typ$8 = _ref.$val; + $s = 13; continue; + /* } else if ($assertType(_ref, ptrType$29, true)[1]) { */ case 5: + typ$9 = _ref.$val; + $r = do$1[0](typ$9.Elem()); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 6: + typ$10 = _ref.$val; + $r = do$1[0](typ$10.Key()); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = do$1[0](typ$10.Elem()); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 7: + typ$11 = _ref.$val; + $r = do$1[0](typ$11.Elem()); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 8: + typ$12 = _ref.$val; + $r = do$1[0](typ$12.Elem()); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 9: + typ$13 = _ref.$val; + i$1 = 0; + /* while (true) { */ case 28: + _r$1 = typ$13.NumMethods(); /* */ $s = 30; case 30: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* if (!(i$1 < _r$1)) { break; } */ if(!(i$1 < _r$1)) { $s = 29; continue; } + _r$2 = typ$13.Method(i$1); /* */ $s = 31; case 31: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.object.Type(); /* */ $s = 32; case 32: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = do$1[0](_r$3); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = i$1 + (1) >> 0; + $s = 28; continue; + case 29: + $s = 13; continue; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 10: + typ$14 = _ref.$val; + tuple$2 = (function(do$1, flow, pkg, pos, targ, tpar, w) { return function monoGraph·assign·func2·func1(tup) { + var {i$2, tup, $s, $r, $c} = $restore(this, {tup}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i$2 = 0; + /* while (true) { */ case 1: + /* if (!(i$2 < tup.Len())) { break; } */ if(!(i$2 < tup.Len())) { $s = 2; continue; } + $r = do$1[0](tup.At(i$2).object.Type()); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$2 = i$2 + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: monoGraph·assign·func2·func1, $c: true, $r, i$2, tup, $s};return $f; + }; })(do$1, flow, pkg, pos, targ, tpar, w); + $r = tuple$2(typ$14.Params()); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = tuple$2(typ$14.Results()); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 11: + typ$15 = _ref.$val; + i$2 = 0; + /* while (true) { */ case 36: + /* if (!(i$2 < typ$15.NumFields())) { break; } */ if(!(i$2 < typ$15.NumFields())) { $s = 37; continue; } + $r = do$1[0](typ$15.Field(i$2).object.Type()); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$2 = i$2 + (1) >> 0; + $s = 36; continue; + case 37: + $s = 13; continue; + /* } else { */ case 12: + typ$4 = _ref; + $panic(new $String("unexpected type")); + /* } */ case 13: + $s = -1; return; + /* */ } return; } var $f = {$blk: monoGraph·assign·func2, $c: true, $r, _r$1, _r$2, _r$3, _ref, i, i$1, i$2, src, targs, tuple$2, typ$10, typ$11, typ$12, typ$13, typ$14, typ$15, typ$3, typ$4, typ$5, typ$6, typ$7, typ$8, typ$9, $s};return $f; + }; })(do$1, flow, pkg, pos, targ, tpar, w); + $r = do$1[0](targ[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: assign, $c: true, $r, do$1, flow, pkg, pos, targ, tpar, w, $s};return $f; + }; + $ptrType(monoGraph).prototype.localNamedVertex = function localNamedVertex(pkg, named) { + var _entry, _entry$1, _i, _key, _key$1, _keys, _ref, _size, _tuple, _tuple$1, _tuple$2, elem, elem$1, idx, idx$1, named, obj, ok, ok$1, ok$2, pkg, root, scope, tpar, w; + w = this; + obj = named.Obj(); + if (!(obj.object.Pkg() === pkg)) { + return -1; + } + root = pkg.Scope(); + if (obj.object.Parent() === root) { + return -1; + } + _tuple = (_entry = $mapIndex(w.nameIdx,ptrType$17.keyFor(obj)), _entry !== undefined ? [_entry.v, true] : [0, false]); + idx = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return idx; + } + idx$1 = -1; + scope = obj.object.Parent(); + while (true) { + if (!(!(scope === root))) { break; } + _ref = scope.elems; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry$1 = _ref.get(_key); + if (_entry$1 === undefined) { + _i++; + continue; + } + elem = _entry$1.v; + _tuple$1 = $assertType(elem, ptrType$17, true); + elem$1 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1 && !elem$1.IsAlias() && elem$1.object.Pos() < obj.object.Pos()) { + _tuple$2 = $assertType(elem$1.object.Type(), ptrType$14, true); + tpar = _tuple$2[0]; + ok$2 = _tuple$2[1]; + if (ok$2) { + if (idx$1 < 0) { + idx$1 = w.vertices.$length; + w.vertices = $append(w.vertices, new monoVertex.ptr(0, 0, 0, obj)); + } + w.addEdge(idx$1, w.typeParamVertex(tpar), 1, obj.object.Pos(), tpar); + } + } + _i++; + } + scope = scope.Parent(); + } + if (w.nameIdx === false) { + w.nameIdx = new $global.Map(); + } + _key$1 = obj; (w.nameIdx || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$17.keyFor(_key$1), { k: _key$1, v: idx$1 }); + return idx$1; + }; + $ptrType(monoGraph).prototype.typeParamVertex = function typeParamVertex(tpar) { + var _entry, _entry$1, _key, _tuple, _tuple$1, idx, idx$1, obj, ok, ok$1, tpar, w, x; + w = this; + _tuple = (_entry = $mapIndex(w.canon,ptrType$14.keyFor(tpar)), _entry !== undefined ? [_entry.v, true] : [ptrType$14.nil, false]); + x = _tuple[0]; + ok = _tuple[1]; + if (ok) { + tpar = x; + } + obj = tpar.Obj(); + _tuple$1 = (_entry$1 = $mapIndex(w.nameIdx,ptrType$17.keyFor(obj)), _entry$1 !== undefined ? [_entry$1.v, true] : [0, false]); + idx = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + return idx; + } + if (w.nameIdx === false) { + w.nameIdx = new $global.Map(); + } + idx$1 = w.vertices.$length; + w.vertices = $append(w.vertices, new monoVertex.ptr(0, 0, 0, obj)); + _key = obj; (w.nameIdx || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$17.keyFor(_key), { k: _key, v: idx$1 }); + return idx$1; + }; + $ptrType(monoGraph).prototype.addEdge = function addEdge(dst, src, weight, pos, typ$3) { + var dst, pos, src, typ$3, w, weight; + w = this; + w.edges = $append(w.edges, new monoEdge.ptr(dst, src, weight, pos, typ$3)); + }; + $ptrType(MethodSet).prototype.String = function String$28() { + var {_i, _r$1, _r$2, _r$3, _ref, buf, f, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + s = this; + if (s.Len() === 0) { + $s = -1; return "MethodSet {}"; + } + buf[0] = new strings.Builder.ptr(ptrType$53.nil, sliceType$14.nil); + _r$1 = fmt.Fprintln(buf[0], new sliceType$6([new $String("MethodSet {")])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _ref = s.list; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$2 = fmt.Fprintf(buf[0], "\t%s\n", new sliceType$6([f])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _i++; + $s = 2; continue; + case 3: + _r$3 = fmt.Fprintln(buf[0], new sliceType$6([new $String("}")])); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: String$28, $c: true, $r, _i, _r$1, _r$2, _r$3, _ref, buf, f, s, $s};return $f; + }; + $ptrType(MethodSet).prototype.Len = function Len$7() { + var s; + s = this; + return s.list.$length; + }; + $ptrType(MethodSet).prototype.At = function At$3(i) { + var i, s, x; + s = this; + return (x = s.list, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(MethodSet).prototype.Lookup = function Lookup$1(pkg, name) { + var {_r$1, _r$2, i, key, m, name, pkg, s, x, $s, $r, $c} = $restore(this, {pkg, name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + key = [key]; + s = [s]; + s[0] = this; + if (s[0].Len() === 0) { + $s = -1; return ptrType$3.nil; + } + key[0] = Id(pkg, name); + _r$1 = sort.Search(s[0].list.$length, (function(key, s) { return function MethodSet·Lookup·func1(i) { + var {$24r, _r$1, i, m, x, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = (x = s[0].list, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + _r$1 = m.obj.Id(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1 >= key[0]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: MethodSet·Lookup·func1, $c: true, $r, $24r, _r$1, i, m, x, $s};return $f; + }; })(key, s)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + i = _r$1; + /* */ if (i < s[0].list.$length) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (i < s[0].list.$length) { */ case 2: + m = (x = s[0].list, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + _r$2 = m.obj.Id(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2 === key[0]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$2 === key[0]) { */ case 4: + $s = -1; return m; + /* } */ case 5: + /* } */ case 3: + $s = -1; return ptrType$3.nil; + /* */ } return; } var $f = {$blk: Lookup$1, $c: true, $r, _r$1, _r$2, i, key, m, name, pkg, s, x, $s};return $f; + }; + NewMethodSet = function NewMethodSet$1(T) { + var {T, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$2, _i$3, _i$4, _key, _key$1, _key$2, _key$3, _key$4, _key$5, _keys, _keys$1, _keys$2, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _size, _size$1, _size$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, alt, base, current, e, f, found, found$1, fset, i, i$1, isPtr, isPtr$1, k, k$1, list$2, m, m$1, mset, named, next, seen, t, t$1, typ$3, typ$4, typ$5, $s, $r, $c} = $restore(this, {T}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + list$2 = [list$2]; + base = false; + _tuple = deref(T); + typ$3 = _tuple[0]; + isPtr = _tuple[1]; + if (!(isPtr)) { _v = false; $s = 3; continue s; } + _r$1 = IsInterface(typ$3); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return emptyMethodSet; + /* } */ case 2: + current = new sliceType$25([$clone(new embeddedType.ptr(typ$3, sliceType$13.nil, isPtr, false), embeddedType)]); + seen = new instanceLookup.ptr(arrayType$1.zero(), false); + /* while (true) { */ case 5: + /* if (!(current.$length > 0)) { break; } */ if(!(current.$length > 0)) { $s = 6; continue; } + next = sliceType$25.nil; + fset = false; + mset = false; + _ref = current; + _i = 0; + /* while (true) { */ case 7: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 8; continue; } + e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), embeddedType); + typ$4 = e.typ; + _tuple$1 = $assertType(typ$4, ptrType$9, true); + named = _tuple$1[0]; + /* */ if (!(named === ptrType$9.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(named === ptrType$9.nil)) { */ case 9: + _r$2 = seen.lookup(named); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + alt = _r$2; + if (!(alt === ptrType$9.nil)) { + _i++; + /* continue; */ $s = 7; continue; + } + seen.add(named); + i = 0; + /* while (true) { */ case 12: + _r$3 = named.NumMethods(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* if (!(i < _r$3)) { break; } */ if(!(i < _r$3)) { $s = 13; continue; } + _r$4 = named.Method(i); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = new methodSet(mset).addOne(_r$4, concat(e.index, i), e.indirect, e.multiples); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + mset = _r$5; + i = i + (1) >> 0; + $s = 12; continue; + case 13: + /* } */ case 10: + _r$6 = under(typ$4); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _ref$1 = _r$6; + /* */ if ($assertType(_ref$1, ptrType$11, true)[1]) { $s = 18; continue; } + /* */ if ($assertType(_ref$1, ptrType$13, true)[1]) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if ($assertType(_ref$1, ptrType$11, true)[1]) { */ case 18: + t = _ref$1.$val; + _ref$2 = t.fields; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$2.$length)) { break; } + i$1 = _i$1; + f = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + if (fset === false) { + fset = new $global.Map(); + } + _key = f.object.Id(); (fset || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: true }); + if (f.embedded) { + _tuple$2 = deref(f.object.typ); + typ$5 = _tuple$2[0]; + isPtr$1 = _tuple$2[1]; + next = $append(next, new embeddedType.ptr(typ$5, concat(e.index, i$1), e.indirect || isPtr$1, e.multiples)); + } + _i$1++; + } + $s = 20; continue; + /* } else if ($assertType(_ref$1, ptrType$13, true)[1]) { */ case 19: + t$1 = _ref$1.$val; + _r$7 = t$1.typeSet(); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = new methodSet(mset).add(_r$7.methods, e.index, true, e.multiples); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + mset = _r$8; + /* } */ case 20: + _i++; + $s = 7; continue; + case 8: + _ref$3 = mset; + _i$2 = 0; + _keys = _ref$3 ? _ref$3.keys() : undefined; + _size = _ref$3 ? _ref$3.size : 0; + while (true) { + if (!(_i$2 < _size)) { break; } + _key$1 = _keys.next().value; + _entry = _ref$3.get(_key$1); + if (_entry === undefined) { + _i$2++; + continue; + } + k = _entry.k; + m = _entry.v; + _tuple$3 = (_entry$1 = $mapIndex(base,$String.keyFor(k)), _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$3.nil, false]); + found = _tuple$3[1]; + if (!found) { + if ((_entry$2 = $mapIndex(fset,$String.keyFor(k)), _entry$2 !== undefined ? _entry$2.v : false)) { + m = ptrType$3.nil; + } + if (base === false) { + base = new $global.Map(); + } + _key$2 = k; (base || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$2), { k: _key$2, v: m }); + } + _i$2++; + } + _ref$4 = fset; + _i$3 = 0; + _keys$1 = _ref$4 ? _ref$4.keys() : undefined; + _size$1 = _ref$4 ? _ref$4.size : 0; + while (true) { + if (!(_i$3 < _size$1)) { break; } + _key$3 = _keys$1.next().value; + _entry$3 = _ref$4.get(_key$3); + if (_entry$3 === undefined) { + _i$3++; + continue; + } + k$1 = _entry$3.k; + _tuple$4 = (_entry$4 = $mapIndex(base,$String.keyFor(k$1)), _entry$4 !== undefined ? [_entry$4.v, true] : [ptrType$3.nil, false]); + found$1 = _tuple$4[1]; + if (!found$1) { + if (base === false) { + base = new $global.Map(); + } + _key$4 = k$1; (base || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$4), { k: _key$4, v: ptrType$3.nil }); + } + _i$3++; + } + _r$9 = consolidateMultiples(next); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + current = _r$9; + $s = 5; continue; + case 6: + if ((base ? base.size : 0) === 0) { + $s = -1; return emptyMethodSet; + } + list$2[0] = sliceType$1.nil; + _ref$5 = base; + _i$4 = 0; + _keys$2 = _ref$5 ? _ref$5.keys() : undefined; + _size$2 = _ref$5 ? _ref$5.size : 0; + while (true) { + if (!(_i$4 < _size$2)) { break; } + _key$5 = _keys$2.next().value; + _entry$5 = _ref$5.get(_key$5); + if (_entry$5 === undefined) { + _i$4++; + continue; + } + m$1 = _entry$5.v; + if (!(m$1 === ptrType$3.nil)) { + m$1.recv = T; + list$2[0] = $append(list$2[0], m$1); + } + _i$4++; + } + $r = sort.Slice(list$2[0], (function(list$2) { return function NewMethodSet·func1(i$2, j) { + var {$24r, _r$10, _r$11, i$2, j, $s, $r, $c} = $restore(this, {i$2, j}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$10 = ((i$2 < 0 || i$2 >= list$2[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : list$2[0].$array[list$2[0].$offset + i$2]).obj.Id(); /* */ $s = 1; case 1: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = ((j < 0 || j >= list$2[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : list$2[0].$array[list$2[0].$offset + j]).obj.Id(); /* */ $s = 2; case 2: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $24r = _r$10 < _r$11; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: NewMethodSet·func1, $c: true, $r, $24r, _r$10, _r$11, i$2, j, $s};return $f; + }; })(list$2)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return new MethodSet.ptr(list$2[0]); + /* */ } return; } var $f = {$blk: NewMethodSet$1, $c: true, $r, T, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$2, _i$3, _i$4, _key, _key$1, _key$2, _key$3, _key$4, _key$5, _keys, _keys$1, _keys$2, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _size, _size$1, _size$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, alt, base, current, e, f, found, found$1, fset, i, i$1, isPtr, isPtr$1, k, k$1, list$2, m, m$1, mset, named, next, seen, t, t$1, typ$3, typ$4, typ$5, $s};return $f; + }; + $pkg.NewMethodSet = NewMethodSet; + methodSet.prototype.add = function add(list$2, index$1, indirect, multiples) { + var _i, _ref, f, i, index$1, indirect, list$2, multiples, s; + s = this.$val; + if (list$2.$length === 0) { + return s; + } + _ref = list$2; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + s = new methodSet(s).addOne(f, concat(index$1, i), indirect, multiples); + _i++; + } + return s; + }; + $ptrType(methodSet).prototype.add = function(...$args) { return new methodSet(this.$get()).add(...$args); }; + methodSet.prototype.addOne = function addOne(f, index$1, indirect, multiples) { + var _entry, _key, _key$1, _tuple, f, found, index$1, indirect, key, multiples, s; + s = this.$val; + if (s === false) { + s = new $global.Map(); + } + key = f.object.Id(); + if (!multiples) { + _tuple = (_entry = $mapIndex(s,$String.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [ptrType$3.nil, false]); + found = _tuple[1]; + if (!found && (indirect || !f.hasPtrRecv())) { + _key = key; (s || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: new Selection.ptr(1, $ifaceNil, f, index$1, indirect) }); + return s; + } + } + _key$1 = key; (s || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$1), { k: _key$1, v: ptrType$3.nil }); + return s; + }; + $ptrType(methodSet).prototype.addOne = function(...$args) { return new methodSet(this.$get()).addOne(...$args); }; + NewMap = function NewMap$1(key, elem) { + var elem, key; + return new Map.ptr(key, elem); + }; + $pkg.NewMap = NewMap; + $ptrType(Map).prototype.Key = function Key() { + var m; + m = this; + return m.key; + }; + $ptrType(Map).prototype.Elem = function Elem$2() { + var m; + m = this; + return m.elem; + }; + $ptrType(Map).prototype.Underlying = function Underlying$8() { + var t; + t = this; + return t; + }; + $ptrType(Map).prototype.String = function String$29() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$29, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + LookupFieldOrMethod = function LookupFieldOrMethod$1(T, addressable, pkg, name) { + var {T, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, addressable, index$1, indirect, name, obj, ok, ok$1, p, pkg, t, t$1, $s, $r, $c} = $restore(this, {T, addressable, pkg, name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = $ifaceNil; + index$1 = sliceType$13.nil; + indirect = false; + if ($interfaceIsEqual(T, $ifaceNil)) { + $panic(new $String("LookupFieldOrMethod on nil type")); + } + _tuple = $assertType(T, ptrType$9, true); + t = _tuple[0]; + /* */ if (!(t === ptrType$9.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(t === ptrType$9.nil)) { */ case 1: + _r$1 = t.Underlying(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$1, ptrType$26, true); + p = _tuple$1[0]; + /* */ if (!(p === ptrType$26.nil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(p === ptrType$26.nil)) { */ case 4: + _r$2 = lookupFieldOrMethod(p, false, pkg, name, false); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + obj = _tuple$2[0]; + index$1 = _tuple$2[1]; + indirect = _tuple$2[2]; + _tuple$3 = $assertType(obj, ptrType$2, true); + ok = _tuple$3[1]; + if (ok) { + _tmp = $ifaceNil; + _tmp$1 = sliceType$13.nil; + _tmp$2 = false; + obj = _tmp; + index$1 = _tmp$1; + indirect = _tmp$2; + $s = -1; return [obj, index$1, indirect]; + } + $s = -1; return [obj, index$1, indirect]; + /* } */ case 5: + /* } */ case 2: + _r$3 = lookupFieldOrMethod(T, addressable, pkg, name, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$4 = _r$3; + obj = _tuple$4[0]; + index$1 = _tuple$4[1]; + indirect = _tuple$4[2]; + /* */ if (false && $interfaceIsEqual(obj, $ifaceNil) && isTypeParam(T)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (false && $interfaceIsEqual(obj, $ifaceNil) && isTypeParam(T)) { */ case 8: + _r$4 = coreType(T); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + t$1 = _r$4; + /* */ if (!($interfaceIsEqual(t$1, $ifaceNil))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!($interfaceIsEqual(t$1, $ifaceNil))) { */ case 11: + _r$5 = lookupFieldOrMethod(t$1, addressable, pkg, name, false); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$5 = _r$5; + obj = _tuple$5[0]; + index$1 = _tuple$5[1]; + indirect = _tuple$5[2]; + _tuple$6 = $assertType(obj, ptrType$16, true); + ok$1 = _tuple$6[1]; + if (!ok$1) { + _tmp$3 = $ifaceNil; + _tmp$4 = sliceType$13.nil; + _tmp$5 = false; + obj = _tmp$3; + index$1 = _tmp$4; + indirect = _tmp$5; + } + /* } */ case 12: + /* } */ case 9: + $s = -1; return [obj, index$1, indirect]; + /* */ } return; } var $f = {$blk: LookupFieldOrMethod$1, $c: true, $r, T, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, addressable, index$1, indirect, name, obj, ok, ok$1, p, pkg, t, t$1, $s};return $f; + }; + $pkg.LookupFieldOrMethod = LookupFieldOrMethod; + lookupFieldOrMethod = function lookupFieldOrMethod$1(T, addressable, pkg, name, foldCase) { + var {T, _i, _i$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, addressable, alt, current, e, f, f$1, foldCase, i, i$1, i$2, index$1, indirect, isPtr, isPtr$1, m, m$1, name, named, next, obj, ok, pkg, seen, t, t$1, typ$3, typ$4, typ$5, $s, $r, $c} = $restore(this, {T, addressable, pkg, name, foldCase}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + obj = $ifaceNil; + index$1 = sliceType$13.nil; + indirect = false; + if (name === "_") { + $s = -1; return [obj, index$1, indirect]; + } + _tuple = deref(T); + typ$3 = _tuple[0]; + isPtr = _tuple[1]; + /* */ if (isPtr) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (isPtr) { */ case 1: + _r$1 = under(typ$3); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$1, ptrType$13, true); + ok = _tuple$1[1]; + if (ok) { + $s = -1; return [obj, index$1, indirect]; + } + /* } */ case 2: + current = new sliceType$25([$clone(new embeddedType.ptr(typ$3, sliceType$13.nil, isPtr, false), embeddedType)]); + seen = new instanceLookup.ptr(arrayType$1.zero(), false); + /* while (true) { */ case 4: + /* if (!(current.$length > 0)) { break; } */ if(!(current.$length > 0)) { $s = 5; continue; } + next = sliceType$25.nil; + _ref = current; + _i = 0; + /* while (true) { */ case 6: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 7; continue; } + e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), embeddedType); + typ$4 = e.typ; + _tuple$2 = $assertType(typ$4, ptrType$9, true); + named = _tuple$2[0]; + /* */ if (!(named === ptrType$9.nil)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!(named === ptrType$9.nil)) { */ case 8: + _r$2 = seen.lookup(named); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + alt = _r$2; + if (!(alt === ptrType$9.nil)) { + _i++; + /* continue; */ $s = 6; continue; + } + seen.add(named); + _r$3 = named.lookupMethod(pkg, name, foldCase); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$3 = _r$3; + i = _tuple$3[0]; + m = _tuple$3[1]; + if (!(m === ptrType$2.nil)) { + index$1 = concat(e.index, i); + if (!($interfaceIsEqual(obj, $ifaceNil)) || e.multiples) { + _tmp = $ifaceNil; + _tmp$1 = index$1; + _tmp$2 = false; + obj = _tmp; + index$1 = _tmp$1; + indirect = _tmp$2; + $s = -1; return [obj, index$1, indirect]; + } + obj = m; + indirect = e.indirect; + _i++; + /* continue; */ $s = 6; continue; + } + /* } */ case 9: + _r$4 = under(typ$4); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _ref$1 = _r$4; + /* */ if ($assertType(_ref$1, ptrType$11, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref$1, ptrType$13, true)[1]) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if ($assertType(_ref$1, ptrType$11, true)[1]) { */ case 13: + t = _ref$1.$val; + _ref$2 = t.fields; + _i$1 = 0; + /* while (true) { */ case 16: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 17; continue; } + i$1 = _i$1; + f = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + /* */ if (f.object.sameId(pkg, name)) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (f.object.sameId(pkg, name)) { */ case 18: + $r = assert(!($interfaceIsEqual(f.object.typ, $ifaceNil))); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + index$1 = concat(e.index, i$1); + if (!($interfaceIsEqual(obj, $ifaceNil)) || e.multiples) { + _tmp$3 = $ifaceNil; + _tmp$4 = index$1; + _tmp$5 = false; + obj = _tmp$3; + index$1 = _tmp$4; + indirect = _tmp$5; + $s = -1; return [obj, index$1, indirect]; + } + obj = f; + indirect = e.indirect; + _i$1++; + /* continue; */ $s = 16; continue; + /* } */ case 19: + if ($interfaceIsEqual(obj, $ifaceNil) && f.embedded) { + _tuple$4 = deref(f.object.typ); + typ$5 = _tuple$4[0]; + isPtr$1 = _tuple$4[1]; + next = $append(next, new embeddedType.ptr(typ$5, concat(e.index, i$1), e.indirect || isPtr$1, e.multiples)); + } + _i$1++; + $s = 16; continue; + case 17: + $s = 15; continue; + /* } else if ($assertType(_ref$1, ptrType$13, true)[1]) { */ case 14: + t$1 = _ref$1.$val; + _r$5 = t$1.typeSet(); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = _r$5.LookupMethod(pkg, name, foldCase); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$5 = _r$6; + i$2 = _tuple$5[0]; + m$1 = _tuple$5[1]; + /* */ if (!(m$1 === ptrType$2.nil)) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (!(m$1 === ptrType$2.nil)) { */ case 23: + $r = assert(!($interfaceIsEqual(m$1.object.typ, $ifaceNil))); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + index$1 = concat(e.index, i$2); + if (!($interfaceIsEqual(obj, $ifaceNil)) || e.multiples) { + _tmp$6 = $ifaceNil; + _tmp$7 = index$1; + _tmp$8 = false; + obj = _tmp$6; + index$1 = _tmp$7; + indirect = _tmp$8; + $s = -1; return [obj, index$1, indirect]; + } + obj = m$1; + indirect = e.indirect; + /* } */ case 24: + /* } */ case 15: + _i++; + $s = 6; continue; + case 7: + if (!($interfaceIsEqual(obj, $ifaceNil))) { + _tuple$6 = $assertType(obj, ptrType$2, true); + f$1 = _tuple$6[0]; + if (!(f$1 === ptrType$2.nil)) { + if (f$1.hasPtrRecv() && !indirect && !addressable) { + _tmp$9 = $ifaceNil; + _tmp$10 = sliceType$13.nil; + _tmp$11 = true; + obj = _tmp$9; + index$1 = _tmp$10; + indirect = _tmp$11; + $s = -1; return [obj, index$1, indirect]; + } + } + $s = -1; return [obj, index$1, indirect]; + } + _r$7 = consolidateMultiples(next); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + current = _r$7; + $s = 4; continue; + case 5: + _tmp$12 = $ifaceNil; + _tmp$13 = sliceType$13.nil; + _tmp$14 = false; + obj = _tmp$12; + index$1 = _tmp$13; + indirect = _tmp$14; + $s = -1; return [obj, index$1, indirect]; + /* */ } return; } var $f = {$blk: lookupFieldOrMethod$1, $c: true, $r, T, _i, _i$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, addressable, alt, current, e, f, f$1, foldCase, i, i$1, i$2, index$1, indirect, isPtr, isPtr$1, m, m$1, name, named, next, obj, ok, pkg, seen, t, t$1, typ$3, typ$4, typ$5, $s};return $f; + }; + consolidateMultiples = function consolidateMultiples$1(list$2) { + var {_i, _key, _r$1, _ref, _tuple, e, found, i, list$2, n, prev, $s, $r, $c} = $restore(this, {list$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (list$2.$length <= 1) { + $s = -1; return list$2; + } + n = 0; + prev = new $global.Map(); + _ref = list$2; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), embeddedType); + _r$1 = lookupType(prev, e.typ); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + i = _tuple[0]; + found = _tuple[1]; + if (found) { + ((i < 0 || i >= list$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : list$2.$array[list$2.$offset + i]).multiples = true; + } else { + _key = e.typ; (prev || $throwRuntimeError("assignment to entry in nil map")).set(Type.keyFor(_key), { k: _key, v: n }); + embeddedType.copy(((n < 0 || n >= list$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : list$2.$array[list$2.$offset + n]), e); + n = n + (1) >> 0; + } + _i++; + $s = 1; continue; + case 2: + $s = -1; return $subslice(list$2, 0, n); + /* */ } return; } var $f = {$blk: consolidateMultiples$1, $c: true, $r, _i, _key, _r$1, _ref, _tuple, e, found, i, list$2, n, prev, $s};return $f; + }; + lookupType = function lookupType$1(m, typ$3) { + var {_entry, _entry$1, _i, _key, _keys, _r$1, _ref, _size, _tuple, found, i, i$1, m, t, typ$3, $s, $r, $c} = $restore(this, {m, typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = (_entry = $mapIndex(m,Type.keyFor(typ$3)), _entry !== undefined ? [_entry.v, true] : [0, false]); + i = _tuple[0]; + found = _tuple[1]; + if (found) { + $s = -1; return [i, true]; + } + _ref = m; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 1: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 2; continue; } + _key = _keys.next().value; + _entry$1 = _ref.get(_key); + if (_entry$1 === undefined) { + _i++; + /* continue; */ $s = 1; continue; + } + t = _entry$1.k; + i$1 = _entry$1.v; + _r$1 = Identical(t, typ$3); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$1) { */ case 3: + $s = -1; return [i$1, true]; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return [0, false]; + /* */ } return; } var $f = {$blk: lookupType$1, $c: true, $r, _entry, _entry$1, _i, _key, _keys, _r$1, _ref, _size, _tuple, found, i, i$1, m, t, typ$3, $s};return $f; + }; + $ptrType(instanceLookup).prototype.lookup = function lookup$1(inst) { + var {_entry, _i, _i$1, _r$1, _r$2, _ref, _ref$1, _v, inst, l, t, t$1, $s, $r, $c} = $restore(this, {inst}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + l = this; + _ref = l.buf; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < 3)) { break; } */ if(!(_i < 3)) { $s = 2; continue; } + t = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]); + if (!(!(t === ptrType$9.nil))) { _v = false; $s = 5; continue s; } + _r$1 = Identical(inst, t); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + $s = -1; return t; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + _ref$1 = (_entry = $mapIndex(l.m,ptrType$9.keyFor(inst.Origin())), _entry !== undefined ? _entry.v : sliceType$7.nil); + _i$1 = 0; + /* while (true) { */ case 7: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 8; continue; } + t$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r$2 = Identical(inst, t$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_r$2) { */ case 9: + $s = -1; return t$1; + /* } */ case 10: + _i$1++; + $s = 7; continue; + case 8: + $s = -1; return ptrType$9.nil; + /* */ } return; } var $f = {$blk: lookup$1, $c: true, $r, _entry, _i, _i$1, _r$1, _r$2, _ref, _ref$1, _v, inst, l, t, t$1, $s};return $f; + }; + $ptrType(instanceLookup).prototype.add = function add$1(inst) { + var _entry, _i, _key, _ref, i, inst, insts, l, t, x; + l = this; + _ref = l.buf; + _i = 0; + while (true) { + if (!(_i < 3)) { break; } + i = _i; + t = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]); + if (t === ptrType$9.nil) { + (x = l.buf, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i] = inst)); + return; + } + _i++; + } + if (l.m === false) { + l.m = new $global.Map(); + } + insts = (_entry = $mapIndex(l.m,ptrType$9.keyFor(inst.Origin())), _entry !== undefined ? _entry.v : sliceType$7.nil); + _key = inst.Origin(); (l.m || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$9.keyFor(_key), { k: _key, v: $append(insts, inst) }); + }; + $ptrType(Checker).prototype.missingMethod = function missingMethod(V, T, static$1) { + var {T, V, _i, _i$1, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _v, alt, check, f, f$1, found, m, m$1, method, obj, static$1, tset, u, $s, $r, $c} = $restore(this, {V, T, static$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + method = ptrType$2.nil; + alt = ptrType$2.nil; + check = this; + _r$1 = T.NumMethods(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1 === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r$1 === 0) { */ case 1: + $s = -1; return [method, alt]; + /* } */ case 2: + _r$2 = under(V); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = $assertType(_r$2, ptrType$13, true); + u = _tuple[0]; + /* */ if (!(u === ptrType$13.nil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(u === ptrType$13.nil)) { */ case 5: + _r$3 = u.typeSet(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + tset = _r$3; + _r$4 = T.typeSet(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _ref = _r$4.methods; + _i = 0; + /* while (true) { */ case 9: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 10; continue; } + m = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _tuple$1 = tset.LookupMethod(m.object.pkg, m.object.name, false); + f = _tuple$1[1]; + if (f === ptrType$2.nil) { + if (!static$1) { + _i++; + /* continue; */ $s = 9; continue; + } + _tmp = m; + _tmp$1 = ptrType$2.nil; + method = _tmp; + alt = _tmp$1; + $s = -1; return [method, alt]; + } + _r$5 = Identical(f.object.typ, m.object.typ); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!_r$5) { */ case 11: + _tmp$2 = m; + _tmp$3 = f; + method = _tmp$2; + alt = _tmp$3; + $s = -1; return [method, alt]; + /* } */ case 12: + _i++; + $s = 9; continue; + case 10: + $s = -1; return [method, alt]; + /* } */ case 6: + _r$6 = T.typeSet(); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _ref$1 = _r$6.methods; + _i$1 = 0; + /* while (true) { */ case 15: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 16; continue; } + m$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r$7 = lookupFieldOrMethod(V, false, m$1.object.pkg, m$1.object.name, false); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$2 = _r$7; + obj = _tuple$2[0]; + found = !($interfaceIsEqual(obj, $ifaceNil)); + /* */ if (!found) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!found) { */ case 18: + _r$8 = lookupFieldOrMethod(NewPointer(V), false, m$1.object.pkg, m$1.object.name, false); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tuple$3 = _r$8; + obj = _tuple$3[0]; + /* */ if ($interfaceIsEqual(obj, $ifaceNil)) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if ($interfaceIsEqual(obj, $ifaceNil)) { */ case 21: + _r$9 = lookupFieldOrMethod(V, false, m$1.object.pkg, m$1.object.name, true); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple$4 = _r$9; + obj = _tuple$4[0]; + /* } */ case 22: + /* } */ case 19: + _tuple$5 = $assertType(obj, ptrType$2, true); + f$1 = _tuple$5[0]; + if (f$1 === ptrType$2.nil) { + _tmp$4 = m$1; + _tmp$5 = ptrType$2.nil; + method = _tmp$4; + alt = _tmp$5; + $s = -1; return [method, alt]; + } + /* */ if (!(check === ptrType$5.nil)) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!(check === ptrType$5.nil)) { */ case 24: + $r = check.objDecl(f$1, ptrType$9.nil); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 25: + if (!found) { _v = true; $s = 29; continue s; } + _r$10 = Identical(f$1.object.typ, m$1.object.typ); /* */ $s = 30; case 30: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v = !_r$10; case 29: + /* */ if (_v) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (_v) { */ case 27: + _tmp$6 = m$1; + _tmp$7 = f$1; + method = _tmp$6; + alt = _tmp$7; + $s = -1; return [method, alt]; + /* } */ case 28: + _i$1++; + $s = 15; continue; + case 16: + $s = -1; return [method, alt]; + /* */ } return; } var $f = {$blk: missingMethod, $c: true, $r, T, V, _i, _i$1, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _v, alt, check, f, f$1, found, m, m$1, method, obj, static$1, tset, u, $s};return $f; + }; + $ptrType(Checker).prototype.missingMethodCause = function missingMethodCause(V, T, m, alt) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, T, V, _arg, _arg$1, _arg$2, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, alt, altS, check, fld, m, mS, mname, obj, $s, $r, $c} = $restore(this, {V, T, m, alt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + mname = "method " + m.object.Name(); + /* */ if (!(alt === ptrType$2.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(alt === ptrType$2.nil)) { */ case 1: + /* */ if (!(m.object.Name() === alt.object.Name())) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(m.object.Name() === alt.object.Name())) { */ case 3: + _arg = new $String(mname); + _r$1 = check.funcString(alt, false); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$1); + _r$2 = check.funcString(m, false); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$2 = new $String(_r$2); + _r$3 = check.sprintf("(missing %s)\n\t\thave %s\n\t\twant %s", new sliceType$6([_arg, _arg$1, _arg$2])); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 8; case 8: return $24r; + /* } */ case 4: + _r$4 = Identical(m.object.typ, alt.object.typ); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_r$4) { */ case 9: + _r$5 = check.sprintf("(%s has pointer receiver)", new sliceType$6([new $String(mname)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r$1 = _r$5; + $s = 13; case 13: return $24r$1; + /* } */ case 10: + _r$6 = check.funcString(alt, false); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tmp = _r$6; + _r$7 = check.funcString(m, false); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tmp$1 = _r$7; + altS = _tmp; + mS = _tmp$1; + /* */ if (altS === mS) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (altS === mS) { */ case 16: + _r$8 = check.funcString(alt, true); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tmp$2 = _r$8; + _r$9 = check.funcString(m, true); /* */ $s = 19; case 19: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tmp$3 = _r$9; + altS = _tmp$2; + mS = _tmp$3; + /* } */ case 17: + _r$10 = check.sprintf("(wrong type for %s)\n\t\thave %s\n\t\twant %s", new sliceType$6([new $String(mname), new $String(altS), new $String(mS)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $24r$2 = _r$10; + $s = 21; case 21: return $24r$2; + /* } */ case 2: + _r$11 = isInterfacePtr(V); /* */ $s = 24; case 24: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* */ if (_r$11) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (_r$11) { */ case 22: + _r$12 = check.interfacePtrError(V); /* */ $s = 25; case 25: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $24r$3 = "(" + _r$12 + ")"; + $s = 26; case 26: return $24r$3; + /* } */ case 23: + _r$13 = isInterfacePtr(T); /* */ $s = 29; case 29: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + /* */ if (_r$13) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (_r$13) { */ case 27: + _r$14 = check.interfacePtrError(T); /* */ $s = 30; case 30: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + $24r$4 = "(" + _r$14 + ")"; + $s = 31; case 31: return $24r$4; + /* } */ case 28: + _r$15 = lookupFieldOrMethod(V, true, m.object.pkg, m.object.name, false); /* */ $s = 32; case 32: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _tuple = _r$15; + obj = _tuple[0]; + _tuple$1 = $assertType(obj, ptrType$16, true); + fld = _tuple$1[0]; + /* */ if (!(fld === ptrType$16.nil)) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (!(fld === ptrType$16.nil)) { */ case 33: + _r$16 = check.sprintf("(%s.%s is a field, not a method)", new sliceType$6([V, new $String(fld.object.Name())])); /* */ $s = 35; case 35: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + $24r$5 = _r$16; + $s = 36; case 36: return $24r$5; + /* } */ case 34: + _r$17 = check.sprintf("(missing %s)", new sliceType$6([new $String(mname)])); /* */ $s = 37; case 37: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + $24r$6 = _r$17; + $s = 38; case 38: return $24r$6; + /* */ } return; } var $f = {$blk: missingMethodCause, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, T, V, _arg, _arg$1, _arg$2, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, alt, altS, check, fld, m, mS, mname, obj, $s};return $f; + }; + isInterfacePtr = function isInterfacePtr$1(T) { + var {$24r, T, _r$1, _r$2, _tuple, _v, p, $s, $r, $c} = $restore(this, {T}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = under(T); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$26, true); + p = _tuple[0]; + if (!(!(p === ptrType$26.nil))) { _v = false; $s = 2; continue s; } + _r$2 = IsInterface(p.base); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2; case 2: + $24r = _v; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: isInterfacePtr$1, $c: true, $r, $24r, T, _r$1, _r$2, _tuple, _v, p, $s};return $f; + }; + $ptrType(Checker).prototype.interfacePtrError = function interfacePtrError(T) { + var {$24r, $24r$1, T, _r$1, _r$2, _r$3, _r$4, _tuple, check, p, $s, $r, $c} = $restore(this, {T}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = isInterfacePtr(T); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = assert(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = under(T); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = $assertType(_r$2, ptrType$26, true); + p = _tuple[0]; + /* */ if (isTypeParam(p.base)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (isTypeParam(p.base)) { */ case 4: + _r$3 = check.sprintf("type %s is pointer to type parameter, not type parameter", new sliceType$6([T])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 7; case 7: return $24r; + /* } */ case 5: + _r$4 = check.sprintf("type %s is pointer to interface, not interface", new sliceType$6([T])); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$1 = _r$4; + $s = 9; case 9: return $24r$1; + /* */ } return; } var $f = {$blk: interfacePtrError, $c: true, $r, $24r, $24r$1, T, _r$1, _r$2, _r$3, _r$4, _tuple, check, p, $s};return $f; + }; + $ptrType(Checker).prototype.funcString = function funcString(f, pkgInfo) { + var {buf, check, f, pkgInfo, qf, w, $s, $r, $c} = $restore(this, {f, pkgInfo}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + buf = bytes.NewBufferString(f.object.name); + qf = $throwNilPointerError; + if (!(check === ptrType$5.nil) && !pkgInfo) { + qf = $methodVal(check, "qualifier"); + } + w = newTypeWriter(buf, qf); + w.pkgInfo = pkgInfo; + w.paramNames = false; + $r = w.signature($assertType(f.object.typ, ptrType$27)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return buf.String(); + /* */ } return; } var $f = {$blk: funcString, $c: true, $r, buf, check, f, pkgInfo, qf, w, $s};return $f; + }; + $ptrType(Checker).prototype.assertableTo = function assertableTo(V, T) { + var {$24r, T, V, _r$1, _r$2, _tuple, check, method, wrongType, $s, $r, $c} = $restore(this, {V, T}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + method = ptrType$2.nil; + wrongType = ptrType$2.nil; + check = this; + _r$1 = IsInterface(T); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r$1) { */ case 1: + $s = -1; return [method, wrongType]; + /* } */ case 2: + _r$2 = check.missingMethod(T, V, false); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + method = _tuple[0]; + wrongType = _tuple[1]; + $24r = [method, wrongType]; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: assertableTo, $c: true, $r, $24r, T, V, _r$1, _r$2, _tuple, check, method, wrongType, $s};return $f; + }; + deref = function deref$1(typ$3) { + var _tuple, p, typ$3; + _tuple = $assertType(typ$3, ptrType$26, true); + p = _tuple[0]; + if (!(p === ptrType$26.nil)) { + if ($interfaceIsEqual(p.base, $ifaceNil)) { + if (false) { + $panic(new $String("pointer with nil base type (possibly due to an invalid cyclic declaration)")); + } + return [(0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]), true]; + } + return [p.base, true]; + } + return [typ$3, false]; + }; + derefStructPtr = function derefStructPtr$1(typ$3) { + var {_r$1, _r$2, _tuple, _tuple$1, ok, p, typ$3, $s, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = under(typ$3); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$26, true); + p = _tuple[0]; + /* */ if (!(p === ptrType$26.nil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(p === ptrType$26.nil)) { */ case 2: + _r$2 = under(p.base); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$2, ptrType$11, true); + ok = _tuple$1[1]; + if (ok) { + $s = -1; return p.base; + } + /* } */ case 3: + $s = -1; return typ$3; + /* */ } return; } var $f = {$blk: derefStructPtr$1, $c: true, $r, _r$1, _r$2, _tuple, _tuple$1, ok, p, typ$3, $s};return $f; + }; + concat = function concat$1(list$2, i) { + var i, list$2, t; + t = sliceType$13.nil; + t = $appendSlice(t, list$2); + return $append(t, i); + }; + fieldIndex = function fieldIndex$1(fields, pkg, name) { + var _i, _ref, f, fields, i, name, pkg; + if (!(name === "_")) { + _ref = fields; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (f.object.sameId(pkg, name)) { + return i; + } + _i++; + } + } + return -1; + }; + lookupMethod = function lookupMethod$2(methods, pkg, name, foldCase) { + var _i, _ref, foldCase, i, m, methods, name, pkg; + if (!(name === "_")) { + _ref = methods; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + m = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if ((m.object.name === name || foldCase && strings.EqualFold(m.object.name, name)) && m.object.sameId(pkg, m.object.name)) { + return [i, m]; + } + _i++; + } + } + return [-1, ptrType$2.nil]; + }; + $ptrType(Checker).prototype.labels = function labels(body) { + var {_arg, _arg$1, _arg$2, _entry, _i, _i$1, _key, _keys, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _size, all, alt, body, check, code, fwdJumps, jmp, lbl, msg, name, name$1, obj, $s, $r, $c} = $restore(this, {body}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _arg = ptrType.nil; + _arg$1 = body.Pos(); + _r$1 = body.End(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$2 = _r$1; + _r$2 = NewScope(_arg, _arg$1, _arg$2, "label"); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + all = _r$2; + _r$3 = check.blockBranches(all, ptrType$92.nil, ptrType$65.nil, body.List); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + fwdJumps = _r$3; + _ref = fwdJumps; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + jmp = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + msg = ""; + code = 0; + name = jmp.Label.Name; + _r$4 = all.Lookup(name); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + alt = _r$4; + if (!($interfaceIsEqual(alt, $ifaceNil))) { + msg = "goto %s jumps into block"; + $assertType(alt, ptrType$91).used = true; + code = 124; + } else { + msg = "label %s not declared"; + code = 119; + } + $r = check.errorf(jmp.Label, code, msg, new sliceType$6([new $String(name)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 4; continue; + case 5: + _ref$1 = all.elems; + _i$1 = 0; + _keys = _ref$1 ? _ref$1.keys() : undefined; + _size = _ref$1 ? _ref$1.size : 0; + /* while (true) { */ case 8: + /* if (!(_i$1 < _size)) { break; } */ if(!(_i$1 < _size)) { $s = 9; continue; } + _key = _keys.next().value; + _entry = _ref$1.get(_key); + if (_entry === undefined) { + _i$1++; + /* continue; */ $s = 8; continue; + } + name$1 = _entry.k; + obj = _entry.v; + _r$5 = resolve(name$1, obj); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + obj = _r$5; + lbl = $assertType(obj, ptrType$91); + /* */ if (!lbl.used) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!lbl.used) { */ case 11: + $r = check.softErrorf(lbl, 122, "label %s declared and not used", new sliceType$6([new $String(lbl.object.name)])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + _i$1++; + $s = 8; continue; + case 9: + $s = -1; return; + /* */ } return; } var $f = {$blk: labels, $c: true, $r, _arg, _arg$1, _arg$2, _entry, _i, _i$1, _key, _keys, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _size, all, alt, body, check, code, fwdJumps, jmp, lbl, msg, name, name$1, obj, $s};return $f; + }; + $ptrType(block).prototype.insert = function insert$2(s) { + var {_key, b, labels$1, name, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = this; + name = s.Label.Name; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $r = assert(b.gotoTarget(name) === ptrType$65.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + labels$1 = b.labels; + if (labels$1 === false) { + labels$1 = new $global.Map(); + b.labels = labels$1; + } + _key = name; (labels$1 || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: s }); + $s = -1; return; + /* */ } return; } var $f = {$blk: insert$2, $c: true, $r, _key, b, labels$1, name, s, $s};return $f; + }; + $ptrType(block).prototype.gotoTarget = function gotoTarget(name) { + var _entry, b, name, s, t; + b = this; + s = b; + while (true) { + if (!(!(s === ptrType$92.nil))) { break; } + t = (_entry = $mapIndex(s.labels,$String.keyFor(name)), _entry !== undefined ? _entry.v : ptrType$65.nil); + if (!(t === ptrType$65.nil)) { + return t; + } + s = s.parent; + } + return ptrType$65.nil; + }; + $ptrType(block).prototype.enclosingTarget = function enclosingTarget(name) { + var b, name, s, t; + b = this; + s = b; + while (true) { + if (!(!(s === ptrType$92.nil))) { break; } + t = s.lstmt; + if (!(t === ptrType$65.nil) && t.Label.Name === name) { + return t; + } + s = s.parent; + } + return ptrType$65.nil; + }; + $ptrType(Checker).prototype.blockBranches = function blockBranches(all, parent, lstmt, list$2) { + var {_i, _ref, _tmp, _tmp$1, all, b, badJumps, blockBranches$1, check, fwdJumps, jumpsOverVarDecl, list$2, lstmt, parent, recordVarDecl, s, stmtBranches, varDeclPos, $s, $r, $c} = $restore(this, {all, parent, lstmt, list$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + all = [all]; + b = [b]; + badJumps = [badJumps]; + blockBranches$1 = [blockBranches$1]; + check = [check]; + fwdJumps = [fwdJumps]; + jumpsOverVarDecl = [jumpsOverVarDecl]; + lstmt = [lstmt]; + recordVarDecl = [recordVarDecl]; + stmtBranches = [stmtBranches]; + varDeclPos = [varDeclPos]; + check[0] = this; + b[0] = new block.ptr(parent, lstmt[0], false); + varDeclPos[0] = 0; + _tmp = sliceType$26.nil; + _tmp$1 = sliceType$26.nil; + fwdJumps[0] = _tmp; + badJumps[0] = _tmp$1; + recordVarDecl[0] = (function(all, b, badJumps, blockBranches$1, check, fwdJumps, jumpsOverVarDecl, lstmt, recordVarDecl, stmtBranches, varDeclPos) { return function Checker·blockBranches·func1(pos) { + var pos; + varDeclPos[0] = pos; + badJumps[0] = $appendSlice($subslice(badJumps[0], 0, 0), fwdJumps[0]); + }; })(all, b, badJumps, blockBranches$1, check, fwdJumps, jumpsOverVarDecl, lstmt, recordVarDecl, stmtBranches, varDeclPos); + jumpsOverVarDecl[0] = (function(all, b, badJumps, blockBranches$1, check, fwdJumps, jumpsOverVarDecl, lstmt, recordVarDecl, stmtBranches, varDeclPos) { return function Checker·blockBranches·func2(jmp) { + var _i, _ref, bad, jmp; + if (new token.Pos(varDeclPos[0]).IsValid()) { + _ref = badJumps[0]; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + bad = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (jmp === bad) { + return true; + } + _i++; + } + } + return false; + }; })(all, b, badJumps, blockBranches$1, check, fwdJumps, jumpsOverVarDecl, lstmt, recordVarDecl, stmtBranches, varDeclPos); + blockBranches$1[0] = (function(all, b, badJumps, blockBranches$1, check, fwdJumps, jumpsOverVarDecl, lstmt, recordVarDecl, stmtBranches, varDeclPos) { return function Checker·blockBranches·func3(lstmt$1, list$3) { + var {_arg, _arg$1, _r$1, list$3, lstmt$1, $s, $r, $c} = $restore(this, {lstmt$1, list$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = fwdJumps[0]; + _r$1 = check[0].blockBranches(all[0], b[0], lstmt$1, list$3); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = _r$1; + fwdJumps[0] = $appendSlice(_arg, _arg$1); + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·blockBranches·func3, $c: true, $r, _arg, _arg$1, _r$1, list$3, lstmt$1, $s};return $f; + }; })(all, b, badJumps, blockBranches$1, check, fwdJumps, jumpsOverVarDecl, lstmt, recordVarDecl, stmtBranches, varDeclPos); + stmtBranches[0] = $throwNilPointerError; + stmtBranches[0] = (function(all, b, badJumps, blockBranches$1, check, fwdJumps, jumpsOverVarDecl, lstmt, recordVarDecl, stmtBranches, varDeclPos) { return function Checker·blockBranches·func4(s) { + var {_1, _arg, _arg$1, _arg$2, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$2, _ref$3, _tuple, alt, d, i, jmp, lbl, name, name$1, obj, s, s$1, s$10, s$11, s$12, s$13, s$2, s$3, s$4, s$5, s$6, s$7, s$8, s$9, t, t$1, valid, valid$1, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = s; + /* */ if ($assertType(_ref, ptrType$64, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$65, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$73, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$69, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$74, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$75, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$60, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$76, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$77, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$61, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$78, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$79, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$80, true)[1]) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if ($assertType(_ref, ptrType$64, true)[1]) { */ case 1: + s$1 = _ref.$val; + _tuple = $assertType(s$1.Decl, ptrType$93, true); + d = _tuple[0]; + /* */ if (!(d === ptrType$93.nil) && (d.Tok === 85)) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!(d === ptrType$93.nil) && (d.Tok === 85)) { */ case 15: + $r = recordVarDecl[0](d.Pos()); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 16: + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$65, true)[1]) { */ case 2: + s$2 = _ref.$val; + name = s$2.Label.Name; + /* */ if (!(name === "_")) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!(name === "_")) { */ case 18: + lbl = NewLabel(s$2.Label.Pos(), check[0].pkg, name); + _r$1 = all[0].Insert(lbl); /* */ $s = 20; case 20: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + alt = _r$1; + /* */ if (!($interfaceIsEqual(alt, $ifaceNil))) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!($interfaceIsEqual(alt, $ifaceNil))) { */ case 21: + $r = check[0].softErrorf(lbl, 120, "label %s already declared", new sliceType$6([new $String(name)])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].reportAltDecl(alt); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 23; continue; + /* } else { */ case 22: + $r = b[0].insert(s$2); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].recordDef(s$2.Label, lbl); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 23: + i = 0; + _ref$1 = fwdJumps[0]; + _i = 0; + /* while (true) { */ case 28: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 29; continue; } + jmp = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + /* */ if (jmp.Label.Name === name) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (jmp.Label.Name === name) { */ case 30: + lbl.used = true; + $r = check[0].recordUse(jmp.Label, lbl); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = jumpsOverVarDecl[0](jmp); /* */ $s = 36; case 36: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (_r$2) { */ case 34: + _arg = jmp.Label; + _arg$1 = new $String(name); + _r$3 = check[0].fset.Position(varDeclPos[0]); /* */ $s = 37; case 37: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$2 = new $Int(_r$3.Line); + $r = check[0].softErrorf(_arg, 123, "goto %s jumps over variable declaration at line %d", new sliceType$6([_arg$1, _arg$2])); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 35: + $s = 32; continue; + /* } else { */ case 31: + ((i < 0 || i >= fwdJumps[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : fwdJumps[0].$array[fwdJumps[0].$offset + i] = jmp); + i = i + (1) >> 0; + /* } */ case 32: + _i++; + $s = 28; continue; + case 29: + fwdJumps[0] = $subslice(fwdJumps[0], 0, i); + lstmt[0] = s$2; + /* } */ case 19: + $r = stmtBranches[0](s$2.Stmt); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$73, true)[1]) { */ case 3: + s$3 = _ref.$val; + if (s$3.Label === ptrType$30.nil) { + $s = -1; return; + } + name$1 = s$3.Label.Name; + _1 = s$3.Tok; + /* */ if (_1 === (61)) { $s = 41; continue; } + /* */ if (_1 === (65)) { $s = 42; continue; } + /* */ if (_1 === (73)) { $s = 43; continue; } + /* */ $s = 44; continue; + /* if (_1 === (61)) { */ case 41: + valid = false; + t = b[0].enclosingTarget(name$1); + if (!(t === ptrType$65.nil)) { + _ref$2 = t.Stmt; + if ($assertType(_ref$2, ptrType$76, true)[1] || $assertType(_ref$2, ptrType$77, true)[1] || $assertType(_ref$2, ptrType$78, true)[1] || $assertType(_ref$2, ptrType$79, true)[1] || $assertType(_ref$2, ptrType$80, true)[1]) { + valid = true; + } + } + /* */ if (!valid) { $s = 46; continue; } + /* */ $s = 47; continue; + /* if (!valid) { */ case 46: + $r = check[0].errorf(s$3.Label, 121, "invalid break label %s", new sliceType$6([new $String(name$1)])); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 47: + $s = 45; continue; + /* } else if (_1 === (65)) { */ case 42: + valid$1 = false; + t$1 = b[0].enclosingTarget(name$1); + if (!(t$1 === ptrType$65.nil)) { + _ref$3 = t$1.Stmt; + if ($assertType(_ref$3, ptrType$79, true)[1] || $assertType(_ref$3, ptrType$80, true)[1]) { + valid$1 = true; + } + } + /* */ if (!valid$1) { $s = 49; continue; } + /* */ $s = 50; continue; + /* if (!valid$1) { */ case 49: + $r = check[0].errorf(s$3.Label, 121, "invalid continue label %s", new sliceType$6([new $String(name$1)])); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 50: + $s = 45; continue; + /* } else if (_1 === (73)) { */ case 43: + if (b[0].gotoTarget(name$1) === ptrType$65.nil) { + fwdJumps[0] = $append(fwdJumps[0], s$3); + $s = -1; return; + } + $s = 45; continue; + /* } else { */ case 44: + $r = check[0].errorf(s$3, -1, "branch statement: %s %s", new sliceType$6([new token.Token(s$3.Tok), new $String(name$1)])); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 45: + case 40: + _r$4 = all[0].Lookup(name$1); /* */ $s = 53; case 53: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + obj = _r$4; + $assertType(obj, ptrType$91).used = true; + $r = check[0].recordUse(s$3.Label, obj); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$69, true)[1]) { */ case 4: + s$4 = _ref.$val; + /* */ if (s$4.Tok === 47) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if (s$4.Tok === 47) { */ case 55: + _r$5 = s$4.Pos(); /* */ $s = 57; case 57: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $r = recordVarDecl[0](_r$5); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 56: + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$74, true)[1]) { */ case 5: + s$5 = _ref.$val; + $r = blockBranches$1[0](lstmt[0], s$5.List); /* */ $s = 59; case 59: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$75, true)[1]) { */ case 6: + s$6 = _ref.$val; + $r = stmtBranches[0](s$6.Body); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(s$6.Else, $ifaceNil))) { $s = 61; continue; } + /* */ $s = 62; continue; + /* if (!($interfaceIsEqual(s$6.Else, $ifaceNil))) { */ case 61: + $r = stmtBranches[0](s$6.Else); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 62: + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$60, true)[1]) { */ case 7: + s$7 = _ref.$val; + $r = blockBranches$1[0](ptrType$65.nil, s$7.Body); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$76, true)[1]) { */ case 8: + s$8 = _ref.$val; + $r = stmtBranches[0](s$8.Body); /* */ $s = 65; case 65: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$77, true)[1]) { */ case 9: + s$9 = _ref.$val; + $r = stmtBranches[0](s$9.Body); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$61, true)[1]) { */ case 10: + s$10 = _ref.$val; + $r = blockBranches$1[0](ptrType$65.nil, s$10.Body); /* */ $s = 67; case 67: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$78, true)[1]) { */ case 11: + s$11 = _ref.$val; + $r = stmtBranches[0](s$11.Body); /* */ $s = 68; case 68: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$79, true)[1]) { */ case 12: + s$12 = _ref.$val; + $r = stmtBranches[0](s$12.Body); /* */ $s = 69; case 69: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$80, true)[1]) { */ case 13: + s$13 = _ref.$val; + $r = stmtBranches[0](s$13.Body); /* */ $s = 70; case 70: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 14: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·blockBranches·func4, $c: true, $r, _1, _arg, _arg$1, _arg$2, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$2, _ref$3, _tuple, alt, d, i, jmp, lbl, name, name$1, obj, s, s$1, s$10, s$11, s$12, s$13, s$2, s$3, s$4, s$5, s$6, s$7, s$8, s$9, t, t$1, valid, valid$1, $s};return $f; + }; })(all, b, badJumps, blockBranches$1, check, fwdJumps, jumpsOverVarDecl, lstmt, recordVarDecl, stmtBranches, varDeclPos); + _ref = list$2; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = stmtBranches[0](s); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return fwdJumps[0]; + /* */ } return; } var $f = {$blk: blockBranches, $c: true, $r, _i, _ref, _tmp, _tmp$1, all, b, badJumps, blockBranches$1, check, fwdJumps, jumpsOverVarDecl, list$2, lstmt, parent, recordVarDecl, s, stmtBranches, varDeclPos, $s};return $f; + }; + $ptrType(Interface).prototype.typeSet = function typeSet$1() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = computeInterfaceTypeSet(t.check, 0, t); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: typeSet$1, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + NewInterfaceType = function NewInterfaceType$1(methods, embeddeds) { + var {_i, _ref, embeddeds, m, methods, sig, typ$3, $s, $r, $c} = $restore(this, {methods, embeddeds}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ((methods.$length === 0) && (embeddeds.$length === 0)) { + $s = -1; return emptyInterface; + } + typ$3 = (ptrType$5.nil).newInterface(); + _ref = methods; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + m = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + sig = $assertType(m.object.typ, ptrType$27); + if (sig.recv === ptrType$16.nil) { + sig.recv = NewVar(m.object.pos, m.object.pkg, "", typ$3); + } + _i++; + } + $r = sortMethods(methods); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + typ$3.methods = methods; + typ$3.embeddeds = embeddeds; + typ$3.complete = true; + $s = -1; return typ$3; + /* */ } return; } var $f = {$blk: NewInterfaceType$1, $c: true, $r, _i, _ref, embeddeds, m, methods, sig, typ$3, $s};return $f; + }; + $pkg.NewInterfaceType = NewInterfaceType; + $ptrType(Checker).prototype.newInterface = function newInterface() { + var check, typ$3; + check = this; + typ$3 = new Interface.ptr(check, sliceType.nil, sliceType$2.nil, ptrType$6.nil, false, false, ptrType$7.nil); + if (!(check === ptrType$5.nil)) { + check.needsCleanup(typ$3); + } + return typ$3; + }; + $ptrType(Interface).prototype.MarkImplicit = function MarkImplicit() { + var t; + t = this; + t.implicit = true; + }; + $ptrType(Interface).prototype.NumExplicitMethods = function NumExplicitMethods() { + var t; + t = this; + return t.methods.$length; + }; + $ptrType(Interface).prototype.ExplicitMethod = function ExplicitMethod(i) { + var i, t, x; + t = this; + return (x = t.methods, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(Interface).prototype.NumEmbeddeds = function NumEmbeddeds() { + var t; + t = this; + return t.embeddeds.$length; + }; + $ptrType(Interface).prototype.Embedded = function Embedded$1(i) { + var _tuple, i, t, tname, x; + t = this; + _tuple = $assertType((x = t.embeddeds, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), ptrType$9, true); + tname = _tuple[0]; + return tname; + }; + $ptrType(Interface).prototype.EmbeddedType = function EmbeddedType(i) { + var i, t, x; + t = this; + return (x = t.embeddeds, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(Interface).prototype.NumMethods = function NumMethods$2() { + var {$24r, _r$1, _r$2, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.typeSet(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.NumMethods(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: NumMethods$2, $c: true, $r, $24r, _r$1, _r$2, t, $s};return $f; + }; + $ptrType(Interface).prototype.Method = function Method$2(i) { + var {$24r, _r$1, _r$2, i, t, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.typeSet(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Method(i); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Method$2, $c: true, $r, $24r, _r$1, _r$2, i, t, $s};return $f; + }; + $ptrType(Interface).prototype.Empty = function Empty() { + var {$24r, _r$1, _r$2, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.typeSet(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.IsAll(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Empty, $c: true, $r, $24r, _r$1, _r$2, t, $s};return $f; + }; + $ptrType(Interface).prototype.IsComparable = function IsComparable$1() { + var {$24r, _r$1, _r$2, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.typeSet(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.IsComparable(false); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: IsComparable$1, $c: true, $r, $24r, _r$1, _r$2, t, $s};return $f; + }; + $ptrType(Interface).prototype.IsMethodSet = function IsMethodSet$1() { + var {$24r, _r$1, _r$2, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = t.typeSet(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.IsMethodSet(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: IsMethodSet$1, $c: true, $r, $24r, _r$1, _r$2, t, $s};return $f; + }; + $ptrType(Interface).prototype.IsImplicit = function IsImplicit() { + var t; + t = this; + return t.implicit; + }; + $ptrType(Interface).prototype.Complete = function Complete$1() { + var {_r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if (!t.complete) { + t.complete = true; + } + _r$1 = t.typeSet(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return t; + /* */ } return; } var $f = {$blk: Complete$1, $c: true, $r, _r$1, t, $s};return $f; + }; + $ptrType(Interface).prototype.Underlying = function Underlying$9() { + var t; + t = this; + return t; + }; + $ptrType(Interface).prototype.String = function String$30() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$30, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(Interface).prototype.cleanup = function cleanup$2() { + var t; + t = this; + t.check = ptrType$5.nil; + t.embedPos = ptrType$6.nil; + }; + $ptrType(Checker).prototype.interfaceType = function interfaceType(ityp, iface$1, def$2) { + var {_arg, _arg$1, _i, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, addEmbedded, at$1, check, def$2, f, ftyp, iface$1, ityp, m, name, recvTyp, sig, typ$3, x, $s, $r, $c} = $restore(this, {ityp, iface$1, def$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = [check]; + iface$1 = [iface$1]; + ityp = [ityp]; + check[0] = this; + addEmbedded = (function(check, iface$1, ityp) { return function Checker·interfaceType·func1(pos, typ$3) { + var pos, typ$3; + ityp[0].embeddeds = $append(ityp[0].embeddeds, typ$3); + if (ityp[0].embedPos === ptrType$6.nil) { + ityp[0].embedPos = $newDataPointer(sliceType$3.nil, ptrType$6); + } + ityp[0].embedPos.$set($append(ityp[0].embedPos.$get(), pos)); + }; })(check, iface$1, ityp); + _ref = iface$1[0].Methods.List; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (f.Names.$length === 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (f.Names.$length === 0) { */ case 3: + _r$1 = f.Type.Pos(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = _r$1; + _r$2 = parseUnion(check[0], f.Type); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = _r$2; + $r = addEmbedded(_arg, _arg$1); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue; */ $s = 1; continue; + /* } */ case 4: + name = (x = f.Names, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + /* */ if (name.Name === "_") { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (name.Name === "_") { */ case 8: + $r = check[0].error(name, 27, "methods must have a unique non-blank name"); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue; */ $s = 1; continue; + /* } */ case 9: + _r$3 = check[0].typ(f.Type); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + typ$3 = _r$3; + _tuple = $assertType(typ$3, ptrType$27, true); + sig = _tuple[0]; + /* */ if (sig === ptrType$27.nil) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (sig === ptrType$27.nil) { */ case 12: + /* */ if (!($interfaceIsEqual(typ$3, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!($interfaceIsEqual(typ$3, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { */ case 14: + $r = check[0].errorf(f.Type, -1, "%s is not a method signature", new sliceType$6([typ$3])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 15: + _i++; + /* continue; */ $s = 1; continue; + /* } */ case 13: + /* */ if (!(sig.tparams === ptrType$48.nil)) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (!(sig.tparams === ptrType$48.nil)) { */ case 17: + at$1 = f.Type; + _tuple$1 = $assertType(f.Type, ptrType$44, true); + ftyp = _tuple$1[0]; + if (!(ftyp === ptrType$44.nil) && !(ftyp.TypeParams === ptrType$49.nil)) { + at$1 = ftyp.TypeParams; + } + $r = check[0].error(at$1, 143, "methods cannot have type parameters"); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + recvTyp = ityp[0]; + if (!(def$2 === ptrType$9.nil)) { + recvTyp = def$2; + } + sig.recv = NewVar(name.Pos(), check[0].pkg, "", recvTyp); + m = NewFunc(name.Pos(), check[0].pkg, name.Name, sig); + $r = check[0].recordDef(name, m); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ityp[0].methods = $append(ityp[0].methods, m); + _i++; + $s = 1; continue; + case 2: + ityp[0].complete = true; + if ((ityp[0].methods.$length === 0) && (ityp[0].embeddeds.$length === 0)) { + ityp[0].tset = topTypeSet; + $s = -1; return; + } + $r = sortMethods(ityp[0].methods); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].later((function(check, iface$1, ityp) { return function Checker·interfaceType·func2() { + var {_r$4, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$4 = computeInterfaceTypeSet(check[0], iface$1[0].Pos(), ityp[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·interfaceType·func2, $c: true, $r, _r$4, $s};return $f; + }; })(check, iface$1, ityp)).describef(iface$1[0], "compute type set for %s", new sliceType$6([ityp[0]])); + $s = -1; return; + /* */ } return; } var $f = {$blk: interfaceType, $c: true, $r, _arg, _arg$1, _i, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, addEmbedded, at$1, check, def$2, f, ftyp, iface$1, ityp, m, name, recvTyp, sig, typ$3, x, $s};return $f; + }; + Instantiate = function Instantiate$1(ctxt, orig, targs, validate) { + var {$24r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, ctxt, err, i, inst, orig, t, t$1, targs, tparams, validate, $s, $r, $c} = $restore(this, {ctxt, orig, targs, validate}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (ctxt === ptrType$51.nil) { + ctxt = NewContext(); + } + /* */ if (validate) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (validate) { */ case 1: + tparams = sliceType$9.nil; + _ref = orig; + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref, ptrType$9, true)[1]) { */ case 3: + t = _ref.$val; + _r$1 = t.TypeParams(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.list(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + tparams = _r$2; + $s = 5; continue; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 4: + t$1 = _ref.$val; + tparams = t$1.TypeParams().list(); + /* } */ case 5: + /* */ if (!((targs.$length === tparams.$length))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!((targs.$length === tparams.$length))) { */ case 8: + _r$3 = fmt.Errorf("got %d type arguments but %s has %d type parameters", new sliceType$6([new $Int(targs.$length), orig, new $Int(tparams.$length)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = [$ifaceNil, _r$3]; + $s = 11; case 11: return $24r; + /* } */ case 9: + _r$4 = (ptrType$5.nil).verify(0, tparams, targs, ctxt); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple = _r$4; + i = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, new ArgumentError.ptr(i, err)]; + } + /* } */ case 2: + _r$5 = (ptrType$5.nil).instance(0, orig, targs, ptrType$9.nil, ctxt); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + inst = _r$5; + $s = -1; return [inst, $ifaceNil]; + /* */ } return; } var $f = {$blk: Instantiate$1, $c: true, $r, $24r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, ctxt, err, i, inst, orig, t, t$1, targs, tparams, validate, $s};return $f; + }; + $pkg.Instantiate = Instantiate; + $ptrType(Checker).prototype.instance = function instance$1(pos, orig, targs, expanding, ctxt) { + var {$24r, $24r$1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _i, _i$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, check, copy, ctxt, ctxt$1, ctxt$2, ctxts, expanding, hashes, i, i$1, inst, orig, orig$1, orig$2, orig$3, pos, res, sig, targs, tparams, updateContexts, $s, $r, $c} = $restore(this, {pos, orig, targs, expanding, ctxt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + copy = [copy]; + ctxts = [ctxts]; + hashes = [hashes]; + orig = [orig]; + targs = [targs]; + res = $ifaceNil; + check = this; + ctxts[0] = sliceType$27.nil; + if (!(expanding === ptrType$9.nil)) { + ctxts[0] = $append(ctxts[0], expanding.inst.ctxt); + } + if (!(ctxt === ptrType$51.nil)) { + ctxts[0] = $append(ctxts[0], ctxt); + } + $r = assert(ctxts[0].$length > 0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + hashes[0] = $makeSlice(sliceType$5, ctxts[0].$length); + _ref = ctxts[0]; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + i = _i; + ctxt$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = ctxt$1.instanceHash(orig[0], targs[0]); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ((i < 0 || i >= hashes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : hashes[0].$array[hashes[0].$offset + i] = _r$1); + _i++; + $s = 2; continue; + case 3: + updateContexts = (function(copy, ctxts, hashes, orig, targs) { return function Checker·instance·func1(res$1) { + var {_r$2, i$1, res$1, $s, $r, $c} = $restore(this, {res$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i$1 = ctxts[0].$length - 1 >> 0; + /* while (true) { */ case 1: + /* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 2; continue; } + _r$2 = ((i$1 < 0 || i$1 >= ctxts[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : ctxts[0].$array[ctxts[0].$offset + i$1]).update(((i$1 < 0 || i$1 >= hashes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : hashes[0].$array[hashes[0].$offset + i$1]), orig[0], targs[0], res$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + res$1 = _r$2; + i$1 = i$1 - (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return res$1; + /* */ } return; } var $f = {$blk: Checker·instance·func1, $c: true, $r, _r$2, i$1, res$1, $s};return $f; + }; })(copy, ctxts, hashes, orig, targs); + _ref$1 = ctxts[0]; + _i$1 = 0; + /* while (true) { */ case 5: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 6; continue; } + i$1 = _i$1; + ctxt$2 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r$2 = ctxt$2.lookup(((i$1 < 0 || i$1 >= hashes[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : hashes[0].$array[hashes[0].$offset + i$1]), orig[0], targs[0]); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + inst = _r$2; + /* */ if (!($interfaceIsEqual(inst, $ifaceNil))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!($interfaceIsEqual(inst, $ifaceNil))) { */ case 8: + _r$3 = updateContexts(inst); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + res = _r$3; + $24r = res; + $s = 11; case 11: return $24r; + /* } */ case 9: + _i$1++; + $s = 5; continue; + case 6: + _ref$2 = orig[0]; + /* */ if ($assertType(_ref$2, ptrType$9, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref$2, ptrType$27, true)[1]) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if ($assertType(_ref$2, ptrType$9, true)[1]) { */ case 12: + orig$1 = _ref$2.$val; + _r$4 = check.newNamedInstance(pos, orig$1, targs[0], expanding); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + res = _r$4; + $s = 15; continue; + /* } else if ($assertType(_ref$2, ptrType$27, true)[1]) { */ case 13: + orig$2 = _ref$2.$val; + $r = assert(expanding === ptrType$9.nil); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tparams = orig$2.TypeParams(); + _r$5 = check.validateTArgLen(pos, tparams.Len(), targs[0].$length); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!_r$5) { */ case 18: + res = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + $s = -1; return res; + /* } */ case 19: + if (tparams.Len() === 0) { + res = orig$2; + $s = -1; return res; + } + _arg = pos; + _arg$1 = orig$2; + _r$6 = makeSubstMap(tparams.list(), targs[0]); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg$2 = _r$6; + _arg$3 = ptrType$9.nil; + _arg$4 = ctxt; + _r$7 = check.subst(_arg, _arg$1, _arg$2, _arg$3, _arg$4); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + sig = $assertType(_r$7, ptrType$27); + if (sig === orig$2) { + copy[0] = $clone(sig, Signature); + sig = copy[0]; + } + sig.tparams = ptrType$48.nil; + res = sig; + $s = 15; continue; + /* } else { */ case 14: + orig$3 = _ref$2; + _r$8 = fmt.Sprintf("%v: cannot instantiate %v", new sliceType$6([new token.Pos(pos), orig$3])); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $panic(new $String(_r$8)); + /* } */ case 15: + _r$9 = updateContexts(res); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + res = _r$9; + $24r$1 = res; + $s = 25; case 25: return $24r$1; + /* */ } return; } var $f = {$blk: instance$1, $c: true, $r, $24r, $24r$1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _i, _i$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, check, copy, ctxt, ctxt$1, ctxt$2, ctxts, expanding, hashes, i, i$1, inst, orig, orig$1, orig$2, orig$3, pos, res, sig, targs, tparams, updateContexts, $s};return $f; + }; + $ptrType(Checker).prototype.validateTArgLen = function validateTArgLen(pos, ntparams, ntargs) { + var {_r$1, check, ntargs, ntparams, pos, $s, $r, $c} = $restore(this, {pos, ntparams, ntargs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + /* */ if (!((ntargs === ntparams))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((ntargs === ntparams))) { */ case 1: + /* */ if (!(check === ptrType$5.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(check === ptrType$5.nil)) { */ case 3: + $r = check.errorf(new atPos(((pos >> 0))), 137, "got %d arguments but %d type parameters", new sliceType$6([new $Int(ntargs), new $Int(ntparams)])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 4: + _r$1 = fmt.Sprintf("%v: got %d arguments but %d type parameters", new sliceType$6([new token.Pos(pos), new $Int(ntargs), new $Int(ntparams)])); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 2: + $s = -1; return true; + /* */ } return; } var $f = {$blk: validateTArgLen, $c: true, $r, _r$1, check, ntargs, ntparams, pos, $s};return $f; + }; + $ptrType(Checker).prototype.verify = function verify(pos, tparams, targs, ctxt) { + var {_i, _r$1, _r$2, _r$3, _r$4, _ref, bound, cause, check, ctxt, i, pos, smap, targs, tpar, tparams, $s, $r, $c} = $restore(this, {pos, tparams, targs, ctxt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = makeSubstMap(tparams, targs); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + smap = _r$1; + _ref = tparams; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + cause = [cause]; + i = _i; + tpar = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$2 = tpar.iface(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _r$3 = check.subst(pos, tpar.bound, smap, ptrType$9.nil, ctxt); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + bound = _r$3; + cause[0] = ""; + _r$4 = check.implements$(((i < 0 || i >= targs.$length) ? ($throwRuntimeError("index out of range"), undefined) : targs.$array[targs.$offset + i]), bound, true, (cause.$ptr || (cause.$ptr = new ptrType$34(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, cause)))); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!_r$4) { */ case 6: + $s = -1; return [i, errors.New(cause[0])]; + /* } */ case 7: + _i++; + $s = 2; continue; + case 3: + $s = -1; return [-1, $ifaceNil]; + /* */ } return; } var $f = {$blk: verify, $c: true, $r, _i, _r$1, _r$2, _r$3, _r$4, _ref, bound, cause, check, ctxt, i, pos, smap, targs, tpar, tparams, $s};return $f; + }; + $ptrType(Checker).prototype.implements$ = function implements$1(V, T, constraint, cause) { + var {$24r, $24r$1, $24r$2, T, Ti, Tu, V, Vi, Vu, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, _v$1, alt, cause, check, checkComparability, constraint, detail, detail$1, m, p, verb, wrong, $s, $r, $c} = $restore(this, {V, T, constraint, cause}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + Ti = [Ti]; + V = [V]; + alt = [alt]; + cause = [cause]; + check = [check]; + constraint = [constraint]; + verb = [verb]; + check[0] = this; + _r$1 = under(V[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + Vu = _r$1; + _r$2 = under(T); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + Tu = _r$2; + if ($interfaceIsEqual(Vu, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])) || $interfaceIsEqual(Tu, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + $s = -1; return true; + } + _tuple = $assertType(Vu, ptrType$26, true); + p = _tuple[0]; + if (!(!(p === ptrType$26.nil))) { _v = false; $s = 5; continue s; } + _r$3 = under(p.base); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = $interfaceIsEqual(_r$3, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])); case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + $s = -1; return true; + /* } */ case 4: + verb[0] = "implement"; + if (constraint[0]) { + verb[0] = "satisfy"; + } + _tuple$1 = $assertType(Tu, ptrType$13, true); + Ti[0] = _tuple$1[0]; + /* */ if (Ti[0] === ptrType$13.nil) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (Ti[0] === ptrType$13.nil) { */ case 7: + /* */ if (!(cause[0] === ptrType$34.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(cause[0] === ptrType$34.nil)) { */ case 9: + detail = ""; + _r$4 = isInterfacePtr(Tu); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_r$4) { */ case 11: + _r$5 = check[0].sprintf("type %s is pointer to interface, not interface", new sliceType$6([T])); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + detail = _r$5; + $s = 13; continue; + /* } else { */ case 12: + _r$6 = check[0].sprintf("%s is not an interface", new sliceType$6([T])); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + detail = _r$6; + /* } */ case 13: + _r$7 = check[0].sprintf("%s does not %s %s (%s)", new sliceType$6([V[0], new $String(verb[0]), T, new $String(detail)])); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + cause[0].$set(_r$7); + /* } */ case 10: + $s = -1; return false; + /* } */ case 8: + _r$8 = Ti[0].Empty(); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (_r$8) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (_r$8) { */ case 18: + $s = -1; return true; + /* } */ case 19: + _tuple$2 = $assertType(Vu, ptrType$13, true); + Vi = _tuple$2[0]; + if (!(!(Vi === ptrType$13.nil))) { _v$1 = false; $s = 23; continue s; } + _r$9 = Vi.typeSet(); /* */ $s = 24; case 24: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$10 = _r$9.IsEmpty(); /* */ $s = 25; case 25: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v$1 = _r$10; case 23: + /* */ if (_v$1) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (_v$1) { */ case 21: + $s = -1; return true; + /* } */ case 22: + _r$11 = Ti[0].typeSet(); /* */ $s = 28; case 28: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$12 = _r$11.IsEmpty(); /* */ $s = 29; case 29: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + /* */ if (_r$12) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (_r$12) { */ case 26: + /* */ if (!(cause[0] === ptrType$34.nil)) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (!(cause[0] === ptrType$34.nil)) { */ case 30: + _r$13 = check[0].sprintf("cannot %s %s (empty type set)", new sliceType$6([new $String(verb[0]), T])); /* */ $s = 32; case 32: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + cause[0].$set(_r$13); + /* } */ case 31: + $s = -1; return false; + /* } */ case 27: + _r$14 = check[0].missingMethod(V[0], Ti[0], true); /* */ $s = 33; case 33: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _tuple$3 = _r$14; + m = _tuple$3[0]; + wrong = _tuple$3[1]; + /* */ if (!(m === ptrType$2.nil)) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (!(m === ptrType$2.nil)) { */ case 34: + /* */ if (!(cause[0] === ptrType$34.nil)) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (!(cause[0] === ptrType$34.nil)) { */ case 36: + _arg = V[0]; + _arg$1 = new $String(verb[0]); + _arg$2 = T; + _r$15 = check[0].missingMethodCause(V[0], T, m, wrong); /* */ $s = 38; case 38: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _arg$3 = new $String(_r$15); + _r$16 = check[0].sprintf("%s does not %s %s %s", new sliceType$6([_arg, _arg$1, _arg$2, _arg$3])); /* */ $s = 39; case 39: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + cause[0].$set(_r$16); + /* } */ case 37: + $s = -1; return false; + /* } */ case 35: + checkComparability = (function(Ti, V, alt, cause, check, constraint, verb) { return function Checker·implements·func1() { + var {_r$17, _r$18, _r$19, _r$20, _r$21, _r$22, _v$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$17 = Ti[0].IsComparable(); /* */ $s = 3; case 3: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + /* */ if (!_r$17) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r$17) { */ case 1: + $s = -1; return true; + /* } */ case 2: + _r$18 = comparable(V[0], false, false, $throwNilPointerError); /* */ $s = 6; case 6: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + /* */ if (_r$18) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$18) { */ case 4: + $s = -1; return true; + /* } */ case 5: + /* */ if (!(check[0] === ptrType$5.nil) && check[0].conf.oldComparableSemantics) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(check[0] === ptrType$5.nil) && check[0].conf.oldComparableSemantics) { */ case 7: + /* */ if (!(cause[0] === ptrType$34.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(cause[0] === ptrType$34.nil)) { */ case 9: + _r$19 = check[0].sprintf("%s does not %s comparable", new sliceType$6([V[0], new $String(verb[0])])); /* */ $s = 11; case 11: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + cause[0].$set(_r$19); + /* } */ case 10: + $s = -1; return false; + /* } */ case 8: + if (!(constraint[0])) { _v$2 = false; $s = 14; continue s; } + _r$20 = comparable(V[0], true, false, $throwNilPointerError); /* */ $s = 15; case 15: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _v$2 = _r$20; case 14: + /* */ if (_v$2) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (_v$2) { */ case 12: + if (check[0] === ptrType$5.nil || check[0].allowVersion(check[0].pkg, 1, 20)) { + $s = -1; return true; + } + /* */ if (!(cause[0] === ptrType$34.nil)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!(cause[0] === ptrType$34.nil)) { */ case 16: + _r$21 = check[0].sprintf("%s to %s comparable requires go1.20 or later", new sliceType$6([V[0], new $String(verb[0])])); /* */ $s = 18; case 18: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + cause[0].$set(_r$21); + /* } */ case 17: + $s = -1; return false; + /* } */ case 13: + /* */ if (!(cause[0] === ptrType$34.nil)) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (!(cause[0] === ptrType$34.nil)) { */ case 19: + _r$22 = check[0].sprintf("%s does not %s comparable", new sliceType$6([V[0], new $String(verb[0])])); /* */ $s = 21; case 21: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + cause[0].$set(_r$22); + /* } */ case 20: + $s = -1; return false; + /* */ } return; } var $f = {$blk: Checker·implements·func1, $c: true, $r, _r$17, _r$18, _r$19, _r$20, _r$21, _r$22, _v$2, $s};return $f; + }; })(Ti, V, alt, cause, check, constraint, verb); + _r$17 = Ti[0].typeSet(); /* */ $s = 42; case 42: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _r$18 = _r$17.hasTerms(); /* */ $s = 43; case 43: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + /* */ if (!_r$18) { $s = 40; continue; } + /* */ $s = 41; continue; + /* if (!_r$18) { */ case 40: + _r$19 = checkComparability(); /* */ $s = 44; case 44: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + $24r = _r$19; + $s = 45; case 45: return $24r; + /* } */ case 41: + /* */ if (!(Vi === ptrType$13.nil)) { $s = 46; continue; } + /* */ $s = 47; continue; + /* if (!(Vi === ptrType$13.nil)) { */ case 46: + _r$20 = Vi.typeSet(); /* */ $s = 50; case 50: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _r$21 = Ti[0].typeSet(); /* */ $s = 51; case 51: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + _r$22 = _r$20.subsetOf(_r$21); /* */ $s = 52; case 52: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* */ if (!_r$22) { $s = 48; continue; } + /* */ $s = 49; continue; + /* if (!_r$22) { */ case 48: + /* */ if (!(cause[0] === ptrType$34.nil)) { $s = 53; continue; } + /* */ $s = 54; continue; + /* if (!(cause[0] === ptrType$34.nil)) { */ case 53: + _r$23 = check[0].sprintf("%s does not %s %s", new sliceType$6([V[0], new $String(verb[0]), T])); /* */ $s = 55; case 55: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + cause[0].$set(_r$23); + /* } */ case 54: + $s = -1; return false; + /* } */ case 49: + _r$24 = checkComparability(); /* */ $s = 56; case 56: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + $24r$1 = _r$24; + $s = 57; case 57: return $24r$1; + /* } */ case 47: + alt[0] = $ifaceNil; + _r$25 = Ti[0].typeSet(); /* */ $s = 60; case 60: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$26 = _r$25.is((function(Ti, V, alt, cause, check, constraint, verb) { return function Checker·implements·func2(t) { + var {_arg$4, _arg$5, _r$26, _r$27, _r$28, _r$29, _v$2, t, tt, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$26 = t.includes(V[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + /* */ if (!_r$26) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r$26) { */ case 1: + if (!($interfaceIsEqual(alt[0], $ifaceNil) && !t.tilde)) { _v$2 = false; $s = 6; continue s; } + _arg$4 = t.typ; + _r$27 = under(t.typ); /* */ $s = 7; case 7: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _arg$5 = _r$27; + _r$28 = Identical(_arg$4, _arg$5); /* */ $s = 8; case 8: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _v$2 = _r$28; case 6: + /* */ if (_v$2) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v$2) { */ case 4: + tt = $clone(t, term); + tt.tilde = true; + _r$29 = tt.includes(V[0]); /* */ $s = 11; case 11: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + /* */ if (_r$29) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_r$29) { */ case 9: + alt[0] = t.typ; + /* } */ case 10: + /* } */ case 5: + $s = -1; return true; + /* } */ case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: Checker·implements·func2, $c: true, $r, _arg$4, _arg$5, _r$26, _r$27, _r$28, _r$29, _v$2, t, tt, $s};return $f; + }; })(Ti, V, alt, cause, check, constraint, verb)); /* */ $s = 61; case 61: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + /* */ if (_r$26) { $s = 58; continue; } + /* */ $s = 59; continue; + /* if (_r$26) { */ case 58: + /* */ if (!(cause[0] === ptrType$34.nil)) { $s = 62; continue; } + /* */ $s = 63; continue; + /* if (!(cause[0] === ptrType$34.nil)) { */ case 62: + detail$1 = ""; + /* */ if (!($interfaceIsEqual(alt[0], $ifaceNil))) { $s = 65; continue; } + _r$27 = mentions(Ti[0], V[0]); /* */ $s = 69; case 69: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + /* */ if (_r$27) { $s = 66; continue; } + /* */ $s = 67; continue; + /* if (!($interfaceIsEqual(alt[0], $ifaceNil))) { */ case 65: + _r$28 = check[0].sprintf("possibly missing ~ for %s in %s", new sliceType$6([alt[0], T])); /* */ $s = 70; case 70: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + detail$1 = _r$28; + $s = 68; continue; + /* } else if (_r$27) { */ case 66: + _r$29 = check[0].sprintf("%s mentions %s, but %s is not in the type set of %s", new sliceType$6([T, V[0], V[0], T])); /* */ $s = 71; case 71: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + detail$1 = _r$29; + $s = 68; continue; + /* } else { */ case 67: + _arg$4 = V[0]; + _r$30 = Ti[0].typeSet(); /* */ $s = 72; case 72: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _arg$5 = _r$30.terms; + _r$31 = check[0].sprintf("%s missing in %s", new sliceType$6([_arg$4, _arg$5])); /* */ $s = 73; case 73: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + detail$1 = _r$31; + /* } */ case 68: + case 64: + _r$32 = check[0].sprintf("%s does not %s %s (%s)", new sliceType$6([V[0], new $String(verb[0]), T, new $String(detail$1)])); /* */ $s = 74; case 74: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + cause[0].$set(_r$32); + /* } */ case 63: + $s = -1; return false; + /* } */ case 59: + _r$33 = checkComparability(); /* */ $s = 75; case 75: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + $24r$2 = _r$33; + $s = 76; case 76: return $24r$2; + /* */ } return; } var $f = {$blk: implements$1, $c: true, $r, $24r, $24r$1, $24r$2, T, Ti, Tu, V, Vi, Vu, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, _v$1, alt, cause, check, checkComparability, constraint, detail, detail$1, m, p, verb, wrong, $s};return $f; + }; + mentions = function mentions$1(T, typ$3) { + var {T, T$1, T$2, T$3, _i, _i$1, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, e, t, typ$3, $s, $r, $c} = $restore(this, {T, typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = T; + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, ptrType$13, true)[1]) { */ case 1: + T$1 = _ref.$val; + _ref$1 = T$1.embeddeds; + _i = 0; + /* while (true) { */ case 5: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 6; continue; } + e = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _r$1 = mentions(e, typ$3); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_r$1) { */ case 7: + $s = -1; return true; + /* } */ case 8: + _i++; + $s = 5; continue; + case 6: + $s = 4; continue; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 2: + T$2 = _ref.$val; + _ref$2 = T$2.terms; + _i$1 = 0; + /* while (true) { */ case 10: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 11; continue; } + t = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + _r$2 = mentions(t.typ, typ$3); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (_r$2) { */ case 12: + $s = -1; return true; + /* } */ case 13: + _i$1++; + $s = 10; continue; + case 11: + $s = 4; continue; + /* } else { */ case 3: + T$3 = _ref; + _r$3 = Identical(T$3, typ$3); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (_r$3) { */ case 15: + $s = -1; return true; + /* } */ case 16: + /* } */ case 4: + $s = -1; return false; + /* */ } return; } var $f = {$blk: mentions$1, $c: true, $r, T, T$1, T$2, T$3, _i, _i$1, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, e, t, typ$3, $s};return $f; + }; + $ptrType(Checker).prototype.initOrder = function initOrder() { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _key, _key$1, _key$2, _key$3, _key$4, _keys, _keys$1, _keys$2, _keys$3, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _size, _size$1, _size$2, _size$3, _tuple, _tuple$1, check, cycle, d, dep, emitted, info, infoLhs, init$5, init$6, n, n$1, obj, obj$1, p, p$1, pq, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pq = [pq]; + check = this; + check.Info.InitOrder = $subslice(check.Info.InitOrder, 0, 0); + _r$1 = dependencyGraph(check.objMap); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pq[0] = ($convertSliceType(_r$1, nodeQueue)); + $r = heap.Init((pq.$ptr || (pq.$ptr = new ptrType$94(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, pq)))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (false) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (false) { */ case 3: + _r$2 = fmt.Printf("Computing initialization order for %s\n\n", new sliceType$6([check.pkg])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _r$3 = fmt.Println(new sliceType$6([new $String("Object dependency graph:")])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + _ref = check.objMap; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 7: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 8; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 7; continue; + } + obj = _entry.k; + d = _entry.v; + _tuple = $assertType(obj, dependency, true); + obj$1 = _tuple[0]; + /* */ if (!($interfaceIsEqual(obj$1, $ifaceNil))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!($interfaceIsEqual(obj$1, $ifaceNil))) { */ case 9: + /* */ if ((d.deps ? d.deps.size : 0) > 0) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if ((d.deps ? d.deps.size : 0) > 0) { */ case 11: + _r$4 = obj$1.Name(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg = new $String(_r$4); + _r$5 = fmt.Printf("\t%s depends on\n", new sliceType$6([_arg])); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + _ref$1 = d.deps; + _i$1 = 0; + _keys$1 = _ref$1 ? _ref$1.keys() : undefined; + _size$1 = _ref$1 ? _ref$1.size : 0; + /* while (true) { */ case 16: + /* if (!(_i$1 < _size$1)) { break; } */ if(!(_i$1 < _size$1)) { $s = 17; continue; } + _key$1 = _keys$1.next().value; + _entry$1 = _ref$1.get(_key$1); + if (_entry$1 === undefined) { + _i$1++; + /* continue; */ $s = 16; continue; + } + dep = _entry$1.k; + _r$6 = dep.Name(); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$6); + _r$7 = fmt.Printf("\t\t%s\n", new sliceType$6([_arg$1])); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + _i$1++; + $s = 16; continue; + case 17: + $s = 13; continue; + /* } else { */ case 12: + _r$8 = obj$1.Name(); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _arg$2 = new $String(_r$8); + _r$9 = fmt.Printf("\t%s has no dependencies\n", new sliceType$6([_arg$2])); /* */ $s = 21; case 21: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$9; + /* } */ case 13: + /* } */ case 10: + _i++; + $s = 7; continue; + case 8: + _r$10 = fmt.Println(sliceType$6.nil); /* */ $s = 22; case 22: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$10; + _r$11 = fmt.Println(new sliceType$6([new $String("Transposed object dependency graph (functions eliminated):")])); /* */ $s = 23; case 23: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$11; + _ref$2 = pq[0]; + _i$2 = 0; + /* while (true) { */ case 24: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 25; continue; } + n = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + _r$12 = n.obj.Name(); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _arg$3 = new $String(_r$12); + _arg$4 = new $Int(n.ndeps); + _r$13 = fmt.Printf("\t%s depends on %d nodes\n", new sliceType$6([_arg$3, _arg$4])); /* */ $s = 27; case 27: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$13; + _ref$3 = n.pred; + _i$3 = 0; + _keys$2 = _ref$3 ? _ref$3.keys() : undefined; + _size$2 = _ref$3 ? _ref$3.size : 0; + /* while (true) { */ case 28: + /* if (!(_i$3 < _size$2)) { break; } */ if(!(_i$3 < _size$2)) { $s = 29; continue; } + _key$2 = _keys$2.next().value; + _entry$2 = _ref$3.get(_key$2); + if (_entry$2 === undefined) { + _i$3++; + /* continue; */ $s = 28; continue; + } + p = _entry$2.k; + _r$14 = p.obj.Name(); /* */ $s = 30; case 30: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _arg$5 = new $String(_r$14); + _r$15 = fmt.Printf("\t\t%s is dependent\n", new sliceType$6([_arg$5])); /* */ $s = 31; case 31: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _r$15; + _i$3++; + $s = 28; continue; + case 29: + _i$2++; + $s = 24; continue; + case 25: + _r$16 = fmt.Println(sliceType$6.nil); /* */ $s = 32; case 32: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _r$16; + _r$17 = fmt.Println(new sliceType$6([new $String("Processing nodes:")])); /* */ $s = 33; case 33: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _r$17; + /* } */ case 4: + emitted = new $global.Map(); + /* while (true) { */ case 34: + /* if (!(pq[0].$length > 0)) { break; } */ if(!(pq[0].$length > 0)) { $s = 35; continue; } + _r$18 = heap.Pop((pq.$ptr || (pq.$ptr = new ptrType$94(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, pq)))); /* */ $s = 36; case 36: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + n$1 = $assertType(_r$18, ptrType$95); + /* */ if (false) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if (false) { */ case 37: + _r$19 = n$1.obj.Name(); /* */ $s = 39; case 39: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _arg$6 = new $String(_r$19); + _r$20 = n$1.obj.order(); /* */ $s = 40; case 40: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _arg$7 = new $Uint32(_r$20); + _arg$8 = new $Int(n$1.ndeps); + _r$21 = fmt.Printf("\t%s (src pos %d) depends on %d nodes now\n", new sliceType$6([_arg$6, _arg$7, _arg$8])); /* */ $s = 41; case 41: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + _r$21; + /* } */ case 38: + /* */ if (n$1.ndeps > 0) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (n$1.ndeps > 0) { */ case 42: + cycle = findPath(check.objMap, n$1.obj, n$1.obj, new $global.Map()); + /* */ if (!(cycle === sliceType$8.nil)) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (!(cycle === sliceType$8.nil)) { */ case 44: + $r = check.reportCycle(cycle); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 45: + /* } */ case 43: + _ref$4 = n$1.pred; + _i$4 = 0; + _keys$3 = _ref$4 ? _ref$4.keys() : undefined; + _size$3 = _ref$4 ? _ref$4.size : 0; + /* while (true) { */ case 47: + /* if (!(_i$4 < _size$3)) { break; } */ if(!(_i$4 < _size$3)) { $s = 48; continue; } + _key$3 = _keys$3.next().value; + _entry$3 = _ref$4.get(_key$3); + if (_entry$3 === undefined) { + _i$4++; + /* continue; */ $s = 47; continue; + } + p$1 = _entry$3.k; + p$1.ndeps = p$1.ndeps - (1) >> 0; + $r = heap.Fix((pq.$ptr || (pq.$ptr = new ptrType$94(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, pq))), p$1.index); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$4++; + $s = 47; continue; + case 48: + _tuple$1 = $assertType(n$1.obj, ptrType$16, true); + v = _tuple$1[0]; + info = (_entry$4 = $mapIndex(check.objMap,Object.keyFor(v)), _entry$4 !== undefined ? _entry$4.v : ptrType$58.nil); + if (v === ptrType$16.nil || !info.hasInitializer()) { + /* continue; */ $s = 34; continue; + } + if ((_entry$5 = $mapIndex(emitted,ptrType$58.keyFor(info)), _entry$5 !== undefined ? _entry$5.v : false)) { + /* continue; */ $s = 34; continue; + } + _key$4 = info; (emitted || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$58.keyFor(_key$4), { k: _key$4, v: true }); + infoLhs = info.lhs; + if (infoLhs === sliceType$10.nil) { + infoLhs = new sliceType$10([v]); + } + init$5 = new Initializer.ptr(infoLhs, info.init); + check.Info.InitOrder = $append(check.Info.InitOrder, init$5); + $s = 34; continue; + case 35: + /* */ if (false) { $s = 50; continue; } + /* */ $s = 51; continue; + /* if (false) { */ case 50: + _r$22 = fmt.Println(sliceType$6.nil); /* */ $s = 52; case 52: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _r$22; + _r$23 = fmt.Println(new sliceType$6([new $String("Initialization order:")])); /* */ $s = 53; case 53: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$23; + _ref$5 = check.Info.InitOrder; + _i$5 = 0; + /* while (true) { */ case 54: + /* if (!(_i$5 < _ref$5.$length)) { break; } */ if(!(_i$5 < _ref$5.$length)) { $s = 55; continue; } + init$6 = ((_i$5 < 0 || _i$5 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$5]); + _r$24 = fmt.Printf("\t%s\n", new sliceType$6([init$6])); /* */ $s = 56; case 56: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _r$24; + _i$5++; + $s = 54; continue; + case 55: + _r$25 = fmt.Println(sliceType$6.nil); /* */ $s = 57; case 57: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$25; + /* } */ case 51: + $s = -1; return; + /* */ } return; } var $f = {$blk: initOrder, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _key, _key$1, _key$2, _key$3, _key$4, _keys, _keys$1, _keys$2, _keys$3, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _size, _size$1, _size$2, _size$3, _tuple, _tuple$1, check, cycle, d, dep, emitted, info, infoLhs, init$5, init$6, n, n$1, obj, obj$1, p, p$1, pq, v, $s};return $f; + }; + findPath = function findPath$1(objMap, from, to, seen) { + var P, _entry, _entry$1, _entry$2, _i, _key, _key$1, _keys, _ref, _size, d, from, objMap, seen, to; + if ((_entry = $mapIndex(seen,Object.keyFor(from)), _entry !== undefined ? _entry.v : false)) { + return sliceType$8.nil; + } + _key = from; (seen || $throwRuntimeError("assignment to entry in nil map")).set(Object.keyFor(_key), { k: _key, v: true }); + _ref = (_entry$1 = $mapIndex(objMap,Object.keyFor(from)), _entry$1 !== undefined ? _entry$1.v : ptrType$58.nil).deps; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key$1 = _keys.next().value; + _entry$2 = _ref.get(_key$1); + if (_entry$2 === undefined) { + _i++; + continue; + } + d = _entry$2.k; + if ($interfaceIsEqual(d, to)) { + return new sliceType$8([d]); + } + P = findPath(objMap, d, to, seen); + if (!(P === sliceType$8.nil)) { + return $append(P, d); + } + _i++; + } + return sliceType$8.nil; + }; + $ptrType(Checker).prototype.reportCycle = function reportCycle(cycle) { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r$1, _r$2, _r$3, _r$4, check, cycle, i, obj, $s, $r, $c} = $restore(this, {cycle}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + obj = (0 >= cycle.$length ? ($throwRuntimeError("index out of range"), undefined) : cycle.$array[cycle.$offset + 0]); + /* */ if (cycle.$length === 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (cycle.$length === 1) { */ case 1: + _arg = obj; + _r$1 = obj.Name(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$1); + $r = check.errorf(_arg, 9, "initialization cycle: %s refers to itself", new sliceType$6([_arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 2: + _arg$2 = obj; + _r$2 = obj.Name(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$3 = new $String(_r$2); + $r = check.errorf(_arg$2, 9, "initialization cycle for %s", new sliceType$6([_arg$3])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = cycle.$length - 1 >> 0; + /* while (true) { */ case 7: + /* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 8; continue; } + _arg$4 = obj; + _r$3 = obj.Name(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$5 = new $String(_r$3); + $r = check.errorf(_arg$4, 9, "\t%s refers to", new sliceType$6([_arg$5])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + obj = ((i < 0 || i >= cycle.$length) ? ($throwRuntimeError("index out of range"), undefined) : cycle.$array[cycle.$offset + i]); + i = i - (1) >> 0; + $s = 7; continue; + case 8: + _arg$6 = obj; + _r$4 = obj.Name(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$7 = new $String(_r$4); + $r = check.errorf(_arg$6, 9, "\t%s", new sliceType$6([_arg$7])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: reportCycle, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r$1, _r$2, _r$3, _r$4, check, cycle, i, obj, $s};return $f; + }; + $ptrType(graphNode).prototype.cost = function cost() { + var n; + n = this; + return $imul((n.pred ? n.pred.size : 0), (n.succ ? n.succ.size : 0)); + }; + $ptrType(nodeSet).prototype.add = function add$2(p) { + var _key, p, s; + s = this; + if (s.$get() === false) { + s.$set(new $global.Map()); + } + _key = p; (s.$get() || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$95.keyFor(_key), { k: _key, v: true }); + }; + dependencyGraph = function dependencyGraph$1(objMap) { + var {G, M, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _entry$7, _entry$8, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _key, _key$1, _key$2, _key$3, _key$4, _key$5, _key$6, _key$7, _keys, _keys$1, _keys$2, _keys$3, _keys$4, _keys$5, _keys$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _size, _size$1, _size$2, _size$3, _size$4, _size$5, _size$6, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, d, d$1, d$2, funcG, i, n, n$1, n$2, n$3, obj, obj$1, obj$2, objMap, ok, p, s, s$1, $s, $r, $c} = $restore(this, {objMap}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + funcG = [funcG]; + M = new $global.Map(); + _ref = objMap; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + obj = _entry.k; + _tuple = $assertType(obj, dependency, true); + obj$1 = _tuple[0]; + if (!($interfaceIsEqual(obj$1, $ifaceNil))) { + _key$1 = obj$1; (M || $throwRuntimeError("assignment to entry in nil map")).set(dependency.keyFor(_key$1), { k: _key$1, v: new graphNode.ptr(obj$1, false, false, 0, 0) }); + } + _i++; + } + _ref$1 = M; + _i$1 = 0; + _keys$1 = _ref$1 ? _ref$1.keys() : undefined; + _size$1 = _ref$1 ? _ref$1.size : 0; + while (true) { + if (!(_i$1 < _size$1)) { break; } + _key$2 = _keys$1.next().value; + _entry$1 = _ref$1.get(_key$2); + if (_entry$1 === undefined) { + _i$1++; + continue; + } + obj$2 = _entry$1.k; + n = _entry$1.v; + _ref$2 = (_entry$2 = $mapIndex(objMap,Object.keyFor(obj$2)), _entry$2 !== undefined ? _entry$2.v : ptrType$58.nil).deps; + _i$2 = 0; + _keys$2 = _ref$2 ? _ref$2.keys() : undefined; + _size$2 = _ref$2 ? _ref$2.size : 0; + while (true) { + if (!(_i$2 < _size$2)) { break; } + _key$3 = _keys$2.next().value; + _entry$3 = _ref$2.get(_key$3); + if (_entry$3 === undefined) { + _i$2++; + continue; + } + d = _entry$3.k; + _tuple$1 = $assertType(d, dependency, true); + d$1 = _tuple$1[0]; + if (!($interfaceIsEqual(d$1, $ifaceNil))) { + d$2 = (_entry$4 = $mapIndex(M,dependency.keyFor(d$1)), _entry$4 !== undefined ? _entry$4.v : ptrType$95.nil); + (n.$ptr_succ || (n.$ptr_succ = new ptrType$96(function() { return this.$target.succ; }, function($v) { this.$target.succ = $v; }, n))).add(d$2); + (d$2.$ptr_pred || (d$2.$ptr_pred = new ptrType$96(function() { return this.$target.pred; }, function($v) { this.$target.pred = $v; }, d$2))).add(n); + } + _i$2++; + } + _i$1++; + } + _tmp = sliceType$28.nil; + _tmp$1 = sliceType$28.nil; + G = _tmp; + funcG[0] = _tmp$1; + _ref$3 = M; + _i$3 = 0; + _keys$3 = _ref$3 ? _ref$3.keys() : undefined; + _size$3 = _ref$3 ? _ref$3.size : 0; + while (true) { + if (!(_i$3 < _size$3)) { break; } + _key$4 = _keys$3.next().value; + _entry$5 = _ref$3.get(_key$4); + if (_entry$5 === undefined) { + _i$3++; + continue; + } + n$1 = _entry$5.v; + _tuple$2 = $assertType(n$1.obj, ptrType$2, true); + ok = _tuple$2[1]; + if (ok) { + funcG[0] = $append(funcG[0], n$1); + } else { + G = $append(G, n$1); + } + _i$3++; + } + $r = sort.Slice(funcG[0], (function(funcG) { return function dependencyGraph·func1(i, j) { + var i, j; + return ((i < 0 || i >= funcG[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : funcG[0].$array[funcG[0].$offset + i]).cost() < ((j < 0 || j >= funcG[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : funcG[0].$array[funcG[0].$offset + j]).cost(); + }; })(funcG)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$4 = funcG[0]; + _i$4 = 0; + while (true) { + if (!(_i$4 < _ref$4.$length)) { break; } + n$2 = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]); + _ref$5 = n$2.pred; + _i$5 = 0; + _keys$4 = _ref$5 ? _ref$5.keys() : undefined; + _size$4 = _ref$5 ? _ref$5.size : 0; + while (true) { + if (!(_i$5 < _size$4)) { break; } + _key$5 = _keys$4.next().value; + _entry$6 = _ref$5.get(_key$5); + if (_entry$6 === undefined) { + _i$5++; + continue; + } + p = _entry$6.k; + if (!(p === n$2)) { + _ref$6 = n$2.succ; + _i$6 = 0; + _keys$5 = _ref$6 ? _ref$6.keys() : undefined; + _size$5 = _ref$6 ? _ref$6.size : 0; + while (true) { + if (!(_i$6 < _size$5)) { break; } + _key$6 = _keys$5.next().value; + _entry$7 = _ref$6.get(_key$6); + if (_entry$7 === undefined) { + _i$6++; + continue; + } + s = _entry$7.k; + if (!(s === n$2)) { + (p.$ptr_succ || (p.$ptr_succ = new ptrType$96(function() { return this.$target.succ; }, function($v) { this.$target.succ = $v; }, p))).add(s); + (s.$ptr_pred || (s.$ptr_pred = new ptrType$96(function() { return this.$target.pred; }, function($v) { this.$target.pred = $v; }, s))).add(p); + } + _i$6++; + } + $mapDelete(p.succ, ptrType$95.keyFor(n$2)); + } + _i$5++; + } + _ref$7 = n$2.succ; + _i$7 = 0; + _keys$6 = _ref$7 ? _ref$7.keys() : undefined; + _size$6 = _ref$7 ? _ref$7.size : 0; + while (true) { + if (!(_i$7 < _size$6)) { break; } + _key$7 = _keys$6.next().value; + _entry$8 = _ref$7.get(_key$7); + if (_entry$8 === undefined) { + _i$7++; + continue; + } + s$1 = _entry$8.k; + $mapDelete(s$1.pred, ptrType$95.keyFor(n$2)); + _i$7++; + } + _i$4++; + } + _ref$8 = G; + _i$8 = 0; + while (true) { + if (!(_i$8 < _ref$8.$length)) { break; } + i = _i$8; + n$3 = ((_i$8 < 0 || _i$8 >= _ref$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$8.$array[_ref$8.$offset + _i$8]); + n$3.index = i; + n$3.ndeps = (n$3.succ ? n$3.succ.size : 0); + _i$8++; + } + $s = -1; return G; + /* */ } return; } var $f = {$blk: dependencyGraph$1, $c: true, $r, G, M, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _entry$7, _entry$8, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _key, _key$1, _key$2, _key$3, _key$4, _key$5, _key$6, _key$7, _keys, _keys$1, _keys$2, _keys$3, _keys$4, _keys$5, _keys$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _size, _size$1, _size$2, _size$3, _size$4, _size$5, _size$6, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, d, d$1, d$2, funcG, i, n, n$1, n$2, n$3, obj, obj$1, obj$2, objMap, ok, p, s, s$1, $s};return $f; + }; + nodeQueue.prototype.Len = function Len$8() { + var a; + a = this; + return a.$length; + }; + $ptrType(nodeQueue).prototype.Len = function(...$args) { return this.$get().Len(...$args); }; + nodeQueue.prototype.Swap = function Swap$2(i, j) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a, i, j, x, y; + a = this; + _tmp = ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]); + _tmp$1 = ((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]); + x = _tmp; + y = _tmp$1; + _tmp$2 = y; + _tmp$3 = x; + ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i] = _tmp$2); + ((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j] = _tmp$3); + _tmp$4 = j; + _tmp$5 = i; + x.index = _tmp$4; + y.index = _tmp$5; + }; + $ptrType(nodeQueue).prototype.Swap = function(...$args) { return this.$get().Swap(...$args); }; + nodeQueue.prototype.Less = function Less$2(i, j) { + var {$24r, _r$1, _r$2, _tmp, _tmp$1, _v, _v$1, a, i, j, x, y, $s, $r, $c} = $restore(this, {i, j}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = this; + _tmp = ((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]); + _tmp$1 = ((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]); + x = _tmp; + y = _tmp$1; + if (x.ndeps < y.ndeps) { _v = true; $s = 1; continue s; } + if (!(x.ndeps === y.ndeps)) { _v$1 = false; $s = 2; continue s; } + _r$1 = x.obj.order(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = y.obj.order(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v$1 = _r$1 < _r$2; case 2: + _v = _v$1; case 1: + $24r = _v; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: Less$2, $c: true, $r, $24r, _r$1, _r$2, _tmp, _tmp$1, _v, _v$1, a, i, j, x, y, $s};return $f; + }; + $ptrType(nodeQueue).prototype.Less = function(...$args) { return this.$get().Less(...$args); }; + $ptrType(nodeQueue).prototype.Push = function Push(x) { + var a, x; + a = this; + $panic(new $String("unreachable")); + }; + $ptrType(nodeQueue).prototype.Pop = function Pop() { + var a, n, x, x$1, x$2; + a = this; + n = a.$get().$length; + x$2 = (x = a.$get(), x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])); + x$2.index = -1; + a.$set($subslice((a.$get()), 0, (n - 1 >> 0))); + return x$2; + }; + $ptrType(Checker).prototype.infer = function infer(posn, tparams, targs, params, args) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, arg, arg$1, arg$2, args, args2, check, errorf, i, i$1, i$2, i$3, i$4, i$5, i$6, index$1, indices, j, j$1, m, n, named, ok, par, params, params2, posn, renameMap, result, smap, targ, targ$1, targ$2, targs, targs2, tname, tpar, tpar$1, tparam, tparam$1, tparams, tparams2, u, unnamed, x, $s, $deferred, $r, $c} = $restore(this, {posn, tparams, targs, params, args}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + result = [result]; + tparams = [tparams]; + u = [u]; + result[0] = sliceType$2.nil; + check[0] = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + $deferred.push([(function(check, result, tparams, u) { return function Checker·infer·func1() { + var {_i, _ref, targ, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = assert(result[0] === sliceType$2.nil || (result[0].$length === tparams[0].$length)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = result[0]; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + targ = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = assert(!($interfaceIsEqual(targ, $ifaceNil))); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 2; continue; + case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·infer·func1, $c: true, $r, _i, _ref, targ, $s};return $f; + }; })(check, result, tparams, u), []]); + /* } */ case 2: + /* */ if (false) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (false) { */ case 3: + $r = check[0].dump("-- inferA %s%s \xE2\x9E\x9E %s", new sliceType$6([tparams[0], params, targs])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([(function(check, result, tparams, u) { return function Checker·infer·func2() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = check[0].dump("=> inferA %s \xE2\x9E\x9E %s", new sliceType$6([tparams[0], result[0]])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·infer·func2, $c: true, $r, $s};return $f; + }; })(check, result, tparams, u), []]); + /* } */ case 4: + n = tparams[0].$length; + $r = assert(n > 0 && targs.$length <= n); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(params.Len() === args.$length); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (targs.$length === n) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (targs.$length === n) { */ case 8: + result[0] = targs; + $24r = result[0]; + $s = 10; case 10: return $24r; + /* } */ case 9: + /* */ if (true) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (true) { */ case 11: + tparams2 = $makeSlice(sliceType$9, tparams[0].$length); + _ref = tparams[0]; + _i = 0; + /* while (true) { */ case 13: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 14; continue; } + i = _i; + tparam = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + tname = NewTypeName(tparam.Obj().object.Pos(), tparam.Obj().object.Pkg(), tparam.Obj().object.Name(), $ifaceNil); + _r$1 = NewTypeParam(tname, $ifaceNil); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ((i < 0 || i >= tparams2.$length) ? ($throwRuntimeError("index out of range"), undefined) : tparams2.$array[tparams2.$offset + i] = _r$1); + ((i < 0 || i >= tparams2.$length) ? ($throwRuntimeError("index out of range"), undefined) : tparams2.$array[tparams2.$offset + i]).index = tparam.index; + _i++; + $s = 13; continue; + case 14: + _r$2 = makeRenameMap(tparams[0], tparams2); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + renameMap = _r$2; + _ref$1 = tparams[0]; + _i$1 = 0; + /* while (true) { */ case 17: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 18; continue; } + i$1 = _i$1; + tparam$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r$3 = posn.Pos(); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = check[0].subst(_r$3, tparam$1.bound, renameMap, ptrType$9.nil, check[0].context()); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + ((i$1 < 0 || i$1 >= tparams2.$length) ? ($throwRuntimeError("index out of range"), undefined) : tparams2.$array[tparams2.$offset + i$1]).bound = _r$4; + _i$1++; + $s = 17; continue; + case 18: + tparams[0] = tparams2; + _r$5 = posn.Pos(); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = check[0].subst(_r$5, params, renameMap, ptrType$9.nil, check[0].context()); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + params = $assertType(_r$6, ptrType$15); + /* } */ case 12: + m = args.$length; + if (m >= 2 && true) { + _tmp = sliceType$13.nil; + _tmp$1 = sliceType$13.nil; + named = _tmp; + unnamed = _tmp$1; + _ref$2 = args; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i$2 = _i$2; + arg = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + if (hasName(arg.typ)) { + named = $append(named, i$2); + } else { + unnamed = $append(unnamed, i$2); + } + _i$2++; + } + if (!((named.$length === 0)) && !((unnamed.$length === 0))) { + params2 = $makeSlice(sliceType$10, m); + args2 = $makeSlice(sliceType$29, m); + i$3 = 0; + _ref$3 = named; + _i$3 = 0; + while (true) { + if (!(_i$3 < _ref$3.$length)) { break; } + j = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]); + ((i$3 < 0 || i$3 >= params2.$length) ? ($throwRuntimeError("index out of range"), undefined) : params2.$array[params2.$offset + i$3] = params.At(j)); + ((i$3 < 0 || i$3 >= args2.$length) ? ($throwRuntimeError("index out of range"), undefined) : args2.$array[args2.$offset + i$3] = ((j < 0 || j >= args.$length) ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + j])); + i$3 = i$3 + (1) >> 0; + _i$3++; + } + _ref$4 = unnamed; + _i$4 = 0; + while (true) { + if (!(_i$4 < _ref$4.$length)) { break; } + j$1 = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]); + ((i$3 < 0 || i$3 >= params2.$length) ? ($throwRuntimeError("index out of range"), undefined) : params2.$array[params2.$offset + i$3] = params.At(j$1)); + ((i$3 < 0 || i$3 >= args2.$length) ? ($throwRuntimeError("index out of range"), undefined) : args2.$array[args2.$offset + i$3] = ((j$1 < 0 || j$1 >= args.$length) ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + j$1])); + i$3 = i$3 + (1) >> 0; + _i$4++; + } + params = NewTuple(params2); + args = args2; + } + } + if (targs.$length < n) { + targs2 = $makeSlice(sliceType$2, n); + $copySlice(targs2, targs); + targs = targs2; + } + /* */ if (params.Len() > 0) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (params.Len() > 0) { */ case 23: + _r$7 = makeSubstMap(tparams[0], targs); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + smap = _r$7; + _r$8 = check[0].subst(0, params, smap, ptrType$9.nil, check[0].context()); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + params = $assertType(_r$8, ptrType$15); + /* } */ case 24: + u[0] = newUnifier(false); + $r = u[0].x.init(tparams[0]); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$5 = targs; + _i$5 = 0; + /* while (true) { */ case 28: + /* if (!(_i$5 < _ref$5.$length)) { break; } */ if(!(_i$5 < _ref$5.$length)) { $s = 29; continue; } + i$4 = _i$5; + targ = ((_i$5 < 0 || _i$5 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$5]); + /* */ if (!($interfaceIsEqual(targ, $ifaceNil))) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (!($interfaceIsEqual(targ, $ifaceNil))) { */ case 30: + $r = u[0].x.set(i$4, targ); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 31: + _i$5++; + $s = 28; continue; + case 29: + errorf = (function(check, result, tparams, u) { return function Checker·infer·func3(kind, tpar, targ$1, arg$1) { + var {_i$6, _r$10, _r$11, _r$9, _ref$6, _tuple, allFailed, arg$1, index$1, inferred, kind, smap$1, targ$1, targ$2, targs$1, tpar, $s, $r, $c} = $restore(this, {kind, tpar, targ$1, arg$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = u[0].x.types(); + targs$1 = _tuple[0]; + index$1 = _tuple[1]; + /* */ if (index$1 === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (index$1 === 0) { */ case 1: + allFailed = true; + _ref$6 = targs$1; + _i$6 = 0; + while (true) { + if (!(_i$6 < _ref$6.$length)) { break; } + targ$2 = ((_i$6 < 0 || _i$6 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$6]); + if (!($interfaceIsEqual(targ$2, $ifaceNil))) { + allFailed = false; + break; + } + _i$6++; + } + /* */ if (allFailed) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (allFailed) { */ case 3: + $r = check[0].errorf(arg$1, 138, "%s %s of %s does not match %s (cannot infer %s)", new sliceType$6([new $String(kind), targ$1, arg$1.expr, tpar, new $String(typeParamsString(tparams[0]))])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 4: + /* } */ case 2: + _r$9 = makeSubstMap(tparams[0], targs$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + smap$1 = _r$9; + _r$10 = arg$1.Pos(); /* */ $s = 7; case 7: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = check[0].subst(_r$10, tpar, smap$1, ptrType$9.nil, check[0].context()); /* */ $s = 8; case 8: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + inferred = _r$11; + /* */ if (!($interfaceIsEqual(inferred, tpar))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!($interfaceIsEqual(inferred, tpar))) { */ case 9: + $r = check[0].errorf(arg$1, 138, "%s %s of %s does not match inferred type %s for %s", new sliceType$6([new $String(kind), targ$1, arg$1.expr, inferred, tpar])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 11; continue; + /* } else { */ case 10: + $r = check[0].errorf(arg$1, 138, "%s %s of %s does not match %s", new sliceType$6([new $String(kind), targ$1, arg$1.expr, tpar])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 11: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·infer·func3, $c: true, $r, _i$6, _r$10, _r$11, _r$9, _ref$6, _tuple, allFailed, arg$1, index$1, inferred, kind, smap$1, targ$1, targ$2, targs$1, tpar, $s};return $f; + }; })(check, result, tparams, u); + indices = sliceType$13.nil; + _ref$6 = args; + _i$6 = 0; + /* while (true) { */ case 33: + /* if (!(_i$6 < _ref$6.$length)) { break; } */ if(!(_i$6 < _ref$6.$length)) { $s = 34; continue; } + i$5 = _i$6; + arg$1 = ((_i$6 < 0 || _i$6 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$6]); + par = params.At(i$5); + _r$9 = isParameterized(tparams[0], par.object.typ); /* */ $s = 37; case 37: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (_r$9) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (_r$9) { */ case 35: + if (arg$1.mode === 0) { + _i$6++; + /* continue; */ $s = 33; continue; + } + targ$1 = arg$1.typ; + /* */ if (isTyped(targ$1)) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (isTyped(targ$1)) { */ case 38: + _r$10 = u[0].unify(par.object.typ, targ$1); /* */ $s = 43; case 43: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + /* */ if (!_r$10) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if (!_r$10) { */ case 41: + $r = errorf("type", par.object.typ, targ$1, arg$1); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + result[0] = sliceType$2.nil; + $24r$1 = result[0]; + $s = 45; case 45: return $24r$1; + /* } */ case 42: + $s = 40; continue; + /* } else { */ case 39: + _tuple = $assertType(par.object.typ, ptrType$14, true); + ok = _tuple[1]; + if (ok) { + indices = $append(indices, i$5); + } + /* } */ case 40: + /* } */ case 36: + _i$6++; + $s = 33; continue; + case 34: + index$1 = 0; + _tuple$1 = u[0].x.types(); + targs = _tuple$1[0]; + index$1 = _tuple$1[1]; + /* */ if (index$1 < 0) { $s = 46; continue; } + /* */ $s = 47; continue; + /* if (index$1 < 0) { */ case 46: + result[0] = targs; + $24r$2 = result[0]; + $s = 48; case 48: return $24r$2; + /* } */ case 47: + _r$11 = check[0].inferB(posn, tparams[0], targs); /* */ $s = 49; case 49: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$2 = _r$11; + targs = _tuple$2[0]; + index$1 = _tuple$2[1]; + /* */ if (targs === sliceType$2.nil || index$1 < 0) { $s = 50; continue; } + /* */ $s = 51; continue; + /* if (targs === sliceType$2.nil || index$1 < 0) { */ case 50: + result[0] = targs; + $24r$3 = result[0]; + $s = 52; case 52: return $24r$3; + /* } */ case 51: + _ref$7 = indices; + _i$7 = 0; + /* while (true) { */ case 53: + /* if (!(_i$7 < _ref$7.$length)) { break; } */ if(!(_i$7 < _ref$7.$length)) { $s = 54; continue; } + i$6 = ((_i$7 < 0 || _i$7 >= _ref$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$7.$array[_ref$7.$offset + _i$7]); + tpar = $assertType(params.At(i$6).object.typ, ptrType$14); + /* */ if ($interfaceIsEqual((x = tpar.index, ((x < 0 || x >= targs.$length) ? ($throwRuntimeError("index out of range"), undefined) : targs.$array[targs.$offset + x])), $ifaceNil)) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if ($interfaceIsEqual((x = tpar.index, ((x < 0 || x >= targs.$length) ? ($throwRuntimeError("index out of range"), undefined) : targs.$array[targs.$offset + x])), $ifaceNil)) { */ case 55: + arg$2 = ((i$6 < 0 || i$6 >= args.$length) ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + i$6]); + targ$2 = Default(arg$2.typ); + if (!(isTyped(targ$2))) { _v = false; $s = 59; continue s; } + _r$12 = u[0].unify(tpar, targ$2); /* */ $s = 60; case 60: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _v = !_r$12; case 59: + /* */ if (_v) { $s = 57; continue; } + /* */ $s = 58; continue; + /* if (_v) { */ case 57: + $r = errorf("default type", tpar, targ$2, arg$2); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + result[0] = sliceType$2.nil; + $24r$4 = result[0]; + $s = 62; case 62: return $24r$4; + /* } */ case 58: + /* } */ case 56: + _i$7++; + $s = 53; continue; + case 54: + _tuple$3 = u[0].x.types(); + targs = _tuple$3[0]; + index$1 = _tuple$3[1]; + /* */ if (index$1 < 0) { $s = 63; continue; } + /* */ $s = 64; continue; + /* if (index$1 < 0) { */ case 63: + result[0] = targs; + $24r$5 = result[0]; + $s = 65; case 65: return $24r$5; + /* } */ case 64: + _r$13 = check[0].inferB(posn, tparams[0], targs); /* */ $s = 66; case 66: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _tuple$4 = _r$13; + targs = _tuple$4[0]; + index$1 = _tuple$4[1]; + /* */ if (targs === sliceType$2.nil || index$1 < 0) { $s = 67; continue; } + /* */ $s = 68; continue; + /* if (targs === sliceType$2.nil || index$1 < 0) { */ case 67: + result[0] = targs; + $24r$6 = result[0]; + $s = 69; case 69: return $24r$6; + /* } */ case 68: + $r = assert(index$1 >= 0 && $interfaceIsEqual(((index$1 < 0 || index$1 >= targs.$length) ? ($throwRuntimeError("index out of range"), undefined) : targs.$array[targs.$offset + index$1]), $ifaceNil)); /* */ $s = 70; case 70: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tpar$1 = ((index$1 < 0 || index$1 >= tparams[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : tparams[0].$array[tparams[0].$offset + index$1]); + $r = check[0].errorf(posn, 138, "cannot infer %s (%v)", new sliceType$6([new $String(tpar$1.obj.object.name), new token.Pos(tpar$1.obj.object.pos)])); /* */ $s = 71; case 71: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + result[0] = sliceType$2.nil; + $24r$7 = result[0]; + $s = 72; case 72: return $24r$7; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return result[0]; } if($curGoroutine.asleep) { var $f = {$blk: infer, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, arg, arg$1, arg$2, args, args2, check, errorf, i, i$1, i$2, i$3, i$4, i$5, i$6, index$1, indices, j, j$1, m, n, named, ok, par, params, params2, posn, renameMap, result, smap, targ, targ$1, targ$2, targs, targs2, tname, tpar, tpar$1, tparam, tparam$1, tparams, tparams2, u, unnamed, x, $s, $deferred};return $f; } } + }; + typeParamsString = function typeParamsString$1(list$2) { + var _1, _i, _ref, buf, i, list$2, n, tname, x; + n = list$2.$length; + _1 = n; + if (_1 === (0)) { + return ""; + } else if (_1 === (1)) { + return (0 >= list$2.$length ? ($throwRuntimeError("index out of range"), undefined) : list$2.$array[list$2.$offset + 0]).obj.object.name; + } else if (_1 === (2)) { + return (0 >= list$2.$length ? ($throwRuntimeError("index out of range"), undefined) : list$2.$array[list$2.$offset + 0]).obj.object.name + " and " + (1 >= list$2.$length ? ($throwRuntimeError("index out of range"), undefined) : list$2.$array[list$2.$offset + 1]).obj.object.name; + } + buf = new strings.Builder.ptr(ptrType$53.nil, sliceType$14.nil); + _ref = $subslice(list$2, 0, (n - 1 >> 0)); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + tname = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + buf.WriteString(", "); + } + buf.WriteString(tname.obj.object.name); + _i++; + } + buf.WriteString(", and "); + buf.WriteString((x = n - 1 >> 0, ((x < 0 || x >= list$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : list$2.$array[list$2.$offset + x])).obj.object.name); + return buf.String(); + }; + isParameterized = function isParameterized$1(tparams, typ$3) { + var {$24r, _r$1, tparams, typ$3, w, $s, $r, $c} = $restore(this, {tparams, typ$3}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = new tpWalker.ptr(new $global.Map(), tparams); + _r$1 = w.isParameterized(typ$3); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: isParameterized$1, $c: true, $r, $24r, _r$1, tparams, typ$3, w, $s};return $f; + }; + $ptrType(tpWalker).prototype.isParameterized = function isParameterized$2(typ$3) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, _entry, _i, _i$1, _key, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tuple, _v, _v$1, fld, i, m, n, ok, res, t, t$1, t$10, t$11, t$12, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, tset, typ$3, w, x, $s, $deferred, $r, $c} = $restore(this, {typ$3}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + res = [res]; + typ$3 = [typ$3]; + w = [w]; + res[0] = false; + w[0] = this; + _tuple = (_entry = $mapIndex(w[0].seen,Type.keyFor(typ$3[0])), _entry !== undefined ? [_entry.v, true] : [false, false]); + x = _tuple[0]; + ok = _tuple[1]; + if (ok) { + res[0] = x; + $s = -1; return res[0]; + } + _key = typ$3[0]; (w[0].seen || $throwRuntimeError("assignment to entry in nil map")).set(Type.keyFor(_key), { k: _key, v: false }); + $deferred.push([(function(res, typ$3, w) { return function tpWalker·isParameterized·func1() { + var _key$1; + _key$1 = typ$3[0]; (w[0].seen || $throwRuntimeError("assignment to entry in nil map")).set(Type.keyFor(_key$1), { k: _key$1, v: res[0] }); + }; })(res, typ$3, w), []]); + _ref = typ$3[0]; + /* */ if (_ref === $ifaceNil || $assertType(_ref, ptrType$8, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$29, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 12; continue; } + /* */ $s = 13; continue; + /* switch (0) { default: if (_ref === $ifaceNil || $assertType(_ref, ptrType$8, true)[1]) { */ case 1: + t = _ref; + /* break; */ $s = 14; continue; + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 2: + t$1 = _ref.$val; + _r$1 = w[0].isParameterized(t$1.elem); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + res[0] = _r$1; + $24r = res[0]; + $s = 16; case 16: return $24r; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 3: + t$2 = _ref.$val; + _r$2 = w[0].isParameterized(t$2.elem); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + res[0] = _r$2; + $24r$1 = res[0]; + $s = 18; case 18: return $24r$1; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 4: + t$3 = _ref.$val; + _ref$1 = t$3.fields; + _i = 0; + /* while (true) { */ case 19: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 20; continue; } + fld = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _r$3 = w[0].isParameterized(fld.object.typ); /* */ $s = 23; case 23: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (_r$3) { */ case 21: + res[0] = true; + $s = -1; return res[0]; + /* } */ case 22: + _i++; + $s = 19; continue; + case 20: + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 5: + t$4 = _ref.$val; + _r$4 = w[0].isParameterized(t$4.base); /* */ $s = 24; case 24: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + res[0] = _r$4; + $24r$2 = res[0]; + $s = 25; case 25: return $24r$2; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 6: + t$5 = _ref.$val; + n = t$5.Len(); + i = 0; + /* while (true) { */ case 26: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 27; continue; } + _r$5 = w[0].isParameterized(t$5.At(i).object.typ); /* */ $s = 30; case 30: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (_r$5) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (_r$5) { */ case 28: + res[0] = true; + $s = -1; return res[0]; + /* } */ case 29: + i = i + (1) >> 0; + $s = 26; continue; + case 27: + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 7: + t$6 = _ref.$val; + _r$6 = w[0].isParameterized(t$6.params); /* */ $s = 32; case 32: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + if (_r$6) { _v = true; $s = 31; continue s; } + _r$7 = w[0].isParameterized(t$6.results); /* */ $s = 33; case 33: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _v = _r$7; case 31: + res[0] = _v; + $24r$3 = res[0]; + $s = 34; case 34: return $24r$3; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 8: + t$7 = _ref.$val; + _r$8 = t$7.typeSet(); /* */ $s = 35; case 35: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + tset = _r$8; + _ref$2 = tset.methods; + _i$1 = 0; + /* while (true) { */ case 36: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 37; continue; } + m = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + _r$9 = w[0].isParameterized(m.object.typ); /* */ $s = 40; case 40: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (_r$9) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (_r$9) { */ case 38: + res[0] = true; + $s = -1; return res[0]; + /* } */ case 39: + _i$1++; + $s = 36; continue; + case 37: + _r$10 = tset.is((function(res, typ$3, w) { return function tpWalker·isParameterized·func2(t$13) { + var {$24r$4, _r$10, _v$1, t$13, $s, $r, $c} = $restore(this, {t$13}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(!(t$13 === ptrType$4.nil))) { _v$1 = false; $s = 1; continue s; } + _r$10 = w[0].isParameterized(t$13.typ); /* */ $s = 2; case 2: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v$1 = _r$10; case 1: + $24r$4 = _v$1; + $s = 3; case 3: return $24r$4; + /* */ } return; } var $f = {$blk: tpWalker·isParameterized·func2, $c: true, $r, $24r$4, _r$10, _v$1, t$13, $s};return $f; + }; })(res, typ$3, w)); /* */ $s = 41; case 41: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + res[0] = _r$10; + $24r$4 = res[0]; + $s = 42; case 42: return $24r$4; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 9: + t$8 = _ref.$val; + _r$11 = w[0].isParameterized(t$8.key); /* */ $s = 44; case 44: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + if (_r$11) { _v$1 = true; $s = 43; continue s; } + _r$12 = w[0].isParameterized(t$8.elem); /* */ $s = 45; case 45: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _v$1 = _r$12; case 43: + res[0] = _v$1; + $24r$5 = res[0]; + $s = 46; case 46: return $24r$5; + /* } else if ($assertType(_ref, ptrType$29, true)[1]) { */ case 10: + t$9 = _ref.$val; + _r$13 = w[0].isParameterized(t$9.elem); /* */ $s = 47; case 47: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + res[0] = _r$13; + $24r$6 = res[0]; + $s = 48; case 48: return $24r$6; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 11: + t$10 = _ref.$val; + _r$14 = w[0].isParameterizedTypeList(t$10.TypeArgs().list()); /* */ $s = 49; case 49: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + res[0] = _r$14; + $24r$7 = res[0]; + $s = 50; case 50: return $24r$7; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 12: + t$11 = _ref.$val; + res[0] = tparamIndex(w[0].tparams, t$11) >= 0; + $s = -1; return res[0]; + /* } else { */ case 13: + t$12 = _ref; + unreachable(); + /* } } */ case 14: + res[0] = false; + $s = -1; return res[0]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return res[0]; } if($curGoroutine.asleep) { var $f = {$blk: isParameterized$2, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, _entry, _i, _i$1, _key, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tuple, _v, _v$1, fld, i, m, n, ok, res, t, t$1, t$10, t$11, t$12, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, tset, typ$3, w, x, $s, $deferred};return $f; } } + }; + $ptrType(tpWalker).prototype.isParameterizedTypeList = function isParameterizedTypeList(list$2) { + var {_i, _r$1, _ref, list$2, t, w, $s, $r, $c} = $restore(this, {list$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + _ref = list$2; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = w.isParameterized(t); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$1) { */ case 3: + $s = -1; return true; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: isParameterizedTypeList, $c: true, $r, _i, _r$1, _ref, list$2, t, w, $s};return $f; + }; + $ptrType(Checker).prototype.inferB = function inferB(posn, tparams, targs) { + var {$24r, $24r$1, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _tmp, _tmp$1, _tuple, _tuple$1, _v, check, core, dirty, i, i$1, i$2, i$3, i$4, i$5, index$1, index$2, n, n$1, nn, posn, single, smap, t, t0, t1, targ, targ$1, targs, tilde, tpar, tparams, tx, typ$3, typ$4, typ$5, types$1, u, w, $s, $deferred, $r, $c} = $restore(this, {posn, tparams, targs}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + tparams = [tparams]; + types$1 = [types$1]; + types$1[0] = sliceType$2.nil; + index$1 = 0; + check[0] = this; + $r = assert(tparams[0].$length >= targs.$length && targs.$length > 0); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (false) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (false) { */ case 2: + $r = check[0].dump("-- inferB %s \xE2\x9E\x9E %s", new sliceType$6([tparams[0], targs])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([(function(check, tparams, types$1) { return function Checker·inferB·func1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = check[0].dump("=> inferB %s \xE2\x9E\x9E %s", new sliceType$6([tparams[0], types$1[0]])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·inferB·func1, $c: true, $r, $s};return $f; + }; })(check, tparams, types$1), []]); + /* } */ case 3: + u = newUnifier(false); + $r = u.x.init(tparams[0]); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tparamsList.copy(u.y, u.x); + _ref = targs; + _i = 0; + /* while (true) { */ case 6: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 7; continue; } + i = _i; + targ = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (!($interfaceIsEqual(targ, $ifaceNil))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!($interfaceIsEqual(targ, $ifaceNil))) { */ case 8: + $r = u.x.set(i, targ); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + _i++; + $s = 6; continue; + case 7: + n = u.x.unknowns(); + /* while (true) { */ case 11: + /* if (!(n > 0)) { break; } */ if(!(n > 0)) { $s = 12; continue; } + nn = n; + _ref$1 = tparams[0]; + _i$1 = 0; + /* while (true) { */ case 13: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 14; continue; } + i$1 = _i$1; + tpar = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r$1 = coreTerm(tpar); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + core = _tuple[0]; + single = _tuple[1]; + /* */ if (!(core === ptrType$4.nil)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!(core === ptrType$4.nil)) { */ case 16: + tx = u.x.at(i$1); + /* */ if (!($interfaceIsEqual(tx, $ifaceNil))) { $s = 19; continue; } + /* */ if (single && !core.tilde) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (!($interfaceIsEqual(tx, $ifaceNil))) { */ case 19: + /* */ if (core.tilde && !isTypeParam(tx)) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (core.tilde && !isTypeParam(tx)) { */ case 23: + _r$2 = under(tx); /* */ $s = 25; case 25: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + tx = _r$2; + /* } */ case 24: + _r$3 = u.unify(tx, core.typ); /* */ $s = 28; case 28: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!_r$3) { */ case 26: + tilde = ""; + if (core.tilde) { + tilde = "~"; + } + $r = check[0].errorf(posn, 139, "%s does not match %s%s", new sliceType$6([tx, new $String(tilde), core.typ])); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp = sliceType$2.nil; + _tmp$1 = 0; + types$1[0] = _tmp; + index$1 = _tmp$1; + $24r = [types$1[0], index$1]; + $s = 30; case 30: return $24r; + /* } */ case 27: + $s = 22; continue; + /* } else if (single && !core.tilde) { */ case 20: + $r = u.x.set(i$1, core.typ); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else { */ case 21: + _i$1++; + /* continue; */ $s = 13; continue; + /* } */ case 22: + case 18: + nn = u.x.unknowns(); + if (nn === 0) { + /* break; */ $s = 14; continue; + } + /* } */ case 17: + _i$1++; + $s = 13; continue; + case 14: + $r = assert(nn <= n); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (nn === n) { + /* break; */ $s = 12; continue; + } + n = nn; + $s = 11; continue; + case 12: + _tuple$1 = u.x.types(); + types$1[0] = _tuple$1[0]; + /* */ if (false) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (false) { */ case 33: + _ref$2 = targs; + _i$2 = 0; + /* while (true) { */ case 35: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 36; continue; } + i$2 = _i$2; + targ$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + $r = assert($interfaceIsEqual(targ$1, $ifaceNil) || $interfaceIsEqual(((i$2 < 0 || i$2 >= types$1[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : types$1[0].$array[types$1[0].$offset + i$2]), targ$1)); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + $s = 35; continue; + case 36: + /* } */ case 34: + w = new cycleFinder.ptr(tparams[0], types$1[0], new $global.Map()); + _ref$3 = tparams[0]; + _i$3 = 0; + /* while (true) { */ case 38: + /* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 39; continue; } + t = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]); + $r = w.typ(t); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$3++; + $s = 38; continue; + case 39: + dirty = sliceType$13.nil; + _ref$4 = types$1[0]; + _i$4 = 0; + while (true) { + if (!(_i$4 < _ref$4.$length)) { break; } + i$3 = _i$4; + typ$3 = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]); + if (!($interfaceIsEqual(typ$3, $ifaceNil)) && (i$3 >= targs.$length || $interfaceIsEqual(((i$3 < 0 || i$3 >= targs.$length) ? ($throwRuntimeError("index out of range"), undefined) : targs.$array[targs.$offset + i$3]), $ifaceNil))) { + dirty = $append(dirty, i$3); + } + _i$4++; + } + /* while (true) { */ case 41: + /* if (!(dirty.$length > 0)) { break; } */ if(!(dirty.$length > 0)) { $s = 42; continue; } + _r$4 = makeSubstMap(tparams[0], types$1[0]); /* */ $s = 43; case 43: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + smap = _r$4; + n$1 = 0; + _ref$5 = dirty; + _i$5 = 0; + /* while (true) { */ case 44: + /* if (!(_i$5 < _ref$5.$length)) { break; } */ if(!(_i$5 < _ref$5.$length)) { $s = 45; continue; } + index$2 = ((_i$5 < 0 || _i$5 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$5]); + t0 = ((index$2 < 0 || index$2 >= types$1[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : types$1[0].$array[types$1[0].$offset + index$2]); + _r$5 = check[0].subst(0, t0, smap, ptrType$9.nil, check[0].context()); /* */ $s = 46; case 46: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + t1 = _r$5; + if (!($interfaceIsEqual(t1, t0))) { + ((index$2 < 0 || index$2 >= types$1[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : types$1[0].$array[types$1[0].$offset + index$2] = t1); + ((n$1 < 0 || n$1 >= dirty.$length) ? ($throwRuntimeError("index out of range"), undefined) : dirty.$array[dirty.$offset + n$1] = index$2); + n$1 = n$1 + (1) >> 0; + } + _i$5++; + $s = 44; continue; + case 45: + dirty = $subslice(dirty, 0, n$1); + $s = 41; continue; + case 42: + _ref$6 = types$1[0]; + _i$6 = 0; + /* while (true) { */ case 47: + /* if (!(_i$6 < _ref$6.$length)) { break; } */ if(!(_i$6 < _ref$6.$length)) { $s = 48; continue; } + i$4 = _i$6; + typ$4 = ((_i$6 < 0 || _i$6 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$6]); + if (!(!($interfaceIsEqual(typ$4, $ifaceNil)))) { _v = false; $s = 51; continue s; } + _r$6 = isParameterized(tparams[0], typ$4); /* */ $s = 52; case 52: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v = _r$6; case 51: + /* */ if (_v) { $s = 49; continue; } + /* */ $s = 50; continue; + /* if (_v) { */ case 49: + ((i$4 < 0 || i$4 >= types$1[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : types$1[0].$array[types$1[0].$offset + i$4] = $ifaceNil); + /* } */ case 50: + _i$6++; + $s = 47; continue; + case 48: + index$1 = -1; + _ref$7 = types$1[0]; + _i$7 = 0; + while (true) { + if (!(_i$7 < _ref$7.$length)) { break; } + i$5 = _i$7; + typ$5 = ((_i$7 < 0 || _i$7 >= _ref$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$7.$array[_ref$7.$offset + _i$7]); + if ($interfaceIsEqual(typ$5, $ifaceNil)) { + index$1 = i$5; + break; + } + _i$7++; + } + $24r$1 = [types$1[0], index$1]; + $s = 53; case 53: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [types$1[0], index$1]; } if($curGoroutine.asleep) { var $f = {$blk: inferB, $c: true, $r, $24r, $24r$1, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _tmp, _tmp$1, _tuple, _tuple$1, _v, check, core, dirty, i, i$1, i$2, i$3, i$4, i$5, index$1, index$2, n, n$1, nn, posn, single, smap, t, t0, t1, targ, targ$1, targs, tilde, tpar, tparams, tx, typ$3, typ$4, typ$5, types$1, u, w, $s, $deferred};return $f; } } + }; + coreTerm = function coreTerm$1(tpar) { + var {_r$1, _r$2, _r$3, _r$4, _v, n, single, tilde, tpar, typ$3, $s, $r, $c} = $restore(this, {tpar}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = [n]; + single = [single]; + tilde = [tilde]; + n[0] = 0; + single[0] = ptrType$4.nil; + tilde[0] = false; + _r$1 = tpar.is((function(n, single, tilde) { return function coreTerm·func1(t) { + var {t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (t === ptrType$4.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (t === ptrType$4.nil) { */ case 1: + $r = assert(n[0] === 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 2: + n[0] = n[0] + (1) >> 0; + single[0] = t; + if (t.tilde) { + tilde[0] = true; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: coreTerm·func1, $c: true, $r, t, $s};return $f; + }; })(n, single, tilde)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* */ if (n[0] === 1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (n[0] === 1) { */ case 2: + /* */ if (false) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (false) { */ case 4: + if (!(false)) { _v = false; $s = 6; continue s; } + _r$2 = under(single[0].typ); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = coreType(tpar); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = $interfaceIsEqual(_r$2, _r$3); case 6: + $r = assert(_v); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + $s = -1; return [single[0], true]; + /* } */ case 3: + _r$4 = coreType(tpar); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + typ$3 = _r$4; + if (!($interfaceIsEqual(typ$3, $ifaceNil))) { + $s = -1; return [new term.ptr(tilde[0], typ$3), false]; + } + $s = -1; return [ptrType$4.nil, false]; + /* */ } return; } var $f = {$blk: coreTerm$1, $c: true, $r, _r$1, _r$2, _r$3, _r$4, _v, n, single, tilde, tpar, typ$3, $s};return $f; + }; + $ptrType(cycleFinder).prototype.typ = function typ$3(typ$4) { + var {_arg, _arg$1, _entry, _i, _i$1, _i$2, _i$3, _key, _r$1, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tuple, i, i$1, m, t, t$1, t$10, t$11, t$12, t$13, t$14, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, tpar, tpar$1, typ$4, w, x, x$1, x$2, $s, $deferred, $r, $c} = $restore(this, {typ$4}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + w = this; + if ((_entry = $mapIndex(w.seen,Type.keyFor(typ$4)), _entry !== undefined ? _entry.v : false)) { + _tuple = $assertType(typ$4, ptrType$14, true); + tpar = _tuple[0]; + if (!(tpar === ptrType$14.nil)) { + i = tparamIndex(w.tparams, tpar); + if (i >= 0) { + (x = w.types, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = $ifaceNil)); + } + } + $s = -1; return; + } + _key = typ$4; (w.seen || $throwRuntimeError("assignment to entry in nil map")).set(Type.keyFor(_key), { k: _key, v: true }); + $deferred.push([function(_arg, _arg$1) { $mapDelete(_arg, Type.keyFor(_arg$1)); }, [w.seen, typ$4]]); + _ref = typ$4; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$29, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 1: + t = _ref.$val; + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 2: + t$1 = _ref.$val; + $r = w.typ(t$1.elem); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 3: + t$2 = _ref.$val; + $r = w.typ(t$2.elem); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 4: + t$3 = _ref.$val; + $r = w.varList(t$3.fields); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 5: + t$4 = _ref.$val; + $r = w.typ(t$4.base); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 6: + t$5 = _ref.$val; + /* */ if (!(t$5.params === ptrType$15.nil)) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (!(t$5.params === ptrType$15.nil)) { */ case 19: + $r = w.varList(t$5.params.vars); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 20: + /* */ if (!(t$5.results === ptrType$15.nil)) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!(t$5.results === ptrType$15.nil)) { */ case 22: + $r = w.varList(t$5.results.vars); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 23: + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 7: + t$6 = _ref.$val; + _ref$1 = t$6.terms; + _i = 0; + /* while (true) { */ case 25: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 26; continue; } + t$13 = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + $r = w.typ(t$13.typ); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 25; continue; + case 26: + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 8: + t$7 = _ref.$val; + _ref$2 = t$7.methods; + _i$1 = 0; + /* while (true) { */ case 28: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 29; continue; } + m = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + $r = w.typ(m.object.typ); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 28; continue; + case 29: + _ref$3 = t$7.embeddeds; + _i$2 = 0; + /* while (true) { */ case 31: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 32; continue; } + t$14 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + $r = w.typ(t$14); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + $s = 31; continue; + case 32: + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 9: + t$8 = _ref.$val; + $r = w.typ(t$8.key); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = w.typ(t$8.elem); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$29, true)[1]) { */ case 10: + t$9 = _ref.$val; + $r = w.typ(t$9.elem); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 11: + t$10 = _ref.$val; + _ref$4 = t$10.TypeArgs().list(); + _i$3 = 0; + /* while (true) { */ case 37: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 38; continue; } + tpar$1 = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); + $r = w.typ(tpar$1); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$3++; + $s = 37; continue; + case 38: + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 12: + t$11 = _ref.$val; + i$1 = tparamIndex(w.tparams, t$11); + /* */ if (i$1 >= 0 && !($interfaceIsEqual((x$1 = w.types, ((i$1 < 0 || i$1 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$1])), $ifaceNil))) { $s = 40; continue; } + /* */ $s = 41; continue; + /* if (i$1 >= 0 && !($interfaceIsEqual((x$1 = w.types, ((i$1 < 0 || i$1 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$1])), $ifaceNil))) { */ case 40: + $r = w.typ((x$2 = w.types, ((i$1 < 0 || i$1 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i$1]))); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 41: + $s = 14; continue; + /* } else { */ case 13: + t$12 = _ref; + _r$1 = fmt.Sprintf("unexpected %T", new sliceType$6([typ$4])); /* */ $s = 43; case 43: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(new $String(_r$1)); + /* } */ case 14: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: typ$3, $c: true, $r, _arg, _arg$1, _entry, _i, _i$1, _i$2, _i$3, _key, _r$1, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tuple, i, i$1, m, t, t$1, t$10, t$11, t$12, t$13, t$14, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, tpar, tpar$1, typ$4, w, x, x$1, x$2, $s, $deferred};return $f; } } + }; + $ptrType(cycleFinder).prototype.varList = function varList$1(list$2) { + var {_i, _ref, list$2, v, w, $s, $r, $c} = $restore(this, {list$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + _ref = list$2; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = w.typ(v.object.typ); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: varList$1, $c: true, $r, _i, _ref, list$2, v, w, $s};return $f; + }; + $ptrType(Checker).prototype.indexExpr = function indexExpr(x, e) { + var {_1, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tuple, _tuple$1, check, e, elem, index$1, index$2, index$3, isFuncInst, k, key, key$1, length, mode, sig, typ$10, typ$4, typ$5, typ$6, typ$7, typ$8, typ$9, valid, x, $s, $r, $c} = $restore(this, {x, e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + elem = [elem]; + k = [k]; + key = [key]; + key$1 = [key$1]; + length = [length]; + mode = [mode]; + x = [x]; + isFuncInst = false; + check = this; + $r = check.exprOrType(x[0], e.IndexListExpr.X, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _1 = x[0].mode; + /* */ if (_1 === (0)) { $s = 3; continue; } + /* */ if (_1 === (3)) { $s = 4; continue; } + /* */ if (_1 === (7)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (0)) { */ case 3: + $r = check.use(e.IndexListExpr.Indices); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + isFuncInst = false; + $s = -1; return isFuncInst; + /* } else if (_1 === (3)) { */ case 4: + x[0].mode = 0; + _r$1 = check.varType(e.Orig); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + x[0].typ = _r$1; + if (!($interfaceIsEqual(x[0].typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { + x[0].mode = 3; + } + isFuncInst = false; + $s = -1; return isFuncInst; + /* } else if (_1 === (7)) { */ case 5: + _r$2 = under(x[0].typ); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = $assertType(_r$2, ptrType$27, true); + sig = _tuple[0]; + if (!(sig === ptrType$27.nil) && sig.TypeParams().Len() > 0) { + isFuncInst = true; + $s = -1; return isFuncInst; + } + /* } */ case 6: + case 2: + $r = check.nonGeneric(x[0]); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + isFuncInst = false; + $s = -1; return isFuncInst; + } + valid = false; + length[0] = new $Int64(-1, 4294967295); + _r$3 = under(x[0].typ); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _ref = _r$3; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 17; continue; } + /* */ $s = 18; continue; + /* switch (0) { default: if ($assertType(_ref, ptrType$8, true)[1]) { */ case 12: + typ$4 = _ref.$val; + _r$4 = isString(typ$4); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (_r$4) { */ case 19: + valid = true; + /* */ if (x[0].mode === 4) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (x[0].mode === 4) { */ case 22: + _r$5 = constant.StringVal(x[0].val); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + length[0] = (new $Int64(0, _r$5.length)); + /* } */ case 23: + x[0].mode = 7; + x[0].typ = universeByte; + /* } */ case 20: + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 13: + typ$5 = _ref.$val; + valid = true; + length[0] = typ$5.len; + if (!((x[0].mode === 5))) { + x[0].mode = 7; + } + x[0].typ = typ$5.elem; + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 14: + typ$6 = _ref.$val; + _r$6 = under(typ$6.base); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$6, ptrType$10, true); + typ$10 = _tuple$1[0]; + if (!(typ$10 === ptrType$10.nil)) { + valid = true; + length[0] = typ$10.len; + x[0].mode = 5; + x[0].typ = typ$10.elem; + } + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 15: + typ$7 = _ref.$val; + valid = true; + x[0].mode = 5; + x[0].typ = typ$7.elem; + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 16: + typ$8 = _ref.$val; + _r$7 = check.singleIndex(e); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + index$1 = _r$7; + if ($interfaceIsEqual(index$1, $ifaceNil)) { + x[0].mode = 0; + isFuncInst = false; + $s = -1; return isFuncInst; + } + key[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.expr(key[0], index$1); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.assignment(key[0], typ$8.key, "map index"); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x[0].mode = 6; + x[0].typ = typ$8.elem; + x[0].expr = e.Orig; + isFuncInst = false; + $s = -1; return isFuncInst; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 17: + typ$9 = _ref.$val; + if (!isTypeParam(x[0].typ)) { + /* break; */ $s = 18; continue; + } + _tmp = $ifaceNil; + _tmp$1 = $ifaceNil; + key$1[0] = _tmp; + elem[0] = _tmp$1; + mode[0] = 5; + _r$8 = typ$9.typeSet(); /* */ $s = 31; case 31: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$9 = _r$8.underIs((function(elem, k, key, key$1, length, mode, x) { return function Checker·indexExpr·func1(u) { + var {_r$10, _r$11, _r$12, _r$9, _ref$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple$2, e$1, k$1, l, t, t$1, t$2, t$3, t$4, t$5, u, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + l = new $Int64(-1, 4294967295); + _tmp$2 = $ifaceNil; + _tmp$3 = $ifaceNil; + k$1 = _tmp$2; + e$1 = _tmp$3; + _ref$1 = u; + /* */ if ($assertType(_ref$1, ptrType$8, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref$1, ptrType$10, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref$1, ptrType$26, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref$1, ptrType$25, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref$1, ptrType$28, true)[1]) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($assertType(_ref$1, ptrType$8, true)[1]) { */ case 1: + t = _ref$1.$val; + _r$9 = isString(t); /* */ $s = 9; case 9: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (_r$9) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_r$9) { */ case 7: + e$1 = universeByte; + mode[0] = 7; + /* } */ case 8: + $s = 6; continue; + /* } else if ($assertType(_ref$1, ptrType$10, true)[1]) { */ case 2: + t$1 = _ref$1.$val; + l = t$1.len; + e$1 = t$1.elem; + if (!((x[0].mode === 5))) { + mode[0] = 7; + } + $s = 6; continue; + /* } else if ($assertType(_ref$1, ptrType$26, true)[1]) { */ case 3: + t$2 = _ref$1.$val; + _r$10 = under(t$2.base); /* */ $s = 10; case 10: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$2 = $assertType(_r$10, ptrType$10, true); + t$5 = _tuple$2[0]; + if (!(t$5 === ptrType$10.nil)) { + l = t$5.len; + e$1 = t$5.elem; + } + $s = 6; continue; + /* } else if ($assertType(_ref$1, ptrType$25, true)[1]) { */ case 4: + t$3 = _ref$1.$val; + e$1 = t$3.elem; + $s = 6; continue; + /* } else if ($assertType(_ref$1, ptrType$28, true)[1]) { */ case 5: + t$4 = _ref$1.$val; + k$1 = t$4.key; + e$1 = t$4.elem; + /* } */ case 6: + if ($interfaceIsEqual(e$1, $ifaceNil)) { + $s = -1; return false; + } + if ($interfaceIsEqual(elem[0], $ifaceNil)) { + length[0] = l; + _tmp$4 = k$1; + _tmp$5 = e$1; + key$1[0] = _tmp$4; + elem[0] = _tmp$5; + $s = -1; return true; + } + _r$11 = Identical(key$1[0], k$1); /* */ $s = 13; case 13: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* */ if (!_r$11) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!_r$11) { */ case 11: + $s = -1; return false; + /* } */ case 12: + _r$12 = Identical(elem[0], e$1); /* */ $s = 16; case 16: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + /* */ if (!_r$12) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!_r$12) { */ case 14: + $s = -1; return false; + /* } */ case 15: + if ((l.$high > 0 || (l.$high === 0 && l.$low >= 0)) && (l.$high < length[0].$high || (l.$high === length[0].$high && l.$low < length[0].$low))) { + length[0] = l; + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: Checker·indexExpr·func1, $c: true, $r, _r$10, _r$11, _r$12, _r$9, _ref$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple$2, e$1, k$1, l, t, t$1, t$2, t$3, t$4, t$5, u, $s};return $f; + }; })(elem, k, key, key$1, length, mode, x)); /* */ $s = 32; case 32: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (_r$9) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (_r$9) { */ case 29: + /* */ if (!($interfaceIsEqual(key$1[0], $ifaceNil))) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (!($interfaceIsEqual(key$1[0], $ifaceNil))) { */ case 33: + _r$10 = check.singleIndex(e); /* */ $s = 35; case 35: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + index$2 = _r$10; + if ($interfaceIsEqual(index$2, $ifaceNil)) { + x[0].mode = 0; + isFuncInst = false; + $s = -1; return isFuncInst; + } + k[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.expr(k[0], index$2); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.assignment(k[0], key$1[0], "map index"); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x[0].mode = 6; + x[0].typ = elem[0]; + x[0].expr = e; + isFuncInst = false; + $s = -1; return isFuncInst; + /* } */ case 34: + valid = true; + x[0].mode = mode[0]; + x[0].typ = elem[0]; + /* } */ case 30: + /* } } */ case 18: + /* */ if (!valid) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (!valid) { */ case 38: + $r = check.errorf(x[0], 51, "invalid operation: cannot index %s", new sliceType$6([x[0]])); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x[0].mode = 0; + isFuncInst = false; + $s = -1; return isFuncInst; + /* } */ case 39: + _r$11 = check.singleIndex(e); /* */ $s = 41; case 41: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + index$3 = _r$11; + if ($interfaceIsEqual(index$3, $ifaceNil)) { + x[0].mode = 0; + isFuncInst = false; + $s = -1; return isFuncInst; + } + if ($interfaceIsEqual(x[0].typ, $ifaceNil)) { + x[0].typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + } + _r$12 = check.index(index$3, length[0]); /* */ $s = 42; case 42: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$12; + isFuncInst = false; + $s = -1; return isFuncInst; + /* */ } return; } var $f = {$blk: indexExpr, $c: true, $r, _1, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tuple, _tuple$1, check, e, elem, index$1, index$2, index$3, isFuncInst, k, key, key$1, length, mode, sig, typ$10, typ$4, typ$5, typ$6, typ$7, typ$8, typ$9, valid, x, $s};return $f; + }; + $ptrType(Checker).prototype.sliceExpr = function sliceExpr(x, e) { + var {_i, _i$1, _i$2, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, at$1, at$2, check, e, expr, i, i$1, ind, j, length, max, u, u$1, u$2, u$3, u$4, u$5, v, valid, x, x$1, x$2, x$3, x$4, x$5, y, $s, $r, $c} = $restore(this, {x, e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = check.expr(x, e.X); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (x.mode === 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (x.mode === 0) { */ case 2: + $r = check.use(new sliceType$11([e.Low, e.High, e.Max])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 3: + valid = false; + length = new $Int64(-1, 4294967295); + _r$1 = coreString(x.typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + /* */ if (_ref === $ifaceNil) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_ref === $ifaceNil) { */ case 6: + u = _ref; + $r = check.errorf(x, 54, "invalid operation: cannot slice %s: %s has no core type", new sliceType$6([x, x.typ])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 7: + u$1 = _ref.$val; + _r$2 = isString(u$1); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_r$2) { */ case 13: + /* */ if (e.Slice3) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (e.Slice3) { */ case 16: + at$1 = e.Max; + if ($interfaceIsEqual(at$1, $ifaceNil)) { + at$1 = e; + } + $r = check.error(at$1, 55, "invalid operation: 3-index slice of string"); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 17: + valid = true; + /* */ if (x.mode === 4) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (x.mode === 4) { */ case 19: + _r$3 = constant.StringVal(x.val); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + length = (new $Int64(0, _r$3.length)); + /* } */ case 20: + if (isUntyped(x.typ)) { + x.typ = (17 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 17]); + } + /* } */ case 14: + $s = 11; continue; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 8: + u$2 = _ref.$val; + valid = true; + length = u$2.len; + /* */ if (!((x.mode === 5))) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!((x.mode === 5))) { */ case 22: + $r = check.errorf(x, 54, "invalid operation: cannot slice %s (value not addressable)", new sliceType$6([x])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 23: + x.typ = new Slice.ptr(u$2.elem); + $s = 11; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 9: + u$3 = _ref.$val; + _r$4 = under(u$3.base); /* */ $s = 25; case 25: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple = $assertType(_r$4, ptrType$10, true); + u$5 = _tuple[0]; + if (!(u$5 === ptrType$10.nil)) { + valid = true; + length = u$5.len; + x.typ = new Slice.ptr(u$5.elem); + } + $s = 11; continue; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 10: + u$4 = _ref.$val; + valid = true; + /* } */ case 11: + /* */ if (!valid) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!valid) { */ case 26: + $r = check.errorf(x, 54, "invalid operation: cannot slice %s", new sliceType$6([x])); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 27: + x.mode = 7; + /* */ if (e.Slice3 && ($interfaceIsEqual(e.High, $ifaceNil) || $interfaceIsEqual(e.Max, $ifaceNil))) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (e.Slice3 && ($interfaceIsEqual(e.High, $ifaceNil) || $interfaceIsEqual(e.Max, $ifaceNil))) { */ case 29: + _r$5 = inNode(e, e.Rbrack); /* */ $s = 31; case 31: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $r = check.error((x$1 = _r$5, new x$1.constructor.elem(x$1)), -1, "2nd and 3rd index required in 3-index slice"); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 30: + ind = arrayType$2.zero(); + _ref$1 = new sliceType$11([e.Low, e.High, e.Max]); + _i = 0; + /* while (true) { */ case 33: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 34; continue; } + i = _i; + expr = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + x$2 = new $Int64(-1, 4294967295); + /* */ if (!($interfaceIsEqual(expr, $ifaceNil))) { $s = 36; continue; } + /* */ if ((i === 0)) { $s = 37; continue; } + /* */ if ((length.$high > 0 || (length.$high === 0 && length.$low >= 0))) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (!($interfaceIsEqual(expr, $ifaceNil))) { */ case 36: + max = new $Int64(-1, 4294967295); + if ((length.$high > 0 || (length.$high === 0 && length.$low >= 0))) { + max = new $Int64(length.$high + 0, length.$low + 1); + } + _r$6 = check.index(expr, max); /* */ $s = 40; case 40: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$1 = _r$6; + v = _tuple$1[1]; + if ((v.$high > 0 || (v.$high === 0 && v.$low >= 0))) { + x$2 = v; + } + $s = 39; continue; + /* } else if ((i === 0)) { */ case 37: + x$2 = new $Int64(0, 0); + $s = 39; continue; + /* } else if ((length.$high > 0 || (length.$high === 0 && length.$low >= 0))) { */ case 38: + x$2 = length; + /* } */ case 39: + case 35: + ((i < 0 || i >= ind.length) ? ($throwRuntimeError("index out of range"), undefined) : ind[i] = x$2); + _i++; + $s = 33; continue; + case 34: + _ref$2 = $subslice(new sliceType$19(ind), 0, 2); + _i$1 = 0; + /* while (true) { */ case 41: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 42; continue; } + i$1 = _i$1; + x$3 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + /* */ if ((x$3.$high > 0 || (x$3.$high === 0 && x$3.$low > 0))) { $s = 43; continue; } + /* */ $s = 44; continue; + /* if ((x$3.$high > 0 || (x$3.$high === 0 && x$3.$low > 0))) { */ case 43: + _ref$3 = $subslice(new sliceType$19(ind), (i$1 + 1 >> 0)); + _i$2 = 0; + /* while (true) { */ case 45: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 46; continue; } + j = _i$2; + y = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + /* */ if ((y.$high > 0 || (y.$high === 0 && y.$low >= 0)) && (y.$high < x$3.$high || (y.$high === x$3.$high && y.$low < x$3.$low))) { $s = 47; continue; } + /* */ $s = 48; continue; + /* if ((y.$high > 0 || (y.$high === 0 && y.$low >= 0)) && (y.$high < x$3.$high || (y.$high === x$3.$high && y.$low < x$3.$low))) { */ case 47: + at$2 = (x$4 = new sliceType$11([e.Low, e.High, e.Max]), x$5 = (i$1 + 1 >> 0) + j >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])); + $r = check.errorf(at$2, 53, "invalid slice indices: %d < %d", new sliceType$6([y, x$3])); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break L; */ $s = 42; continue s; + /* } */ case 48: + _i$2++; + $s = 45; continue; + case 46: + /* } */ case 44: + _i$1++; + $s = 41; continue; + case 42: + $s = -1; return; + /* */ } return; } var $f = {$blk: sliceExpr, $c: true, $r, _i, _i$1, _i$2, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, at$1, at$2, check, e, expr, i, i$1, ind, j, length, max, u, u$1, u$2, u$3, u$4, u$5, v, valid, x, x$1, x$2, x$3, x$4, x$5, y, $s};return $f; + }; + $ptrType(Checker).prototype.singleIndex = function singleIndex(expr) { + var {check, expr, x, x$1, $s, $r, $c} = $restore(this, {expr}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + /* */ if (expr.IndexListExpr.Indices.$length === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (expr.IndexListExpr.Indices.$length === 0) { */ case 1: + $r = check.errorf(expr.Orig, -1, "index expression %v with 0 indices", new sliceType$6([expr])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return $ifaceNil; + /* } */ case 2: + /* */ if (expr.IndexListExpr.Indices.$length > 1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (expr.IndexListExpr.Indices.$length > 1) { */ case 4: + $r = check.error((x = expr.IndexListExpr.Indices, (1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1])), 52, "invalid operation: more than one index"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + $s = -1; return (x$1 = expr.IndexListExpr.Indices, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])); + /* */ } return; } var $f = {$blk: singleIndex, $c: true, $r, check, expr, x, x$1, $s};return $f; + }; + $ptrType(Checker).prototype.index = function index$1(index$2, max) { + var {_arg, _arg$1, _arg$2, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, check, index$2, max, ok, typ$4, v, val, x, $s, $r, $c} = $restore(this, {index$2, max}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = [x]; + typ$4 = $ifaceNil; + val = new $Int64(0, 0); + check = this; + typ$4 = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + val = new $Int64(-1, 4294967295); + x[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.expr(x[0], index$2); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = check.isValidIndex(x[0], 52, "index", false); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!_r$1) { */ case 2: + $s = -1; return [typ$4, val]; + /* } */ case 3: + if (!((x[0].mode === 4))) { + _tmp = x[0].typ; + _tmp$1 = new $Int64(-1, 4294967295); + typ$4 = _tmp; + val = _tmp$1; + $s = -1; return [typ$4, val]; + } + _r$2 = x[0].val.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2 === 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r$2 === 0) { */ case 5: + $s = -1; return [typ$4, val]; + /* } */ case 6: + _r$3 = constant.Int64Val(x[0].val); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + v = _tuple[0]; + ok = _tuple[1]; + $r = assert(ok); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if ((max.$high > 0 || (max.$high === 0 && max.$low >= 0)) && (v.$high > max.$high || (v.$high === max.$high && v.$low >= max.$low))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ((max.$high > 0 || (max.$high === 0 && max.$low >= 0)) && (v.$high > max.$high || (v.$high === max.$high && v.$low >= max.$low))) { */ case 10: + _arg = x[0]; + _r$4 = x[0].val.String(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$4); + _arg$2 = max; + $r = check.errorf(_arg, 52, "invalid argument: index %s out of bounds [0:%d]", new sliceType$6([_arg$1, _arg$2])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [typ$4, val]; + /* } */ case 11: + _tmp$2 = x[0].typ; + _tmp$3 = v; + typ$4 = _tmp$2; + val = _tmp$3; + $s = -1; return [typ$4, val]; + /* */ } return; } var $f = {$blk: index$1, $c: true, $r, _arg, _arg$1, _arg$2, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, check, index$2, max, ok, typ$4, v, val, x, $s};return $f; + }; + $ptrType(Checker).prototype.isValidIndex = function isValidIndex(x, code, what, allowNegative) { + var {_r$1, _r$2, _r$3, _v, allowNegative, check, code, what, x, $s, $r, $c} = $restore(this, {x, code, what, allowNegative}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + if (x.mode === 0) { + $s = -1; return false; + } + $r = check.convertUntyped(x, (2 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 2])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x.mode === 0) { + $s = -1; return false; + } + _r$1 = allInteger(x.typ); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!_r$1) { */ case 2: + $r = check.errorf(x, code, "invalid argument: %s %s must be integer", new sliceType$6([new $String(what), x])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 3: + /* */ if (x.mode === 4) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (x.mode === 4) { */ case 6: + if (!(!allowNegative)) { _v = false; $s = 10; continue s; } + _r$2 = constant.Sign(x.val); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2 < 0; case 10: + /* */ if (_v) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_v) { */ case 8: + $r = check.errorf(x, code, "invalid argument: %s %s must not be negative", new sliceType$6([new $String(what), x])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 9: + _r$3 = representableConst(x.val, check, (2 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 2]), (x.$ptr_val || (x.$ptr_val = new ptrType$50(function() { return this.$target.val; }, function($v) { this.$target.val = $v; }, x)))); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!_r$3) { */ case 13: + $r = check.errorf(x, code, "invalid argument: %s %s overflows int", new sliceType$6([new $String(what), x])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 14: + /* } */ case 7: + $s = -1; return true; + /* */ } return; } var $f = {$blk: isValidIndex, $c: true, $r, _r$1, _r$2, _r$3, _v, allowNegative, check, code, what, x, $s};return $f; + }; + $ptrType(Checker).prototype.indexedElts = function indexedElts(elts, typ$4, length) { + var {_entry, _i, _key, _r$1, _ref, _tmp, _tmp$1, _tuple, _tuple$1, check, e, elts, eval$1, i, index$2, kv, length, max, typ$4, typ$5, validIndex, visited, x, x$1, x$2, $s, $r, $c} = $restore(this, {elts, typ$4, length}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + visited = (x = elts.$length, ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : new $global.Map())); + _tmp = new $Int64(0, 0); + _tmp$1 = new $Int64(0, 0); + index$2 = _tmp; + max = _tmp$1; + _ref = elts; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x$1 = [x$1]; + e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + validIndex = false; + eval$1 = e; + _tuple = $assertType(e, ptrType$97, true); + kv = _tuple[0]; + /* */ if (!(kv === ptrType$97.nil)) { $s = 3; continue; } + /* */ if ((length.$high > 0 || (length.$high === 0 && length.$low >= 0)) && (index$2.$high > length.$high || (index$2.$high === length.$high && index$2.$low >= length.$low))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(kv === ptrType$97.nil)) { */ case 3: + _r$1 = check.index(kv.Key, length); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + typ$5 = _tuple$1[0]; + i = _tuple$1[1]; + /* */ if (!($interfaceIsEqual(typ$5, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!($interfaceIsEqual(typ$5, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { */ case 8: + /* */ if ((i.$high > 0 || (i.$high === 0 && i.$low >= 0))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ((i.$high > 0 || (i.$high === 0 && i.$low >= 0))) { */ case 10: + index$2 = i; + validIndex = true; + $s = 12; continue; + /* } else { */ case 11: + $r = check.errorf(e, 62, "index %s must be integer constant", new sliceType$6([kv.Key])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + /* } */ case 9: + eval$1 = kv.Value; + $s = 6; continue; + /* } else if ((length.$high > 0 || (length.$high === 0 && length.$low >= 0)) && (index$2.$high > length.$high || (index$2.$high === length.$high && index$2.$low >= length.$low))) { */ case 4: + $r = check.errorf(e, 63, "index %d is out of bounds (>= %d)", new sliceType$6([index$2, length])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 6; continue; + /* } else { */ case 5: + validIndex = true; + /* } */ case 6: + /* */ if (validIndex) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (validIndex) { */ case 15: + /* */ if ((_entry = $mapIndex(visited,$Int64.keyFor(index$2)), _entry !== undefined ? _entry.v : false)) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if ((_entry = $mapIndex(visited,$Int64.keyFor(index$2)), _entry !== undefined ? _entry.v : false)) { */ case 17: + $r = check.errorf(e, 60, "duplicate index %d in array or slice literal", new sliceType$6([index$2])); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + _key = index$2; (visited || $throwRuntimeError("assignment to entry in nil map")).set($Int64.keyFor(_key), { k: _key, v: true }); + /* } */ case 16: + index$2 = (x$2 = new $Int64(0, 1), new $Int64(index$2.$high + x$2.$high, index$2.$low + x$2.$low)); + if ((index$2.$high > max.$high || (index$2.$high === max.$high && index$2.$low > max.$low))) { + max = index$2; + } + x$1[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.exprWithHint(x$1[0], eval$1, typ$4); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.assignment(x$1[0], typ$4, "array or slice literal"); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return max; + /* */ } return; } var $f = {$blk: indexedElts, $c: true, $r, _entry, _i, _key, _r$1, _ref, _tmp, _tmp$1, _tuple, _tuple$1, check, e, elts, eval$1, i, index$2, kv, length, max, typ$4, typ$5, validIndex, visited, x, x$1, x$2, $s};return $f; + }; + ExprString = function ExprString$1(x) { + var {buf, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + buf[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + $r = WriteExpr(buf[0], x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: ExprString$1, $c: true, $r, buf, x, $s};return $f; + }; + $pkg.ExprString = ExprString; + WriteExpr = function WriteExpr$1(buf, x) { + var {_1, _r$1, _ref, buf, ix, s, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r, $c} = $restore(this, {buf, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = x; + /* */ if ($assertType(_ref, ptrType$30, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$57, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$98, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$99, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$39, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$36, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$37, true)[1] || $assertType(_ref, ptrType$38, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$100, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$82, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$86, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$43, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$40, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, ptrType$42, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, ptrType$44, true)[1]) { $s = 17; continue; } + /* */ if ($assertType(_ref, ptrType$45, true)[1]) { $s = 18; continue; } + /* */ if ($assertType(_ref, ptrType$46, true)[1]) { $s = 19; continue; } + /* */ if ($assertType(_ref, ptrType$47, true)[1]) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if ($assertType(_ref, ptrType$30, true)[1]) { */ case 1: + x$2 = _ref.$val; + buf.WriteString(x$2.Name); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$41, true)[1]) { */ case 2: + x$3 = _ref.$val; + buf.WriteString("..."); + /* */ if (!($interfaceIsEqual(x$3.Elt, $ifaceNil))) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (!($interfaceIsEqual(x$3.Elt, $ifaceNil))) { */ case 23: + $r = WriteExpr(buf, x$3.Elt); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 24: + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$57, true)[1]) { */ case 3: + x$4 = _ref.$val; + buf.WriteString(x$4.Value); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$98, true)[1]) { */ case 4: + x$5 = _ref.$val; + buf.WriteByte(40); + $r = WriteExpr(buf, x$5.Type); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteString(" literal)"); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$99, true)[1]) { */ case 5: + x$6 = _ref.$val; + $r = WriteExpr(buf, x$6.Type); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(123); + if (x$6.Elts.$length > 0) { + buf.WriteString("\xE2\x80\xA6"); + } + buf.WriteByte(125); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$39, true)[1]) { */ case 6: + x$7 = _ref.$val; + buf.WriteByte(40); + $r = WriteExpr(buf, x$7.X); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(41); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$36, true)[1]) { */ case 7: + x$8 = _ref.$val; + $r = WriteExpr(buf, x$8.X); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(46); + buf.WriteString(x$8.Sel.Name); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$37, true)[1] || $assertType(_ref, ptrType$38, true)[1]) { */ case 8: + x$9 = _ref; + ix = typeparams.UnpackIndexExpr(x$9); + $r = WriteExpr(buf, ix.IndexListExpr.X); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(91); + $r = writeExprList(buf, ix.IndexListExpr.Indices); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(93); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$100, true)[1]) { */ case 9: + x$10 = _ref.$val; + $r = WriteExpr(buf, x$10.X); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(91); + /* */ if (!($interfaceIsEqual(x$10.Low, $ifaceNil))) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (!($interfaceIsEqual(x$10.Low, $ifaceNil))) { */ case 33: + $r = WriteExpr(buf, x$10.Low); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 34: + buf.WriteByte(58); + /* */ if (!($interfaceIsEqual(x$10.High, $ifaceNil))) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (!($interfaceIsEqual(x$10.High, $ifaceNil))) { */ case 36: + $r = WriteExpr(buf, x$10.High); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 37: + /* */ if (x$10.Slice3) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (x$10.Slice3) { */ case 39: + buf.WriteByte(58); + /* */ if (!($interfaceIsEqual(x$10.Max, $ifaceNil))) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if (!($interfaceIsEqual(x$10.Max, $ifaceNil))) { */ case 41: + $r = WriteExpr(buf, x$10.Max); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 42: + /* } */ case 40: + buf.WriteByte(93); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$82, true)[1]) { */ case 10: + x$11 = _ref.$val; + $r = WriteExpr(buf, x$11.X); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteString(".("); + $r = WriteExpr(buf, x$11.Type); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(41); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$86, true)[1]) { */ case 11: + x$12 = _ref.$val; + $r = WriteExpr(buf, x$12.Fun); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(40); + $r = writeExprList(buf, x$12.Args); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (new token.Pos(x$12.Ellipsis).IsValid()) { + buf.WriteString("..."); + } + buf.WriteByte(41); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$43, true)[1]) { */ case 12: + x$13 = _ref.$val; + buf.WriteByte(42); + $r = WriteExpr(buf, x$13.X); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$20, true)[1]) { */ case 13: + x$14 = _ref.$val; + buf.WriteString(new token.Token(x$14.Op).String()); + $r = WriteExpr(buf, x$14.X); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 14: + x$15 = _ref.$val; + $r = WriteExpr(buf, x$15.X); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(32); + buf.WriteString(new token.Token(x$15.Op).String()); + buf.WriteByte(32); + $r = WriteExpr(buf, x$15.Y); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$40, true)[1]) { */ case 15: + x$16 = _ref.$val; + buf.WriteByte(91); + /* */ if (!($interfaceIsEqual(x$16.Len, $ifaceNil))) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if (!($interfaceIsEqual(x$16.Len, $ifaceNil))) { */ case 52: + $r = WriteExpr(buf, x$16.Len); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 53: + buf.WriteByte(93); + $r = WriteExpr(buf, x$16.Elt); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$42, true)[1]) { */ case 16: + x$17 = _ref.$val; + buf.WriteString("struct{"); + $r = writeFieldList(buf, x$17.Fields.List, "; ", false); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(125); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$44, true)[1]) { */ case 17: + x$18 = _ref.$val; + buf.WriteString("func"); + $r = writeSigExpr(buf, x$18); /* */ $s = 57; case 57: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$45, true)[1]) { */ case 18: + x$19 = _ref.$val; + buf.WriteString("interface{"); + $r = writeFieldList(buf, x$19.Methods.List, "; ", true); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(125); + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$46, true)[1]) { */ case 19: + x$20 = _ref.$val; + buf.WriteString("map["); + $r = WriteExpr(buf, x$20.Key); /* */ $s = 59; case 59: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(93); + $r = WriteExpr(buf, x$20.Value); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if ($assertType(_ref, ptrType$47, true)[1]) { */ case 20: + x$21 = _ref.$val; + s = ""; + _1 = x$21.Dir; + if (_1 === (1)) { + s = "chan<- "; + } else if (_1 === (2)) { + s = "<-chan "; + } else { + s = "chan "; + } + buf.WriteString(s); + $r = WriteExpr(buf, x$21.Value); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else { */ case 21: + x$1 = _ref; + _r$1 = fmt.Fprintf(buf, "(ast: %T)", new sliceType$6([x$1])); /* */ $s = 62; case 62: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 22: + $s = -1; return; + /* */ } return; } var $f = {$blk: WriteExpr$1, $c: true, $r, _1, _r$1, _ref, buf, ix, s, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s};return $f; + }; + $pkg.WriteExpr = WriteExpr; + writeSigExpr = function writeSigExpr$1(buf, sig) { + var {buf, n, res, sig, x, x$1, $s, $r, $c} = $restore(this, {buf, sig}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf.WriteByte(40); + $r = writeFieldList(buf, sig.Params.List, ", ", false); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(41); + res = sig.Results; + n = res.NumFields(); + if (n === 0) { + $s = -1; return; + } + buf.WriteByte(32); + /* */ if ((n === 1) && ((x = res.List, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Names.$length === 0)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ((n === 1) && ((x = res.List, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).Names.$length === 0)) { */ case 2: + $r = WriteExpr(buf, (x$1 = res.List, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])).Type); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 3: + buf.WriteByte(40); + $r = writeFieldList(buf, res.List, ", ", false); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf.WriteByte(41); + $s = -1; return; + /* */ } return; } var $f = {$blk: writeSigExpr$1, $c: true, $r, buf, n, res, sig, x, x$1, $s};return $f; + }; + writeFieldList = function writeFieldList$1(buf, list$2, sep, iface$1) { + var {_i, _ref, _tuple, buf, f, i, iface$1, list$2, sep, sig, $s, $r, $c} = $restore(this, {buf, list$2, sep, iface$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = list$2; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + buf.WriteString(sep); + } + writeIdentList(buf, f.Names); + _tuple = $assertType(f.Type, ptrType$44, true); + sig = _tuple[0]; + /* */ if (!(sig === ptrType$44.nil) && iface$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(sig === ptrType$44.nil) && iface$1) { */ case 3: + $r = writeSigExpr(buf, sig); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue; */ $s = 1; continue; + /* } */ case 4: + if (f.Names.$length > 0) { + buf.WriteByte(32); + } + $r = WriteExpr(buf, f.Type); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: writeFieldList$1, $c: true, $r, _i, _ref, _tuple, buf, f, i, iface$1, list$2, sep, sig, $s};return $f; + }; + writeIdentList = function writeIdentList$1(buf, list$2) { + var _i, _ref, buf, i, list$2, x; + _ref = list$2; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + buf.WriteString(", "); + } + buf.WriteString(x.Name); + _i++; + } + }; + writeExprList = function writeExprList$1(buf, list$2) { + var {_i, _ref, buf, i, list$2, x, $s, $r, $c} = $restore(this, {buf, list$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = list$2; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + buf.WriteString(", "); + } + $r = WriteExpr(buf, x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: writeExprList$1, $c: true, $r, _i, _ref, buf, i, list$2, x, $s};return $f; + }; + init$1 = function init$5() { + unaryOpPredicates = $makeMap(token.Token.keyFor, [{ k: 12, v: allNumeric }, { k: 13, v: allNumeric }, { k: 19, v: allInteger }, { k: 43, v: allBoolean }]); + }; + $ptrType(Checker).prototype.op = function op(m, x, op$1) { + var {_entry, _r$1, check, m, op$1, pred, x, $s, $r, $c} = $restore(this, {m, x, op$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + pred = (_entry = $mapIndex(m,token.Token.keyFor(op$1)), _entry !== undefined ? _entry.v : $throwNilPointerError); + /* */ if (!(pred === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(pred === $throwNilPointerError)) { */ case 1: + _r$1 = pred(x.typ); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!_r$1) { */ case 4: + $r = check.errorf(x, 45, "invalid operation: operator %s not defined on %s", new sliceType$6([new token.Token(op$1), x])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 5: + $s = 3; continue; + /* } else { */ case 2: + $r = check.errorf(x, -1, "unknown operator %s", new sliceType$6([new token.Token(op$1)])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 3: + $s = -1; return true; + /* */ } return; } var $f = {$blk: op, $c: true, $r, _entry, _r$1, check, m, op$1, pred, x, $s};return $f; + }; + $ptrType(Checker).prototype.overflow = function overflow(x, opPos) { + var {_arg, _arg$1, _r$1, _r$2, _r$3, _r$4, _v, check, op$1, opPos, x, $s, $r, $c} = $restore(this, {x, opPos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = assert(x.mode === 4); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = x.val.Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1 === 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_r$1 === 0) { */ case 2: + $r = check.error(new atPos(((opPos >> 0))), 14, "constant result is not representable"); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 3: + /* */ if (isTyped(x.typ)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (isTyped(x.typ)) { */ case 6: + _arg = x; + _r$2 = under(x.typ); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = $assertType(_r$2, ptrType$8); + $r = check.representable(_arg, _arg$1); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 7: + _r$3 = x.val.Kind(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + if (!(_r$3 === 3)) { _v = false; $s = 12; continue s; } + _r$4 = constant.BitLen(x.val); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _v = _r$4 > 512; case 12: + /* */ if (_v) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v) { */ case 10: + op$1 = opName(x.expr); + if (!(op$1 === "")) { + op$1 = op$1 + (" "); + } + $r = check.errorf(new atPos(((opPos >> 0))), 14, "constant %soverflow", new sliceType$6([new $String(op$1)])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.val = constant.MakeUnknown(); + /* } */ case 11: + $s = -1; return; + /* */ } return; } var $f = {$blk: overflow, $c: true, $r, _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, _v, check, op$1, opPos, x, $s};return $f; + }; + opName = function opName$1(e) { + var _ref, e, e$1, e$2, x, x$1; + _ref = e; + if ($assertType(_ref, ptrType$21, true)[1]) { + e$1 = _ref.$val; + if (((e$1.Op >> 0)) < 21) { + return (x = e$1.Op, ((x < 0 || x >= op2str2.length) ? ($throwRuntimeError("index out of range"), undefined) : op2str2[x])); + } + } else if ($assertType(_ref, ptrType$20, true)[1]) { + e$2 = _ref.$val; + if (((e$2.Op >> 0)) < 20) { + return (x$1 = e$2.Op, ((x$1 < 0 || x$1 >= op2str1.length) ? ($throwRuntimeError("index out of range"), undefined) : op2str1[x$1])); + } + } + return ""; + }; + underIs = function underIs$3(typ$4, f) { + var {$24r, $24r$1, _r$1, _r$2, _r$3, _tuple, f, tpar, typ$4, $s, $r, $c} = $restore(this, {typ$4, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = $assertType(typ$4, ptrType$14, true); + tpar = _tuple[0]; + /* */ if (!(tpar === ptrType$14.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(tpar === ptrType$14.nil)) { */ case 1: + _r$1 = tpar.underIs(f); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$2 = under(typ$4); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = f(_r$2); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = _r$3; + $s = 7; case 7: return $24r$1; + /* */ } return; } var $f = {$blk: underIs$3, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, _tuple, f, tpar, typ$4, $s};return $f; + }; + $ptrType(Checker).prototype.unary = function unary(x, e) { + var {_1, _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, _tuple$1, ch, check, e, ok, prec, u, x, $s, $r, $c} = $restore(this, {x, e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = check.expr(x, e.X); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x.mode === 0) { + $s = -1; return; + } + _1 = e.Op; + /* */ if (_1 === (17)) { $s = 3; continue; } + /* */ if (_1 === (36)) { $s = 4; continue; } + /* */ if (_1 === (88)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (17)) { */ case 3: + _tuple = $assertType(unparen(e.X), ptrType$99, true); + ok = _tuple[1]; + /* */ if (!ok && !((x.mode === 5))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!ok && !((x.mode === 5))) { */ case 7: + $r = check.errorf(x, 49, "invalid operation: cannot take address of %s", new sliceType$6([x])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 8: + x.mode = 7; + x.typ = new Pointer.ptr(x.typ); + $s = -1; return; + /* } else if (_1 === (36)) { */ case 4: + _r$1 = coreType(x.typ); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + u = _r$1; + /* */ if ($interfaceIsEqual(u, $ifaceNil)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if ($interfaceIsEqual(u, $ifaceNil)) { */ case 11: + $r = check.errorf(x, 58, "invalid operation: cannot receive from %s (no core type)", new sliceType$6([x])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 12: + _tuple$1 = $assertType(u, ptrType$29, true); + ch = _tuple$1[0]; + /* */ if (ch === ptrType$29.nil) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (ch === ptrType$29.nil) { */ case 14: + $r = check.errorf(x, 58, "invalid operation: cannot receive from non-channel %s", new sliceType$6([x])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 15: + /* */ if (ch.dir === 1) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (ch.dir === 1) { */ case 17: + $r = check.errorf(x, 58, "invalid operation: cannot receive from send-only channel %s", new sliceType$6([x])); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 18: + x.mode = 8; + x.typ = ch.elem; + check.environment.hasCallOrRecv = true; + $s = -1; return; + /* } else if (_1 === (88)) { */ case 5: + $r = check.error(e, 45, "cannot use ~ outside of interface or type constraint"); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 6: + case 2: + _r$2 = check.op(unaryOpPredicates, x, e.Op); /* */ $s = 23; case 23: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!_r$2) { */ case 21: + x.mode = 0; + $s = -1; return; + /* } */ case 22: + /* */ if (x.mode === 4) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (x.mode === 4) { */ case 24: + _r$3 = x.val.Kind(); /* */ $s = 28; case 28: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3 === 0) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (_r$3 === 0) { */ case 26: + $s = -1; return; + /* } */ case 27: + prec = 0; + _r$4 = isUnsigned(x.typ); /* */ $s = 31; case 31: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (_r$4) { */ case 29: + _r$5 = check.conf.sizeof(x.typ); /* */ $s = 32; case 32: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + prec = (($mul64(_r$5, new $Int64(0, 8)).$low >>> 0)); + /* } */ case 30: + _r$6 = constant.UnaryOp(e.Op, x.val, prec); /* */ $s = 33; case 33: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + x.val = _r$6; + x.expr = e; + _arg = x; + _r$7 = x.Pos(); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _arg$1 = _r$7; + $r = check.overflow(_arg, _arg$1); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 25: + x.mode = 7; + $s = -1; return; + /* */ } return; } var $f = {$blk: unary, $c: true, $r, _1, _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, _tuple$1, ch, check, e, ok, prec, u, x, $s};return $f; + }; + isShift = function isShift$1(op$1) { + var op$1; + return (op$1 === 20) || (op$1 === 21); + }; + isComparison = function isComparison$1(op$1) { + var _1, op$1; + _1 = op$1; + if ((_1 === (39)) || (_1 === (44)) || (_1 === (40)) || (_1 === (45)) || (_1 === (41)) || (_1 === (46))) { + return true; + } + return false; + }; + fitsFloat32 = function fitsFloat32$1(x) { + var {_r$1, _tuple, f, f32, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = constant.Float32Val(x); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + f32 = _tuple[0]; + f = (f32); + $s = -1; return !math.IsInf(f, 0); + /* */ } return; } var $f = {$blk: fitsFloat32$1, $c: true, $r, _r$1, _tuple, f, f32, x, $s};return $f; + }; + roundFloat32 = function roundFloat32$1(x) { + var {$24r, _r$1, _r$2, _tuple, f, f32, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = constant.Float32Val(x); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + f32 = _tuple[0]; + f = (f32); + /* */ if (!math.IsInf(f, 0)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!math.IsInf(f, 0)) { */ case 2: + _r$2 = constant.MakeFloat64(f); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 5; case 5: return $24r; + /* } */ case 3: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: roundFloat32$1, $c: true, $r, $24r, _r$1, _r$2, _tuple, f, f32, x, $s};return $f; + }; + fitsFloat64 = function fitsFloat64$1(x) { + var {_r$1, _tuple, f, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = constant.Float64Val(x); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + f = _tuple[0]; + $s = -1; return !math.IsInf(f, 0); + /* */ } return; } var $f = {$blk: fitsFloat64$1, $c: true, $r, _r$1, _tuple, f, x, $s};return $f; + }; + roundFloat64 = function roundFloat64$1(x) { + var {$24r, _r$1, _r$2, _tuple, f, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = constant.Float64Val(x); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + f = _tuple[0]; + /* */ if (!math.IsInf(f, 0)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!math.IsInf(f, 0)) { */ case 2: + _r$2 = constant.MakeFloat64(f); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 5; case 5: return $24r; + /* } */ case 3: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: roundFloat64$1, $c: true, $r, $24r, _r$1, _r$2, _tuple, f, x, $s};return $f; + }; + representableConst = function representableConst$1(x, check, typ$4, rounded) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, _1, _2, _3, _4, _arg, _arg$1, _arg$2, _arg$3, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _v, _v$1, check, conf, im, im$1, n, ok, r, r$1, re, re$1, rounded, s, s$1, s$2, typ$4, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r, $c} = $restore(this, {x, check, typ$4, rounded}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = x.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1 === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r$1 === 0) { */ case 1: + $s = -1; return true; + /* } */ case 2: + conf = ptrType$101.nil; + if (!(check === ptrType$5.nil)) { + conf = check.conf; + } + _r$2 = isInteger(typ$4); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 5; continue; } + _r$3 = isFloat(typ$4); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 6; continue; } + _r$4 = isComplex(typ$4); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 7; continue; } + _r$5 = isString(typ$4); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (_r$5) { $s = 8; continue; } + _r$6 = isBoolean(typ$4); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (_r$6) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_r$2) { */ case 5: + _r$7 = constant.ToInt(x); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + x$1 = _r$7; + _r$8 = x$1.Kind(); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (!((_r$8 === 3))) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (!((_r$8 === 3))) { */ case 17: + $s = -1; return false; + /* } */ case 18: + if (!(rounded === ptrType$50.nil)) { + rounded.$set(x$1); + } + _r$9 = constant.Int64Val(x$1); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple = _r$9; + x$2 = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (ok) { */ case 21: + _1 = typ$4.kind; + /* */ if (_1 === (2)) { $s = 24; continue; } + /* */ if (_1 === (3)) { $s = 25; continue; } + /* */ if (_1 === (4)) { $s = 26; continue; } + /* */ if (_1 === (5)) { $s = 27; continue; } + /* */ if ((_1 === (6)) || (_1 === (20))) { $s = 28; continue; } + /* */ if ((_1 === (7)) || (_1 === (12))) { $s = 29; continue; } + /* */ if (_1 === (8)) { $s = 30; continue; } + /* */ if (_1 === (9)) { $s = 31; continue; } + /* */ if (_1 === (10)) { $s = 32; continue; } + /* */ if (_1 === (11)) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (_1 === (2)) { */ case 24: + _r$10 = conf.sizeof(typ$4); /* */ $s = 36; case 36: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + s = $imul(((_r$10.$low >>> 0)), 8) >>> 0; + $s = -1; return (x$3 = $shiftLeft64(new $Int64(-1, 4294967295), ((s - 1 >>> 0))), (x$3.$high < x$2.$high || (x$3.$high === x$2.$high && x$3.$low <= x$2.$low))) && (x$4 = (x$5 = $shiftLeft64(new $Int64(0, 1), ((s - 1 >>> 0))), new $Int64(x$5.$high - 0, x$5.$low - 1)), (x$2.$high < x$4.$high || (x$2.$high === x$4.$high && x$2.$low <= x$4.$low))); + /* } else if (_1 === (3)) { */ case 25: + $s = -1; return (-1 < x$2.$high || (-1 === x$2.$high && 4294967168 <= x$2.$low)) && (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low <= 127)); + /* } else if (_1 === (4)) { */ case 26: + $s = -1; return (-1 < x$2.$high || (-1 === x$2.$high && 4294934528 <= x$2.$low)) && (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low <= 32767)); + /* } else if (_1 === (5)) { */ case 27: + $s = -1; return (-1 < x$2.$high || (-1 === x$2.$high && 2147483648 <= x$2.$low)) && (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low <= 2147483647)); + /* } else if ((_1 === (6)) || (_1 === (20))) { */ case 28: + $s = -1; return true; + /* } else if ((_1 === (7)) || (_1 === (12))) { */ case 29: + _r$11 = conf.sizeof(typ$4); /* */ $s = 37; case 37: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + s$1 = $imul(((_r$11.$low >>> 0)), 8) >>> 0; + if (s$1 < 64) { + $s = -1; return (0 < x$2.$high || (0 === x$2.$high && 0 <= x$2.$low)) && (x$6 = (x$7 = $shiftLeft64(new $Int64(0, 1), s$1), new $Int64(x$7.$high - 0, x$7.$low - 1)), (x$2.$high < x$6.$high || (x$2.$high === x$6.$high && x$2.$low <= x$6.$low))); + } + $s = -1; return (0 < x$2.$high || (0 === x$2.$high && 0 <= x$2.$low)); + /* } else if (_1 === (8)) { */ case 30: + $s = -1; return (0 < x$2.$high || (0 === x$2.$high && 0 <= x$2.$low)) && (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low <= 255)); + /* } else if (_1 === (9)) { */ case 31: + $s = -1; return (0 < x$2.$high || (0 === x$2.$high && 0 <= x$2.$low)) && (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low <= 65535)); + /* } else if (_1 === (10)) { */ case 32: + $s = -1; return (0 < x$2.$high || (0 === x$2.$high && 0 <= x$2.$low)) && (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low <= 4294967295)); + /* } else if (_1 === (11)) { */ case 33: + $s = -1; return (0 < x$2.$high || (0 === x$2.$high && 0 <= x$2.$low)); + /* } else { */ case 34: + unreachable(); + /* } */ case 35: + case 23: + /* } */ case 22: + _r$12 = constant.BitLen(x$1); /* */ $s = 39; case 39: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + n = _r$12; + _2 = typ$4.kind; + /* */ if ((_2 === (7)) || (_2 === (12))) { $s = 40; continue; } + /* */ if (_2 === (11)) { $s = 41; continue; } + /* */ if (_2 === (20)) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if ((_2 === (7)) || (_2 === (12))) { */ case 40: + _r$13 = conf.sizeof(typ$4); /* */ $s = 44; case 44: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + s$2 = $imul(((_r$13.$low >>> 0)), 8) >>> 0; + _r$14 = constant.Sign(x$1); /* */ $s = 45; case 45: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + $24r = _r$14 >= 0 && n <= ((s$2 >> 0)); + $s = 46; case 46: return $24r; + /* } else if (_2 === (11)) { */ case 41: + _r$15 = constant.Sign(x$1); /* */ $s = 47; case 47: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + $24r$1 = _r$15 >= 0 && n <= 64; + $s = 48; case 48: return $24r$1; + /* } else if (_2 === (20)) { */ case 42: + $s = -1; return true; + /* } */ case 43: + case 38: + $s = 10; continue; + /* } else if (_r$3) { */ case 6: + _r$16 = constant.ToFloat(x); /* */ $s = 49; case 49: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + x$8 = _r$16; + _r$17 = x$8.Kind(); /* */ $s = 52; case 52: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + /* */ if (!((_r$17 === 4))) { $s = 50; continue; } + /* */ $s = 51; continue; + /* if (!((_r$17 === 4))) { */ case 50: + $s = -1; return false; + /* } */ case 51: + _3 = typ$4.kind; + /* */ if (_3 === (13)) { $s = 54; continue; } + /* */ if (_3 === (14)) { $s = 55; continue; } + /* */ if (_3 === (22)) { $s = 56; continue; } + /* */ $s = 57; continue; + /* if (_3 === (13)) { */ case 54: + /* */ if (rounded === ptrType$50.nil) { $s = 59; continue; } + /* */ $s = 60; continue; + /* if (rounded === ptrType$50.nil) { */ case 59: + _r$18 = fitsFloat32(x$8); /* */ $s = 61; case 61: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + $24r$2 = _r$18; + $s = 62; case 62: return $24r$2; + /* } */ case 60: + _r$19 = roundFloat32(x$8); /* */ $s = 63; case 63: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + r = _r$19; + if (!($interfaceIsEqual(r, $ifaceNil))) { + rounded.$set(r); + $s = -1; return true; + } + $s = 58; continue; + /* } else if (_3 === (14)) { */ case 55: + /* */ if (rounded === ptrType$50.nil) { $s = 64; continue; } + /* */ $s = 65; continue; + /* if (rounded === ptrType$50.nil) { */ case 64: + _r$20 = fitsFloat64(x$8); /* */ $s = 66; case 66: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + $24r$3 = _r$20; + $s = 67; case 67: return $24r$3; + /* } */ case 65: + _r$21 = roundFloat64(x$8); /* */ $s = 68; case 68: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + r$1 = _r$21; + if (!($interfaceIsEqual(r$1, $ifaceNil))) { + rounded.$set(r$1); + $s = -1; return true; + } + $s = 58; continue; + /* } else if (_3 === (22)) { */ case 56: + $s = -1; return true; + /* } else { */ case 57: + unreachable(); + /* } */ case 58: + case 53: + $s = 10; continue; + /* } else if (_r$4) { */ case 7: + x$9 = constant.ToComplex(x); + _r$22 = x$9.Kind(); /* */ $s = 71; case 71: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* */ if (!((_r$22 === 5))) { $s = 69; continue; } + /* */ $s = 70; continue; + /* if (!((_r$22 === 5))) { */ case 69: + $s = -1; return false; + /* } */ case 70: + _4 = typ$4.kind; + /* */ if (_4 === (15)) { $s = 73; continue; } + /* */ if (_4 === (16)) { $s = 74; continue; } + /* */ if (_4 === (23)) { $s = 75; continue; } + /* */ $s = 76; continue; + /* if (_4 === (15)) { */ case 73: + /* */ if (rounded === ptrType$50.nil) { $s = 78; continue; } + /* */ $s = 79; continue; + /* if (rounded === ptrType$50.nil) { */ case 78: + _r$23 = constant.Real(x$9); /* */ $s = 81; case 81: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = fitsFloat32(_r$23); /* */ $s = 82; case 82: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + if (!(_r$24)) { _v = false; $s = 80; continue s; } + _r$25 = constant.Imag(x$9); /* */ $s = 83; case 83: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$26 = fitsFloat32(_r$25); /* */ $s = 84; case 84: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _v = _r$26; case 80: + $24r$4 = _v; + $s = 85; case 85: return $24r$4; + /* } */ case 79: + _r$27 = constant.Real(x$9); /* */ $s = 86; case 86: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _r$28 = roundFloat32(_r$27); /* */ $s = 87; case 87: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + re = _r$28; + _r$29 = constant.Imag(x$9); /* */ $s = 88; case 88: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + _r$30 = roundFloat32(_r$29); /* */ $s = 89; case 89: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + im = _r$30; + /* */ if (!($interfaceIsEqual(re, $ifaceNil)) && !($interfaceIsEqual(im, $ifaceNil))) { $s = 90; continue; } + /* */ $s = 91; continue; + /* if (!($interfaceIsEqual(re, $ifaceNil)) && !($interfaceIsEqual(im, $ifaceNil))) { */ case 90: + _arg = re; + _r$31 = constant.MakeImag(im); /* */ $s = 92; case 92: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + _arg$1 = _r$31; + _r$32 = constant.BinaryOp(_arg, 12, _arg$1); /* */ $s = 93; case 93: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + rounded.$set(_r$32); + $s = -1; return true; + /* } */ case 91: + $s = 77; continue; + /* } else if (_4 === (16)) { */ case 74: + /* */ if (rounded === ptrType$50.nil) { $s = 94; continue; } + /* */ $s = 95; continue; + /* if (rounded === ptrType$50.nil) { */ case 94: + _r$33 = constant.Real(x$9); /* */ $s = 97; case 97: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + _r$34 = fitsFloat64(_r$33); /* */ $s = 98; case 98: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + if (!(_r$34)) { _v$1 = false; $s = 96; continue s; } + _r$35 = constant.Imag(x$9); /* */ $s = 99; case 99: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } + _r$36 = fitsFloat64(_r$35); /* */ $s = 100; case 100: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } + _v$1 = _r$36; case 96: + $24r$5 = _v$1; + $s = 101; case 101: return $24r$5; + /* } */ case 95: + _r$37 = constant.Real(x$9); /* */ $s = 102; case 102: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; } + _r$38 = roundFloat64(_r$37); /* */ $s = 103; case 103: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; } + re$1 = _r$38; + _r$39 = constant.Imag(x$9); /* */ $s = 104; case 104: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; } + _r$40 = roundFloat64(_r$39); /* */ $s = 105; case 105: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; } + im$1 = _r$40; + /* */ if (!($interfaceIsEqual(re$1, $ifaceNil)) && !($interfaceIsEqual(im$1, $ifaceNil))) { $s = 106; continue; } + /* */ $s = 107; continue; + /* if (!($interfaceIsEqual(re$1, $ifaceNil)) && !($interfaceIsEqual(im$1, $ifaceNil))) { */ case 106: + _arg$2 = re$1; + _r$41 = constant.MakeImag(im$1); /* */ $s = 108; case 108: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; } + _arg$3 = _r$41; + _r$42 = constant.BinaryOp(_arg$2, 12, _arg$3); /* */ $s = 109; case 109: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; } + rounded.$set(_r$42); + $s = -1; return true; + /* } */ case 107: + $s = 77; continue; + /* } else if (_4 === (23)) { */ case 75: + $s = -1; return true; + /* } else { */ case 76: + unreachable(); + /* } */ case 77: + case 72: + $s = 10; continue; + /* } else if (_r$5) { */ case 8: + _r$43 = x.Kind(); /* */ $s = 110; case 110: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; } + $24r$6 = _r$43 === 2; + $s = 111; case 111: return $24r$6; + /* } else if (_r$6) { */ case 9: + _r$44 = x.Kind(); /* */ $s = 112; case 112: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; } + $24r$7 = _r$44 === 1; + $s = 113; case 113: return $24r$7; + /* } */ case 10: + case 4: + $s = -1; return false; + /* */ } return; } var $f = {$blk: representableConst$1, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, _1, _2, _3, _4, _arg, _arg$1, _arg$2, _arg$3, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _v, _v$1, check, conf, im, im$1, n, ok, r, r$1, re, re$1, rounded, s, s$1, s$2, typ$4, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s};return $f; + }; + $ptrType(Checker).prototype.representable = function representable(x, typ$4) { + var {_r$1, _tuple, check, code, typ$4, v, x, $s, $r, $c} = $restore(this, {x, typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.representation(x, typ$4); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + v = _tuple[0]; + code = _tuple[1]; + /* */ if (!((code === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((code === 0))) { */ case 2: + $r = check.invalidConversion(code, x, typ$4); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 3: + $r = assert(!($interfaceIsEqual(v, $ifaceNil))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.val = v; + $s = -1; return; + /* */ } return; } var $f = {$blk: representable, $c: true, $r, _r$1, _tuple, check, code, typ$4, v, x, $s};return $f; + }; + $ptrType(Checker).prototype.representation = function representation(x, typ$4) { + var {_r$1, _r$2, _r$3, _r$4, _r$5, _v, _v$1, check, typ$4, v, x, $s, $r, $c} = $restore(this, {x, typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = [v]; + check = this; + $r = assert(x.mode === 4); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + v[0] = x.val; + _r$1 = representableConst(x.val, check, typ$4, (v.$ptr || (v.$ptr = new ptrType$50(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, v)))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!_r$1) { */ case 2: + _r$2 = isNumeric(x.typ); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + if (!(_r$2)) { _v = false; $s = 7; continue s; } + _r$3 = isNumeric(typ$4); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3; case 7: + /* */ if (_v) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_v) { */ case 5: + _r$4 = isInteger(x.typ); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + if (!(!_r$4)) { _v$1 = false; $s = 13; continue s; } + _r$5 = isInteger(typ$4); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _v$1 = _r$5; case 13: + /* */ if (_v$1) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v$1) { */ case 10: + $s = -1; return [$ifaceNil, 43]; + /* } else { */ case 11: + $s = -1; return [$ifaceNil, 44]; + /* } */ case 12: + /* } */ case 6: + $s = -1; return [$ifaceNil, 14]; + /* } */ case 3: + $s = -1; return [v[0], 0]; + /* */ } return; } var $f = {$blk: representation, $c: true, $r, _r$1, _r$2, _r$3, _r$4, _r$5, _v, _v$1, check, typ$4, v, x, $s};return $f; + }; + $ptrType(Checker).prototype.invalidConversion = function invalidConversion(code, x, target) { + var {_1, check, code, msg, target, x, $s, $r, $c} = $restore(this, {code, x, target}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + msg = "cannot convert %s to type %s"; + _1 = code; + if (_1 === (43)) { + msg = "%s truncated to %s"; + } else if (_1 === (44)) { + msg = "%s overflows %s"; + } + $r = check.errorf(x, code, msg, new sliceType$6([x, target])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: invalidConversion, $c: true, $r, _1, check, code, msg, target, x, $s};return $f; + }; + $ptrType(Checker).prototype.updateExprType = function updateExprType(x, typ$4, final$1) { + var {check, final$1, typ$4, x, $s, $r, $c} = $restore(this, {x, typ$4, final$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = check.updateExprType0($ifaceNil, x, typ$4, final$1); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: updateExprType, $c: true, $r, check, final$1, typ$4, x, $s};return $f; + }; + $ptrType(Checker).prototype.updateExprType0 = function updateExprType0(parent, x, typ$4, final$1) { + var {_arg, _arg$1, _arg$2, _arg$3, _entry, _key, _r$1, _r$2, _r$3, _ref, _tuple, c, check, final$1, found, old, parent, typ$4, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r, $c} = $restore(this, {parent, x, typ$4, final$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = [c]; + check = this; + _tuple = (_entry = $mapIndex(check.untyped,ast.Expr.keyFor(x)), _entry !== undefined ? [_entry.v, true] : [new exprInfo.ptr(false, 0, ptrType$8.nil, $ifaceNil), false]); + old = $clone(_tuple[0], exprInfo); + found = _tuple[1]; + if (!found) { + $s = -1; return; + } + _ref = x; + /* */ if ($assertType(_ref, ptrType$35, true)[1] || $assertType(_ref, ptrType$98, true)[1] || $assertType(_ref, ptrType$99, true)[1] || $assertType(_ref, ptrType$37, true)[1] || $assertType(_ref, ptrType$100, true)[1] || $assertType(_ref, ptrType$82, true)[1] || $assertType(_ref, ptrType$43, true)[1] || $assertType(_ref, ptrType$97, true)[1] || $assertType(_ref, ptrType$40, true)[1] || $assertType(_ref, ptrType$42, true)[1] || $assertType(_ref, ptrType$44, true)[1] || $assertType(_ref, ptrType$45, true)[1] || $assertType(_ref, ptrType$46, true)[1] || $assertType(_ref, ptrType$47, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$86, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$30, true)[1] || $assertType(_ref, ptrType$57, true)[1] || $assertType(_ref, ptrType$36, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$39, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 6; continue; } + /* */ $s = 7; continue; + /* switch (0) { default: if ($assertType(_ref, ptrType$35, true)[1] || $assertType(_ref, ptrType$98, true)[1] || $assertType(_ref, ptrType$99, true)[1] || $assertType(_ref, ptrType$37, true)[1] || $assertType(_ref, ptrType$100, true)[1] || $assertType(_ref, ptrType$82, true)[1] || $assertType(_ref, ptrType$43, true)[1] || $assertType(_ref, ptrType$97, true)[1] || $assertType(_ref, ptrType$40, true)[1] || $assertType(_ref, ptrType$42, true)[1] || $assertType(_ref, ptrType$44, true)[1] || $assertType(_ref, ptrType$45, true)[1] || $assertType(_ref, ptrType$46, true)[1] || $assertType(_ref, ptrType$47, true)[1]) { */ case 1: + x$1 = _ref; + /* */ if (false) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (false) { */ case 9: + _r$1 = x$1.Pos(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = new token.Pos(_r$1); + _arg$1 = x$1; + _arg$2 = old.typ; + _arg$3 = typ$4; + $r = check.dump("%v: found old type(%s): %s (new: %s)", new sliceType$6([_arg, _arg$1, _arg$2, _arg$3])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + unreachable(); + /* } */ case 10: + $s = -1; return; + /* } else if ($assertType(_ref, ptrType$86, true)[1]) { */ case 2: + x$2 = _ref.$val; + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$30, true)[1] || $assertType(_ref, ptrType$57, true)[1] || $assertType(_ref, ptrType$36, true)[1]) { */ case 3: + x$3 = _ref; + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$39, true)[1]) { */ case 4: + x$4 = _ref.$val; + $r = check.updateExprType0(x$4, x$4.X, typ$4, final$1); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$20, true)[1]) { */ case 5: + x$5 = _ref.$val; + if (!($interfaceIsEqual(old.val, $ifaceNil))) { + /* break; */ $s = 8; continue; + } + $r = check.updateExprType0(x$5, x$5.X, typ$4, final$1); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 6: + x$6 = _ref.$val; + if (!($interfaceIsEqual(old.val, $ifaceNil))) { + /* break; */ $s = 8; continue; + } + /* */ if (isComparison(x$6.Op)) { $s = 15; continue; } + /* */ if (isShift(x$6.Op)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (isComparison(x$6.Op)) { */ case 15: + $s = 18; continue; + /* } else if (isShift(x$6.Op)) { */ case 16: + $r = check.updateExprType0(x$6, x$6.X, typ$4, final$1); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else { */ case 17: + $r = check.updateExprType0(x$6, x$6.X, typ$4, final$1); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.updateExprType0(x$6, x$6.Y, typ$4, final$1); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + $s = 8; continue; + /* } else { */ case 7: + x$7 = _ref; + unreachable(); + /* } } */ case 8: + /* */ if (!final$1 && isUntyped(typ$4)) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!final$1 && isUntyped(typ$4)) { */ case 22: + _r$2 = under(typ$4); /* */ $s = 24; case 24: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + old.typ = $assertType(_r$2, ptrType$8); + _key = x; (check.untyped || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(old, exprInfo) }); + $s = -1; return; + /* } */ case 23: + $mapDelete(check.untyped, ast.Expr.keyFor(x)); + /* */ if (old.isLhs) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (old.isLhs) { */ case 25: + _r$3 = allInteger(typ$4); /* */ $s = 29; case 29: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (!_r$3) { */ case 27: + $r = check.errorf(x, 57, "invalid operation: shifted operand %s (type %s) must be integer", new sliceType$6([x, typ$4])); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 28: + /* } */ case 26: + /* */ if (!($interfaceIsEqual(old.val, $ifaceNil))) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (!($interfaceIsEqual(old.val, $ifaceNil))) { */ case 31: + c[0] = new operand.ptr(old.mode, x, old.typ, old.val, 0); + $r = check.convertUntyped(c[0], typ$4); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (c[0].mode === 0) { + $s = -1; return; + } + /* } */ case 32: + $r = check.recordTypeAndValue(x, old.mode, typ$4, old.val); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: updateExprType0, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _entry, _key, _r$1, _r$2, _r$3, _ref, _tuple, c, check, final$1, found, old, parent, typ$4, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s};return $f; + }; + $ptrType(Checker).prototype.updateExprVal = function updateExprVal(x, val) { + var _entry, _key, _tuple, check, info, ok, val, x; + check = this; + _tuple = (_entry = $mapIndex(check.untyped,ast.Expr.keyFor(x)), _entry !== undefined ? [_entry.v, true] : [new exprInfo.ptr(false, 0, ptrType$8.nil, $ifaceNil), false]); + info = $clone(_tuple[0], exprInfo); + ok = _tuple[1]; + if (ok) { + info.val = val; + _key = x; (check.untyped || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(info, exprInfo) }); + } + }; + $ptrType(Checker).prototype.convertUntyped = function convertUntyped(x, target) { + var {_r$1, _r$2, _tuple, check, code, newType, t, target, val, x, $s, $r, $c} = $restore(this, {x, target}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.implicitTypeAndValue(x, target); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + newType = _tuple[0]; + val = _tuple[1]; + code = _tuple[2]; + /* */ if (!((code === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((code === 0))) { */ case 2: + t = target; + /* */ if (!isTypeParam(target)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!isTypeParam(target)) { */ case 4: + _r$2 = safeUnderlying(target); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + t = _r$2; + /* } */ case 5: + $r = check.invalidConversion(code, x, t); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 3: + if (!($interfaceIsEqual(val, $ifaceNil))) { + x.val = val; + check.updateExprVal(x.expr, val); + } + /* */ if (!($interfaceIsEqual(newType, x.typ))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!($interfaceIsEqual(newType, x.typ))) { */ case 8: + x.typ = newType; + $r = check.updateExprType(x.expr, newType, false); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + $s = -1; return; + /* */ } return; } var $f = {$blk: convertUntyped, $c: true, $r, _r$1, _r$2, _tuple, check, code, newType, t, target, val, x, $s};return $f; + }; + $ptrType(Checker).prototype.implicitTypeAndValue = function implicitTypeAndValue(x, target) { + var {_1, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _v, check, code, target, tkind, u, u$1, u$2, u$3, v, x, xkind, $s, $r, $c} = $restore(this, {x, target}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = [check]; + x = [x]; + check[0] = this; + if ((x[0].mode === 0) || isTyped(x[0].typ) || $interfaceIsEqual(target, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + $s = -1; return [x[0].typ, $ifaceNil, 0]; + } + /* */ if (isUntyped(target)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (isUntyped(target)) { */ case 1: + xkind = $assertType(x[0].typ, ptrType$8).kind; + tkind = $assertType(target, ptrType$8).kind; + _r$1 = isNumeric(x[0].typ); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (!(_r$1)) { _v = false; $s = 6; continue s; } + _r$2 = isNumeric(target); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2; case 6: + /* */ if (_v) { $s = 3; continue; } + /* */ if (!((xkind === tkind))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 3: + if (xkind < tkind) { + $s = -1; return [target, $ifaceNil, 0]; + } + $s = 5; continue; + /* } else if (!((xkind === tkind))) { */ case 4: + $s = -1; return [$ifaceNil, $ifaceNil, 97]; + /* } */ case 5: + $s = -1; return [x[0].typ, $ifaceNil, 0]; + /* } */ case 2: + _r$3 = under(target); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _ref = _r$3; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1] || $assertType(_ref, ptrType$27, true)[1] || $assertType(_ref, ptrType$25, true)[1] || $assertType(_ref, ptrType$28, true)[1] || $assertType(_ref, ptrType$29, true)[1]) { $s = 12; continue; } + /* */ $s = 13; continue; + /* switch (0) { default: if ($assertType(_ref, ptrType$8, true)[1]) { */ case 10: + u = _ref.$val; + /* */ if (x[0].mode === 4) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (x[0].mode === 4) { */ case 15: + _r$4 = check[0].representation(x[0], u); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple = _r$4; + v = _tuple[0]; + code = _tuple[1]; + if (!((code === 0))) { + $s = -1; return [$ifaceNil, $ifaceNil, code]; + } + $s = -1; return [target, v, code]; + /* } */ case 16: + _1 = $assertType(x[0].typ, ptrType$8).kind; + /* */ if (_1 === (19)) { $s = 19; continue; } + /* */ if ((_1 === (20)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23))) { $s = 20; continue; } + /* */ if (_1 === (24)) { $s = 21; continue; } + /* */ if (_1 === (25)) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (_1 === (19)) { */ case 19: + _r$5 = isBoolean(target); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (!_r$5) { */ case 25: + $s = -1; return [$ifaceNil, $ifaceNil, 97]; + /* } */ case 26: + $s = 24; continue; + /* } else if ((_1 === (20)) || (_1 === (21)) || (_1 === (22)) || (_1 === (23))) { */ case 20: + _r$6 = isNumeric(target); /* */ $s = 30; case 30: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (!_r$6) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (!_r$6) { */ case 28: + $s = -1; return [$ifaceNil, $ifaceNil, 97]; + /* } */ case 29: + $s = 24; continue; + /* } else if (_1 === (24)) { */ case 21: + _r$7 = isString(target); /* */ $s = 33; case 33: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (!_r$7) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (!_r$7) { */ case 31: + $s = -1; return [$ifaceNil, $ifaceNil, 97]; + /* } */ case 32: + $s = 24; continue; + /* } else if (_1 === (25)) { */ case 22: + _r$8 = hasNil(target); /* */ $s = 36; case 36: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (!_r$8) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (!_r$8) { */ case 34: + $s = -1; return [$ifaceNil, $ifaceNil, 97]; + /* } */ case 35: + $s = -1; return [(25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25]), $ifaceNil, 0]; + /* } else { */ case 23: + $s = -1; return [$ifaceNil, $ifaceNil, 97]; + /* } */ case 24: + case 18: + $s = 14; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 11: + u$1 = _ref.$val; + /* */ if (isTypeParam(target)) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if (isTypeParam(target)) { */ case 37: + _r$9 = u$1.typeSet(); /* */ $s = 41; case 41: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$10 = _r$9.underIs((function(check, x) { return function Checker·implicitTypeAndValue·func1(u$4) { + var {_r$10, _tuple$1, t, u$4, $s, $r, $c} = $restore(this, {u$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(u$4, $ifaceNil)) { + $s = -1; return false; + } + _r$10 = check[0].implicitTypeAndValue(x[0], u$4); /* */ $s = 1; case 1: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$1 = _r$10; + t = _tuple$1[0]; + $s = -1; return !($interfaceIsEqual(t, $ifaceNil)); + /* */ } return; } var $f = {$blk: Checker·implicitTypeAndValue·func1, $c: true, $r, _r$10, _tuple$1, t, u$4, $s};return $f; + }; })(check, x)); /* */ $s = 42; case 42: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + /* */ if (!_r$10) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (!_r$10) { */ case 39: + $s = -1; return [$ifaceNil, $ifaceNil, 97]; + /* } */ case 40: + if (x[0].isNil()) { + $s = -1; return [(25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25]), $ifaceNil, 0]; + } + /* break; */ $s = 14; continue; + /* } */ case 38: + if (x[0].isNil()) { + $s = -1; return [(25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25]), $ifaceNil, 0]; + } + _r$11 = u$1.Empty(); /* */ $s = 45; case 45: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* */ if (!_r$11) { $s = 43; continue; } + /* */ $s = 44; continue; + /* if (!_r$11) { */ case 43: + $s = -1; return [$ifaceNil, $ifaceNil, 97]; + /* } */ case 44: + $s = -1; return [Default(x[0].typ), $ifaceNil, 0]; + /* } else if ($assertType(_ref, ptrType$26, true)[1] || $assertType(_ref, ptrType$27, true)[1] || $assertType(_ref, ptrType$25, true)[1] || $assertType(_ref, ptrType$28, true)[1] || $assertType(_ref, ptrType$29, true)[1]) { */ case 12: + u$2 = _ref; + if (!x[0].isNil()) { + $s = -1; return [$ifaceNil, $ifaceNil, 97]; + } + $s = -1; return [(25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25]), $ifaceNil, 0]; + /* } else { */ case 13: + u$3 = _ref; + $s = -1; return [$ifaceNil, $ifaceNil, 97]; + /* } } */ case 14: + $s = -1; return [target, $ifaceNil, 0]; + /* */ } return; } var $f = {$blk: implicitTypeAndValue, $c: true, $r, _1, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _v, check, code, target, tkind, u, u$1, u$2, u$3, v, x, xkind, $s};return $f; + }; + $ptrType(Checker).prototype.comparison = function comparison(x, y, op$1, switchCase) { + var {_1, _arg, _arg$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, cause, check, code, errOp, ok, op$1, switchCase, typ$4, x, y, $s, $r, $c} = $restore(this, {x, y, op$1, switchCase}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + if ($interfaceIsEqual(x.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])) || $interfaceIsEqual(y.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + x.mode = 0; + $s = -1; return; + } + if (switchCase) { + op$1 = 39; + } + errOp = x; + cause = ""; + code = 46; + _r$1 = x.assignableTo(check, y.typ, ptrType$34.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + ok = _tuple[0]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + _r$2 = y.assignableTo(check, x.typ, ptrType$34.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + ok = _tuple$1[0]; + /* } */ case 3: + /* */ if (!ok) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!ok) { */ case 5: + errOp = y; + _r$3 = check.sprintf("mismatched types %s and %s", new sliceType$6([x.typ, y.typ])); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + cause = _r$3; + /* goto Error */ $s = 8; continue; + /* } */ case 6: + code = 45; + _1 = op$1; + /* */ if ((_1 === (39)) || (_1 === (44))) { $s = 10; continue; } + /* */ if ((_1 === (40)) || (_1 === (45)) || (_1 === (41)) || (_1 === (46))) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if ((_1 === (39)) || (_1 === (44))) { */ case 10: + /* */ if (x.isNil() || y.isNil()) { $s = 15; continue; } + _r$4 = Comparable(x.typ); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 16; continue; } + _r$5 = Comparable(y.typ); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (x.isNil() || y.isNil()) { */ case 15: + typ$4 = x.typ; + if (x.isNil()) { + typ$4 = y.typ; + } + _r$6 = hasNil(typ$4); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (!_r$6) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!_r$6) { */ case 21: + errOp = y; + /* goto Error */ $s = 8; continue; + /* } */ case 22: + $s = 18; continue; + /* } else if (!_r$4) { */ case 16: + errOp = x; + _r$7 = check.incomparableCause(x.typ); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + cause = _r$7; + /* goto Error */ $s = 8; continue; + $s = 18; continue; + /* } else if (!_r$5) { */ case 17: + errOp = y; + _r$8 = check.incomparableCause(y.typ); /* */ $s = 25; case 25: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + cause = _r$8; + /* goto Error */ $s = 8; continue; + /* } */ case 18: + case 14: + $s = 13; continue; + /* } else if ((_1 === (40)) || (_1 === (45)) || (_1 === (41)) || (_1 === (46))) { */ case 11: + _r$9 = allOrdered(x.typ); /* */ $s = 30; case 30: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (!_r$9) { $s = 27; continue; } + _r$10 = allOrdered(y.typ); /* */ $s = 31; case 31: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + /* */ if (!_r$10) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (!_r$9) { */ case 27: + errOp = x; + /* goto Error */ $s = 8; continue; + $s = 29; continue; + /* } else if (!_r$10) { */ case 28: + errOp = y; + /* goto Error */ $s = 8; continue; + /* } */ case 29: + case 26: + $s = 13; continue; + /* } else { */ case 12: + unreachable(); + /* } */ case 13: + case 9: + /* */ if ((x.mode === 4) && (y.mode === 4)) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if ((x.mode === 4) && (y.mode === 4)) { */ case 32: + _r$11 = constant.Compare(x.val, op$1, y.val); /* */ $s = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$12 = constant.MakeBool(_r$11); /* */ $s = 36; case 36: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + x.val = _r$12; + $s = 34; continue; + /* } else { */ case 33: + x.mode = 7; + $r = check.updateExprType(x.expr, Default(x.typ), true); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.updateExprType(y.expr, Default(y.typ), true); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 34: + x.typ = (19 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 19]); + $s = -1; return; + /* Error: */ case 8: + /* */ if (cause === "") { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (cause === "") { */ case 39: + /* */ if (isTypeParam(x.typ) || isTypeParam(y.typ)) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if (isTypeParam(x.typ) || isTypeParam(y.typ)) { */ case 41: + if (!isTypeParam(x.typ)) { + errOp = y; + } + _r$13 = check.sprintf("type parameter %s is not comparable with %s", new sliceType$6([errOp.typ, new token.Token(op$1)])); /* */ $s = 44; case 44: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + cause = _r$13; + $s = 43; continue; + /* } else { */ case 42: + _arg = new token.Token(op$1); + _r$14 = check.kindString(errOp.typ); /* */ $s = 45; case 45: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$14); + _r$15 = check.sprintf("operator %s not defined on %s", new sliceType$6([_arg, _arg$1])); /* */ $s = 46; case 46: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + cause = _r$15; + /* } */ case 43: + /* } */ case 40: + /* */ if (switchCase) { $s = 47; continue; } + /* */ $s = 48; continue; + /* if (switchCase) { */ case 47: + $r = check.errorf(x, code, "invalid case %s in switch on %s (%s)", new sliceType$6([x.expr, y.expr, new $String(cause)])); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 49; continue; + /* } else { */ case 48: + $r = check.errorf(errOp, code, "invalid operation: %s %s %s (%s)", new sliceType$6([x.expr, new token.Token(op$1), y.expr, new $String(cause)])); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 49: + x.mode = 0; + $s = -1; return; + /* */ } return; } var $f = {$blk: comparison, $c: true, $r, _1, _arg, _arg$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, cause, check, code, errOp, ok, op$1, switchCase, typ$4, x, y, $s};return $f; + }; + $ptrType(Checker).prototype.incomparableCause = function incomparableCause(typ$4) { + var {$24r, _r$1, _r$2, _r$3, _ref, cause, check, typ$4, $s, $r, $c} = $restore(this, {typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + cause = [cause]; + check = [check]; + check[0] = this; + _r$1 = under(typ$4); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + /* */ if ($assertType(_ref, ptrType$25, true)[1] || $assertType(_ref, ptrType$27, true)[1] || $assertType(_ref, ptrType$28, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, ptrType$25, true)[1] || $assertType(_ref, ptrType$27, true)[1] || $assertType(_ref, ptrType$28, true)[1]) { */ case 2: + _r$2 = check[0].kindString(typ$4); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2 + " can only be compared to nil"; + $s = 5; case 5: return $24r; + /* } */ case 3: + cause[0] = ""; + _r$3 = comparable(typ$4, true, false, (function(cause, check) { return function Checker·incomparableCause·func1(format, args) { + var {_r$3, args, format, $s, $r, $c} = $restore(this, {format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$3 = check[0].sprintf(format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + cause[0] = _r$3; + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·incomparableCause·func1, $c: true, $r, _r$3, args, format, $s};return $f; + }; })(cause, check)); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + $s = -1; return cause[0]; + /* */ } return; } var $f = {$blk: incomparableCause, $c: true, $r, $24r, _r$1, _r$2, _r$3, _ref, cause, check, typ$4, $s};return $f; + }; + $ptrType(Checker).prototype.kindString = function kindString(typ$4) { + var {$24r, $24r$1, _r$1, _r$2, _r$3, _ref, check, typ$4, $s, $r, $c} = $restore(this, {typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = under(typ$4); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$29, true)[1]) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ($assertType(_ref, ptrType$10, true)[1]) { */ case 2: + $s = -1; return "array"; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 3: + $s = -1; return "slice"; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 4: + $s = -1; return "struct"; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 5: + $s = -1; return "pointer"; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 6: + $s = -1; return "func"; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 7: + /* */ if (isTypeParam(typ$4)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (isTypeParam(typ$4)) { */ case 12: + _r$2 = check.sprintf("type parameter %s", new sliceType$6([typ$4])); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 15; case 15: return $24r; + /* } */ case 13: + $s = -1; return "interface"; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 8: + $s = -1; return "map"; + /* } else if ($assertType(_ref, ptrType$29, true)[1]) { */ case 9: + $s = -1; return "chan"; + /* } else { */ case 10: + _r$3 = check.sprintf("%s", new sliceType$6([typ$4])); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = _r$3; + $s = 17; case 17: return $24r$1; + /* } */ case 11: + $s = -1; return ""; + /* */ } return; } var $f = {$blk: kindString, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, _ref, check, typ$4, $s};return $f; + }; + $ptrType(Checker).prototype.shift = function shift(x, y, e, op$1) { + var {_entry, _key, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _v, _v$1, _v$2, _v$3, b, check, e, found, info, ok, op$1, opPos, s, x, xval, y, yval, $s, $r, $c} = $restore(this, {x, y, e, op$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + xval = $ifaceNil; + /* */ if (x.mode === 4) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.mode === 4) { */ case 1: + _r$1 = constant.ToInt(x.val); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + xval = _r$1; + /* } */ case 2: + _r$2 = allInteger(x.typ); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + if (_r$2) { _v = true; $s = 7; continue s; } + if (!(isUntyped(x.typ) && !($interfaceIsEqual(xval, $ifaceNil)))) { _v$1 = false; $s = 9; continue s; } + _r$3 = xval.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v$1 = _r$3 === 3; case 9: + _v = _v$1; case 7: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + $s = 6; continue; + /* } else { */ case 5: + $r = check.errorf(x, 57, "invalid operation: shifted operand %s must be integer", new sliceType$6([x])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 6: + yval = $ifaceNil; + /* */ if (y.mode === 4) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (y.mode === 4) { */ case 12: + _r$4 = constant.ToInt(y.val); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + yval = _r$4; + _r$5 = yval.Kind(); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + if (!(_r$5 === 3)) { _v$2 = false; $s = 18; continue s; } + _r$6 = constant.Sign(yval); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$2 = _r$6 < 0; case 18: + /* */ if (_v$2) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_v$2) { */ case 16: + $r = check.errorf(y, 56, "invalid operation: negative shift count %s", new sliceType$6([y])); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 17: + /* */ if (isUntyped(y.typ)) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (isUntyped(y.typ)) { */ case 22: + $r = check.representable(y, (7 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 7])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (y.mode === 0) { + x.mode = 0; + $s = -1; return; + } + /* } */ case 23: + $s = 14; continue; + /* } else { */ case 13: + _r$7 = allInteger(y.typ); /* */ $s = 30; case 30: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (_r$7) { $s = 26; continue; } + /* */ if (isUntyped(y.typ)) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (_r$7) { */ case 26: + _r$8 = allUnsigned(y.typ); /* */ $s = 33; case 33: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (!_r$8 && !check.allowVersion(check.pkg, 1, 13)) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (!_r$8 && !check.allowVersion(check.pkg, 1, 13)) { */ case 31: + $r = check.errorf(y, 135, "invalid operation: signed shift count %s requires go1.13 or later", new sliceType$6([y])); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 32: + $s = 29; continue; + /* } else if (isUntyped(y.typ)) { */ case 27: + $r = check.convertUntyped(y, (7 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 7])); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (y.mode === 0) { + x.mode = 0; + $s = -1; return; + } + $s = 29; continue; + /* } else { */ case 28: + $r = check.errorf(y, 56, "invalid operation: shift count %s must be integer", new sliceType$6([y])); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 29: + case 25: + /* } */ case 14: + /* */ if (x.mode === 4) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if (x.mode === 4) { */ case 37: + /* */ if (y.mode === 4) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (y.mode === 4) { */ case 39: + _r$9 = x.val.Kind(); /* */ $s = 44; case 44: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + if (_r$9 === 0) { _v$3 = true; $s = 43; continue s; } + _r$10 = y.val.Kind(); /* */ $s = 45; case 45: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v$3 = _r$10 === 0; case 43: + /* */ if (_v$3) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if (_v$3) { */ case 41: + x.val = constant.MakeUnknown(); + _r$11 = isInteger(x.typ); /* */ $s = 48; case 48: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* */ if (!_r$11) { $s = 46; continue; } + /* */ $s = 47; continue; + /* if (!_r$11) { */ case 46: + x.typ = (20 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 20]); + /* } */ case 47: + $s = -1; return; + /* } */ case 42: + _r$12 = constant.Uint64Val(yval); /* */ $s = 49; case 49: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _tuple = _r$12; + s = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok || (s.$high > 0 || (s.$high === 0 && s.$low > 1074))) { $s = 50; continue; } + /* */ $s = 51; continue; + /* if (!ok || (s.$high > 0 || (s.$high === 0 && s.$low > 1074))) { */ case 50: + $r = check.errorf(y, 56, "invalid operation: invalid shift count %s", new sliceType$6([y])); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 51: + _r$13 = isInteger(x.typ); /* */ $s = 55; case 55: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + /* */ if (!_r$13) { $s = 53; continue; } + /* */ $s = 54; continue; + /* if (!_r$13) { */ case 53: + x.typ = (20 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 20]); + /* } */ case 54: + _r$14 = constant.Shift(xval, op$1, ((s.$low >>> 0))); /* */ $s = 56; case 56: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + x.val = _r$14; + x.expr = e; + _r$15 = x.Pos(); /* */ $s = 57; case 57: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + opPos = _r$15; + _tuple$1 = $assertType(e, ptrType$21, true); + b = _tuple$1[0]; + if (!(b === ptrType$21.nil)) { + opPos = b.OpPos; + } + $r = check.overflow(x, opPos); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 40: + if (isUntyped(x.typ)) { + _tuple$2 = (_entry = $mapIndex(check.untyped,ast.Expr.keyFor(x.expr)), _entry !== undefined ? [_entry.v, true] : [new exprInfo.ptr(false, 0, ptrType$8.nil, $ifaceNil), false]); + info = $clone(_tuple$2[0], exprInfo); + found = _tuple$2[1]; + if (found) { + info.isLhs = true; + _key = x.expr; (check.untyped || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(info, exprInfo) }); + } + x.mode = 7; + $s = -1; return; + } + /* } */ case 38: + _r$16 = allInteger(x.typ); /* */ $s = 61; case 61: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + /* */ if (!_r$16) { $s = 59; continue; } + /* */ $s = 60; continue; + /* if (!_r$16) { */ case 59: + $r = check.errorf(x, 57, "invalid operation: shifted operand %s must be integer", new sliceType$6([x])); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 60: + x.mode = 7; + $s = -1; return; + /* */ } return; } var $f = {$blk: shift, $c: true, $r, _entry, _key, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _v, _v$1, _v$2, _v$3, b, check, e, found, info, ok, op$1, opPos, s, x, xval, y, yval, $s};return $f; + }; + init$2 = function init$6() { + binaryOpPredicates = $makeMap(token.Token.keyFor, [{ k: 12, v: allNumericOrString }, { k: 13, v: allNumeric }, { k: 14, v: allNumeric }, { k: 15, v: allNumeric }, { k: 16, v: allInteger }, { k: 17, v: allInteger }, { k: 18, v: allInteger }, { k: 19, v: allInteger }, { k: 22, v: allInteger }, { k: 34, v: allBoolean }, { k: 35, v: allBoolean }]); + }; + $ptrType(Checker).prototype.binary = function binary(x, e, lhs, rhs, op$1, opPos) { + var {_r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, _v$4, _v$5, check, e, im, im2, lhs, mayConvert, op$1, opPos, posn, re, re2, rhs, x, y, $s, $r, $c} = $restore(this, {x, e, lhs, rhs, op$1, opPos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + y = [y]; + check = this; + y[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.expr(x, lhs); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.expr(y[0], rhs); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x.mode === 0) { + $s = -1; return; + } + if (y[0].mode === 0) { + x.mode = 0; + x.expr = y[0].expr; + $s = -1; return; + } + /* */ if (isShift(op$1)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (isShift(op$1)) { */ case 3: + $r = check.shift(x, y[0], e, op$1); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 4: + mayConvert = (function(y) { return function Checker·binary·func1(x$1, y$1) { + var {$24r, $24r$1, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, _v$1, x$1, y$1, $s, $r, $c} = $restore(this, {x$1, y$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (isTyped(x$1.typ) && isTyped(y$1.typ)) { + $s = -1; return false; + } + _r$1 = isNonTypeParamInterface(x$1.typ); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (_r$1) { _v = true; $s = 3; continue s; } + _r$2 = isNonTypeParamInterface(y$1.typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + $s = -1; return true; + /* } */ case 2: + _r$3 = allBoolean(x$1.typ); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = allBoolean(y$1.typ); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!(_r$3 === _r$4)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(_r$3 === _r$4)) { */ case 6: + $s = -1; return false; + /* } */ case 7: + _r$5 = allString(x$1.typ); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = allString(y$1.typ); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (!(_r$5 === _r$6)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!(_r$5 === _r$6)) { */ case 10: + $s = -1; return false; + /* } */ case 11: + /* */ if (x$1.isNil()) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (x$1.isNil()) { */ case 14: + _r$7 = hasNil(y$1.typ); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $24r = _r$7; + $s = 17; case 17: return $24r; + /* } */ case 15: + /* */ if (y$1.isNil()) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (y$1.isNil()) { */ case 18: + _r$8 = hasNil(x$1.typ); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $24r$1 = _r$8; + $s = 21; case 21: return $24r$1; + /* } */ case 19: + _r$9 = isPointer(x$1.typ); /* */ $s = 25; case 25: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + if (_r$9) { _v$1 = true; $s = 24; continue s; } + _r$10 = isPointer(y$1.typ); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v$1 = _r$10; case 24: + /* */ if (_v$1) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (_v$1) { */ case 22: + $s = -1; return false; + /* } */ case 23: + $s = -1; return true; + /* */ } return; } var $f = {$blk: Checker·binary·func1, $c: true, $r, $24r, $24r$1, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, _v$1, x$1, y$1, $s};return $f; + }; })(y); + _r$1 = mayConvert(x, y[0]); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$1) { */ case 6: + $r = check.convertUntyped(x, y[0].typ); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x.mode === 0) { + $s = -1; return; + } + $r = check.convertUntyped(y[0], x.typ); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (y[0].mode === 0) { + x.mode = 0; + $s = -1; return; + } + /* } */ case 7: + /* */ if (isComparison(op$1)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (isComparison(op$1)) { */ case 11: + $r = check.comparison(x, y[0], op$1, false); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 12: + _r$2 = Identical(x.typ, y[0].typ); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!_r$2) { */ case 14: + /* */ if (!($interfaceIsEqual(x.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) && !($interfaceIsEqual(y[0].typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (!($interfaceIsEqual(x.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) && !($interfaceIsEqual(y[0].typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { */ case 17: + posn = x; + if (!($interfaceIsEqual(e, $ifaceNil))) { + posn = e; + } + /* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 19: + $r = check.errorf(posn, 46, "invalid operation: %s (mismatched types %s and %s)", new sliceType$6([e, x.typ, y[0].typ])); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 21; continue; + /* } else { */ case 20: + $r = check.errorf(posn, 46, "invalid operation: %s %s= %s (mismatched types %s and %s)", new sliceType$6([lhs, new token.Token(op$1), rhs, x.typ, y[0].typ])); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 21: + /* } */ case 18: + x.mode = 0; + $s = -1; return; + /* } */ case 15: + _r$3 = check.op(binaryOpPredicates, x, op$1); /* */ $s = 26; case 26: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!_r$3) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!_r$3) { */ case 24: + x.mode = 0; + $s = -1; return; + /* } */ case 25: + /* */ if ((op$1 === 15) || (op$1 === 16)) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if ((op$1 === 15) || (op$1 === 16)) { */ case 27: + if (x.mode === 4) { _v$1 = true; $s = 32; continue s; } + _r$4 = allInteger(x.typ); /* */ $s = 33; case 33: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _v$1 = _r$4; case 32: + if (!((_v$1) && (y[0].mode === 4))) { _v = false; $s = 31; continue s; } + _r$5 = constant.Sign(y[0].val); /* */ $s = 34; case 34: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _v = _r$5 === 0; case 31: + /* */ if (_v) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (_v) { */ case 29: + $r = check.error(y[0], 47, "invalid operation: division by zero"); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 30: + if (!((x.mode === 4) && (y[0].mode === 4))) { _v$2 = false; $s = 38; continue s; } + _r$6 = isComplex(x.typ); /* */ $s = 39; case 39: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$2 = _r$6; case 38: + /* */ if (_v$2) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (_v$2) { */ case 36: + _r$7 = constant.Real(y[0].val); /* */ $s = 40; case 40: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tmp = _r$7; + _r$8 = constant.Imag(y[0].val); /* */ $s = 41; case 41: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tmp$1 = _r$8; + re = _tmp; + im = _tmp$1; + _r$9 = constant.BinaryOp(re, 14, re); /* */ $s = 42; case 42: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tmp$2 = _r$9; + _r$10 = constant.BinaryOp(im, 14, im); /* */ $s = 43; case 43: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tmp$3 = _r$10; + re2 = _tmp$2; + im2 = _tmp$3; + _r$11 = constant.Sign(re2); /* */ $s = 47; case 47: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + if (!(_r$11 === 0)) { _v$3 = false; $s = 46; continue s; } + _r$12 = constant.Sign(im2); /* */ $s = 48; case 48: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _v$3 = _r$12 === 0; case 46: + /* */ if (_v$3) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (_v$3) { */ case 44: + $r = check.error(y[0], 47, "invalid operation: division by zero"); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 45: + /* } */ case 37: + /* } */ case 28: + /* */ if ((x.mode === 4) && (y[0].mode === 4)) { $s = 50; continue; } + /* */ $s = 51; continue; + /* if ((x.mode === 4) && (y[0].mode === 4)) { */ case 50: + _r$13 = x.val.Kind(); /* */ $s = 55; case 55: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + if (_r$13 === 0) { _v$4 = true; $s = 54; continue s; } + _r$14 = y[0].val.Kind(); /* */ $s = 56; case 56: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _v$4 = _r$14 === 0; case 54: + /* */ if (_v$4) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if (_v$4) { */ case 52: + x.val = constant.MakeUnknown(); + $s = -1; return; + /* } */ case 53: + if (!(op$1 === 15)) { _v$5 = false; $s = 59; continue s; } + _r$15 = isInteger(x.typ); /* */ $s = 60; case 60: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _v$5 = _r$15; case 59: + /* */ if (_v$5) { $s = 57; continue; } + /* */ $s = 58; continue; + /* if (_v$5) { */ case 57: + op$1 = 26; + /* } */ case 58: + _r$16 = constant.BinaryOp(x.val, op$1, y[0].val); /* */ $s = 61; case 61: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + x.val = _r$16; + x.expr = e; + $r = check.overflow(x, opPos); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 51: + x.mode = 7; + $s = -1; return; + /* */ } return; } var $f = {$blk: binary, $c: true, $r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, _v$4, _v$5, check, e, im, im2, lhs, mayConvert, op$1, opPos, posn, re, re2, rhs, x, y, $s};return $f; + }; + $ptrType(Checker).prototype.rawExpr = function rawExpr(x, e, hint, allowGeneric) { + var {$24r, _r$1, _r$2, allowGeneric, check, e, hint, kind, x, $s, $deferred, $r, $c} = $restore(this, {x, e, hint, allowGeneric}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + e = [e]; + x = [x]; + check[0] = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + _r$1 = e[0].Pos(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = check[0].trace(_r$1, "-- expr %s", new sliceType$6([e[0]])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].indent = check[0].indent + (1) >> 0; + $deferred.push([(function(check, e, x) { return function Checker·rawExpr·func1() { + var {_r$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check[0].indent = check[0].indent - (1) >> 0; + _r$2 = e[0].Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = check[0].trace(_r$2, "=> %s", new sliceType$6([x[0]])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·rawExpr·func1, $c: true, $r, _r$2, $s};return $f; + }; })(check, e, x), []]); + /* } */ case 2: + _r$2 = check[0].exprInternal(x[0], e[0], hint); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + kind = _r$2; + /* */ if (!allowGeneric) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!allowGeneric) { */ case 6: + $r = check[0].nonGeneric(x[0]); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + $r = check[0].record(x[0]); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r = kind; + $s = 10; case 10: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: rawExpr, $c: true, $r, $24r, _r$1, _r$2, allowGeneric, check, e, hint, kind, x, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.nonGeneric = function nonGeneric(x) { + var {_r$1, _ref, check, t, t$1, what, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + if ((x.mode === 0) || (x.mode === 1)) { + $s = -1; return; + } + what = ""; + _ref = x.typ; + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, ptrType$9, true)[1]) { */ case 1: + t = _ref.$val; + _r$1 = isGeneric(t); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$1) { */ case 4: + what = "type"; + /* } */ case 5: + $s = 3; continue; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 2: + t$1 = _ref.$val; + if (!(t$1.tparams === ptrType$48.nil)) { + what = "function"; + } + /* } */ case 3: + /* */ if (!(what === "")) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(what === "")) { */ case 7: + $r = check.errorf(x.expr, 137, "cannot use generic %s %s without instantiation", new sliceType$6([new $String(what), x.expr])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + x.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 8: + $s = -1; return; + /* */ } return; } var $f = {$blk: nonGeneric, $c: true, $r, _r$1, _ref, check, t, t$1, what, x, $s};return $f; + }; + $ptrType(Checker).prototype.exprInternal = function exprInternal(x, e, hint) { + var {$24r, T, _1, _2, _arg, _arg$1, _entry, _entry$1, _entry$2, _i, _i$1, _i$2, _i$3, _i$4, _key, _key$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atyp, base, base$1, check, decl$1, duplicate, e, e$1, e$10, e$11, e$12, e$13, e$14, e$15, e$16, e$17, e$18, e$19, e$2, e$20, e$21, e$22, e$3, e$4, e$5, e$6, e$7, e$8, e$9, ellip, etyp, etyp$1, fields, fld, fld$1, hint, i, i$1, iota, ix, key, keyIsInterface, kind, kv, kv$1, kv$2, kv$3, n, ok, ok$1, ok$2, sig, typ$4, utyp, utyp$1, utyp$2, utyp$3, utyp$4, visited, visited$1, vtyp, x, x$1, x$2, x$3, x$4, x$5, xkey, $s, $r, $c} = $restore(this, {x, e, hint}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + base = [base]; + check = [check]; + decl$1 = [decl$1]; + e$1 = [e$1]; + iota = [iota]; + sig = [sig]; + x = [x]; + check[0] = this; + x[0].mode = 0; + x[0].typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + _ref = e; + /* */ if ($assertType(_ref, ptrType$35, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$30, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$57, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$98, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$99, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$39, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$36, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$37, true)[1] || $assertType(_ref, ptrType$38, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$100, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$82, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$86, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$43, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, ptrType$97, true)[1]) { $s = 16; continue; } + /* */ if ($assertType(_ref, ptrType$40, true)[1] || $assertType(_ref, ptrType$42, true)[1] || $assertType(_ref, ptrType$44, true)[1] || $assertType(_ref, ptrType$45, true)[1] || $assertType(_ref, ptrType$46, true)[1] || $assertType(_ref, ptrType$47, true)[1]) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if ($assertType(_ref, ptrType$35, true)[1]) { */ case 1: + e$2 = _ref.$val; + /* goto Error */ $s = 20; continue; + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$30, true)[1]) { */ case 2: + e$3 = _ref.$val; + $r = check[0].ident(x[0], e$3, ptrType$9.nil, false); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$41, true)[1]) { */ case 3: + e$4 = _ref.$val; + $r = check[0].error(e$4, 77, "invalid use of '...'"); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$57, true)[1]) { */ case 4: + e$5 = _ref.$val; + _1 = e$5.Kind; + /* */ if ((_1 === (5)) || (_1 === (6)) || (_1 === (7))) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if ((_1 === (5)) || (_1 === (6)) || (_1 === (7))) { */ case 24: + $r = check[0].langCompat(e$5); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (e$5.Value.length > 10000) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (e$5.Value.length > 10000) { */ case 27: + $r = check[0].errorf(e$5, 14, "excessively long constant: %s... (%d chars)", new sliceType$6([new $String($substring(e$5.Value, 0, 10)), new $Int(e$5.Value.length)])); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 28: + /* } */ case 25: + case 23: + $r = x[0].setConst(e$5.Kind, e$5.Value); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (x[0].mode === 0) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (x[0].mode === 0) { */ case 31: + $r = check[0].errorf(e$5, 14, "malformed constant: %s", new sliceType$6([new $String(e$5.Value)])); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 32: + $r = check[0].overflow(x[0], e$5.Pos()); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$98, true)[1]) { */ case 5: + e$1[0] = _ref.$val; + _r$1 = check[0].typ(e$1[0].Type); /* */ $s = 35; case 35: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$27, true); + sig[0] = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (ok) { */ case 36: + if (!check[0].conf.IgnoreFuncBodies && !(e$1[0].Body === ptrType$74.nil)) { + decl$1[0] = check[0].environment.decl; + iota[0] = check[0].environment.iota; + check[0].later((function(base, check, decl$1, e$1, iota, sig, x) { return function Checker·exprInternal·func1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = check[0].funcBody(decl$1[0], "", sig[0], e$1[0].Body, iota[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·exprInternal·func1, $c: true, $r, $s};return $f; + }; })(base, check, decl$1, e$1, iota, sig, x)).describef(e$1[0], "func literal", sliceType$6.nil); + } + x[0].mode = 7; + x[0].typ = sig[0]; + $s = 38; continue; + /* } else { */ case 37: + $r = check[0].errorf(e$1[0], -1, "invalid function literal %s", new sliceType$6([e$1[0]])); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 38: + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$99, true)[1]) { */ case 6: + e$6 = _ref.$val; + _tmp = $ifaceNil; + _tmp$1 = $ifaceNil; + typ$4 = _tmp; + base$1 = _tmp$1; + /* */ if (!($interfaceIsEqual(e$6.Type, $ifaceNil))) { $s = 41; continue; } + /* */ if (!($interfaceIsEqual(hint, $ifaceNil))) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (!($interfaceIsEqual(e$6.Type, $ifaceNil))) { */ case 41: + _tuple$1 = $assertType(e$6.Type, ptrType$40, true); + atyp = _tuple$1[0]; + /* */ if (!(atyp === ptrType$40.nil) && !($interfaceIsEqual(atyp.Len, $ifaceNil))) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if (!(atyp === ptrType$40.nil) && !($interfaceIsEqual(atyp.Len, $ifaceNil))) { */ case 45: + _tuple$2 = $assertType(atyp.Len, ptrType$41, true); + ellip = _tuple$2[0]; + /* */ if (!(ellip === ptrType$41.nil) && $interfaceIsEqual(ellip.Elt, $ifaceNil)) { $s = 47; continue; } + /* */ $s = 48; continue; + /* if (!(ellip === ptrType$41.nil) && $interfaceIsEqual(ellip.Elt, $ifaceNil)) { */ case 47: + _r$2 = check[0].varType(atyp.Elt); /* */ $s = 49; case 49: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + typ$4 = new Array.ptr(new $Int64(-1, 4294967295), _r$2); + base$1 = typ$4; + /* break; */ $s = 40; continue; + /* } */ case 48: + /* } */ case 46: + _r$3 = check[0].typ(e$6.Type); /* */ $s = 50; case 50: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + typ$4 = _r$3; + base$1 = typ$4; + $s = 44; continue; + /* } else if (!($interfaceIsEqual(hint, $ifaceNil))) { */ case 42: + typ$4 = hint; + _r$4 = coreType(typ$4); /* */ $s = 51; case 51: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = deref(_r$4); /* */ $s = 52; case 52: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$3 = _r$5; + base$1 = _tuple$3[0]; + /* */ if ($interfaceIsEqual(base$1, $ifaceNil)) { $s = 53; continue; } + /* */ $s = 54; continue; + /* if ($interfaceIsEqual(base$1, $ifaceNil)) { */ case 53: + $r = check[0].errorf(e$6, 71, "invalid composite literal element type %s (no core type)", new sliceType$6([typ$4])); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 54: + $s = 44; continue; + /* } else { */ case 43: + $r = check[0].error(e$6, 70, "missing type in composite literal"); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 44: + case 40: + _r$6 = coreType(base$1); /* */ $s = 57; case 57: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _ref$1 = _r$6; + /* */ if ($assertType(_ref$1, ptrType$11, true)[1]) { $s = 58; continue; } + /* */ if ($assertType(_ref$1, ptrType$10, true)[1]) { $s = 59; continue; } + /* */ if ($assertType(_ref$1, ptrType$25, true)[1]) { $s = 60; continue; } + /* */ if ($assertType(_ref$1, ptrType$28, true)[1]) { $s = 61; continue; } + /* */ $s = 62; continue; + /* switch (0) { default: if ($assertType(_ref$1, ptrType$11, true)[1]) { */ case 58: + utyp = _ref$1.$val; + /* */ if (utyp.fields === sliceType$10.nil) { $s = 64; continue; } + /* */ $s = 65; continue; + /* if (utyp.fields === sliceType$10.nil) { */ case 64: + $r = check[0].error(e$6, 12, "invalid recursive type"); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 65: + if (e$6.Elts.$length === 0) { + /* break; */ $s = 63; continue; + } + fields = utyp.fields; + _tuple$4 = $assertType((x$1 = e$6.Elts, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])), ptrType$97, true); + ok$1 = _tuple$4[1]; + /* */ if (ok$1) { $s = 67; continue; } + /* */ $s = 68; continue; + /* if (ok$1) { */ case 67: + visited = $makeSlice(sliceType$15, fields.$length); + _ref$2 = e$6.Elts; + _i = 0; + /* while (true) { */ case 70: + /* if (!(_i < _ref$2.$length)) { break; } */ if(!(_i < _ref$2.$length)) { $s = 71; continue; } + e$19 = ((_i < 0 || _i >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i]); + _tuple$5 = $assertType(e$19, ptrType$97, true); + kv = _tuple$5[0]; + /* */ if (kv === ptrType$97.nil) { $s = 72; continue; } + /* */ $s = 73; continue; + /* if (kv === ptrType$97.nil) { */ case 72: + $r = check[0].error(e$19, 64, "mixture of field:value and value elements in struct literal"); /* */ $s = 74; case 74: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue; */ $s = 70; continue; + /* } */ case 73: + _tuple$6 = $assertType(kv.Key, ptrType$30, true); + key = _tuple$6[0]; + $r = check[0].expr(x[0], kv.Value); /* */ $s = 75; case 75: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (key === ptrType$30.nil) { $s = 76; continue; } + /* */ $s = 77; continue; + /* if (key === ptrType$30.nil) { */ case 76: + $r = check[0].errorf(kv, 69, "invalid field name %s in struct literal", new sliceType$6([kv.Key])); /* */ $s = 78; case 78: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue; */ $s = 70; continue; + /* } */ case 77: + i = fieldIndex(utyp.fields, check[0].pkg, key.Name); + /* */ if (i < 0) { $s = 79; continue; } + /* */ $s = 80; continue; + /* if (i < 0) { */ case 79: + $r = check[0].errorf(kv, 66, "unknown field %s in struct literal of type %s", new sliceType$6([new $String(key.Name), base$1])); /* */ $s = 81; case 81: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue; */ $s = 70; continue; + /* } */ case 80: + fld = ((i < 0 || i >= fields.$length) ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + i]); + $r = check[0].recordUse(key, fld); /* */ $s = 82; case 82: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + etyp = fld.object.typ; + $r = check[0].assignment(x[0], etyp, "struct literal"); /* */ $s = 83; case 83: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (((i < 0 || i >= visited.$length) ? ($throwRuntimeError("index out of range"), undefined) : visited.$array[visited.$offset + i])) { $s = 84; continue; } + /* */ $s = 85; continue; + /* if (((i < 0 || i >= visited.$length) ? ($throwRuntimeError("index out of range"), undefined) : visited.$array[visited.$offset + i])) { */ case 84: + $r = check[0].errorf(kv, 67, "duplicate field name %s in struct literal", new sliceType$6([new $String(key.Name)])); /* */ $s = 86; case 86: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue; */ $s = 70; continue; + /* } */ case 85: + ((i < 0 || i >= visited.$length) ? ($throwRuntimeError("index out of range"), undefined) : visited.$array[visited.$offset + i] = true); + _i++; + $s = 70; continue; + case 71: + $s = 69; continue; + /* } else { */ case 68: + _ref$3 = e$6.Elts; + _i$1 = 0; + /* while (true) { */ case 87: + /* if (!(_i$1 < _ref$3.$length)) { break; } */ if(!(_i$1 < _ref$3.$length)) { $s = 88; continue; } + i$1 = _i$1; + e$20 = ((_i$1 < 0 || _i$1 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$1]); + _tuple$7 = $assertType(e$20, ptrType$97, true); + kv$1 = _tuple$7[0]; + /* */ if (!(kv$1 === ptrType$97.nil)) { $s = 89; continue; } + /* */ $s = 90; continue; + /* if (!(kv$1 === ptrType$97.nil)) { */ case 89: + $r = check[0].error(kv$1, 64, "mixture of field:value and value elements in struct literal"); /* */ $s = 91; case 91: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + /* continue; */ $s = 87; continue; + /* } */ case 90: + $r = check[0].expr(x[0], e$20); /* */ $s = 92; case 92: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (i$1 >= fields.$length) { $s = 93; continue; } + /* */ $s = 94; continue; + /* if (i$1 >= fields.$length) { */ case 93: + $r = check[0].errorf(x[0], 65, "too many values in struct literal of type %s", new sliceType$6([base$1])); /* */ $s = 95; case 95: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 88; continue; + /* } */ case 94: + fld$1 = ((i$1 < 0 || i$1 >= fields.$length) ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + i$1]); + /* */ if (!fld$1.object.Exported() && !(fld$1.object.pkg === check[0].pkg)) { $s = 96; continue; } + /* */ $s = 97; continue; + /* if (!fld$1.object.Exported() && !(fld$1.object.pkg === check[0].pkg)) { */ case 96: + $r = check[0].errorf(x[0], 68, "implicit assignment to unexported field %s in struct literal of type %s", new sliceType$6([new $String(fld$1.object.name), base$1])); /* */ $s = 98; case 98: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + /* continue; */ $s = 87; continue; + /* } */ case 97: + etyp$1 = fld$1.object.typ; + $r = check[0].assignment(x[0], etyp$1, "struct literal"); /* */ $s = 99; case 99: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 87; continue; + case 88: + /* */ if (e$6.Elts.$length < fields.$length) { $s = 100; continue; } + /* */ $s = 101; continue; + /* if (e$6.Elts.$length < fields.$length) { */ case 100: + _r$7 = inNode(e$6, e$6.Rbrace); /* */ $s = 102; case 102: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $r = check[0].errorf((x$2 = _r$7, new x$2.constructor.elem(x$2)), 65, "too few values in struct literal of type %s", new sliceType$6([base$1])); /* */ $s = 103; case 103: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 101: + /* } */ case 69: + $s = 63; continue; + /* } else if ($assertType(_ref$1, ptrType$10, true)[1]) { */ case 59: + utyp$1 = _ref$1.$val; + /* */ if ($interfaceIsEqual(utyp$1.elem, $ifaceNil)) { $s = 104; continue; } + /* */ $s = 105; continue; + /* if ($interfaceIsEqual(utyp$1.elem, $ifaceNil)) { */ case 104: + $r = check[0].error(e$6, 12, "invalid recursive type"); /* */ $s = 106; case 106: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 105: + _r$8 = check[0].indexedElts(e$6.Elts, utyp$1.elem, utyp$1.len); /* */ $s = 107; case 107: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + n = _r$8; + /* */ if ((x$3 = utyp$1.len, (x$3.$high < 0 || (x$3.$high === 0 && x$3.$low < 0)))) { $s = 108; continue; } + /* */ $s = 109; continue; + /* if ((x$3 = utyp$1.len, (x$3.$high < 0 || (x$3.$high === 0 && x$3.$low < 0)))) { */ case 108: + utyp$1.len = n; + /* */ if (!($interfaceIsEqual(e$6.Type, $ifaceNil))) { $s = 110; continue; } + /* */ $s = 111; continue; + /* if (!($interfaceIsEqual(e$6.Type, $ifaceNil))) { */ case 110: + $r = check[0].recordTypeAndValue(e$6.Type, 3, utyp$1, $ifaceNil); /* */ $s = 112; case 112: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 111: + /* } */ case 109: + $s = 63; continue; + /* } else if ($assertType(_ref$1, ptrType$25, true)[1]) { */ case 60: + utyp$2 = _ref$1.$val; + /* */ if ($interfaceIsEqual(utyp$2.elem, $ifaceNil)) { $s = 113; continue; } + /* */ $s = 114; continue; + /* if ($interfaceIsEqual(utyp$2.elem, $ifaceNil)) { */ case 113: + $r = check[0].error(e$6, 12, "invalid recursive type"); /* */ $s = 115; case 115: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 114: + _r$9 = check[0].indexedElts(e$6.Elts, utyp$2.elem, new $Int64(-1, 4294967295)); /* */ $s = 116; case 116: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$9; + $s = 63; continue; + /* } else if ($assertType(_ref$1, ptrType$28, true)[1]) { */ case 61: + utyp$3 = _ref$1.$val; + /* */ if ($interfaceIsEqual(utyp$3.key, $ifaceNil) || $interfaceIsEqual(utyp$3.elem, $ifaceNil)) { $s = 117; continue; } + /* */ $s = 118; continue; + /* if ($interfaceIsEqual(utyp$3.key, $ifaceNil) || $interfaceIsEqual(utyp$3.elem, $ifaceNil)) { */ case 117: + $r = check[0].error(e$6, 12, "invalid recursive type"); /* */ $s = 119; case 119: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 118: + _r$10 = isNonTypeParamInterface(utyp$3.key); /* */ $s = 120; case 120: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + keyIsInterface = _r$10; + visited$1 = (x$4 = e$6.Elts.$length, ((x$4 < 0 || x$4 > 2147483647) ? $throwRuntimeError("makemap: size out of range") : new $global.Map())); + _ref$4 = e$6.Elts; + _i$2 = 0; + /* while (true) { */ case 121: + /* if (!(_i$2 < _ref$4.$length)) { break; } */ if(!(_i$2 < _ref$4.$length)) { $s = 122; continue; } + e$21 = ((_i$2 < 0 || _i$2 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$2]); + _tuple$8 = $assertType(e$21, ptrType$97, true); + kv$2 = _tuple$8[0]; + /* */ if (kv$2 === ptrType$97.nil) { $s = 123; continue; } + /* */ $s = 124; continue; + /* if (kv$2 === ptrType$97.nil) { */ case 123: + $r = check[0].error(e$21, 61, "missing key in map literal"); /* */ $s = 125; case 125: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + /* continue; */ $s = 121; continue; + /* } */ case 124: + $r = check[0].exprWithHint(x[0], kv$2.Key, utyp$3.key); /* */ $s = 126; case 126: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].assignment(x[0], utyp$3.key, "map literal"); /* */ $s = 127; case 127: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + _i$2++; + /* continue; */ $s = 121; continue; + } + /* */ if (x[0].mode === 4) { $s = 128; continue; } + /* */ $s = 129; continue; + /* if (x[0].mode === 4) { */ case 128: + duplicate = false; + _r$11 = keyVal(x[0].val); /* */ $s = 130; case 130: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + xkey = _r$11; + /* */ if (keyIsInterface) { $s = 131; continue; } + /* */ $s = 132; continue; + /* if (keyIsInterface) { */ case 131: + _ref$5 = (_entry = $mapIndex(visited$1,$emptyInterface.keyFor(xkey)), _entry !== undefined ? _entry.v : sliceType$2.nil); + _i$3 = 0; + /* while (true) { */ case 134: + /* if (!(_i$3 < _ref$5.$length)) { break; } */ if(!(_i$3 < _ref$5.$length)) { $s = 135; continue; } + vtyp = ((_i$3 < 0 || _i$3 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$3]); + _r$12 = Identical(vtyp, x[0].typ); /* */ $s = 138; case 138: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + /* */ if (_r$12) { $s = 136; continue; } + /* */ $s = 137; continue; + /* if (_r$12) { */ case 136: + duplicate = true; + /* break; */ $s = 135; continue; + /* } */ case 137: + _i$3++; + $s = 134; continue; + case 135: + _key = xkey; (visited$1 || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key), { k: _key, v: $append((_entry$1 = $mapIndex(visited$1,$emptyInterface.keyFor(xkey)), _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil), x[0].typ) }); + $s = 133; continue; + /* } else { */ case 132: + _tuple$9 = (_entry$2 = $mapIndex(visited$1,$emptyInterface.keyFor(xkey)), _entry$2 !== undefined ? [_entry$2.v, true] : [sliceType$2.nil, false]); + duplicate = _tuple$9[1]; + _key$1 = xkey; (visited$1 || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key$1), { k: _key$1, v: sliceType$2.nil }); + /* } */ case 133: + /* */ if (duplicate) { $s = 139; continue; } + /* */ $s = 140; continue; + /* if (duplicate) { */ case 139: + $r = check[0].errorf(x[0], 60, "duplicate key %s in map literal", new sliceType$6([x[0].val])); /* */ $s = 141; case 141: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + /* continue; */ $s = 121; continue; + /* } */ case 140: + /* } */ case 129: + $r = check[0].exprWithHint(x[0], kv$2.Value, utyp$3.elem); /* */ $s = 142; case 142: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].assignment(x[0], utyp$3.elem, "map literal"); /* */ $s = 143; case 143: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + $s = 121; continue; + case 122: + $s = 63; continue; + /* } else { */ case 62: + utyp$4 = _ref$1; + _ref$6 = e$6.Elts; + _i$4 = 0; + /* while (true) { */ case 144: + /* if (!(_i$4 < _ref$6.$length)) { break; } */ if(!(_i$4 < _ref$6.$length)) { $s = 145; continue; } + e$22 = ((_i$4 < 0 || _i$4 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$4]); + _tuple$10 = $assertType(e$22, ptrType$97, true); + kv$3 = _tuple$10[0]; + if (!(kv$3 === ptrType$97.nil)) { + e$22 = kv$3.Value; + } + $r = check[0].use(new sliceType$11([e$22])); /* */ $s = 146; case 146: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$4++; + $s = 144; continue; + case 145: + /* */ if (!($interfaceIsEqual(utyp$4, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { $s = 147; continue; } + /* */ $s = 148; continue; + /* if (!($interfaceIsEqual(utyp$4, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { */ case 147: + $r = check[0].errorf(e$6, 71, "invalid composite literal type %s", new sliceType$6([typ$4])); /* */ $s = 149; case 149: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 148: + /* } } */ case 63: + x[0].mode = 7; + x[0].typ = typ$4; + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$39, true)[1]) { */ case 7: + e$7 = _ref.$val; + _r$13 = check[0].rawExpr(x[0], e$7.X, $ifaceNil, false); /* */ $s = 150; case 150: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + kind = _r$13; + x[0].expr = e$7; + $s = -1; return kind; + /* } else if ($assertType(_ref, ptrType$36, true)[1]) { */ case 8: + e$8 = _ref.$val; + $r = check[0].selector(x[0], e$8, ptrType$9.nil, false); /* */ $s = 151; case 151: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$37, true)[1] || $assertType(_ref, ptrType$38, true)[1]) { */ case 9: + e$9 = _ref; + ix = typeparams.UnpackIndexExpr(e$9); + _r$14 = check[0].indexExpr(x[0], ix); /* */ $s = 154; case 154: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + /* */ if (_r$14) { $s = 152; continue; } + /* */ $s = 153; continue; + /* if (_r$14) { */ case 152: + $r = check[0].funcInst(x[0], ix); /* */ $s = 155; case 155: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 153: + /* */ if (x[0].mode === 0) { $s = 156; continue; } + /* */ $s = 157; continue; + /* if (x[0].mode === 0) { */ case 156: + /* goto Error */ $s = 20; continue; + /* } */ case 157: + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$100, true)[1]) { */ case 10: + e$10 = _ref.$val; + $r = check[0].sliceExpr(x[0], e$10); /* */ $s = 158; case 158: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (x[0].mode === 0) { $s = 159; continue; } + /* */ $s = 160; continue; + /* if (x[0].mode === 0) { */ case 159: + /* goto Error */ $s = 20; continue; + /* } */ case 160: + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$82, true)[1]) { */ case 11: + e$11 = _ref.$val; + $r = check[0].expr(x[0], e$11.X); /* */ $s = 161; case 161: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (x[0].mode === 0) { $s = 162; continue; } + /* */ $s = 163; continue; + /* if (x[0].mode === 0) { */ case 162: + /* goto Error */ $s = 20; continue; + /* } */ case 163: + /* */ if (isTypeParam(x[0].typ)) { $s = 164; continue; } + /* */ $s = 165; continue; + /* if (isTypeParam(x[0].typ)) { */ case 164: + $r = check[0].errorf(x[0], 94, "invalid operation: cannot use type assertion on type parameter value %s", new sliceType$6([x[0]])); /* */ $s = 166; case 166: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 165: + _r$15 = under(x[0].typ); /* */ $s = 167; case 167: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _tuple$11 = $assertType(_r$15, ptrType$13, true); + ok$2 = _tuple$11[1]; + /* */ if (!ok$2) { $s = 168; continue; } + /* */ $s = 169; continue; + /* if (!ok$2) { */ case 168: + $r = check[0].errorf(x[0], 94, "invalid operation: %s is not an interface", new sliceType$6([x[0]])); /* */ $s = 170; case 170: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 169: + /* */ if ($interfaceIsEqual(e$11.Type, $ifaceNil)) { $s = 171; continue; } + /* */ $s = 172; continue; + /* if ($interfaceIsEqual(e$11.Type, $ifaceNil)) { */ case 171: + $r = check[0].error(e$11, 115, "use of .(type) outside type switch"); /* */ $s = 173; case 173: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + /* } */ case 172: + _r$16 = check[0].varType(e$11.Type); /* */ $s = 174; case 174: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + T = _r$16; + /* */ if ($interfaceIsEqual(T, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { $s = 175; continue; } + /* */ $s = 176; continue; + /* if ($interfaceIsEqual(T, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { */ case 175: + /* goto Error */ $s = 20; continue; + /* } */ case 176: + $r = check[0].typeAssertion(e$11, x[0], T, false); /* */ $s = 177; case 177: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x[0].mode = 8; + x[0].typ = T; + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$86, true)[1]) { */ case 12: + e$12 = _ref.$val; + _r$17 = check[0].callExpr(x[0], e$12); /* */ $s = 178; case 178: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + $24r = _r$17; + $s = 179; case 179: return $24r; + /* } else if ($assertType(_ref, ptrType$43, true)[1]) { */ case 13: + e$13 = _ref.$val; + $r = check[0].exprOrType(x[0], e$13.X, false); /* */ $s = 180; case 180: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _2 = x[0].mode; + /* */ if (_2 === (0)) { $s = 182; continue; } + /* */ if (_2 === (3)) { $s = 183; continue; } + /* */ $s = 184; continue; + /* if (_2 === (0)) { */ case 182: + /* goto Error */ $s = 20; continue; + $s = 185; continue; + /* } else if (_2 === (3)) { */ case 183: + check[0].validVarType(e$13.X, x[0].typ); + x[0].typ = new Pointer.ptr(x[0].typ); + $s = 185; continue; + /* } else { */ case 184: + base[0] = $ifaceNil; + _r$18 = underIs(x[0].typ, (function(base, check, decl$1, e$1, iota, sig, x) { return function Checker·exprInternal·func2(u) { + var {_r$18, _tuple$12, _v, p, u, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple$12 = $assertType(u, ptrType$26, true); + p = _tuple$12[0]; + /* */ if (p === ptrType$26.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p === ptrType$26.nil) { */ case 1: + $r = check[0].errorf(x[0], 50, "invalid operation: cannot indirect %s", new sliceType$6([x[0]])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 2: + if (!(!($interfaceIsEqual(base[0], $ifaceNil)))) { _v = false; $s = 6; continue s; } + _r$18 = Identical(p.base, base[0]); /* */ $s = 7; case 7: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _v = !_r$18; case 6: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + $r = check[0].errorf(x[0], 50, "invalid operation: pointers of %s must have identical base types", new sliceType$6([x[0]])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 5: + base[0] = p.base; + $s = -1; return true; + /* */ } return; } var $f = {$blk: Checker·exprInternal·func2, $c: true, $r, _r$18, _tuple$12, _v, p, u, $s};return $f; + }; })(base, check, decl$1, e$1, iota, sig, x)); /* */ $s = 188; case 188: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + /* */ if (!_r$18) { $s = 186; continue; } + /* */ $s = 187; continue; + /* if (!_r$18) { */ case 186: + /* goto Error */ $s = 20; continue; + /* } */ case 187: + x[0].mode = 5; + x[0].typ = base[0]; + /* } */ case 185: + case 181: + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$20, true)[1]) { */ case 14: + e$14 = _ref.$val; + $r = check[0].unary(x[0], e$14); /* */ $s = 189; case 189: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (x[0].mode === 0) { $s = 190; continue; } + /* */ $s = 191; continue; + /* if (x[0].mode === 0) { */ case 190: + /* goto Error */ $s = 20; continue; + /* } */ case 191: + if (e$14.Op === 36) { + x[0].expr = e$14; + $s = -1; return 2; + } + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 15: + e$15 = _ref.$val; + $r = check[0].binary(x[0], e$15, e$15.X, e$15.Y, e$15.Op, e$15.OpPos); /* */ $s = 192; case 192: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (x[0].mode === 0) { $s = 193; continue; } + /* */ $s = 194; continue; + /* if (x[0].mode === 0) { */ case 193: + /* goto Error */ $s = 20; continue; + /* } */ case 194: + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$97, true)[1]) { */ case 16: + e$16 = _ref.$val; + $r = check[0].error(e$16, -1, "no key:value expected"); /* */ $s = 195; case 195: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 20; continue; + $s = 19; continue; + /* } else if ($assertType(_ref, ptrType$40, true)[1] || $assertType(_ref, ptrType$42, true)[1] || $assertType(_ref, ptrType$44, true)[1] || $assertType(_ref, ptrType$45, true)[1] || $assertType(_ref, ptrType$46, true)[1] || $assertType(_ref, ptrType$47, true)[1]) { */ case 17: + e$17 = _ref; + x[0].mode = 3; + _r$19 = check[0].typ(e$17); /* */ $s = 196; case 196: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + x[0].typ = _r$19; + $s = 19; continue; + /* } else { */ case 18: + e$18 = _ref; + _r$20 = e$18.Pos(); /* */ $s = 197; case 197: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _r$21 = check[0].fset.Position(_r$20); /* */ $s = 198; case 198: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + _arg = (x$5 = _r$21, new x$5.constructor.elem(x$5)); + _arg$1 = e$18; + _r$22 = fmt.Sprintf("%s: unknown expression type %T", new sliceType$6([_arg, _arg$1])); /* */ $s = 199; case 199: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + $panic(new $String(_r$22)); + /* } */ case 19: + x[0].expr = e; + $s = -1; return 1; + /* Error: */ case 20: + x[0].mode = 0; + x[0].expr = e; + $s = -1; return 2; + /* */ } return; } var $f = {$blk: exprInternal, $c: true, $r, $24r, T, _1, _2, _arg, _arg$1, _entry, _entry$1, _entry$2, _i, _i$1, _i$2, _i$3, _i$4, _key, _key$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, atyp, base, base$1, check, decl$1, duplicate, e, e$1, e$10, e$11, e$12, e$13, e$14, e$15, e$16, e$17, e$18, e$19, e$2, e$20, e$21, e$22, e$3, e$4, e$5, e$6, e$7, e$8, e$9, ellip, etyp, etyp$1, fields, fld, fld$1, hint, i, i$1, iota, ix, key, keyIsInterface, kind, kv, kv$1, kv$2, kv$3, n, ok, ok$1, ok$2, sig, typ$4, utyp, utyp$1, utyp$2, utyp$3, utyp$4, visited, visited$1, vtyp, x, x$1, x$2, x$3, x$4, x$5, xkey, $s};return $f; + }; + keyVal = function keyVal$1(x) { + var {$24r, $24r$1, _1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, f, i, i$1, ok, ok$1, r, v, v$1, v$2, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = x.Kind(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _1 = _r$1; + /* */ if (_1 === (5)) { $s = 3; continue; } + /* */ if (_1 === (4)) { $s = 4; continue; } + /* */ if (_1 === (3)) { $s = 5; continue; } + /* */ if (_1 === (2)) { $s = 6; continue; } + /* */ if (_1 === (1)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_1 === (5)) { */ case 3: + _r$2 = constant.ToFloat(x); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + f = _r$2; + _r$3 = f.Kind(); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!((_r$3 === 4))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!((_r$3 === 4))) { */ case 10: + _r$4 = constant.Real(x); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = constant.Float64Val(_r$4); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple = _r$5; + r = _tuple[0]; + _r$6 = constant.Imag(x); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = constant.Float64Val(_r$6); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$1 = _r$7; + i = _tuple$1[0]; + $s = -1; return new $Complex128(r, i); + /* } */ case 11: + x = f; + _r$8 = constant.ToInt(x); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + i$1 = _r$8; + _r$9 = i$1.Kind(); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + /* */ if (!((_r$9 === 3))) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!((_r$9 === 3))) { */ case 18: + _r$10 = constant.Float64Val(x); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$2 = _r$10; + v = _tuple$2[0]; + $s = -1; return new $Float64(v); + /* } */ case 19: + x = i$1; + _r$11 = constant.Int64Val(x); /* */ $s = 22; case 22: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$3 = _r$11; + v$1 = _tuple$3[0]; + ok = _tuple$3[1]; + if (ok) { + $s = -1; return v$1; + } + _r$12 = constant.Uint64Val(x); /* */ $s = 23; case 23: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _tuple$4 = _r$12; + v$2 = _tuple$4[0]; + ok$1 = _tuple$4[1]; + if (ok$1) { + $s = -1; return v$2; + } + $s = 8; continue; + /* } else if (_1 === (4)) { */ case 4: + _r$13 = constant.ToInt(x); /* */ $s = 24; case 24: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + i$1 = _r$13; + _r$14 = i$1.Kind(); /* */ $s = 27; case 27: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + /* */ if (!((_r$14 === 3))) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (!((_r$14 === 3))) { */ case 25: + _r$15 = constant.Float64Val(x); /* */ $s = 28; case 28: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _tuple$5 = _r$15; + v = _tuple$5[0]; + $s = -1; return new $Float64(v); + /* } */ case 26: + x = i$1; + _r$16 = constant.Int64Val(x); /* */ $s = 29; case 29: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _tuple$6 = _r$16; + v$1 = _tuple$6[0]; + ok = _tuple$6[1]; + if (ok) { + $s = -1; return v$1; + } + _r$17 = constant.Uint64Val(x); /* */ $s = 30; case 30: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _tuple$7 = _r$17; + v$2 = _tuple$7[0]; + ok$1 = _tuple$7[1]; + if (ok$1) { + $s = -1; return v$2; + } + $s = 8; continue; + /* } else if (_1 === (3)) { */ case 5: + _r$18 = constant.Int64Val(x); /* */ $s = 31; case 31: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _tuple$8 = _r$18; + v$1 = _tuple$8[0]; + ok = _tuple$8[1]; + if (ok) { + $s = -1; return v$1; + } + _r$19 = constant.Uint64Val(x); /* */ $s = 32; case 32: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _tuple$9 = _r$19; + v$2 = _tuple$9[0]; + ok$1 = _tuple$9[1]; + if (ok$1) { + $s = -1; return v$2; + } + $s = 8; continue; + /* } else if (_1 === (2)) { */ case 6: + _r$20 = constant.StringVal(x); /* */ $s = 33; case 33: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + $24r = new $String(_r$20); + $s = 34; case 34: return $24r; + /* } else if (_1 === (1)) { */ case 7: + _r$21 = constant.BoolVal(x); /* */ $s = 35; case 35: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + $24r$1 = new $Bool(_r$21); + $s = 36; case 36: return $24r$1; + /* } */ case 8: + case 1: + $s = -1; return x; + /* */ } return; } var $f = {$blk: keyVal$1, $c: true, $r, $24r, $24r$1, _1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, f, i, i$1, ok, ok$1, r, v, v$1, v$2, x, $s};return $f; + }; + $ptrType(Checker).prototype.typeAssertion = function typeAssertion(e, x, T, typeSwitch) { + var {T, _r$1, _r$2, _r$3, _tuple, alt, cause, check, e, method, typeSwitch, x, $s, $r, $c} = $restore(this, {e, x, T, typeSwitch}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = under(x.typ); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = check.assertableTo($assertType(_r$1, ptrType$13), T); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + method = _tuple[0]; + alt = _tuple[1]; + if (method === ptrType$2.nil) { + $s = -1; return; + } + _r$3 = check.missingMethodCause(T, x.typ, method, alt); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + cause = _r$3; + /* */ if (typeSwitch) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (typeSwitch) { */ case 4: + $r = check.errorf(e, 95, "impossible type switch case: %s\n\t%s cannot have dynamic type %s %s", new sliceType$6([e, x, T, new $String(cause)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 5: + $r = check.errorf(e, 95, "impossible type assertion: %s\n\t%s does not implement %s %s", new sliceType$6([e, T, x.typ, new $String(cause)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: typeAssertion, $c: true, $r, T, _r$1, _r$2, _r$3, _tuple, alt, cause, check, e, method, typeSwitch, x, $s};return $f; + }; + $ptrType(Checker).prototype.expr = function expr(x, e) { + var {_r$1, check, e, x, $s, $r, $c} = $restore(this, {x, e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.rawExpr(x, e, $ifaceNil, false); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $r = check.exclude(x, 14); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.singleValue(x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: expr, $c: true, $r, _r$1, check, e, x, $s};return $f; + }; + $ptrType(Checker).prototype.multiExpr = function multiExpr(x, e) { + var {_r$1, check, e, x, $s, $r, $c} = $restore(this, {x, e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.rawExpr(x, e, $ifaceNil, false); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $r = check.exclude(x, 14); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: multiExpr, $c: true, $r, _r$1, check, e, x, $s};return $f; + }; + $ptrType(Checker).prototype.exprWithHint = function exprWithHint(x, e, hint) { + var {_r$1, check, e, hint, x, $s, $r, $c} = $restore(this, {x, e, hint}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = assert(!($interfaceIsEqual(hint, $ifaceNil))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = check.rawExpr(x, e, hint, false); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $r = check.exclude(x, 14); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.singleValue(x); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: exprWithHint, $c: true, $r, _r$1, check, e, hint, x, $s};return $f; + }; + $ptrType(Checker).prototype.exprOrType = function exprOrType(x, e, allowGeneric) { + var {_r$1, allowGeneric, check, e, x, $s, $r, $c} = $restore(this, {x, e, allowGeneric}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.rawExpr(x, e, $ifaceNil, allowGeneric); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $r = check.exclude(x, 2); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.singleValue(x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: exprOrType, $c: true, $r, _r$1, allowGeneric, check, e, x, $s};return $f; + }; + $ptrType(Checker).prototype.exclude = function exclude(x, modeset) { + var {_1, check, code, modeset, msg, x, y, $s, $r, $c} = $restore(this, {x, modeset}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + /* */ if (!((((modeset & (((y = x.mode, y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((((modeset & (((y = x.mode, y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) { */ case 1: + msg = ""; + code = 0; + _1 = x.mode; + if (_1 === (1)) { + if (!((((modeset & 8) >>> 0) === 0))) { + msg = "%s used as value"; + } else { + msg = "%s used as value or type"; + } + code = 41; + } else if (_1 === (2)) { + msg = "%s must be called"; + code = 82; + } else if (_1 === (3)) { + msg = "%s is not an expression"; + code = 42; + } else { + unreachable(); + } + $r = check.errorf(x, code, msg, new sliceType$6([x])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: exclude, $c: true, $r, _1, check, code, modeset, msg, x, y, $s};return $f; + }; + $ptrType(Checker).prototype.singleValue = function singleValue(x) { + var {_tuple, check, ok, t, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + /* */ if (x.mode === 7) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (x.mode === 7) { */ case 1: + _tuple = $assertType(x.typ, ptrType$15, true); + t = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (ok) { */ case 3: + $r = assert(!((t.Len() === 1))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.errorf(x, 41, "multiple-value %s in single-value context", new sliceType$6([x])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + /* } */ case 4: + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: singleValue, $c: true, $r, _tuple, check, ok, t, x, $s};return $f; + }; + assert = function assert$1(p) { + var {_r$1, _tuple, file, line, msg, ok, p, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!p) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!p) { */ case 1: + msg = "assertion failed"; + _tuple = runtime.Caller(1); + file = _tuple[1]; + line = _tuple[2]; + ok = _tuple[3]; + /* */ if (ok) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (ok) { */ case 3: + _r$1 = fmt.Sprintf("%s:%d: %s", new sliceType$6([new $String(file), new $Int(line), new $String(msg)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + msg = _r$1; + /* } */ case 4: + $panic(new $String(msg)); + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: assert$1, $c: true, $r, _r$1, _tuple, file, line, msg, ok, p, $s};return $f; + }; + unreachable = function unreachable$1() { + $panic(new $String("unreachable")); + }; + $ptrType(error_).prototype.empty = function empty$1() { + var err; + err = this; + return err.desc === sliceType$31.nil; + }; + $ptrType(error_).prototype.pos = function pos() { + var {$24r, _r$1, err, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = this; + if (err.empty()) { + $s = -1; return 0; + } + _r$1 = (x = err.desc, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).posn.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: pos, $c: true, $r, $24r, _r$1, err, x, $s};return $f; + }; + $ptrType(error_).prototype.msg = function msg(fset, qf) { + var {_arg, _arg$1, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, buf, err, fset, i, p, qf, x, x$1, $s, $r, $c} = $restore(this, {fset, qf}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + err = this; + if (err.empty()) { + $s = -1; return "no error"; + } + buf[0] = new strings.Builder.ptr(ptrType$53.nil, sliceType$14.nil); + _ref = err.desc; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + p = (x = err.desc, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + /* */ if (i > 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (i > 0) { */ case 3: + _r$1 = fmt.Fprint(buf[0], new sliceType$6([new $String("\n\t")])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = p.posn.Pos(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = new token.Pos(_r$2).IsValid(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$3) { */ case 6: + _arg = buf[0]; + _r$4 = p.posn.Pos(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = fset.Position(_r$4); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$1 = (x$1 = _r$5, new x$1.constructor.elem(x$1)); + _r$6 = fmt.Fprintf(_arg, "%s: ", new sliceType$6([_arg$1])); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$6; + /* } */ case 7: + /* } */ case 4: + _r$7 = sprintf(fset, qf, false, p.format, p.args); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = buf[0].WriteString(_r$7); /* */ $s = 14; case 14: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$8; + _i++; + $s = 1; continue; + case 2: + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: msg, $c: true, $r, _arg, _arg$1, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, buf, err, fset, i, p, qf, x, x$1, $s};return $f; + }; + $ptrType(error_).prototype.String = function String$31() { + var {$24r, _arg, _arg$1, _r$1, _r$2, _r$3, err, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = this; + if (err.empty()) { + $s = -1; return "no error"; + } + _r$1 = err.pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = new token.Pos(_r$1); + _r$2 = err.msg(ptrType$24.nil, $throwNilPointerError); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$2); + _r$3 = fmt.Sprintf("%d: %s", new sliceType$6([_arg, _arg$1])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: String$31, $c: true, $r, $24r, _arg, _arg$1, _r$1, _r$2, _r$3, err, $s};return $f; + }; + $ptrType(error_).prototype.errorf = function errorf(at$1, format, args) { + var args, at$1, err, format; + err = this; + err.desc = $append(err.desc, new errorDesc.ptr(new atPos(((at$1 >> 0))), format, args)); + }; + $ptrType(Checker).prototype.qualifier = function qualifier(pkg) { + var _entry, _entry$1, check, pkg; + check = this; + if (!(pkg === check.pkg)) { + if (check.pkgPathMap === false) { + check.pkgPathMap = new $global.Map(); + check.seenPkgMap = new $global.Map(); + check.markImports(check.pkg); + } + if (((_entry = $mapIndex(check.pkgPathMap,$String.keyFor(pkg.name)), _entry !== undefined ? _entry.v : false) ? (_entry$1 = $mapIndex(check.pkgPathMap,$String.keyFor(pkg.name)), _entry$1 !== undefined ? _entry$1.v : false).size : 0) > 1) { + return strconv.Quote(pkg.path); + } + return pkg.name; + } + return ""; + }; + $ptrType(Checker).prototype.markImports = function markImports(pkg) { + var _entry, _entry$1, _i, _key, _key$1, _key$2, _ref, _tuple, check, forName, imp, ok, pkg; + check = this; + if ((_entry = $mapIndex(check.seenPkgMap,ptrType$1.keyFor(pkg)), _entry !== undefined ? _entry.v : false)) { + return; + } + _key = pkg; (check.seenPkgMap || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$1.keyFor(_key), { k: _key, v: true }); + _tuple = (_entry$1 = $mapIndex(check.pkgPathMap,$String.keyFor(pkg.name)), _entry$1 !== undefined ? [_entry$1.v, true] : [false, false]); + forName = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + forName = new $global.Map(); + _key$1 = pkg.name; (check.pkgPathMap || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$1), { k: _key$1, v: forName }); + } + _key$2 = pkg.path; (forName || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$2), { k: _key$2, v: true }); + _ref = pkg.imports; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + imp = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + check.markImports(imp); + _i++; + } + }; + $ptrType(Checker).prototype.sprintf = function sprintf$1(format, args) { + var {$24r, _r$1, args, check, format, fset, qf, $s, $r, $c} = $restore(this, {format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + fset = ptrType$24.nil; + qf = $throwNilPointerError; + if (!(check === ptrType$5.nil)) { + fset = check.fset; + qf = $methodVal(check, "qualifier"); + } + _r$1 = sprintf(fset, qf, false, format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: sprintf$1, $c: true, $r, $24r, _r$1, args, check, format, fset, qf, $s};return $f; + }; + sprintf = function sprintf$2(fset, qf, tpSubscripts, format, args) { + var {$24r, _i, _i$1, _i$2, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, a, a$1, a$2, a$3, a$4, a$5, a$6, a$7, a$8, a$9, arg, args, buf, buf$1, buf$2, buf$3, format, fset, i, i$1, i$2, qf, tpSubscripts, w, w$1, w$2, x, x$1, $s, $r, $c} = $restore(this, {fset, qf, tpSubscripts, format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = args; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + buf = [buf]; + buf$1 = [buf$1]; + buf$2 = [buf$2]; + buf$3 = [buf$3]; + i = _i; + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = arg; + /* */ if (_ref$1 === $ifaceNil) { $s = 3; continue; } + /* */ if ($assertType(_ref$1, operand, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref$1, ptrType$62, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref$1, token.Pos, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref$1, ast.Expr, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref$1, sliceType$11, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref$1, Object, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref$1, Type, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref$1, sliceType$2, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref$1, sliceType$9, true)[1]) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (_ref$1 === $ifaceNil) { */ case 3: + a = _ref$1; + arg = new $String(""); + $s = 13; continue; + /* } else if ($assertType(_ref$1, operand, true)[1]) { */ case 4: + a$1 = $clone(_ref$1.$val, operand); + $panic(new $String("got operand instead of *operand")); + $s = 13; continue; + /* } else if ($assertType(_ref$1, ptrType$62, true)[1]) { */ case 5: + a$2 = _ref$1.$val; + _r$1 = operandString(a$2, qf); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + arg = new $String(_r$1); + $s = 13; continue; + /* } else if ($assertType(_ref$1, token.Pos, true)[1]) { */ case 6: + a$3 = _ref$1.$val; + /* */ if (!(fset === ptrType$24.nil)) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!(fset === ptrType$24.nil)) { */ case 15: + _r$2 = fset.Position(a$3); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = $clone(_r$2, token.Position).String(); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + arg = new $String(_r$3); + /* } */ case 16: + $s = 13; continue; + /* } else if ($assertType(_ref$1, ast.Expr, true)[1]) { */ case 7: + a$4 = _ref$1; + _r$4 = ExprString(a$4); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + arg = new $String(_r$4); + $s = 13; continue; + /* } else if ($assertType(_ref$1, sliceType$11, true)[1]) { */ case 8: + a$5 = _ref$1.$val; + buf[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + buf[0].WriteByte(91); + $r = writeExprList(buf[0], a$5); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf[0].WriteByte(93); + arg = new $String(buf[0].String()); + $s = 13; continue; + /* } else if ($assertType(_ref$1, Object, true)[1]) { */ case 9: + a$6 = _ref$1; + _r$5 = ObjectString(a$6, qf); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + arg = new $String(_r$5); + $s = 13; continue; + /* } else if ($assertType(_ref$1, Type, true)[1]) { */ case 10: + a$7 = _ref$1; + buf$1[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + w = newTypeWriter(buf$1[0], qf); + w.tpSubscripts = tpSubscripts; + $r = w.typ(a$7); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + arg = new $String(buf$1[0].String()); + $s = 13; continue; + /* } else if ($assertType(_ref$1, sliceType$2, true)[1]) { */ case 11: + a$8 = _ref$1.$val; + buf$2[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + w$1 = newTypeWriter(buf$2[0], qf); + w$1.tpSubscripts = tpSubscripts; + buf$2[0].WriteByte(91); + _ref$2 = a$8; + _i$1 = 0; + /* while (true) { */ case 23: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 24; continue; } + i$1 = _i$1; + x = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + if (i$1 > 0) { + buf$2[0].WriteString(", "); + } + $r = w$1.typ(x); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 23; continue; + case 24: + buf$2[0].WriteByte(93); + arg = new $String(buf$2[0].String()); + $s = 13; continue; + /* } else if ($assertType(_ref$1, sliceType$9, true)[1]) { */ case 12: + a$9 = _ref$1.$val; + buf$3[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + w$2 = newTypeWriter(buf$3[0], qf); + w$2.tpSubscripts = tpSubscripts; + buf$3[0].WriteByte(91); + _ref$3 = a$9; + _i$2 = 0; + /* while (true) { */ case 26: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 27; continue; } + i$2 = _i$2; + x$1 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + if (i$2 > 0) { + buf$3[0].WriteString(", "); + } + $r = w$2.typ(x$1); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + $s = 26; continue; + case 27: + buf$3[0].WriteByte(93); + arg = new $String(buf$3[0].String()); + /* } */ case 13: + ((i < 0 || i >= args.$length) ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + i] = arg); + _i++; + $s = 1; continue; + case 2: + _r$6 = fmt.Sprintf(format, args); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r = _r$6; + $s = 30; case 30: return $24r; + /* */ } return; } var $f = {$blk: sprintf$2, $c: true, $r, $24r, _i, _i$1, _i$2, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, a, a$1, a$2, a$3, a$4, a$5, a$6, a$7, a$8, a$9, arg, args, buf, buf$1, buf$2, buf$3, format, fset, i, i$1, i$2, qf, tpSubscripts, w, w$1, w$2, x, x$1, $s};return $f; + }; + $ptrType(Checker).prototype.trace = function trace(pos$1, format, args) { + var {_arg, _arg$1, _arg$2, _r$1, _r$2, _r$3, args, check, format, pos$1, x, $s, $r, $c} = $restore(this, {pos$1, format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.fset.Position(pos$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = (x = _r$1, new x.constructor.elem(x)); + _arg$1 = new $String(strings.Repeat(". ", check.indent)); + _r$2 = sprintf(check.fset, $methodVal(check, "qualifier"), true, format, args); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$2 = new $String(_r$2); + _r$3 = fmt.Printf("%s:\t%s%s\n", new sliceType$6([_arg, _arg$1, _arg$2])); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + $s = -1; return; + /* */ } return; } var $f = {$blk: trace, $c: true, $r, _arg, _arg$1, _arg$2, _r$1, _r$2, _r$3, args, check, format, pos$1, x, $s};return $f; + }; + $ptrType(Checker).prototype.dump = function dump(format, args) { + var {_r$1, _r$2, args, check, format, $s, $r, $c} = $restore(this, {format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = sprintf(check.fset, $methodVal(check, "qualifier"), true, format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = fmt.Println(new sliceType$6([new $String(_r$1)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = -1; return; + /* */ } return; } var $f = {$blk: dump, $c: true, $r, _r$1, _r$2, args, check, format, $s};return $f; + }; + $ptrType(Checker).prototype.report = function report(errp) { + var {_1, _r$1, _r$2, _r$3, check, e, err, errp, f, isInvalidErr, msg$1, msg$2, pos$1, span, span$1, x, x$1, $s, $r, $c} = $restore(this, {errp}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + if (errp.empty()) { + $panic(new $String("empty error details")); + } + _r$1 = errp.msg(check.fset, $methodVal(check, "qualifier")); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + msg$1 = _r$1; + _1 = errp.code; + if (_1 === (-1)) { + msg$1 = "invalid AST: " + msg$1; + } else if (_1 === (0)) { + $panic(new $String("no error code provided")); + } + _r$2 = spanOf((x = errp.desc, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).posn); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + span = $clone(_r$2, posSpan); + e = new Error.ptr(check.fset, span.pos, msg$1, errp.soft, errp.code, span.start, span.end); + isInvalidErr = strings.Index(e.Msg, "invalid operand") > 0 || strings.Index(e.Msg, "invalid type") > 0; + if (!($interfaceIsEqual(check.firstErr, $ifaceNil)) && isInvalidErr) { + $s = -1; return; + } + e.Msg = stripAnnotations(e.Msg); + /* */ if (!($interfaceIsEqual(check.environment.errpos, $ifaceNil))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!($interfaceIsEqual(check.environment.errpos, $ifaceNil))) { */ case 3: + _r$3 = spanOf(check.environment.errpos); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + span$1 = $clone(_r$3, posSpan); + e.Pos = span$1.pos; + e.go116start = span$1.start; + e.go116end = span$1.end; + /* } */ case 4: + err = $clone(e, Error); + if ($interfaceIsEqual(check.firstErr, $ifaceNil)) { + check.firstErr = new err.constructor.elem(err); + } + /* */ if (false) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (false) { */ case 6: + pos$1 = e.Pos; + msg$2 = e.Msg; + $r = check.trace(pos$1, "ERROR: %s", new sliceType$6([new $String(msg$2)])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + f = check.conf.Error; + if (f === $throwNilPointerError) { + $panic((x$1 = new bailout.ptr(), new x$1.constructor.elem(x$1))); + } + $r = f(new err.constructor.elem(err)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: report, $c: true, $r, _1, _r$1, _r$2, _r$3, check, e, err, errp, f, isInvalidErr, msg$1, msg$2, pos$1, span, span$1, x, x$1, $s};return $f; + }; + newErrorf = function newErrorf$1(at$1, code, format, args) { + var args, at$1, code, format; + return new error_.ptr(new sliceType$31([$clone(new errorDesc.ptr(at$1, format, args), errorDesc)]), code, false); + }; + $ptrType(Checker).prototype.error = function error$1(at$1, code, msg$1) { + var {at$1, check, code, msg$1, $s, $r, $c} = $restore(this, {at$1, code, msg$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = check.report(newErrorf(at$1, code, msg$1, sliceType$6.nil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: error$1, $c: true, $r, at$1, check, code, msg$1, $s};return $f; + }; + $ptrType(Checker).prototype.errorf = function errorf$1(at$1, code, format, args) { + var {args, at$1, check, code, format, $s, $r, $c} = $restore(this, {at$1, code, format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = check.report(newErrorf(at$1, code, format, args)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: errorf$1, $c: true, $r, args, at$1, check, code, format, $s};return $f; + }; + $ptrType(Checker).prototype.softErrorf = function softErrorf(at$1, code, format, args) { + var {args, at$1, check, code, err, format, $s, $r, $c} = $restore(this, {at$1, code, format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + err = newErrorf(at$1, code, format, args); + err.soft = true; + $r = check.report(err); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: softErrorf, $c: true, $r, args, at$1, check, code, err, format, $s};return $f; + }; + $ptrType(Checker).prototype.versionErrorf = function versionErrorf(at$1, goVersion, format, args) { + var {_r$1, args, at$1, check, err, format, goVersion, msg$1, $s, $r, $c} = $restore(this, {at$1, goVersion, format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.sprintf(format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + msg$1 = _r$1; + err = ptrType$104.nil; + err = newErrorf(at$1, 135, "%s requires %s or later", new sliceType$6([new $String(msg$1), new $String(goVersion)])); + $r = check.report(err); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: versionErrorf, $c: true, $r, _r$1, args, at$1, check, err, format, goVersion, msg$1, $s};return $f; + }; + $ptrType(posSpan).prototype.Pos = function Pos$4() { + var e; + e = this; + return e.pos; + }; + posSpan.prototype.Pos = function(...$args) { return this.$val.Pos(...$args); }; + inNode = function inNode$1(node, pos$1) { + var {_r$1, _r$2, _tmp, _tmp$1, end, node, pos$1, start, $s, $r, $c} = $restore(this, {node, pos$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = node.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tmp = _r$1; + _r$2 = node.End(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tmp$1 = _r$2; + start = _tmp; + end = _tmp$1; + /* */ if (false) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (false) { */ case 3: + $r = assert(start <= pos$1 && pos$1 < end); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + $s = -1; return new posSpan.ptr(start, pos$1, end); + /* */ } return; } var $f = {$blk: inNode$1, $c: true, $r, _r$1, _r$2, _tmp, _tmp$1, end, node, pos$1, start, $s};return $f; + }; + atPos.prototype.Pos = function Pos$5() { + var s; + s = this.$val; + return ((s >> 0)); + }; + $ptrType(atPos).prototype.Pos = function(...$args) { return new atPos(this.$get()).Pos(...$args); }; + spanOf = function spanOf$1(at$1) { + var {$24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, at$1, pos$1, pos$2, pos$3, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {at$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = at$1; + /* */ if (_ref === $ifaceNil) { $s = 1; continue; } + /* */ if ($assertType(_ref, posSpan, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ast.Node, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$62, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_ref === $ifaceNil) { */ case 1: + x = _ref; + $panic(new $String("nil positioner")); + $s = 6; continue; + /* } else if ($assertType(_ref, posSpan, true)[1]) { */ case 2: + x$1 = $clone(_ref.$val, posSpan); + $s = -1; return x$1; + /* } else if ($assertType(_ref, ast.Node, true)[1]) { */ case 3: + x$2 = _ref; + _r$1 = x$2.Pos(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos$1 = _r$1; + _r$2 = x$2.End(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = new posSpan.ptr(pos$1, pos$1, _r$2); + $s = 9; case 9: return $24r; + /* } else if ($assertType(_ref, ptrType$62, true)[1]) { */ case 4: + x$3 = _ref.$val; + /* */ if (!($interfaceIsEqual(x$3.expr, $ifaceNil))) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!($interfaceIsEqual(x$3.expr, $ifaceNil))) { */ case 10: + _r$3 = x$3.Pos(); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + pos$2 = _r$3; + _r$4 = x$3.expr.End(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$1 = new posSpan.ptr(pos$2, pos$2, _r$4); + $s = 14; case 14: return $24r$1; + /* } */ case 11: + $s = -1; return new posSpan.ptr(0, 0, 0); + /* } else { */ case 5: + x$4 = _ref; + _r$5 = at$1.Pos(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + pos$3 = _r$5; + $s = -1; return new posSpan.ptr(pos$3, pos$3, pos$3); + /* } */ case 6: + $s = -1; return new posSpan.ptr(0, 0, 0); + /* */ } return; } var $f = {$blk: spanOf$1, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, at$1, pos$1, pos$2, pos$3, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + stripAnnotations = function stripAnnotations$1(s) { + var _i, _ref, _rune, buf, r, s; + buf = new strings.Builder.ptr(ptrType$53.nil, sliceType$14.nil); + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + r = _rune[0]; + if (r < 8320 || 8330 <= r) { + buf.WriteRune(r); + } + _i += _rune[1]; + } + if (buf.Len() < s.length) { + return buf.String(); + } + return s; + }; + $ptrType(Checker).prototype.reportAltDecl = function reportAltDecl(obj) { + var {_arg, _arg$1, _r$1, _r$2, check, obj, pos$1, $s, $r, $c} = $restore(this, {obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = obj.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pos$1 = _r$1; + /* */ if (new token.Pos(pos$1).IsValid()) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (new token.Pos(pos$1).IsValid()) { */ case 2: + _arg = obj; + _r$2 = obj.Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$2); + $r = check.errorf(_arg, 10, "\tother declaration of %s", new sliceType$6([_arg$1])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: reportAltDecl, $c: true, $r, _arg, _arg$1, _r$1, _r$2, check, obj, pos$1, $s};return $f; + }; + $ptrType(Checker).prototype.declare = function declare(scope, id, obj, pos$1) { + var {_arg, _arg$1, _r$1, _r$2, _r$3, alt, check, id, obj, pos$1, scope, $s, $r, $c} = $restore(this, {scope, id, obj, pos$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = obj.Name(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!(_r$1 === "_")) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(_r$1 === "_")) { */ case 1: + _r$2 = scope.Insert(obj); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + alt = _r$2; + /* */ if (!($interfaceIsEqual(alt, $ifaceNil))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!($interfaceIsEqual(alt, $ifaceNil))) { */ case 5: + _arg = obj; + _r$3 = obj.Name(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$3); + $r = check.errorf(_arg, 10, "%s redeclared in this block", new sliceType$6([_arg$1])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.reportAltDecl(alt); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 6: + $r = obj.setScopePos(pos$1); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + /* */ if (!(id === ptrType$30.nil)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!(id === ptrType$30.nil)) { */ case 11: + $r = check.recordDef(id, obj); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + $s = -1; return; + /* */ } return; } var $f = {$blk: declare, $c: true, $r, _arg, _arg$1, _r$1, _r$2, _r$3, alt, check, id, obj, pos$1, scope, $s};return $f; + }; + pathString = function pathString$1(path) { + var {_i, _r$1, _ref, i, p, path, s, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = ""; + _ref = path; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + s = s + ("->"); + } + _r$1 = p.Name(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + s = s + (_r$1); + _i++; + $s = 1; continue; + case 2: + $s = -1; return s; + /* */ } return; } var $f = {$blk: pathString$1, $c: true, $r, _i, _r$1, _ref, i, p, path, s, $s};return $f; + }; + $ptrType(Checker).prototype.objDecl = function objDecl(obj, def$2) { + var {_1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _entry, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _v, _v$1, check, d, def$2, obj, obj$1, obj$10, obj$2, obj$3, obj$4, obj$5, obj$6, obj$7, obj$8, obj$9, $s, $deferred, $r, $c} = $restore(this, {obj, def$2}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + obj = [obj]; + check[0] = this; + if (!(false)) { _v = false; $s = 3; continue s; } + _r$1 = obj[0].Type(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = $interfaceIsEqual(_r$1, $ifaceNil); case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + /* */ if (check[0].indent === 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (check[0].indent === 0) { */ case 5: + _r$2 = fmt.Println(sliceType$6.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* } */ case 6: + _r$3 = obj[0].Pos(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg = _r$3; + _arg$1 = obj[0]; + _r$4 = obj[0].color(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$2 = new color(_r$4); + _r$5 = pathString(check[0].objPath); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$3 = new $String(_r$5); + $r = check[0].trace(_arg, "-- checking %s (%s, objPath = %s)", new sliceType$6([_arg$1, _arg$2, _arg$3])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].indent = check[0].indent + (1) >> 0; + $deferred.push([(function(check, obj) { return function Checker·objDecl·func1() { + var {_arg$4, _arg$5, _arg$6, _r$6, _r$7, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check[0].indent = check[0].indent - (1) >> 0; + _r$6 = obj[0].Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg$4 = _r$6; + _arg$5 = obj[0]; + _r$7 = obj[0].color(); /* */ $s = 2; case 2: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _arg$6 = new color(_r$7); + $r = check[0].trace(_arg$4, "=> %s (%s)", new sliceType$6([_arg$5, _arg$6])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·objDecl·func1, $c: true, $r, _arg$4, _arg$5, _arg$6, _r$6, _r$7, $s};return $f; + }; })(check, obj), []]); + /* } */ case 2: + _r$6 = obj[0].color(); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + if (!(_r$6 === 0)) { _v$1 = false; $s = 14; continue s; } + _r$7 = obj[0].Type(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _v$1 = !($interfaceIsEqual(_r$7, $ifaceNil)); case 14: + /* */ if (_v$1) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (_v$1) { */ case 12: + $r = obj[0].setColor(1); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; case 18: return; + /* } */ case 13: + _r$8 = obj[0].color(); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _1 = _r$8; + /* */ if (_1 === (0)) { $s = 21; continue; } + /* */ if (_1 === (1)) { $s = 22; continue; } + /* */ if (_1 === (2)) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (_1 === (0)) { */ case 21: + _r$9 = obj[0].Type(); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $r = assert($interfaceIsEqual(_r$9, $ifaceNil)); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = obj[0].setColor(2 + ((check[0].push(obj[0]) >>> 0)) >>> 0); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([(function(check, obj) { return function Checker·objDecl·func2() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = check[0].pop().setColor(1); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·objDecl·func2, $c: true, $r, $s};return $f; + }; })(check, obj), []]); + $s = 25; continue; + /* } else if (_1 === (1)) { */ case 22: + _r$10 = obj[0].Type(); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $r = assert(!($interfaceIsEqual(_r$10, $ifaceNil))); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 31; case 31: return; + /* } else if (_1 === (2)) { */ case 23: + _ref = obj[0]; + /* */ if ($assertType(_ref, ptrType$32, true)[1]) { $s = 32; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 33; continue; } + /* */ if ($assertType(_ref, ptrType$17, true)[1]) { $s = 34; continue; } + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if ($assertType(_ref, ptrType$32, true)[1]) { */ case 32: + obj$1 = _ref.$val; + _r$11 = check[0].validCycle(obj$1); /* */ $s = 40; case 40: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* */ if (!_r$11 || $interfaceIsEqual(obj$1.object.typ, $ifaceNil)) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (!_r$11 || $interfaceIsEqual(obj$1.object.typ, $ifaceNil)) { */ case 38: + obj$1.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 39: + $s = 37; continue; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 33: + obj$2 = _ref.$val; + _r$12 = check[0].validCycle(obj$2); /* */ $s = 43; case 43: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + /* */ if (!_r$12 || $interfaceIsEqual(obj$2.object.typ, $ifaceNil)) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if (!_r$12 || $interfaceIsEqual(obj$2.object.typ, $ifaceNil)) { */ case 41: + obj$2.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 42: + $s = 37; continue; + /* } else if ($assertType(_ref, ptrType$17, true)[1]) { */ case 34: + obj$3 = _ref.$val; + _r$13 = check[0].validCycle(obj$3); /* */ $s = 46; case 46: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + /* */ if (!_r$13) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (!_r$13) { */ case 44: + obj$3.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 45: + $s = 37; continue; + /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 35: + obj$4 = _ref.$val; + _r$14 = check[0].validCycle(obj$4); /* */ $s = 49; case 49: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + /* */ if (!_r$14) { $s = 47; continue; } + /* */ $s = 48; continue; + /* if (!_r$14) { */ case 47: + /* } */ case 48: + $s = 37; continue; + /* } else { */ case 36: + obj$5 = _ref; + unreachable(); + /* } */ case 37: + _r$15 = obj[0].Type(); /* */ $s = 50; case 50: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + $r = assert(!($interfaceIsEqual(_r$15, $ifaceNil))); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 52; case 52: return; + /* } else { */ case 24: + _ref$1 = obj[0]; + /* */ if ($assertType(_ref$1, ptrType$32, true)[1]) { $s = 53; continue; } + /* */ if ($assertType(_ref$1, ptrType$16, true)[1]) { $s = 54; continue; } + /* */ if ($assertType(_ref$1, ptrType$17, true)[1]) { $s = 55; continue; } + /* */ if ($assertType(_ref$1, ptrType$2, true)[1]) { $s = 56; continue; } + /* */ $s = 57; continue; + /* if ($assertType(_ref$1, ptrType$32, true)[1]) { */ case 53: + obj$1 = _ref$1.$val; + _r$16 = check[0].validCycle(obj$1); /* */ $s = 61; case 61: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + /* */ if (!_r$16 || $interfaceIsEqual(obj$1.object.typ, $ifaceNil)) { $s = 59; continue; } + /* */ $s = 60; continue; + /* if (!_r$16 || $interfaceIsEqual(obj$1.object.typ, $ifaceNil)) { */ case 59: + obj$1.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 60: + $s = 58; continue; + /* } else if ($assertType(_ref$1, ptrType$16, true)[1]) { */ case 54: + obj$2 = _ref$1.$val; + _r$17 = check[0].validCycle(obj$2); /* */ $s = 64; case 64: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + /* */ if (!_r$17 || $interfaceIsEqual(obj$2.object.typ, $ifaceNil)) { $s = 62; continue; } + /* */ $s = 63; continue; + /* if (!_r$17 || $interfaceIsEqual(obj$2.object.typ, $ifaceNil)) { */ case 62: + obj$2.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 63: + $s = 58; continue; + /* } else if ($assertType(_ref$1, ptrType$17, true)[1]) { */ case 55: + obj$3 = _ref$1.$val; + _r$18 = check[0].validCycle(obj$3); /* */ $s = 67; case 67: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + /* */ if (!_r$18) { $s = 65; continue; } + /* */ $s = 66; continue; + /* if (!_r$18) { */ case 65: + obj$3.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 66: + $s = 58; continue; + /* } else if ($assertType(_ref$1, ptrType$2, true)[1]) { */ case 56: + obj$4 = _ref$1.$val; + _r$19 = check[0].validCycle(obj$4); /* */ $s = 70; case 70: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + /* */ if (!_r$19) { $s = 68; continue; } + /* */ $s = 69; continue; + /* if (!_r$19) { */ case 68: + /* } */ case 69: + $s = 58; continue; + /* } else { */ case 57: + obj$5 = _ref$1; + unreachable(); + /* } */ case 58: + _r$20 = obj[0].Type(); /* */ $s = 71; case 71: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + $r = assert(!($interfaceIsEqual(_r$20, $ifaceNil))); /* */ $s = 72; case 72: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 73; case 73: return; + /* } */ case 25: + case 19: + d = (_entry = $mapIndex(check[0].objMap,Object.keyFor(obj[0])), _entry !== undefined ? _entry.v : ptrType$58.nil); + /* */ if (d === ptrType$58.nil) { $s = 74; continue; } + /* */ $s = 75; continue; + /* if (d === ptrType$58.nil) { */ case 74: + _r$21 = obj[0].Pos(); /* */ $s = 76; case 76: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + _arg$4 = new token.Pos(_r$21); + _arg$5 = obj[0]; + $r = check[0].dump("%v: %s should have been declared", new sliceType$6([_arg$4, _arg$5])); /* */ $s = 77; case 77: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + unreachable(); + /* } */ case 75: + $deferred.push([(function(check, obj) { return function Checker·objDecl·func3(env) { + var env; + environment.copy(check[0].environment, env); + }; })(check, obj), [$clone(check[0].environment, environment)]]); + environment.copy(check[0].environment, new environment.ptr(ptrType$58.nil, d.file, 0, $ifaceNil, $ifaceNil, false, ptrType$27.nil, false, false, false)); + _ref$2 = obj[0]; + /* */ if ($assertType(_ref$2, ptrType$32, true)[1]) { $s = 78; continue; } + /* */ if ($assertType(_ref$2, ptrType$16, true)[1]) { $s = 79; continue; } + /* */ if ($assertType(_ref$2, ptrType$17, true)[1]) { $s = 80; continue; } + /* */ if ($assertType(_ref$2, ptrType$2, true)[1]) { $s = 81; continue; } + /* */ $s = 82; continue; + /* if ($assertType(_ref$2, ptrType$32, true)[1]) { */ case 78: + obj$6 = _ref$2.$val; + check[0].environment.decl = d; + $r = check[0].constDecl(obj$6, d.vtyp, d.init, d.inherited); /* */ $s = 84; case 84: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 83; continue; + /* } else if ($assertType(_ref$2, ptrType$16, true)[1]) { */ case 79: + obj$7 = _ref$2.$val; + check[0].environment.decl = d; + $r = check[0].varDecl(obj$7, d.lhs, d.vtyp, d.init); /* */ $s = 85; case 85: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 83; continue; + /* } else if ($assertType(_ref$2, ptrType$17, true)[1]) { */ case 80: + obj$8 = _ref$2.$val; + $r = check[0].typeDecl(obj$8, d.tdecl, def$2); /* */ $s = 86; case 86: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].collectMethods(obj$8); /* */ $s = 87; case 87: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 83; continue; + /* } else if ($assertType(_ref$2, ptrType$2, true)[1]) { */ case 81: + obj$9 = _ref$2.$val; + $r = check[0].funcDecl(obj$9, d); /* */ $s = 88; case 88: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 83; continue; + /* } else { */ case 82: + obj$10 = _ref$2; + unreachable(); + /* } */ case 83: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: objDecl, $c: true, $r, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _entry, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _v, _v$1, check, d, def$2, obj, obj$1, obj$10, obj$2, obj$3, obj$4, obj$5, obj$6, obj$7, obj$8, obj$9, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.validCycle = function validCycle(obj) { + var {$24r, $24r$1, $24r$2, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _entry, _entry$1, _i, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _v, alias, check, cycle, d, inObjMap, info, isPkgObj, ndef, nval, obj, obj$1, obj$2, obj$3, obj$4, obj$5, start, tparCycle, valid, $s, $deferred, $r, $c} = $restore(this, {obj}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + obj = [obj]; + valid = [valid]; + valid[0] = false; + check[0] = this; + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + info = (_entry = $mapIndex(check[0].objMap,Object.keyFor(obj[0])), _entry !== undefined ? _entry.v : ptrType$58.nil); + inObjMap = !(info === ptrType$58.nil) && (info.fdecl === ptrType$87.nil || info.fdecl.Recv === ptrType$49.nil); + _r$1 = obj[0].Parent(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + isPkgObj = _r$1 === check[0].pkg.scope; + /* */ if (!(isPkgObj === inObjMap)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(isPkgObj === inObjMap)) { */ case 4: + _r$2 = obj[0].Pos(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg = new token.Pos(_r$2); + _arg$1 = obj[0]; + _arg$2 = new $Bool(isPkgObj); + _arg$3 = new $Bool(inObjMap); + $r = check[0].dump("%v: inconsistent object map for %s (isPkgObj = %v, inObjMap = %v)", new sliceType$6([_arg, _arg$1, _arg$2, _arg$3])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + unreachable(); + /* } */ case 5: + /* } */ case 2: + _r$3 = obj[0].color(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = assert(_r$3 >= 2); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$4 = obj[0].color(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + start = _r$4 - 2 >>> 0; + cycle = $subslice(check[0].objPath, start); + tparCycle = false; + nval = 0; + ndef = 0; + _ref = cycle; + _i = 0; + /* while (true) { */ case 11: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 12; continue; } + obj$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = obj$1; + /* */ if ($assertType(_ref$1, ptrType$32, true)[1] || $assertType(_ref$1, ptrType$16, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref$1, ptrType$17, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref$1, ptrType$2, true)[1]) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if ($assertType(_ref$1, ptrType$32, true)[1] || $assertType(_ref$1, ptrType$16, true)[1]) { */ case 13: + obj$2 = _ref$1; + nval = nval + (1) >> 0; + $s = 17; continue; + /* } else if ($assertType(_ref$1, ptrType$17, true)[1]) { */ case 14: + obj$3 = _ref$1.$val; + if (!(check[0].environment.inTParamList)) { _v = false; $s = 20; continue s; } + _r$5 = isGeneric(obj$3.object.typ); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _v = _r$5; case 20: + /* */ if (_v) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (_v) { */ case 18: + tparCycle = true; + /* break loop; */ $s = 12; continue s; + /* } */ case 19: + alias = false; + d = (_entry$1 = $mapIndex(check[0].objMap,Object.keyFor(obj$3)), _entry$1 !== undefined ? _entry$1.v : ptrType$58.nil); + if (!(d === ptrType$58.nil)) { + alias = new token.Pos(d.tdecl.Assign).IsValid(); + } else { + alias = obj$3.IsAlias(); + } + if (!alias) { + ndef = ndef + (1) >> 0; + } + $s = 17; continue; + /* } else if ($assertType(_ref$1, ptrType$2, true)[1]) { */ case 15: + obj$4 = _ref$1.$val; + $s = 17; continue; + /* } else { */ case 16: + obj$5 = _ref$1; + unreachable(); + /* } */ case 17: + _i++; + $s = 11; continue; + case 12: + /* */ if (false) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (false) { */ case 22: + _r$6 = obj[0].Pos(); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg$4 = _r$6; + _r$7 = pathString(cycle); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _arg$5 = new $String(_r$7); + _r$8 = obj[0].Name(); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _arg$6 = new $String(_r$8); + _arg$7 = new $Int(cycle.$length); + $r = check[0].trace(_arg$4, "## cycle detected: objPath = %s->%s (len = %d)", new sliceType$6([_arg$5, _arg$6, _arg$7])); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (tparCycle) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (tparCycle) { */ case 28: + _r$9 = obj[0].Pos(); /* */ $s = 31; case 31: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $r = check[0].trace(_r$9, "## cycle contains: generic type in a type parameter list", sliceType$6.nil); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 30; continue; + /* } else { */ case 29: + _r$10 = obj[0].Pos(); /* */ $s = 33; case 33: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $r = check[0].trace(_r$10, "## cycle contains: %d values, %d type definitions", new sliceType$6([new $Int(nval), new $Int(ndef)])); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 30: + $deferred.push([(function(check, obj, valid) { return function Checker·validCycle·func1() { + var {_r$11, _r$12, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (valid[0]) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (valid[0]) { */ case 1: + _r$11 = obj[0].Pos(); /* */ $s = 4; case 4: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $r = check[0].trace(_r$11, "=> cycle is valid", sliceType$6.nil); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 3; continue; + /* } else { */ case 2: + _r$12 = obj[0].Pos(); /* */ $s = 6; case 6: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $r = check[0].trace(_r$12, "=> error: cycle is invalid", sliceType$6.nil); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·validCycle·func1, $c: true, $r, _r$11, _r$12, $s};return $f; + }; })(check, obj, valid), []]); + /* } */ case 23: + /* */ if (!tparCycle) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (!tparCycle) { */ case 35: + /* */ if (nval === cycle.$length) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if (nval === cycle.$length) { */ case 37: + valid[0] = true; + $24r = valid[0]; + $s = 39; case 39: return $24r; + /* } */ case 38: + /* */ if ((nval === 0) && ndef > 0) { $s = 40; continue; } + /* */ $s = 41; continue; + /* if ((nval === 0) && ndef > 0) { */ case 40: + valid[0] = true; + $24r$1 = valid[0]; + $s = 42; case 42: return $24r$1; + /* } */ case 41: + /* } */ case 36: + $r = check[0].cycleError(cycle); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + valid[0] = false; + $24r$2 = valid[0]; + $s = 44; case 44: return $24r$2; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return valid[0]; } if($curGoroutine.asleep) { var $f = {$blk: validCycle, $c: true, $r, $24r, $24r$1, $24r$2, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _entry, _entry$1, _i, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _v, alias, check, cycle, d, inObjMap, info, isPkgObj, ndef, nval, obj, obj$1, obj$2, obj$3, obj$4, obj$5, start, tparCycle, valid, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.cycleError = function cycleError(cycle) { + var {_i, _r$1, _r$2, _r$3, _ref, _tuple, check, cycle, i, name, obj, objName, tname, $s, $r, $c} = $restore(this, {cycle}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = [check]; + check[0] = this; + name = (function(check) { return function Checker·cycleError·func1(obj) { + var {$24r, _r$1, _r$2, _r$3, obj, $s, $r, $c} = $restore(this, {obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = obj.Pkg(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = packagePrefix(_r$1, $methodVal(check[0], "qualifier")); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = obj.Name(); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$2 + _r$3; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: Checker·cycleError·func1, $c: true, $r, $24r, _r$1, _r$2, _r$3, obj, $s};return $f; + }; })(check); + _r$1 = firstInSrc(cycle); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + i = _r$1; + obj = ((i < 0 || i >= cycle.$length) ? ($throwRuntimeError("index out of range"), undefined) : cycle.$array[cycle.$offset + i]); + _r$2 = name(obj); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + objName = _r$2; + _tuple = $assertType(obj, ptrType$17, true); + tname = _tuple[0]; + if (!(tname === ptrType$17.nil) && tname.IsAlias()) { + check[0].validAlias(tname, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])); + } + /* */ if (cycle.$length === 1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (cycle.$length === 1) { */ case 3: + /* */ if (!(tname === ptrType$17.nil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(tname === ptrType$17.nil)) { */ case 5: + $r = check[0].errorf(obj, 11, "invalid recursive type: %s refers to itself", new sliceType$6([new $String(objName)])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + /* } else { */ case 6: + $r = check[0].errorf(obj, 11, "invalid cycle in declaration: %s refers to itself", new sliceType$6([new $String(objName)])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + $s = -1; return; + /* } */ case 4: + /* */ if (!(tname === ptrType$17.nil)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!(tname === ptrType$17.nil)) { */ case 10: + $r = check[0].errorf(obj, 11, "invalid recursive type %s", new sliceType$6([new $String(objName)])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 12; continue; + /* } else { */ case 11: + $r = check[0].errorf(obj, 11, "invalid cycle in declaration of %s", new sliceType$6([new $String(objName)])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + _ref = cycle; + _i = 0; + /* while (true) { */ case 15: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 16; continue; } + $r = check[0].errorf(obj, 11, "\t%s refers to", new sliceType$6([new $String(objName)])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + if (i >= cycle.$length) { + i = 0; + } + obj = ((i < 0 || i >= cycle.$length) ? ($throwRuntimeError("index out of range"), undefined) : cycle.$array[cycle.$offset + i]); + _r$3 = name(obj); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + objName = _r$3; + _i++; + $s = 15; continue; + case 16: + $r = check[0].errorf(obj, 11, "\t%s", new sliceType$6([new $String(objName)])); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: cycleError, $c: true, $r, _i, _r$1, _r$2, _r$3, _ref, _tuple, check, cycle, i, name, obj, objName, tname, $s};return $f; + }; + firstInSrc = function firstInSrc$1(path) { + var {_i, _r$1, _r$2, _r$3, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, fst, i, path, pos$1, t, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tmp = 0; + _r$1 = (0 >= path.$length ? ($throwRuntimeError("index out of range"), undefined) : path.$array[path.$offset + 0]).Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tmp$1 = _r$1; + fst = _tmp; + pos$1 = _tmp$1; + _ref = $subslice(path, 1); + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + i = _i; + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$2 = t.Pos(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2 < pos$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$2 < pos$1) { */ case 4: + _tmp$2 = i + 1 >> 0; + _r$3 = t.Pos(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tmp$3 = _r$3; + fst = _tmp$2; + pos$1 = _tmp$3; + /* } */ case 5: + _i++; + $s = 2; continue; + case 3: + $s = -1; return fst; + /* */ } return; } var $f = {$blk: firstInSrc$1, $c: true, $r, _i, _r$1, _r$2, _r$3, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, fst, i, path, pos$1, t, $s};return $f; + }; + $ptrType(importDecl).prototype.node = function node() { + var d; + d = this; + return d.spec; + }; + importDecl.prototype.node = function(...$args) { return this.$val.node(...$args); }; + $ptrType(constDecl).prototype.node = function node$1() { + var d; + d = this; + return d.spec; + }; + constDecl.prototype.node = function(...$args) { return this.$val.node(...$args); }; + $ptrType(varDecl).prototype.node = function node$2() { + var d; + d = this; + return d.spec; + }; + varDecl.prototype.node = function(...$args) { return this.$val.node(...$args); }; + $ptrType(typeDecl).prototype.node = function node$3() { + var d; + d = this; + return d.spec; + }; + typeDecl.prototype.node = function(...$args) { return this.$val.node(...$args); }; + $ptrType(funcDecl).prototype.node = function node$4() { + var d; + d = this; + return d.decl; + }; + funcDecl.prototype.node = function(...$args) { return this.$val.node(...$args); }; + $ptrType(Checker).prototype.walkDecls = function walkDecls(decls, f) { + var {_i, _ref, check, d, decls, f, $s, $r, $c} = $restore(this, {decls, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _ref = decls; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + d = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = check.walkDecl(d, f); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: walkDecls, $c: true, $r, _i, _ref, check, d, decls, f, $s};return $f; + }; + $ptrType(Checker).prototype.walkDecl = function walkDecl(d, f) { + var {_1, _i, _ref, _ref$1, _ref$2, check, d, d$1, d$2, d$3, d$4, f, inherited, iota, last, s, s$1, s$2, s$3, s$4, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {d, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _ref = d; + /* */ if ($assertType(_ref, ptrType$105, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$93, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$87, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref, ptrType$105, true)[1]) { */ case 1: + d$1 = _ref.$val; + $s = 5; continue; + /* } else if ($assertType(_ref, ptrType$93, true)[1]) { */ case 2: + d$2 = _ref.$val; + last = ptrType$88.nil; + _ref$1 = d$2.Specs; + _i = 0; + /* while (true) { */ case 6: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 7; continue; } + iota = _i; + s = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _ref$2 = s; + /* */ if ($assertType(_ref$2, ptrType$106, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref$2, ptrType$88, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref$2, ptrType$90, true)[1]) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ($assertType(_ref$2, ptrType$106, true)[1]) { */ case 8: + s$1 = _ref$2.$val; + $r = f((x = new importDecl.ptr(s$1), new x.constructor.elem(x))); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 12; continue; + /* } else if ($assertType(_ref$2, ptrType$88, true)[1]) { */ case 9: + s$2 = _ref$2.$val; + _1 = d$2.Tok; + /* */ if (_1 === (64)) { $s = 15; continue; } + /* */ if (_1 === (85)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_1 === (64)) { */ case 15: + inherited = true; + if (!($interfaceIsEqual(s$2.Type, $ifaceNil)) || s$2.Values.$length > 0) { + last = s$2; + inherited = false; + } else if (last === ptrType$88.nil) { + last = new ast.ValueSpec.ptr(ptrType$107.nil, sliceType$22.nil, $ifaceNil, sliceType$11.nil, ptrType$107.nil); + inherited = false; + } + $r = check.arityMatch(s$2, last); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = f((x$1 = new constDecl.ptr(s$2, iota, last.Type, last.Values, inherited), new x$1.constructor.elem(x$1))); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else if (_1 === (85)) { */ case 16: + $r = check.arityMatch(s$2, ptrType$88.nil); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = f((x$2 = new varDecl.ptr(s$2), new x$2.constructor.elem(x$2))); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else { */ case 17: + $r = check.errorf(s$2, -1, "invalid token %s", new sliceType$6([new token.Token(d$2.Tok)])); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + case 14: + $s = 12; continue; + /* } else if ($assertType(_ref$2, ptrType$90, true)[1]) { */ case 10: + s$3 = _ref$2.$val; + $r = f((x$3 = new typeDecl.ptr(s$3), new x$3.constructor.elem(x$3))); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 12; continue; + /* } else { */ case 11: + s$4 = _ref$2; + $r = check.errorf(s$4, -1, "unknown ast.Spec node %T", new sliceType$6([s$4])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + _i++; + $s = 6; continue; + case 7: + $s = 5; continue; + /* } else if ($assertType(_ref, ptrType$87, true)[1]) { */ case 3: + d$3 = _ref.$val; + $r = f((x$4 = new funcDecl.ptr(d$3), new x$4.constructor.elem(x$4))); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + /* } else { */ case 4: + d$4 = _ref; + $r = check.errorf(d$4, -1, "unknown ast.Decl node %T", new sliceType$6([d$4])); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: walkDecl, $c: true, $r, _1, _i, _ref, _ref$1, _ref$2, check, d, d$1, d$2, d$3, d$4, f, inherited, iota, last, s, s$1, s$2, s$3, s$4, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + $ptrType(Checker).prototype.constDecl = function constDecl$1(obj, typ$4, init$7, inherited) { + var {_r$1, _r$2, _r$3, check, inherited, init$7, obj, t, typ$4, x, $s, $deferred, $r, $c} = $restore(this, {obj, typ$4, init$7, inherited}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + x = [x]; + check[0] = this; + $r = assert($interfaceIsEqual(obj.object.typ, $ifaceNil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([(function(check, x) { return function Checker·constDecl·func1(iota, errpos) { + var errpos, iota; + check[0].environment.iota = iota; + check[0].environment.errpos = errpos; + }; })(check, x), [check[0].environment.iota, check[0].environment.errpos]]); + check[0].environment.iota = obj.val; + check[0].environment.errpos = $ifaceNil; + obj.val = constant.MakeUnknown(); + /* */ if (!($interfaceIsEqual(typ$4, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(typ$4, $ifaceNil))) { */ case 2: + _r$1 = check[0].typ(typ$4); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + t = _r$1; + _r$2 = isConstType(t); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!_r$2) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!_r$2) { */ case 5: + _r$3 = under(t); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(_r$3, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!($interfaceIsEqual(_r$3, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])))) { */ case 8: + $r = check[0].errorf(typ$4, 15, "invalid constant type %s", new sliceType$6([t])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + obj.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + $s = -1; return; + /* } */ case 6: + obj.object.typ = t; + /* } */ case 3: + x[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + /* */ if (!($interfaceIsEqual(init$7, $ifaceNil))) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!($interfaceIsEqual(init$7, $ifaceNil))) { */ case 12: + if (inherited) { + check[0].environment.errpos = new atPos(((obj.object.pos >> 0))); + } + $r = check[0].expr(x[0], init$7); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 13: + $r = check[0].initConst(obj, x[0]); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: constDecl$1, $c: true, $r, _r$1, _r$2, _r$3, check, inherited, init$7, obj, t, typ$4, x, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.varDecl = function varDecl$1(obj, lhs, typ$4, init$7) { + var {_i, _i$1, _r$1, _r$2, _ref, _ref$1, check, found, init$7, lhs, lhs$1, lhs$2, obj, typ$4, x, $s, $r, $c} = $restore(this, {obj, lhs, typ$4, init$7}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = [x]; + check = this; + $r = assert($interfaceIsEqual(obj.object.typ, $ifaceNil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(typ$4, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(typ$4, $ifaceNil))) { */ case 2: + _r$1 = check.varType(typ$4); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + obj.object.typ = _r$1; + /* } */ case 3: + if ($interfaceIsEqual(init$7, $ifaceNil)) { + if ($interfaceIsEqual(typ$4, $ifaceNil)) { + obj.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + } + $s = -1; return; + } + /* */ if (lhs === sliceType$10.nil || (lhs.$length === 1)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (lhs === sliceType$10.nil || (lhs.$length === 1)) { */ case 5: + $r = assert(lhs === sliceType$10.nil || (0 >= lhs.$length ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + 0]) === obj); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.expr(x[0], init$7); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = check.initVar(obj, x[0], "variable declaration"); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = -1; return; + /* } */ case 6: + if (false) { + found = false; + _ref = lhs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + lhs$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (obj === lhs$1) { + found = true; + break; + } + _i++; + } + if (!found) { + $panic(new $String("inconsistent lhs")); + } + } + if (!($interfaceIsEqual(typ$4, $ifaceNil))) { + _ref$1 = lhs; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + lhs$2 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + lhs$2.object.typ = obj.object.typ; + _i$1++; + } + } + $r = check.initVars(lhs, new sliceType$11([init$7]), $ifaceNil); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: varDecl$1, $c: true, $r, _i, _i$1, _r$1, _r$2, _ref, _ref$1, check, found, init$7, lhs, lhs$1, lhs$2, obj, typ$4, x, $s};return $f; + }; + $ptrType(Checker).prototype.isImportedConstraint = function isImportedConstraint(typ$4) { + var {$24r, _r$1, _r$2, _tuple, _tuple$1, _v, check, named, typ$4, u, $s, $r, $c} = $restore(this, {typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _tuple = $assertType(typ$4, ptrType$9, true); + named = _tuple[0]; + if (named === ptrType$9.nil || named.obj.object.pkg === check.pkg || named.obj.object.pkg === ptrType$1.nil) { + $s = -1; return false; + } + _r$1 = named.under(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$1, ptrType$13, true); + u = _tuple$1[0]; + if (!(!(u === ptrType$13.nil))) { _v = false; $s = 2; continue s; } + _r$2 = u.IsMethodSet(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = !_r$2; case 2: + $24r = _v; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: isImportedConstraint, $c: true, $r, $24r, _r$1, _r$2, _tuple, _tuple$1, _v, check, named, typ$4, u, $s};return $f; + }; + $ptrType(Checker).prototype.typeDecl = function typeDecl$1(obj, tdecl, def$2) { + var {_r$1, _r$2, alias, check, def$2, named, obj, rhs, tdecl, $s, $deferred, $r, $c} = $restore(this, {obj, tdecl, def$2}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + obj = [obj]; + rhs = [rhs]; + tdecl = [tdecl]; + check[0] = this; + $r = assert($interfaceIsEqual(obj[0].object.typ, $ifaceNil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + rhs[0] = $ifaceNil; + check[0].later((function(check, obj, rhs, tdecl) { return function Checker·typeDecl·func1() { + var {_r$1, _tuple, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = $assertType(obj[0].object.typ, ptrType$9, true); + t = _tuple[0]; + /* */ if (!(t === ptrType$9.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(t === ptrType$9.nil)) { */ case 1: + $r = check[0].validType(t); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _r$1 = check[0].isImportedConstraint(rhs[0]); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1 && !check[0].allowVersion(check[0].pkg, 1, 18)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$1 && !check[0].allowVersion(check[0].pkg, 1, 18)) { */ case 4: + $r = check[0].errorf(tdecl[0].Type, 135, "using type constraint %s requires go1.18 or later", new sliceType$6([rhs[0]])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·typeDecl·func1, $c: true, $r, _r$1, _tuple, t, $s};return $f; + }; })(check, obj, rhs, tdecl)).describef(obj[0], "validType(%s)", new sliceType$6([new $String(obj[0].object.Name())])); + alias = new token.Pos(tdecl[0].Assign).IsValid(); + /* */ if (alias && !((tdecl[0].TypeParams.NumFields() === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (alias && !((tdecl[0].TypeParams.NumFields() === 0))) { */ case 2: + $r = check[0].error(new atPos(((tdecl[0].Assign >> 0))), 131, "generic type cannot be alias"); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + alias = false; + /* } */ case 3: + /* */ if (alias) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (alias) { */ case 5: + /* */ if (!check[0].allowVersion(check[0].pkg, 1, 9)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!check[0].allowVersion(check[0].pkg, 1, 9)) { */ case 7: + $r = check[0].error(new atPos(((tdecl[0].Assign >> 0))), 135, "type aliases requires go1.9 or later"); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + check[0].brokenAlias(obj[0]); + _r$1 = check[0].typ(tdecl[0].Type); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + rhs[0] = _r$1; + check[0].validAlias(obj[0], rhs[0]); + $s = -1; return; + /* } */ case 6: + named = check[0].newNamed(obj[0], $ifaceNil, sliceType.nil); + def$2.setUnderlying(named); + /* */ if (!(tdecl[0].TypeParams === ptrType$49.nil)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!(tdecl[0].TypeParams === ptrType$49.nil)) { */ case 11: + $r = check[0].openScope(tdecl[0], "type parameters"); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(check[0], "closeScope"), []]); + $r = check[0].collectTypeParams((named.$ptr_tparams || (named.$ptr_tparams = new ptrType$84(function() { return this.$target.tparams; }, function($v) { this.$target.tparams = $v; }, named))), tdecl[0].TypeParams); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + _r$2 = check[0].definedType(tdecl[0].Type, named); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + rhs[0] = _r$2; + $r = assert(!($interfaceIsEqual(rhs[0], $ifaceNil))); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + named.fromRHS = rhs[0]; + if ($interfaceIsEqual(named.underlying, $ifaceNil)) { + named.underlying = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + } + /* */ if (isTypeParam(rhs[0])) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (isTypeParam(rhs[0])) { */ case 17: + $r = check[0].error(tdecl[0].Type, 144, "cannot use a type parameter as RHS in type declaration"); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + named.underlying = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 18: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: typeDecl$1, $c: true, $r, _r$1, _r$2, alias, check, def$2, named, obj, rhs, tdecl, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.collectTypeParams = function collectTypeParams(dst, list$2) { + var {_i, _i$1, _i$2, _r$1, _r$2, _ref, _ref$1, _ref$2, bound, check, dst, f, f$1, i, index$2, list$2, tparams, x, $s, $deferred, $r, $c} = $restore(this, {dst, list$2}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + check[0] = this; + tparams = sliceType$9.nil; + _ref = list$2.List; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = check[0].declareTypeParams(tparams, f.Names); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + tparams = _r$1; + _i++; + $s = 1; continue; + case 2: + dst.$set(bindTParams(tparams)); + $r = assert(!check[0].environment.inTParamList); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].environment.inTParamList = true; + $deferred.push([(function(check) { return function Checker·collectTypeParams·func1() { + check[0].environment.inTParamList = false; + }; })(check), []]); + index$2 = 0; + _ref$1 = list$2.List; + _i$1 = 0; + /* while (true) { */ case 5: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 6; continue; } + f$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + bound = $ifaceNil; + /* */ if (!($interfaceIsEqual(f$1.Type, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(f$1.Type, $ifaceNil))) { */ case 7: + _r$2 = check[0].bound(f$1.Type); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + bound = _r$2; + /* */ if (isTypeParam(bound)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (isTypeParam(bound)) { */ case 11: + $r = check[0].error(f$1.Type, 144, "cannot use a type parameter as constraint"); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + bound = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 12: + $s = 9; continue; + /* } else { */ case 8: + bound = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + /* } */ case 9: + _ref$2 = f$1.Names; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + i = _i$2; + (x = index$2 + i >> 0, ((x < 0 || x >= tparams.$length) ? ($throwRuntimeError("index out of range"), undefined) : tparams.$array[tparams.$offset + x])).bound = bound; + _i$2++; + } + index$2 = index$2 + (f$1.Names.$length) >> 0; + _i$1++; + $s = 5; continue; + case 6: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: collectTypeParams, $c: true, $r, _i, _i$1, _i$2, _r$1, _r$2, _ref, _ref$1, _ref$2, bound, check, dst, f, f$1, i, index$2, list$2, tparams, x, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.bound = function bound(x) { + var {$24r, _r$1, _r$2, _ref, _tuple, check, op$1, op$2, t, t$1, wrap, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + wrap = false; + _ref = x; + if ($assertType(_ref, ptrType$20, true)[1]) { + op$1 = _ref.$val; + wrap = op$1.Op === 88; + } else if ($assertType(_ref, ptrType$21, true)[1]) { + op$2 = _ref.$val; + wrap = op$2.Op === 18; + } + /* */ if (wrap) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (wrap) { */ case 1: + x = new ast.InterfaceType.ptr(0, new ast.FieldList.ptr(0, new sliceType$32([new ast.Field.ptr(ptrType$107.nil, sliceType$22.nil, x, ptrType$57.nil, ptrType$107.nil)]), 0), false); + _r$1 = check.typ(x); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + t = _r$1; + _tuple = $assertType(t, ptrType$13, true); + t$1 = _tuple[0]; + if (!(t$1 === ptrType$13.nil)) { + t$1.implicit = true; + } + $s = -1; return t; + /* } */ case 2: + _r$2 = check.typ(x); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: bound, $c: true, $r, $24r, _r$1, _r$2, _ref, _tuple, check, op$1, op$2, t, t$1, wrap, x, $s};return $f; + }; + $ptrType(Checker).prototype.declareTypeParams = function declareTypeParams(tparams, names) { + var {_i, _r$1, _ref, check, name, names, tname, tpar, tparams, $s, $r, $c} = $restore(this, {tparams, names}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _ref = names; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + name = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + tname = NewTypeName(name.Pos(), check.pkg, name.Name, $ifaceNil); + _r$1 = check.newTypeParam(tname, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + tpar = _r$1; + $r = check.declare(check.environment.scope, name, tname, check.environment.scope.pos); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tparams = $append(tparams, tpar); + _i++; + $s = 1; continue; + case 2: + /* */ if (false && names.$length > 0) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (false && names.$length > 0) { */ case 5: + $r = check.trace((0 >= names.$length ? ($throwRuntimeError("index out of range"), undefined) : names.$array[names.$offset + 0]).Pos(), "type params = %v", new sliceType$6([$subslice(tparams, (tparams.$length - names.$length >> 0))])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + $s = -1; return tparams; + /* */ } return; } var $f = {$blk: declareTypeParams, $c: true, $r, _i, _r$1, _ref, check, name, names, tname, tpar, tparams, $s};return $f; + }; + $ptrType(Checker).prototype.collectMethods = function collectMethods(obj) { + var {_arg, _arg$1, _arg$2, _arg$3, _entry, _entry$1, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tuple, alt, base, check, i, m, m$1, methods, mset, mset$24ptr, obj, $s, $r, $c} = $restore(this, {obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + base = [base]; + check = [check]; + check[0] = this; + methods = (_entry = $mapIndex(check[0].methods,ptrType$17.keyFor(obj)), _entry !== undefined ? _entry.v : sliceType.nil); + if (methods === sliceType.nil) { + $s = -1; return; + } + $mapDelete(check[0].methods, ptrType$17.keyFor(obj)); + $r = assert(!new token.Pos((_entry$1 = $mapIndex(check[0].objMap,Object.keyFor(obj)), _entry$1 !== undefined ? _entry$1.v : ptrType$58.nil).tdecl.Assign).IsValid()); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + mset = false; + _tuple = $assertType(obj.object.typ, ptrType$9, true); + base[0] = _tuple[0]; + /* */ if (!(base[0] === ptrType$9.nil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(base[0] === ptrType$9.nil)) { */ case 2: + $r = assert(base[0].TypeArgs().Len() === 0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].later((function(base, check) { return function Checker·collectMethods·func1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = check[0].checkFieldUniqueness(base[0]); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·collectMethods·func1, $c: true, $r, $s};return $f; + }; })(base, check)).describef(obj, "verifying field uniqueness for %v", new sliceType$6([base[0]])); + i = 0; + /* while (true) { */ case 5: + _r$1 = base[0].NumMethods(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* if (!(i < _r$1)) { break; } */ if(!(i < _r$1)) { $s = 6; continue; } + _r$2 = base[0].Method(i); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + m = _r$2; + $r = assert(!(m.object.name === "_")); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = (mset$24ptr || (mset$24ptr = new ptrType$54(function() { return mset; }, function($v) { mset = $v; }))).insert(m); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = assert($interfaceIsEqual(_r$3, $ifaceNil)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 5; continue; + case 6: + /* } */ case 3: + _ref = methods; + _i = 0; + /* while (true) { */ case 12: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 13; continue; } + m$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = assert(!(m$1.object.name === "_")); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$4 = (mset$24ptr || (mset$24ptr = new ptrType$54(function() { return mset; }, function($v) { mset = $v; }))).insert(m$1); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + alt = _r$4; + /* */ if (!($interfaceIsEqual(alt, $ifaceNil))) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!($interfaceIsEqual(alt, $ifaceNil))) { */ case 16: + _r$5 = alt.Pos(); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = new token.Pos(_r$5).IsValid(); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (_r$6) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (_r$6) { */ case 18: + _arg = m$1; + _arg$1 = new $String(obj.object.Name()); + _arg$2 = new $String(m$1.object.name); + _r$7 = alt.Pos(); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _arg$3 = new token.Pos(_r$7); + $r = check[0].errorf(_arg, 34, "method %s.%s already declared at %s", new sliceType$6([_arg$1, _arg$2, _arg$3])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 20; continue; + /* } else { */ case 19: + $r = check[0].errorf(m$1, 34, "method %s.%s already declared", new sliceType$6([new $String(obj.object.Name()), new $String(m$1.object.name)])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 20: + _i++; + /* continue; */ $s = 12; continue; + /* } */ case 17: + /* */ if (!(base[0] === ptrType$9.nil)) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!(base[0] === ptrType$9.nil)) { */ case 26: + $r = base[0].AddMethod(m$1); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 27: + _i++; + $s = 12; continue; + case 13: + $s = -1; return; + /* */ } return; } var $f = {$blk: collectMethods, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _entry, _entry$1, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tuple, alt, base, check, i, m, m$1, methods, mset, mset$24ptr, obj, $s};return $f; + }; + $ptrType(Checker).prototype.checkFieldUniqueness = function checkFieldUniqueness(base) { + var {_i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, alt, base, check, fld, i, m, mset, mset$24ptr, t, $s, $r, $c} = $restore(this, {base}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = base.under(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$11, true); + t = _tuple[0]; + /* */ if (!(t === ptrType$11.nil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(t === ptrType$11.nil)) { */ case 2: + mset = false; + i = 0; + /* while (true) { */ case 4: + _r$2 = base.NumMethods(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* if (!(i < _r$2)) { break; } */ if(!(i < _r$2)) { $s = 5; continue; } + _r$3 = base.Method(i); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + m = _r$3; + $r = assert(!(m.object.name === "_")); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$4 = (mset$24ptr || (mset$24ptr = new ptrType$54(function() { return mset; }, function($v) { mset = $v; }))).insert(m); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $r = assert($interfaceIsEqual(_r$4, $ifaceNil)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 4; continue; + case 5: + _ref = t.fields; + _i = 0; + /* while (true) { */ case 11: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 12; continue; } + fld = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (!(fld.object.name === "_")) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!(fld.object.name === "_")) { */ case 13: + _r$5 = (mset$24ptr || (mset$24ptr = new ptrType$54(function() { return mset; }, function($v) { mset = $v; }))).insert(fld); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + alt = _r$5; + /* */ if (!($interfaceIsEqual(alt, $ifaceNil))) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!($interfaceIsEqual(alt, $ifaceNil))) { */ case 16: + $unused($assertType(alt, ptrType$2)); + $r = check.errorf(alt, 33, "field and method with the same name %s", new sliceType$6([new $String(fld.object.name)])); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.reportAltDecl(fld); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 17: + /* } */ case 14: + _i++; + $s = 11; continue; + case 12: + /* } */ case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: checkFieldUniqueness, $c: true, $r, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, alt, base, check, fld, i, m, mset, mset$24ptr, t, $s};return $f; + }; + $ptrType(Checker).prototype.funcDecl = function funcDecl$1(obj, decl$1) { + var {check, decl$1, fdecl, obj, saved, sig, $s, $r, $c} = $restore(this, {obj, decl$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = [check]; + decl$1 = [decl$1]; + fdecl = [fdecl]; + obj = [obj]; + sig = [sig]; + check[0] = this; + $r = assert($interfaceIsEqual(obj[0].object.typ, $ifaceNil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert($interfaceIsEqual(check[0].environment.iota, $ifaceNil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + sig[0] = new Signature.ptr(ptrType$48.nil, ptrType$48.nil, ptrType.nil, ptrType$16.nil, ptrType$15.nil, ptrType$15.nil, false); + obj[0].object.typ = sig[0]; + saved = obj[0].object.color_; + obj[0].object.color_ = 1; + fdecl[0] = decl$1[0].fdecl; + $r = check[0].funcType(sig[0], fdecl[0].Recv, fdecl[0].Type); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + obj[0].object.color_ = saved; + /* */ if (fdecl[0].Type.TypeParams.NumFields() > 0 && fdecl[0].Body === ptrType$74.nil) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (fdecl[0].Type.TypeParams.NumFields() > 0 && fdecl[0].Body === ptrType$74.nil) { */ case 4: + $r = check[0].softErrorf(fdecl[0].Name, 131, "generic function is missing function body", sliceType$6.nil); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + if (!check[0].conf.IgnoreFuncBodies && !(fdecl[0].Body === ptrType$74.nil)) { + check[0].later((function(check, decl$1, fdecl, obj, sig) { return function Checker·funcDecl·func1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = check[0].funcBody(decl$1[0], obj[0].object.name, sig[0], fdecl[0].Body, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·funcDecl·func1, $c: true, $r, $s};return $f; + }; })(check, decl$1, fdecl, obj, sig)).describef(obj[0], "func %s", new sliceType$6([new $String(obj[0].object.name)])); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: funcDecl$1, $c: true, $r, check, decl$1, fdecl, obj, saved, sig, $s};return $f; + }; + $ptrType(Checker).prototype.declStmt = function declStmt(d) { + var {check, d, pkg, $s, $r, $c} = $restore(this, {d}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = [check]; + pkg = [pkg]; + check[0] = this; + pkg[0] = check[0].pkg; + $r = check[0].walkDecl(d, (function(check, pkg) { return function Checker·declStmt·func1(d$1) { + var {_1, _arg, _arg$1, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, d$1, d$2, d$3, d$4, d$5, i, i$1, i$2, i$3, i$4, init$7, init$8, lhs, lhs$1, lhs0, name, name$1, name$2, name$3, obj, obj$1, obj$2, obj$3, scopePos$2, scopePos$3, scopePos$4, top, top$1, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {d$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = d$1; + /* */ if ($assertType(_ref, constDecl, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, varDecl, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, typeDecl, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref, constDecl, true)[1]) { */ case 1: + d$2 = $clone(_ref.$val, constDecl); + top = check[0].delayed.$length; + lhs = $makeSlice(sliceType$33, d$2.spec.Names.$length); + _ref$1 = d$2.spec.Names; + _i = 0; + /* while (true) { */ case 6: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 7; continue; } + i = _i; + name = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + obj = NewConst(name.Pos(), pkg[0], name.Name, $ifaceNil, constant.MakeInt64((new $Int64(0, d$2.iota)))); + ((i < 0 || i >= lhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + i] = obj); + init$7 = $ifaceNil; + if (i < d$2.init.$length) { + init$7 = (x = d$2.init, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + } + $r = check[0].constDecl(obj, d$2.typ, init$7, d$2.inherited); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 6; continue; + case 7: + $r = check[0].processDelayed(top); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = d$2.spec.End(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + scopePos$2 = _r$1; + _ref$2 = d$2.spec.Names; + _i$1 = 0; + /* while (true) { */ case 11: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 12; continue; } + i$1 = _i$1; + name$1 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + $r = check[0].declare(check[0].environment.scope, name$1, ((i$1 < 0 || i$1 >= lhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + i$1]), scopePos$2); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 11; continue; + case 12: + $s = 5; continue; + /* } else if ($assertType(_ref, varDecl, true)[1]) { */ case 2: + d$3 = $clone(_ref.$val, varDecl); + top$1 = check[0].delayed.$length; + lhs0 = $makeSlice(sliceType$10, d$3.spec.Names.$length); + _ref$3 = d$3.spec.Names; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$3.$length)) { break; } + i$2 = _i$2; + name$2 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + ((i$2 < 0 || i$2 >= lhs0.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhs0.$array[lhs0.$offset + i$2] = NewVar(name$2.Pos(), pkg[0], name$2.Name, $ifaceNil)); + _i$2++; + } + _ref$4 = lhs0; + _i$3 = 0; + /* while (true) { */ case 14: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 15; continue; } + i$3 = _i$3; + obj$1 = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); + lhs$1 = sliceType$10.nil; + init$8 = $ifaceNil; + _1 = d$3.spec.Values.$length; + if (_1 === (d$3.spec.Names.$length)) { + init$8 = (x$1 = d$3.spec.Values, ((i$3 < 0 || i$3 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$3])); + } else if (_1 === (1)) { + lhs$1 = lhs0; + init$8 = (x$2 = d$3.spec.Values, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])); + } else if (i$3 < d$3.spec.Values.$length) { + init$8 = (x$3 = d$3.spec.Values, ((i$3 < 0 || i$3 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i$3])); + } + $r = check[0].varDecl(obj$1, lhs$1, d$3.spec.Type, init$8); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (d$3.spec.Values.$length === 1) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (d$3.spec.Values.$length === 1) { */ case 17: + /* */ if (false) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (false) { */ case 19: + _ref$5 = lhs0; + _i$4 = 0; + /* while (true) { */ case 21: + /* if (!(_i$4 < _ref$5.$length)) { break; } */ if(!(_i$4 < _ref$5.$length)) { $s = 22; continue; } + obj$2 = ((_i$4 < 0 || _i$4 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$4]); + $r = assert(!($interfaceIsEqual(obj$2.object.typ, $ifaceNil))); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$4++; + $s = 21; continue; + case 22: + /* } */ case 20: + /* break; */ $s = 15; continue; + /* } */ case 18: + _i$3++; + $s = 14; continue; + case 15: + $r = check[0].processDelayed(top$1); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = d$3.spec.End(); /* */ $s = 25; case 25: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + scopePos$3 = _r$2; + _ref$6 = d$3.spec.Names; + _i$5 = 0; + /* while (true) { */ case 26: + /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 27; continue; } + i$4 = _i$5; + name$3 = ((_i$5 < 0 || _i$5 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$5]); + $r = check[0].declare(check[0].environment.scope, name$3, ((i$4 < 0 || i$4 >= lhs0.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhs0.$array[lhs0.$offset + i$4]), scopePos$3); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$5++; + $s = 26; continue; + case 27: + $s = 5; continue; + /* } else if ($assertType(_ref, typeDecl, true)[1]) { */ case 3: + d$4 = $clone(_ref.$val, typeDecl); + obj$3 = NewTypeName(d$4.spec.Name.Pos(), pkg[0], d$4.spec.Name.Name, $ifaceNil); + scopePos$4 = d$4.spec.Name.Pos(); + $r = check[0].declare(check[0].environment.scope, d$4.spec.Name, obj$3, scopePos$4); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = obj$3.object.setColor(2 + ((check[0].push(obj$3) >>> 0)) >>> 0); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].typeDecl(obj$3, d$4.spec, ptrType$9.nil); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].pop().setColor(1); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + /* } else { */ case 4: + d$5 = _ref; + _r$3 = d$5.node(); /* */ $s = 33; case 33: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg = _r$3; + _r$4 = d$5.node(); /* */ $s = 34; case 34: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$1 = _r$4; + $r = check[0].errorf(_arg, -1, "unknown ast.Decl node %T", new sliceType$6([_arg$1])); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·declStmt·func1, $c: true, $r, _1, _arg, _arg$1, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, d$1, d$2, d$3, d$4, d$5, i, i$1, i$2, i$3, i$4, init$7, init$8, lhs, lhs$1, lhs0, name, name$1, name$2, name$3, obj, obj$1, obj$2, obj$3, scopePos$2, scopePos$3, scopePos$4, top, top$1, x, x$1, x$2, x$3, $s};return $f; + }; })(check, pkg)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: declStmt, $c: true, $r, check, d, pkg, $s};return $f; + }; + $ptrType(Checker).prototype.conversion = function conversion(x, T) { + var {T, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _v, _v$1, _v$2, _v$3, _v$4, cause, check, constArg, constConvertibleTo, final$1, ok, x, $s, $r, $c} = $restore(this, {x, T}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + T = [T]; + cause = [cause]; + check = [check]; + constConvertibleTo = [constConvertibleTo]; + x = [x]; + check[0] = this; + constArg = x[0].mode === 4; + constConvertibleTo[0] = (function(T, cause, check, constConvertibleTo, x) { return function Checker·conversion·func1(T$1, val) { + var {T$1, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _v, codepoint, i, ok, t, val, $s, $r, $c} = $restore(this, {T$1, val}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = under(T$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$8, true); + t = _tuple[0]; + /* */ if (t === ptrType$8.nil) { $s = 3; continue; } + _r$2 = representableConst(x[0].val, check[0], t, val); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 4; continue; } + _r$3 = isInteger(x[0].typ); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + if (!(_r$3)) { _v = false; $s = 8; continue s; } + _r$4 = isString(t); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _v = _r$4; case 8: + /* */ if (_v) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (t === ptrType$8.nil) { */ case 3: + $s = 6; continue; + /* } else if (_r$2) { */ case 4: + $s = -1; return true; + /* } else if (_v) { */ case 5: + codepoint = 65533; + _r$5 = constant.Uint64Val(x[0].val); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$1 = _r$5; + i = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok && (i.$high < 0 || (i.$high === 0 && i.$low <= 1114111))) { + codepoint = ((i.$low >> 0)); + } + if (!(val === ptrType$50.nil)) { + val.$set(constant.MakeString(($encodeRune(codepoint)))); + } + $s = -1; return true; + /* } */ case 6: + case 1: + $s = -1; return false; + /* */ } return; } var $f = {$blk: Checker·conversion·func1, $c: true, $r, T$1, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _v, codepoint, i, ok, t, val, $s};return $f; + }; })(T, cause, check, constConvertibleTo, x); + ok = false; + cause[0] = ""; + if (!(constArg)) { _v = false; $s = 6; continue s; } + _r$1 = isConstType(T[0]); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 6: + /* */ if (_v) { $s = 2; continue; } + /* */ if (constArg && isTypeParam(T[0])) { $s = 3; continue; } + _r$2 = x[0].convertibleTo(check[0], T[0], (cause.$ptr || (cause.$ptr = new ptrType$34(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, cause)))); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 2: + _r$3 = constConvertibleTo[0](T[0], (x[0].$ptr_val || (x[0].$ptr_val = new ptrType$50(function() { return this.$target.val; }, function($v) { this.$target.val = $v; }, x[0])))); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ok = _r$3; + $s = 5; continue; + /* } else if (constArg && isTypeParam(T[0])) { */ case 3: + _r$4 = $assertType(T[0], ptrType$14).underIs((function(T, cause, check, constConvertibleTo, x) { return function Checker·conversion·func2(u) { + var {_r$4, _r$5, _r$6, _r$7, _r$8, _v$1, u, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if ($interfaceIsEqual(u, $ifaceNil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($interfaceIsEqual(u, $ifaceNil)) { */ case 1: + _r$4 = check[0].sprintf("%s does not contain specific types", new sliceType$6([T[0]])); /* */ $s = 3; case 3: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + cause[0] = _r$4; + $s = -1; return false; + /* } */ case 2: + _r$5 = isString(x[0].typ); /* */ $s = 7; case 7: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + if (!(_r$5)) { _v$1 = false; $s = 6; continue s; } + _r$6 = isBytesOrRunes(u); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$1 = _r$6; case 6: + /* */ if (_v$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v$1) { */ case 4: + $s = -1; return true; + /* } */ case 5: + _r$7 = constConvertibleTo[0](u, ptrType$50.nil); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (!_r$7) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!_r$7) { */ case 9: + _r$8 = check[0].sprintf("cannot convert %s to type %s (in %s)", new sliceType$6([x[0], u, T[0]])); /* */ $s = 12; case 12: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + cause[0] = _r$8; + $s = -1; return false; + /* } */ case 10: + $s = -1; return true; + /* */ } return; } var $f = {$blk: Checker·conversion·func2, $c: true, $r, _r$4, _r$5, _r$6, _r$7, _r$8, _v$1, u, $s};return $f; + }; })(T, cause, check, constConvertibleTo, x)); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + ok = _r$4; + x[0].mode = 7; + $s = 5; continue; + /* } else if (_r$2) { */ case 4: + ok = true; + x[0].mode = 7; + /* } */ case 5: + case 1: + /* */ if (!ok) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!ok) { */ case 11: + /* */ if (!(cause[0] === "")) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!(cause[0] === "")) { */ case 13: + $r = check[0].errorf(x[0], 96, "cannot convert %s to type %s: %s", new sliceType$6([x[0], T[0], new $String(cause[0])])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 15; continue; + /* } else { */ case 14: + $r = check[0].errorf(x[0], 96, "cannot convert %s to type %s", new sliceType$6([x[0], T[0]])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 15: + x[0].mode = 0; + $s = -1; return; + /* } */ case 12: + /* */ if (isUntyped(x[0].typ)) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (isUntyped(x[0].typ)) { */ case 18: + final$1 = T[0]; + _r$5 = isNonTypeParamInterface(T[0]); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + if (_r$5) { _v$1 = true; $s = 23; continue s; } + if (!(constArg)) { _v$2 = false; $s = 25; continue s; } + _r$6 = isConstType(T[0]); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$2 = !_r$6; case 25: + _v$1 = _v$2; case 23: + /* */ if (_v$1 || x[0].isNil()) { $s = 20; continue; } + if (!(x[0].mode === 4)) { _v$4 = false; $s = 28; continue s; } + _r$7 = isInteger(x[0].typ); /* */ $s = 29; case 29: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _v$4 = _r$7; case 28: + if (!(_v$4)) { _v$3 = false; $s = 27; continue s; } + _r$8 = allString(T[0]); /* */ $s = 30; case 30: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _v$3 = _r$8; case 27: + /* */ if (_v$3) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (_v$1 || x[0].isNil()) { */ case 20: + final$1 = Default(x[0].typ); + $s = 22; continue; + /* } else if (_v$3) { */ case 21: + final$1 = x[0].typ; + /* } */ case 22: + $r = check[0].updateExprType(x[0].expr, final$1, true); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 19: + x[0].typ = T[0]; + $s = -1; return; + /* */ } return; } var $f = {$blk: conversion, $c: true, $r, T, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _v, _v$1, _v$2, _v$3, _v$4, cause, check, constArg, constConvertibleTo, final$1, ok, x, $s};return $f; + }; + $ptrType(operand).prototype.convertibleTo = function convertibleTo(check, T, cause) { + var {$24r, $24r$1, $24r$2, T, T$1, Tp, Tu, V, V$1, Vp, Vu, _arg, _arg$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, _v$7, _v$8, a, a$1, a$2, cause, check, errorf$2, ok, ok$1, ok$2, s, x, x$1, x$2, $s, $r, $c} = $restore(this, {check, T, cause}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + T = [T]; + Tp = [Tp]; + Vp = [Vp]; + cause = [cause]; + check = [check]; + errorf$2 = [errorf$2]; + x = [x]; + x$1 = [x$1]; + x$2 = [x$2]; + x$2[0] = this; + _r$1 = x$2[0].assignableTo(check[0], T[0], cause[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + ok = _tuple[0]; + if (ok) { + $s = -1; return true; + } + V = x$2[0].typ; + _r$2 = under(V); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + Vu = _r$2; + _r$3 = under(T[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + Tu = _r$3; + _tuple$1 = $assertType(V, ptrType$14, true); + Vp[0] = _tuple$1[0]; + _tuple$2 = $assertType(T[0], ptrType$14, true); + Tp[0] = _tuple$2[0]; + _r$4 = IdenticalIgnoreTags(Vu, Tu); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4 && Vp[0] === ptrType$14.nil && Tp[0] === ptrType$14.nil) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$4 && Vp[0] === ptrType$14.nil && Tp[0] === ptrType$14.nil) { */ case 4: + $s = -1; return true; + /* } */ case 5: + _tuple$3 = $assertType(V, ptrType$26, true); + V$1 = _tuple$3[0]; + ok$1 = _tuple$3[1]; + /* */ if (ok$1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (ok$1) { */ case 7: + _tuple$4 = $assertType(T[0], ptrType$26, true); + T$1 = _tuple$4[0]; + ok$2 = _tuple$4[1]; + /* */ if (ok$2) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (ok$2) { */ case 9: + _r$5 = under(V$1.base); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg = _r$5; + _r$6 = under(T$1.base); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg$1 = _r$6; + _r$7 = IdenticalIgnoreTags(_arg, _arg$1); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (_r$7 && !isTypeParam(V$1.base) && !isTypeParam(T$1.base)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_r$7 && !isTypeParam(V$1.base) && !isTypeParam(T$1.base)) { */ case 11: + $s = -1; return true; + /* } */ case 12: + /* } */ case 10: + /* } */ case 8: + _r$8 = isIntegerOrFloat(Vu); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + if (!(_r$8)) { _v = false; $s = 18; continue s; } + _r$9 = isIntegerOrFloat(Tu); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _v = _r$9; case 18: + /* */ if (_v) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (_v) { */ case 16: + $s = -1; return true; + /* } */ case 17: + _r$10 = isComplex(Vu); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + if (!(_r$10)) { _v$1 = false; $s = 23; continue s; } + _r$11 = isComplex(Tu); /* */ $s = 25; case 25: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _v$1 = _r$11; case 23: + /* */ if (_v$1) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (_v$1) { */ case 21: + $s = -1; return true; + /* } */ case 22: + _r$12 = isInteger(Vu); /* */ $s = 30; case 30: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + if (_r$12) { _v$3 = true; $s = 29; continue s; } + _r$13 = isBytesOrRunes(Vu); /* */ $s = 31; case 31: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _v$3 = _r$13; case 29: + if (!(_v$3)) { _v$2 = false; $s = 28; continue s; } + _r$14 = isString(Tu); /* */ $s = 32; case 32: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _v$2 = _r$14; case 28: + /* */ if (_v$2) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (_v$2) { */ case 26: + $s = -1; return true; + /* } */ case 27: + _r$15 = isString(Vu); /* */ $s = 36; case 36: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + if (!(_r$15)) { _v$4 = false; $s = 35; continue s; } + _r$16 = isBytesOrRunes(Tu); /* */ $s = 37; case 37: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _v$4 = _r$16; case 35: + /* */ if (_v$4) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (_v$4) { */ case 33: + $s = -1; return true; + /* } */ case 34: + _r$17 = isPointer(Vu); /* */ $s = 42; case 42: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + if (_r$17) { _v$6 = true; $s = 41; continue s; } + _r$18 = isUintptr(Vu); /* */ $s = 43; case 43: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _v$6 = _r$18; case 41: + if (!(_v$6)) { _v$5 = false; $s = 40; continue s; } + _r$19 = isUnsafePointer(Tu); /* */ $s = 44; case 44: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _v$5 = _r$19; case 40: + /* */ if (_v$5) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (_v$5) { */ case 38: + $s = -1; return true; + /* } */ case 39: + _r$20 = isUnsafePointer(Vu); /* */ $s = 48; case 48: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + if (!(_r$20)) { _v$7 = false; $s = 47; continue s; } + _r$21 = isPointer(Tu); /* */ $s = 50; case 50: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + if (_r$21) { _v$8 = true; $s = 49; continue s; } + _r$22 = isUintptr(Tu); /* */ $s = 51; case 51: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _v$8 = _r$22; case 49: + _v$7 = _v$8; case 47: + /* */ if (_v$7) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if (_v$7) { */ case 45: + $s = -1; return true; + /* } */ case 46: + _tuple$5 = $assertType(Vu, ptrType$25, true); + s = _tuple$5[0]; + /* */ if (!(s === ptrType$25.nil)) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if (!(s === ptrType$25.nil)) { */ case 52: + _ref = Tu; + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 54; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if ($assertType(_ref, ptrType$10, true)[1]) { */ case 54: + a = _ref.$val; + _r$23 = Identical(s.Elem(), a.Elem()); /* */ $s = 59; case 59: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + /* */ if (_r$23) { $s = 57; continue; } + /* */ $s = 58; continue; + /* if (_r$23) { */ case 57: + if (check[0] === ptrType$5.nil || check[0].allowVersion(check[0].pkg, 1, 20)) { + $s = -1; return true; + } + if (!(cause[0] === ptrType$34.nil)) { + cause[0].$set("conversion of slices to arrays requires go1.20 or later"); + } + $s = -1; return false; + /* } */ case 58: + $s = 56; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 55: + a$1 = _ref.$val; + _r$24 = under(a$1.Elem()); /* */ $s = 60; case 60: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _tuple$6 = $assertType(_r$24, ptrType$10, true); + a$2 = _tuple$6[0]; + /* */ if (!(a$2 === ptrType$10.nil)) { $s = 61; continue; } + /* */ $s = 62; continue; + /* if (!(a$2 === ptrType$10.nil)) { */ case 61: + _r$25 = Identical(s.Elem(), a$2.Elem()); /* */ $s = 65; case 65: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + /* */ if (_r$25) { $s = 63; continue; } + /* */ $s = 64; continue; + /* if (_r$25) { */ case 63: + if (check[0] === ptrType$5.nil || check[0].allowVersion(check[0].pkg, 1, 17)) { + $s = -1; return true; + } + if (!(cause[0] === ptrType$34.nil)) { + cause[0].$set("conversion of slices to array pointers requires go1.17 or later"); + } + $s = -1; return false; + /* } */ case 64: + /* } */ case 62: + /* } */ case 56: + /* } */ case 53: + if (Vp[0] === ptrType$14.nil && Tp[0] === ptrType$14.nil) { + $s = -1; return false; + } + errorf$2[0] = (function(T, Tp, Vp, cause, check, errorf$2, x, x$1, x$2) { return function operand·convertibleTo·func1(format, args) { + var {_r$26, args, format, msg$1, $s, $r, $c} = $restore(this, {format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!(check[0] === ptrType$5.nil) && !(cause[0] === ptrType$34.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(check[0] === ptrType$5.nil) && !(cause[0] === ptrType$34.nil)) { */ case 1: + _r$26 = check[0].sprintf(format, args); /* */ $s = 3; case 3: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + msg$1 = _r$26; + if (!(cause[0].$get() === "")) { + msg$1 = msg$1 + ("\n\t" + cause[0].$get()); + } + cause[0].$set(msg$1); + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: operand·convertibleTo·func1, $c: true, $r, _r$26, args, format, msg$1, $s};return $f; + }; })(T, Tp, Vp, cause, check, errorf$2, x, x$1, x$2); + /* */ if (!(Vp[0] === ptrType$14.nil) && !(Tp[0] === ptrType$14.nil)) { $s = 67; continue; } + /* */ if (!(Vp[0] === ptrType$14.nil)) { $s = 68; continue; } + /* */ if (!(Tp[0] === ptrType$14.nil)) { $s = 69; continue; } + /* */ $s = 70; continue; + /* if (!(Vp[0] === ptrType$14.nil) && !(Tp[0] === ptrType$14.nil)) { */ case 67: + x[0] = $clone(x$2[0], operand); + _r$26 = Vp[0].is((function(T, Tp, Vp, cause, check, errorf$2, x, x$1, x$2) { return function operand·convertibleTo·func2(V$2) { + var {$24r, V$2, _r$26, $s, $r, $c} = $restore(this, {V$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + V$2 = [V$2]; + if (V$2[0] === ptrType$4.nil) { + $s = -1; return false; + } + x[0].typ = V$2[0].typ; + _r$26 = Tp[0].is((function(T, Tp, V$2, Vp, cause, check, errorf$2, x, x$1, x$2) { return function operand·convertibleTo·func2·func1(T$2) { + var {T$2, _r$26, $s, $r, $c} = $restore(this, {T$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (T$2 === ptrType$4.nil) { + $s = -1; return false; + } + _r$26 = x[0].convertibleTo(check[0], T$2.typ, cause[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + /* */ if (!_r$26) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r$26) { */ case 1: + $r = errorf$2[0]("cannot convert %s (in %s) to type %s (in %s)", new sliceType$6([V$2[0].typ, Vp[0], T$2.typ, Tp[0]])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 2: + $s = -1; return true; + /* */ } return; } var $f = {$blk: operand·convertibleTo·func2·func1, $c: true, $r, T$2, _r$26, $s};return $f; + }; })(T, Tp, V$2, Vp, cause, check, errorf$2, x, x$1, x$2)); /* */ $s = 1; case 1: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + $24r = _r$26; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: operand·convertibleTo·func2, $c: true, $r, $24r, V$2, _r$26, $s};return $f; + }; })(T, Tp, Vp, cause, check, errorf$2, x, x$1, x$2)); /* */ $s = 71; case 71: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + $24r = _r$26; + $s = 72; case 72: return $24r; + /* } else if (!(Vp[0] === ptrType$14.nil)) { */ case 68: + x$1[0] = $clone(x$2[0], operand); + _r$27 = Vp[0].is((function(T, Tp, Vp, cause, check, errorf$2, x, x$1, x$2) { return function operand·convertibleTo·func3(V$2) { + var {V$2, _r$27, $s, $r, $c} = $restore(this, {V$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (V$2 === ptrType$4.nil) { + $s = -1; return false; + } + x$1[0].typ = V$2.typ; + _r$27 = x$1[0].convertibleTo(check[0], T[0], cause[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + /* */ if (!_r$27) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r$27) { */ case 1: + $r = errorf$2[0]("cannot convert %s (in %s) to type %s", new sliceType$6([V$2.typ, Vp[0], T[0]])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 2: + $s = -1; return true; + /* */ } return; } var $f = {$blk: operand·convertibleTo·func3, $c: true, $r, V$2, _r$27, $s};return $f; + }; })(T, Tp, Vp, cause, check, errorf$2, x, x$1, x$2)); /* */ $s = 73; case 73: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + $24r$1 = _r$27; + $s = 74; case 74: return $24r$1; + /* } else if (!(Tp[0] === ptrType$14.nil)) { */ case 69: + _r$28 = Tp[0].is((function(T, Tp, Vp, cause, check, errorf$2, x, x$1, x$2) { return function operand·convertibleTo·func4(T$2) { + var {T$2, _r$28, $s, $r, $c} = $restore(this, {T$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (T$2 === ptrType$4.nil) { + $s = -1; return false; + } + _r$28 = x$2[0].convertibleTo(check[0], T$2.typ, cause[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + /* */ if (!_r$28) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r$28) { */ case 1: + $r = errorf$2[0]("cannot convert %s to type %s (in %s)", new sliceType$6([x$2[0].typ, T$2.typ, Tp[0]])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 2: + $s = -1; return true; + /* */ } return; } var $f = {$blk: operand·convertibleTo·func4, $c: true, $r, T$2, _r$28, $s};return $f; + }; })(T, Tp, Vp, cause, check, errorf$2, x, x$1, x$2)); /* */ $s = 75; case 75: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + $24r$2 = _r$28; + $s = 76; case 76: return $24r$2; + /* } */ case 70: + case 66: + $s = -1; return false; + /* */ } return; } var $f = {$blk: convertibleTo, $c: true, $r, $24r, $24r$1, $24r$2, T, T$1, Tp, Tu, V, V$1, Vp, Vu, _arg, _arg$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, _v$7, _v$8, a, a$1, a$2, cause, check, errorf$2, ok, ok$1, ok$2, s, x, x$1, x$2, $s};return $f; + }; + isUintptr = function isUintptr$1(typ$4) { + var {_r$1, _tuple, t, typ$4, $s, $r, $c} = $restore(this, {typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = under(typ$4); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$8, true); + t = _tuple[0]; + $s = -1; return !(t === ptrType$8.nil) && (t.kind === 12); + /* */ } return; } var $f = {$blk: isUintptr$1, $c: true, $r, _r$1, _tuple, t, typ$4, $s};return $f; + }; + isUnsafePointer = function isUnsafePointer$1(typ$4) { + var {_r$1, _tuple, t, typ$4, $s, $r, $c} = $restore(this, {typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = under(typ$4); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$8, true); + t = _tuple[0]; + $s = -1; return !(t === ptrType$8.nil) && (t.kind === 18); + /* */ } return; } var $f = {$blk: isUnsafePointer$1, $c: true, $r, _r$1, _tuple, t, typ$4, $s};return $f; + }; + isPointer = function isPointer$1(typ$4) { + var {_r$1, _tuple, ok, typ$4, $s, $r, $c} = $restore(this, {typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = under(typ$4); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$26, true); + ok = _tuple[1]; + $s = -1; return ok; + /* */ } return; } var $f = {$blk: isPointer$1, $c: true, $r, _r$1, _tuple, ok, typ$4, $s};return $f; + }; + isBytesOrRunes = function isBytesOrRunes$1(typ$4) { + var {_r$1, _r$2, _tuple, _tuple$1, s, t, typ$4, $s, $r, $c} = $restore(this, {typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = under(typ$4); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$25, true); + s = _tuple[0]; + /* */ if (!(s === ptrType$25.nil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(s === ptrType$25.nil)) { */ case 2: + _r$2 = under(s.elem); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$2, ptrType$8, true); + t = _tuple$1[0]; + $s = -1; return !(t === ptrType$8.nil) && ((t.kind === 8) || (t.kind === 5)); + /* } */ case 3: + $s = -1; return false; + /* */ } return; } var $f = {$blk: isBytesOrRunes$1, $c: true, $r, _r$1, _r$2, _tuple, _tuple$1, s, t, typ$4, $s};return $f; + }; + NewContext = function NewContext$1() { + return new Context.ptr(new sync.Mutex.ptr(0, 0), new $global.Map(), 0, new $global.Map()); + }; + $pkg.NewContext = NewContext; + $ptrType(Context).prototype.instanceHash = function instanceHash(orig, targs) { + var {_r$1, _r$2, _r$3, buf, ctxt, h, orig, targs, $s, $r, $c} = $restore(this, {orig, targs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + ctxt = this; + $r = assert(!(ctxt === ptrType$51.nil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(!($interfaceIsEqual(orig, $ifaceNil))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + buf[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + _r$1 = newTypeHasher(buf[0], ctxt); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + h = _r$1; + _r$2 = ctxt.getID(orig); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = strconv.Itoa(_r$2); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $r = h.string(_r$3); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = h.typ(orig); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (targs.$length > 0) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (targs.$length > 0) { */ case 8: + $r = h.typeList(targs); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 9: + $s = -1; return strings.Replace(buf[0].String(), " ", "#", -1); + /* */ } return; } var $f = {$blk: instanceHash, $c: true, $r, _r$1, _r$2, _r$3, buf, ctxt, h, orig, targs, $s};return $f; + }; + $ptrType(Context).prototype.lookup = function lookup$2(h, orig, targs) { + var {$24r, $24r$1, _entry, _i, _r$1, _r$2, _ref, ctxt, e, h, orig, targs, $s, $deferred, $r, $c} = $restore(this, {h, orig, targs}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + ctxt = this; + $r = ctxt.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(ctxt.mu, "Unlock"), []]); + _ref = (_entry = $mapIndex(ctxt.typeMap,$String.keyFor(h)), _entry !== undefined ? _entry.v : sliceType$34.nil); + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), ctxtEntry); + _r$1 = identicalInstance(orig, targs, e.orig, e.targs); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$1) { */ case 4: + $24r = e.instance; + $s = 7; case 7: return $24r; + /* } */ case 5: + /* */ if (false) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (false) { */ case 8: + _r$2 = fmt.Sprintf("non-identical instances: (orig: %s, targs: %v) and %s", new sliceType$6([orig, targs, e.instance])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $panic(new $String(_r$2)); + /* } */ case 9: + _i++; + $s = 2; continue; + case 3: + $24r$1 = $ifaceNil; + $s = 11; case 11: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: lookup$2, $c: true, $r, $24r, $24r$1, _entry, _i, _r$1, _r$2, _ref, ctxt, e, h, orig, targs, $s, $deferred};return $f; } } + }; + $ptrType(Context).prototype.update = function update(h, orig, targs, inst) { + var {$24r, $24r$1, _entry, _entry$1, _i, _key, _r$1, _r$2, _ref, _v, ctxt, e, h, inst, orig, targs, $s, $deferred, $r, $c} = $restore(this, {h, orig, targs, inst}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + ctxt = this; + $r = assert(!($interfaceIsEqual(inst, $ifaceNil))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ctxt.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(ctxt.mu, "Unlock"), []]); + _ref = (_entry = $mapIndex(ctxt.typeMap,$String.keyFor(h)), _entry !== undefined ? _entry.v : sliceType$34.nil); + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), ctxtEntry); + if ($interfaceIsEqual(inst, $ifaceNil)) { _v = true; $s = 7; continue s; } + _r$1 = Identical(inst, e.instance); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 7: + /* */ if (_v) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_v) { */ case 5: + $24r = e.instance; + $s = 9; case 9: return $24r; + /* } */ case 6: + /* */ if (false) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (false) { */ case 10: + _r$2 = fmt.Sprintf("%s and %s are not identical", new sliceType$6([inst, e.instance])); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $panic(new $String(_r$2)); + /* } */ case 11: + _i++; + $s = 3; continue; + case 4: + _key = h; (ctxt.typeMap || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: $append((_entry$1 = $mapIndex(ctxt.typeMap,$String.keyFor(h)), _entry$1 !== undefined ? _entry$1.v : sliceType$34.nil), new ctxtEntry.ptr(orig, targs, inst)) }); + $24r$1 = inst; + $s = 13; case 13: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: update, $c: true, $r, $24r, $24r$1, _entry, _entry$1, _i, _key, _r$1, _r$2, _ref, _v, ctxt, e, h, inst, orig, targs, $s, $deferred};return $f; } } + }; + $ptrType(Context).prototype.getID = function getID(t) { + var {$24r, _entry, _key, _tuple, ctxt, id, ok, t, $s, $deferred, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + ctxt = this; + $r = ctxt.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(ctxt.mu, "Unlock"), []]); + _tuple = (_entry = $mapIndex(ctxt.originIDs,Type.keyFor(t)), _entry !== undefined ? [_entry.v, true] : [0, false]); + id = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + id = ctxt.nextID; + _key = t; (ctxt.originIDs || $throwRuntimeError("assignment to entry in nil map")).set(Type.keyFor(_key), { k: _key, v: id }); + ctxt.nextID = ctxt.nextID + (1) >> 0; + } + $24r = id; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: getID, $c: true, $r, $24r, _entry, _key, _tuple, ctxt, id, ok, t, $s, $deferred};return $f; } } + }; + $ptrType(environment).prototype.lookup = function lookup$3(name) { + var {_r$1, _tuple, env, name, obj, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + env = this; + _r$1 = env.scope.LookupParent(name, env.pos); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + obj = _tuple[1]; + $s = -1; return obj; + /* */ } return; } var $f = {$blk: lookup$3, $c: true, $r, _r$1, _tuple, env, name, obj, $s};return $f; + }; + $ptrType(action).prototype.describef = function describef(pos$1, format, args) { + var a, args, format, pos$1; + a = this; + if (false) { + a.desc = new actionDesc.ptr(pos$1, format, args); + } + }; + $ptrType(Checker).prototype.addDeclDep = function addDeclDep(to) { + var _entry, _tuple, check, found, from, to; + check = this; + from = check.environment.decl; + if (from === ptrType$58.nil) { + return; + } + _tuple = (_entry = $mapIndex(check.objMap,Object.keyFor(to)), _entry !== undefined ? [_entry.v, true] : [ptrType$58.nil, false]); + found = _tuple[1]; + if (!found) { + return; + } + from.addDep(to); + }; + $ptrType(Checker).prototype.brokenAlias = function brokenAlias(alias) { + var _key, alias, check; + check = this; + if (check.brokenAliases === false) { + check.brokenAliases = new $global.Map(); + } + _key = alias; (check.brokenAliases || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$17.keyFor(_key), { k: _key, v: true }); + alias.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + }; + $ptrType(Checker).prototype.validAlias = function validAlias(alias, typ$4) { + var alias, check, typ$4; + check = this; + $mapDelete(check.brokenAliases, ptrType$17.keyFor(alias)); + alias.object.typ = typ$4; + }; + $ptrType(Checker).prototype.isBrokenAlias = function isBrokenAlias(alias) { + var _entry, alias, check; + check = this; + return $interfaceIsEqual(alias.object.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])) && (_entry = $mapIndex(check.brokenAliases,ptrType$17.keyFor(alias)), _entry !== undefined ? _entry.v : false); + }; + $ptrType(Checker).prototype.rememberUntyped = function rememberUntyped(e, lhs, mode, typ$4, val) { + var _key, check, e, lhs, m, mode, typ$4, val; + check = this; + m = check.untyped; + if (m === false) { + m = new $global.Map(); + check.untyped = m; + } + _key = e; (m || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(new exprInfo.ptr(lhs, mode, typ$4, val), exprInfo) }); + }; + $ptrType(Checker).prototype.later = function later(f) { + var check, f, i, x; + check = this; + i = check.delayed.$length; + check.delayed = $append(check.delayed, new action.ptr(f, ptrType$109.nil)); + return (x = check.delayed, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + }; + $ptrType(Checker).prototype.push = function push(obj) { + var check, obj; + check = this; + check.objPath = $append(check.objPath, obj); + return check.objPath.$length - 1 >> 0; + }; + $ptrType(Checker).prototype.pop = function pop() { + var check, i, obj, x, x$1; + check = this; + i = check.objPath.$length - 1 >> 0; + obj = (x = check.objPath, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + (x$1 = check.objPath, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i] = $ifaceNil)); + check.objPath = $subslice(check.objPath, 0, i); + return obj; + }; + $ptrType(Checker).prototype.needsCleanup = function needsCleanup(c) { + var c, check; + check = this; + check.cleaners = $append(check.cleaners, c); + }; + NewChecker = function NewChecker$1(conf, fset, pkg, info) { + var {_r$1, _r$2, _tuple, conf, err, fset, info, pkg, version$1, $s, $r, $c} = $restore(this, {conf, fset, pkg, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (conf === ptrType$101.nil) { + conf = new Config.ptr(ptrType$51.nil, "", false, false, false, $throwNilPointerError, $ifaceNil, $ifaceNil, false, false); + } + if (info === ptrType$110.nil) { + info = new Info.ptr(false, false, false, false, false, false, false, sliceType$30.nil); + } + _r$1 = parseGoVersion(conf.GoVersion); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + version$1 = $clone(_tuple[0], version); + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + _r$2 = fmt.Sprintf("invalid Go version %q (%v)", new sliceType$6([new $String(conf.GoVersion), err])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $panic(new $String(_r$2)); + /* } */ case 3: + $s = -1; return new Checker.ptr(conf, conf.Context, fset, pkg, info, $clone(version$1, version), new $Uint64(0, 0), new $global.Map(), new $global.Map(), new instanceLookup.ptr(arrayType$1.zero(), false), false, false, sliceType$35.nil, sliceType$36.nil, false, false, false, false, new monoGraph.ptr(sliceType$37.nil, sliceType$38.nil, false, false), $ifaceNil, false, false, sliceType$39.nil, sliceType$8.nil, sliceType$40.nil, new environment.ptr(ptrType$58.nil, ptrType.nil, 0, $ifaceNil, $ifaceNil, false, ptrType$27.nil, false, false, false), 0); + /* */ } return; } var $f = {$blk: NewChecker$1, $c: true, $r, _r$1, _r$2, _tuple, conf, err, fset, info, pkg, version$1, $s};return $f; + }; + $pkg.NewChecker = NewChecker; + $ptrType(Checker).prototype.initFiles = function initFiles(files) { + var {_1, _i, _ref, check, file, files, name, pkg, $s, $r, $c} = $restore(this, {files}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + check.files = sliceType$35.nil; + check.imports = sliceType$36.nil; + check.dotImportMap = false; + check.firstErr = $ifaceNil; + check.methods = false; + check.untyped = false; + check.delayed = sliceType$39.nil; + check.objPath = sliceType$8.nil; + check.cleaners = sliceType$40.nil; + pkg = check.pkg; + _ref = files; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + file = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + name = file.Name.Name; + _1 = pkg.name; + /* */ if (_1 === ("")) { $s = 4; continue; } + /* */ if (_1 === (name)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === ("")) { */ case 4: + /* */ if (!(name === "_")) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!(name === "_")) { */ case 8: + pkg.name = name; + $s = 10; continue; + /* } else { */ case 9: + $r = check.error(file.Name, 2, "invalid package name _"); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + check.files = $append(check.files, file); + $s = 7; continue; + /* } else if (_1 === (name)) { */ case 5: + check.files = $append(check.files, file); + $s = 7; continue; + /* } else { */ case 6: + $r = check.errorf(new atPos(((file.Package >> 0))), 3, "package %s; expected %s", new sliceType$6([new $String(name), new $String(pkg.name)])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + case 3: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: initFiles, $c: true, $r, _1, _i, _ref, check, file, files, name, pkg, $s};return $f; + }; + $ptrType(Checker).prototype.handleBailout = function handleBailout(err) { + var _ref, check, err, p, p$1; + check = this; + _ref = $recover(); + if (_ref === $ifaceNil || $assertType(_ref, bailout, true)[1]) { + p = _ref; + err.$set(check.firstErr); + } else { + p$1 = _ref; + $panic(p$1); + } + }; + $ptrType(Checker).prototype.Files = function Files(files) { + var {$24r, _r$1, check, files, $s, $r, $c} = $restore(this, {files}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.checkFiles(files); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Files, $c: true, $r, $24r, _r$1, check, files, $s};return $f; + }; + $ptrType(Checker).prototype.checkFiles = function checkFiles(files) { + var {check, err, files, print, $s, $deferred, $r, $c} = $restore(this, {files}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + err = [err]; + err[0] = $ifaceNil; + check = this; + if (check.conf.FakeImportC && check.conf.go115UsesCgo) { + err[0] = errBadCgo; + $s = -1; return err[0]; + } + $deferred.push([$methodVal(check, "handleBailout"), [(err.$ptr || (err.$ptr = new ptrType$103(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, err)))]]); + print = (function(err) { return function Checker·checkFiles·func1(msg$1) { + var {_r$1, _r$2, msg$1, $s, $r, $c} = $restore(this, {msg$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + _r$1 = fmt.Println(sliceType$6.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = fmt.Println(new sliceType$6([new $String(msg$1)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·checkFiles·func1, $c: true, $r, _r$1, _r$2, msg$1, $s};return $f; + }; })(err); + $r = print("== initFiles =="); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.initFiles(files); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = print("== collectObjects =="); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.collectObjects(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = print("== packageObjects =="); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.packageObjects(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = print("== processDelayed =="); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.processDelayed(0); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = print("== cleanup =="); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.cleanup(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = print("== initOrder =="); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.initOrder(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!check.conf.DisableUnusedImportCheck) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!check.conf.DisableUnusedImportCheck) { */ case 13: + $r = print("== unusedImports =="); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.unusedImports(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 14: + $r = print("== recordUntyped =="); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.recordUntyped(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if ($interfaceIsEqual(check.firstErr, $ifaceNil)) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if ($interfaceIsEqual(check.firstErr, $ifaceNil)) { */ case 19: + $r = check.monomorph(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 20: + check.pkg.complete = true; + check.imports = sliceType$36.nil; + check.dotImportMap = false; + check.pkgPathMap = false; + check.seenPkgMap = false; + check.recvTParamMap = false; + check.brokenAliases = false; + check.unionTypeSets = false; + check.ctxt = ptrType$51.nil; + $s = -1; return err[0]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err[0]; } if($curGoroutine.asleep) { var $f = {$blk: checkFiles, $c: true, $r, check, err, files, print, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.processDelayed = function processDelayed(top) { + var {_r$1, _r$2, a, check, i, top, x, $s, $r, $c} = $restore(this, {top}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + i = top; + /* while (true) { */ case 1: + /* if (!(i < check.delayed.$length)) { break; } */ if(!(i < check.delayed.$length)) { $s = 2; continue; } + a = (x = check.delayed, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])); + /* */ if (false) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (false) { */ case 3: + /* */ if (!(a.desc === ptrType$109.nil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(a.desc === ptrType$109.nil)) { */ case 5: + _r$1 = a.desc.pos.Pos(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = check.trace(_r$1, "-- " + a.desc.format, a.desc.args); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + /* } else { */ case 6: + $r = check.trace(0, "-- delayed %p", new sliceType$6([new funcType$1(a.f)])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + /* } */ case 4: + $r = a.f(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (false) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (false) { */ case 12: + _r$2 = fmt.Println(sliceType$6.nil); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* } */ case 13: + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $r = assert(top <= check.delayed.$length); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check.delayed = $subslice(check.delayed, 0, top); + $s = -1; return; + /* */ } return; } var $f = {$blk: processDelayed, $c: true, $r, _r$1, _r$2, a, check, i, top, x, $s};return $f; + }; + $ptrType(Checker).prototype.cleanup = function cleanup$3() { + var {check, i, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < check.cleaners.$length)) { break; } */ if(!(i < check.cleaners.$length)) { $s = 2; continue; } + $r = (x = check.cleaners, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).cleanup(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 1; continue; + case 2: + check.cleaners = sliceType$40.nil; + $s = -1; return; + /* */ } return; } var $f = {$blk: cleanup$3, $c: true, $r, check, i, x, $s};return $f; + }; + $ptrType(Checker).prototype.record = function record(x) { + var {_1, check, typ$4, val, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + typ$4 = $ifaceNil; + val = $ifaceNil; + _1 = x.mode; + if (_1 === (0)) { + typ$4 = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + } else if (_1 === (1)) { + typ$4 = (ptrType$15.nil); + } else if (_1 === (4)) { + typ$4 = x.typ; + val = x.val; + } else { + typ$4 = x.typ; + } + $r = assert(!($interfaceIsEqual(x.expr, $ifaceNil)) && !($interfaceIsEqual(typ$4, $ifaceNil))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (isUntyped(typ$4)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (isUntyped(typ$4)) { */ case 2: + check.rememberUntyped(x.expr, false, x.mode, $assertType(typ$4, ptrType$8), val); + $s = 4; continue; + /* } else { */ case 3: + $r = check.recordTypeAndValue(x.expr, x.mode, typ$4, val); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + $s = -1; return; + /* */ } return; } var $f = {$blk: record, $c: true, $r, _1, check, typ$4, val, x, $s};return $f; + }; + $ptrType(Checker).prototype.recordUntyped = function recordUntyped() { + var {_arg, _arg$1, _arg$2, _entry, _i, _key, _keys, _r$1, _ref, _size, check, info, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + if (true && check.Info.Types === false) { + $s = -1; return; + } + _ref = check.untyped; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 1: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 2; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 1; continue; + } + x = _entry.k; + info = $clone(_entry.v, exprInfo); + /* */ if (false && isTyped(info.typ)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (false && isTyped(info.typ)) { */ case 3: + _r$1 = x.Pos(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = new token.Pos(_r$1); + _arg$1 = x; + _arg$2 = info.typ; + $r = check.dump("%v: %s (type %s) is typed", new sliceType$6([_arg, _arg$1, _arg$2])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + unreachable(); + /* } */ case 4: + $r = check.recordTypeAndValue(x, info.mode, info.typ, info.val); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: recordUntyped, $c: true, $r, _arg, _arg$1, _arg$2, _entry, _i, _key, _keys, _r$1, _ref, _size, check, info, x, $s};return $f; + }; + $ptrType(Checker).prototype.recordTypeAndValue = function recordTypeAndValue(x, mode, typ$4, val) { + var {_key, _r$1, _v, check, m, mode, typ$4, val, x, $s, $r, $c} = $restore(this, {x, mode, typ$4, val}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = assert(!($interfaceIsEqual(x, $ifaceNil))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(!($interfaceIsEqual(typ$4, $ifaceNil))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (mode === 0) { + $s = -1; return; + } + /* */ if (mode === 4) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (mode === 4) { */ case 3: + $r = assert(!($interfaceIsEqual(val, $ifaceNil))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if ($interfaceIsEqual(typ$4, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { _v = true; $s = 6; continue s; } + _r$1 = allBasic(typ$4, 59); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 6: + $r = assert(_v); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + m = check.Info.Types; + if (!(m === false)) { + _key = x; (m || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(new TypeAndValue.ptr(mode, typ$4, val), TypeAndValue) }); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: recordTypeAndValue, $c: true, $r, _key, _r$1, _v, check, m, mode, typ$4, val, x, $s};return $f; + }; + $ptrType(Checker).prototype.recordBuiltinType = function recordBuiltinType(f, sig) { + var {_ref, check, f, p, p$1, p$2, sig, $s, $r, $c} = $restore(this, {f, sig}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + /* while (true) { */ case 1: + $r = check.recordTypeAndValue(f, 2, sig, $ifaceNil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = f; + if ($assertType(_ref, ptrType$30, true)[1] || $assertType(_ref, ptrType$36, true)[1]) { + p = _ref; + $s = -1; return; + } else if ($assertType(_ref, ptrType$39, true)[1]) { + p$1 = _ref.$val; + f = p$1.X; + } else { + p$2 = _ref; + unreachable(); + } + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: recordBuiltinType, $c: true, $r, _ref, check, f, p, p$1, p$2, sig, $s};return $f; + }; + $ptrType(Checker).prototype.recordCommaOkTypes = function recordCommaOkTypes(x, a) { + var {_entry, _key, _r$1, _r$2, _tuple, _v, a, check, m, p, pos$1, tv, x, $s, $r, $c} = $restore(this, {x, a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = assert(!($interfaceIsEqual(x, $ifaceNil))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if ($interfaceIsEqual(a[0], $ifaceNil) || $interfaceIsEqual(a[1], $ifaceNil)) { + $s = -1; return; + } + if (!(isTyped(a[0]) && isTyped(a[1]))) { _v = false; $s = 2; continue s; } + _r$1 = isBoolean(a[1]); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1 || $interfaceIsEqual(a[1], universeError); case 2: + $r = assert(_v); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + m = check.Info.Types; + /* */ if (!(m === false)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(m === false)) { */ case 5: + /* while (true) { */ case 7: + tv = $clone((_entry = $mapIndex(m,ast.Expr.keyFor(x)), _entry !== undefined ? _entry.v : new TypeAndValue.ptr(0, $ifaceNil, $ifaceNil)), TypeAndValue); + $r = assert(!($interfaceIsEqual(tv.Type, $ifaceNil))); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = x.Pos(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + pos$1 = _r$2; + tv.Type = NewTuple(new sliceType$10([NewVar(pos$1, check.pkg, "", a[0]), NewVar(pos$1, check.pkg, "", a[1])])); + _key = x; (m || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(tv, TypeAndValue) }); + _tuple = $assertType(x, ptrType$39, true); + p = _tuple[0]; + if (p === ptrType$39.nil) { + /* break; */ $s = 8; continue; + } + x = p.X; + $s = 7; continue; + case 8: + /* } */ case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: recordCommaOkTypes, $c: true, $r, _entry, _key, _r$1, _r$2, _tuple, _v, a, check, m, p, pos$1, tv, x, $s};return $f; + }; + $ptrType(Checker).prototype.recordInstance = function recordInstance$1(expr$1, targs, typ$4) { + var {_key, check, expr$1, ident$1, m, targs, typ$4, $s, $r, $c} = $restore(this, {expr$1, targs, typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + ident$1 = instantiatedIdent(expr$1); + $r = assert(!(ident$1 === ptrType$30.nil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(!($interfaceIsEqual(typ$4, $ifaceNil))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + m = check.Info.Instances; + if (!(m === false)) { + _key = ident$1; (m || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$30.keyFor(_key), { k: _key, v: $clone(new Instance.ptr(newTypeList(targs), typ$4), Instance) }); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: recordInstance$1, $c: true, $r, _key, check, expr$1, ident$1, m, targs, typ$4, $s};return $f; + }; + instantiatedIdent = function instantiatedIdent$1(expr$1) { + var _ref, _ref$1, e, e$1, e$2, expr$1, selOrIdent, x, x$1; + selOrIdent = $ifaceNil; + _ref = expr$1; + if ($assertType(_ref, ptrType$37, true)[1]) { + e = _ref.$val; + selOrIdent = e.X; + } else if ($assertType(_ref, ptrType$38, true)[1]) { + e$1 = _ref.$val; + selOrIdent = e$1.X; + } else if ($assertType(_ref, ptrType$36, true)[1] || $assertType(_ref, ptrType$30, true)[1]) { + e$2 = _ref; + selOrIdent = e$2; + } + _ref$1 = selOrIdent; + if ($assertType(_ref$1, ptrType$30, true)[1]) { + x = _ref$1.$val; + return x; + } else if ($assertType(_ref$1, ptrType$36, true)[1]) { + x$1 = _ref$1.$val; + return x$1.Sel; + } + $panic(new $String("instantiated ident not found")); + }; + $ptrType(Checker).prototype.recordDef = function recordDef(id, obj) { + var {_key, check, id, m, obj, $s, $r, $c} = $restore(this, {id, obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = assert(!(id === ptrType$30.nil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + m = check.Info.Defs; + if (!(m === false)) { + _key = id; (m || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$30.keyFor(_key), { k: _key, v: obj }); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: recordDef, $c: true, $r, _key, check, id, m, obj, $s};return $f; + }; + $ptrType(Checker).prototype.recordUse = function recordUse(id, obj) { + var {_key, check, id, m, obj, $s, $r, $c} = $restore(this, {id, obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = assert(!(id === ptrType$30.nil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(!($interfaceIsEqual(obj, $ifaceNil))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + m = check.Info.Uses; + if (!(m === false)) { + _key = id; (m || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$30.keyFor(_key), { k: _key, v: obj }); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: recordUse, $c: true, $r, _key, check, id, m, obj, $s};return $f; + }; + $ptrType(Checker).prototype.recordImplicit = function recordImplicit(node$5, obj) { + var {_key, check, m, node$5, obj, $s, $r, $c} = $restore(this, {node$5, obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = assert(!($interfaceIsEqual(node$5, $ifaceNil))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(!($interfaceIsEqual(obj, $ifaceNil))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + m = check.Info.Implicits; + if (!(m === false)) { + _key = node$5; (m || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: obj }); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: recordImplicit, $c: true, $r, _key, check, m, node$5, obj, $s};return $f; + }; + $ptrType(Checker).prototype.recordSelection = function recordSelection(x, kind, recv, obj, index$2, indirect) { + var {_key, check, index$2, indirect, kind, m, obj, recv, x, $s, $r, $c} = $restore(this, {x, kind, recv, obj, index$2, indirect}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = assert(!($interfaceIsEqual(obj, $ifaceNil)) && ($interfaceIsEqual(recv, $ifaceNil) || index$2.$length > 0)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.recordUse(x.Sel, obj); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + m = check.Info.Selections; + if (!(m === false)) { + _key = x; (m || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$36.keyFor(_key), { k: _key, v: new Selection.ptr(kind, recv, obj, index$2, indirect) }); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: recordSelection, $c: true, $r, _key, check, index$2, indirect, kind, m, obj, recv, x, $s};return $f; + }; + $ptrType(Checker).prototype.recordScope = function recordScope(node$5, scope) { + var {_key, check, m, node$5, scope, $s, $r, $c} = $restore(this, {node$5, scope}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + $r = assert(!($interfaceIsEqual(node$5, $ifaceNil))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(!(scope === ptrType.nil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + m = check.Info.Scopes; + if (!(m === false)) { + _key = node$5; (m || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: scope }); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: recordScope, $c: true, $r, _key, check, m, node$5, scope, $s};return $f; + }; + NewChan = function NewChan$1(dir$2, elem) { + var dir$2, elem; + return new Chan.ptr(dir$2, elem); + }; + $pkg.NewChan = NewChan; + $ptrType(Chan).prototype.Dir = function Dir() { + var c; + c = this; + return c.dir; + }; + $ptrType(Chan).prototype.Elem = function Elem$3() { + var c; + c = this; + return c.elem; + }; + $ptrType(Chan).prototype.Underlying = function Underlying$10() { + var t; + t = this; + return t; + }; + $ptrType(Chan).prototype.String = function String$32() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$32, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(Checker).prototype.funcInst = function funcInst(x, ix) { + var {_r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, check, got, ix, sig, targs, want, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {x, ix}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + /* */ if (!check.allowVersion(check.pkg, 1, 18)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!check.allowVersion(check.pkg, 1, 18)) { */ case 1: + _r$1 = inNode(ix.Orig, ix.IndexListExpr.Lbrack); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = check.softErrorf((x$1 = _r$1, new x$1.constructor.elem(x$1)), 135, "function instantiation requires go1.18 or later", sliceType$6.nil); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + _r$2 = check.typeList(ix.IndexListExpr.Indices); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + targs = _r$2; + if (targs === sliceType$2.nil) { + x.mode = 0; + x.expr = ix.Orig; + $s = -1; return; + } + $r = assert(targs.$length === ix.IndexListExpr.Indices.$length); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + sig = $assertType(x.typ, ptrType$27); + _tmp = targs.$length; + _tmp$1 = sig.TypeParams().Len(); + got = _tmp; + want = _tmp$1; + /* */ if (got > want) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (got > want) { */ case 7: + $r = check.errorf((x$2 = ix.IndexListExpr.Indices, x$3 = got - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])), 137, "got %d type arguments but want %d", new sliceType$6([new $Int(got), new $Int(want)])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + x.expr = ix.Orig; + $s = -1; return; + /* } */ case 8: + /* */ if (got < want) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (got < want) { */ case 10: + _r$3 = check.infer(ix.Orig, sig.TypeParams().list(), targs, ptrType$15.nil, sliceType$29.nil); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + targs = _r$3; + if (targs === sliceType$2.nil) { + x.mode = 0; + x.expr = ix.Orig; + $s = -1; return; + } + got = targs.$length; + /* } */ case 11: + $r = assert(got === want); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$4 = x.Pos(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = check.instantiateSignature(_r$4, sig, targs, ix.IndexListExpr.Indices); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + sig = _r$5; + $r = assert(sig.TypeParams().Len() === 0); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.recordInstance(ix.Orig, targs, sig); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.typ = sig; + x.mode = 7; + x.expr = ix.Orig; + $s = -1; return; + /* */ } return; } var $f = {$blk: funcInst, $c: true, $r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, check, got, ix, sig, targs, want, x, x$1, x$2, x$3, $s};return $f; + }; + $ptrType(Checker).prototype.instantiateSignature = function instantiateSignature(pos$1, typ$4, targs, xlist) { + var {$24r, _r$1, check, inst, pos$1, res, targs, typ$4, xlist, $s, $deferred, $r, $c} = $restore(this, {pos$1, typ$4, targs, xlist}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + pos$1 = [pos$1]; + res = [res]; + targs = [targs]; + typ$4 = [typ$4]; + xlist = [xlist]; + res[0] = ptrType$27.nil; + check[0] = this; + $r = assert(!(check[0] === ptrType$5.nil)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = assert(targs[0].$length === typ$4[0].TypeParams().Len()); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (false) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (false) { */ case 3: + $r = check[0].trace(pos$1[0], "-- instantiating signature %s with %s", new sliceType$6([typ$4[0], targs[0]])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].indent = check[0].indent + (1) >> 0; + $deferred.push([(function(check, pos$1, res, targs, typ$4, xlist) { return function Checker·instantiateSignature·func1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check[0].indent = check[0].indent - (1) >> 0; + $r = check[0].trace(pos$1[0], "=> %s (under = %s)", new sliceType$6([res[0], res[0].Underlying()])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·instantiateSignature·func1, $c: true, $r, $s};return $f; + }; })(check, pos$1, res, targs, typ$4, xlist), []]); + /* } */ case 4: + _r$1 = check[0].instance(pos$1[0], typ$4[0], targs[0], ptrType$9.nil, check[0].context()); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + inst = $assertType(_r$1, ptrType$27); + $r = assert(xlist[0].$length <= targs[0].$length); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + check[0].later((function(check, pos$1, res, targs, typ$4, xlist) { return function Checker·instantiateSignature·func2() { + var {_r$2, _r$3, _tuple, err, i, pos$2, tparams, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + tparams = typ$4[0].TypeParams().list(); + _r$2 = check[0].verify(pos$1[0], tparams, targs[0], check[0].context()); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + i = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + pos$2 = pos$1[0]; + /* */ if (i < xlist[0].$length) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (i < xlist[0].$length) { */ case 5: + _r$3 = ((i < 0 || i >= xlist[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : xlist[0].$array[xlist[0].$offset + i]).Pos(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + pos$2 = _r$3; + /* } */ case 6: + $r = check[0].softErrorf(new atPos(((pos$2 >> 0))), 139, "%s", new sliceType$6([err])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 4; continue; + /* } else { */ case 3: + $r = check[0].mono.recordInstance(check[0].pkg, pos$1[0], tparams, targs[0], xlist[0]); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·instantiateSignature·func2, $c: true, $r, _r$2, _r$3, _tuple, err, i, pos$2, tparams, $s};return $f; + }; })(check, pos$1, res, targs, typ$4, xlist)).describef(new atPos(((pos$1[0] >> 0))), "verify instantiation", sliceType$6.nil); + res[0] = inst; + $24r = res[0]; + $s = 8; case 8: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return res[0]; } if($curGoroutine.asleep) { var $f = {$blk: instantiateSignature, $c: true, $r, $24r, _r$1, check, inst, pos$1, res, targs, typ$4, xlist, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.callExpr = function callExpr(x, call) { + var {T, _1, _2, _3, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _v, args, call, cgocall, check, got, id, ix, n, sig, t, targs, want, wasGeneric, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, xlist, $s, $r, $c} = $restore(this, {x, call}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + ix = typeparams.UnpackIndexExpr(call.Fun); + /* */ if (!(ix === ptrType$112.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(ix === ptrType$112.nil)) { */ case 1: + _r$1 = check.indexExpr(x, ix); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$1) { */ case 4: + $r = assert(x.mode === 7); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 6; continue; + /* } else { */ case 5: + ix = ptrType$112.nil; + /* } */ case 6: + x.expr = call.Fun; + $r = check.record(x); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 3; continue; + /* } else { */ case 2: + $r = check.exprOrType(x, call.Fun, true); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + _1 = x.mode; + /* */ if (_1 === (0)) { $s = 12; continue; } + /* */ if (_1 === (3)) { $s = 13; continue; } + /* */ if (_1 === (2)) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_1 === (0)) { */ case 12: + $r = check.use(call.Args); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.expr = call; + $s = -1; return 2; + /* } else if (_1 === (3)) { */ case 13: + $r = check.nonGeneric(x); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x.mode === 0) { + $s = -1; return 0; + } + T = x.typ; + x.mode = 0; + n = call.Args.$length; + _2 = n; + /* */ if (_2 === (0)) { $s = 19; continue; } + /* */ if (_2 === (1)) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (_2 === (0)) { */ case 19: + _r$2 = inNode(call, call.Rparen); /* */ $s = 23; case 23: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = check.errorf((x$1 = _r$2, new x$1.constructor.elem(x$1)), 126, "missing argument in conversion to %s", new sliceType$6([T])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 22; continue; + /* } else if (_2 === (1)) { */ case 20: + $r = check.expr(x, (x$2 = call.Args, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!((x.mode === 0))) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!((x.mode === 0))) { */ case 26: + /* */ if (new token.Pos(call.Ellipsis).IsValid()) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (new token.Pos(call.Ellipsis).IsValid()) { */ case 28: + $r = check.errorf((x$3 = call.Args, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), 77, "invalid use of ... in conversion to %s", new sliceType$6([T])); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 18; continue; + /* } */ case 29: + _r$3 = under(T); /* */ $s = 31; case 31: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = $assertType(_r$3, ptrType$13, true); + t = _tuple[0]; + /* */ if (!(t === ptrType$13.nil) && !isTypeParam(T)) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (!(t === ptrType$13.nil) && !isTypeParam(T)) { */ case 32: + _r$4 = t.IsMethodSet(); /* */ $s = 36; case 36: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (!_r$4) { */ case 34: + $r = check.errorf(call, 142, "cannot use interface %s in conversion (contains specific type constraints or is comparable)", new sliceType$6([T])); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break; */ $s = 18; continue; + /* } */ case 35: + /* } */ case 33: + $r = check.conversion(x, T); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 27: + $s = 22; continue; + /* } else { */ case 21: + $r = check.use(call.Args); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.errorf((x$4 = call.Args, x$5 = n - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + x$5])), 126, "too many arguments in conversion to %s", new sliceType$6([T])); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 22: + case 18: + x.expr = call; + $s = -1; return 0; + /* } else if (_1 === (2)) { */ case 14: + id = x.id; + _r$5 = check.builtin(x, call, id); /* */ $s = 43; case 43: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (!_r$5) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if (!_r$5) { */ case 41: + x.mode = 0; + /* } */ case 42: + x.expr = call; + if (!((x.mode === 0)) && !((x.mode === 4))) { + check.environment.hasCallOrRecv = true; + } + $s = -1; return ((id < 0 || id >= predeclaredFuncs.length) ? ($throwRuntimeError("index out of range"), undefined) : predeclaredFuncs[id]).kind; + /* } */ case 15: + case 11: + cgocall = x.mode === 10; + _r$6 = coreType(x.typ); /* */ $s = 44; case 44: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$6, ptrType$27, true); + sig = _tuple$1[0]; + /* */ if (sig === ptrType$27.nil) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if (sig === ptrType$27.nil) { */ case 45: + $r = check.errorf(x, 127, "invalid operation: cannot call non-function %s", new sliceType$6([x])); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + x.expr = call; + $s = -1; return 2; + /* } */ case 46: + wasGeneric = sig.TypeParams().Len() > 0; + xlist = sliceType$11.nil; + targs = sliceType$2.nil; + /* */ if (!(ix === ptrType$112.nil)) { $s = 48; continue; } + /* */ $s = 49; continue; + /* if (!(ix === ptrType$112.nil)) { */ case 48: + xlist = ix.IndexListExpr.Indices; + _r$7 = check.typeList(xlist); /* */ $s = 50; case 50: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + targs = _r$7; + /* */ if (targs === sliceType$2.nil) { $s = 51; continue; } + /* */ $s = 52; continue; + /* if (targs === sliceType$2.nil) { */ case 51: + $r = check.use(call.Args); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + x.expr = call; + $s = -1; return 2; + /* } */ case 52: + $r = assert(targs.$length === xlist.$length); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tmp = targs.$length; + _tmp$1 = sig.TypeParams().Len(); + got = _tmp; + want = _tmp$1; + /* */ if (got > want) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if (got > want) { */ case 55: + $r = check.errorf(((want < 0 || want >= xlist.$length) ? ($throwRuntimeError("index out of range"), undefined) : xlist.$array[xlist.$offset + want]), 137, "got %d type arguments but want %d", new sliceType$6([new $Int(got), new $Int(want)])); /* */ $s = 57; case 57: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.use(call.Args); /* */ $s = 58; case 58: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + x.expr = call; + $s = -1; return 2; + /* } */ case 56: + /* */ if ((got === want) && want > 0) { $s = 59; continue; } + /* */ $s = 60; continue; + /* if ((got === want) && want > 0) { */ case 59: + /* */ if (!check.allowVersion(check.pkg, 1, 18)) { $s = 61; continue; } + /* */ $s = 62; continue; + /* if (!check.allowVersion(check.pkg, 1, 18)) { */ case 61: + _r$8 = inNode(call.Fun, ix.IndexListExpr.Lbrack); /* */ $s = 63; case 63: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $r = check.softErrorf((x$6 = _r$8, new x$6.constructor.elem(x$6)), 135, "function instantiation requires go1.18 or later", sliceType$6.nil); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 62: + _r$9 = ix.IndexListExpr.Pos(); /* */ $s = 65; case 65: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$10 = check.instantiateSignature(_r$9, sig, targs, xlist); /* */ $s = 66; case 66: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + sig = _r$10; + $r = assert(sig.TypeParams().Len() === 0); /* */ $s = 67; case 67: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.recordInstance(ix.Orig, targs, sig); /* */ $s = 68; case 68: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + targs = sliceType$2.nil; + xlist = sliceType$11.nil; + /* } */ case 60: + /* } */ case 49: + _r$11 = check.exprList(call.Args, false); /* */ $s = 69; case 69: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$2 = _r$11; + args = _tuple$2[0]; + _r$12 = check.arguments$(call, sig, targs, args, xlist); /* */ $s = 70; case 70: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + sig = _r$12; + /* */ if (wasGeneric && (sig.TypeParams().Len() === 0)) { $s = 71; continue; } + /* */ $s = 72; continue; + /* if (wasGeneric && (sig.TypeParams().Len() === 0)) { */ case 71: + $r = check.recordTypeAndValue(call.Fun, 7, sig, $ifaceNil); /* */ $s = 73; case 73: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 72: + _3 = sig.results.Len(); + if (_3 === (0)) { + x.mode = 1; + } else if (_3 === (1)) { + if (cgocall) { + x.mode = 9; + } else { + x.mode = 7; + } + x.typ = (x$7 = sig.results.vars, (0 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 0])).object.typ; + } else { + x.mode = 7; + x.typ = sig.results; + } + x.expr = call; + check.environment.hasCallOrRecv = true; + if (!((x.mode === 7) && sig.TypeParams().Len() > 0)) { _v = false; $s = 76; continue s; } + _r$13 = isParameterized(sig.TypeParams().list(), x.typ); /* */ $s = 77; case 77: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _v = _r$13; case 76: + /* */ if (_v) { $s = 74; continue; } + /* */ $s = 75; continue; + /* if (_v) { */ case 74: + x.mode = 0; + /* } */ case 75: + $s = -1; return 2; + /* */ } return; } var $f = {$blk: callExpr, $c: true, $r, T, _1, _2, _3, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _v, args, call, cgocall, check, got, id, ix, n, sig, t, targs, want, wasGeneric, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, xlist, $s};return $f; + }; + $ptrType(Checker).prototype.exprList = function exprList(elist, allowCommaOk) { + var {_1, _i, _i$1, _ref, _ref$1, _tuple, allowCommaOk, check, commaOk, e, e$1, elist, i, i$1, ok, t, v, x, x$1, x2, xlist, $s, $r, $c} = $restore(this, {elist, allowCommaOk}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = [x]; + xlist = sliceType$29.nil; + commaOk = false; + check = this; + _1 = elist.$length; + /* */ if (_1 === (0)) { $s = 2; continue; } + /* */ if (_1 === (1)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_1 === (0)) { */ case 2: + $s = 5; continue; + /* } else if (_1 === (1)) { */ case 3: + e = (0 >= elist.$length ? ($throwRuntimeError("index out of range"), undefined) : elist.$array[elist.$offset + 0]); + x[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.multiExpr(x[0], e); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple = $assertType(x[0].typ, ptrType$15, true); + t = _tuple[0]; + ok = _tuple[1]; + if (ok && !((x[0].mode === 0))) { + xlist = $makeSlice(sliceType$29, t.Len()); + _ref = t.vars; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + v = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ((i < 0 || i >= xlist.$length) ? ($throwRuntimeError("index out of range"), undefined) : xlist.$array[xlist.$offset + i] = new operand.ptr(7, e, v.object.typ, $ifaceNil, 0)); + _i++; + } + /* break; */ $s = 1; continue; + } + xlist = new sliceType$29([x[0]]); + if (allowCommaOk && ((x[0].mode === 6) || (x[0].mode === 8) || (x[0].mode === 9))) { + x2 = new operand.ptr(7, e, (19 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 19]), $ifaceNil, 0); + if (x[0].mode === 9) { + x2.typ = universeError; + } + xlist = $append(xlist, x2); + commaOk = true; + } + $s = 5; continue; + /* } else { */ case 4: + xlist = $makeSlice(sliceType$29, elist.$length); + _ref$1 = elist; + _i$1 = 0; + /* while (true) { */ case 7: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 8; continue; } + x$1 = [x$1]; + i$1 = _i$1; + e$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + x$1[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.expr(x$1[0], e$1); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ((i$1 < 0 || i$1 >= xlist.$length) ? ($throwRuntimeError("index out of range"), undefined) : xlist.$array[xlist.$offset + i$1] = x$1[0]); + _i$1++; + $s = 7; continue; + case 8: + /* } */ case 5: + case 1: + $s = -1; return [xlist, commaOk]; + /* */ } return; } var $f = {$blk: exprList, $c: true, $r, _1, _i, _i$1, _ref, _ref$1, _tuple, allowCommaOk, check, commaOk, e, e$1, elist, i, i$1, ok, t, v, x, x$1, x2, xlist, $s};return $f; + }; + $ptrType(Checker).prototype.arguments$ = function arguments$1(call, sig, targs, args, xlist) { + var {_1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _i, _i$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, a, a$1, adjusted, args, at$1, call, check, context$1, ddd, err, i, ix, last, nargs, npars, params, qualifier$1, rsig, sig, sigParams, targs, targs$1, typ$4, vars, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, xlist, $s, $r, $c} = $restore(this, {call, sig, targs, args, xlist}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rsig = ptrType$27.nil; + check = this; + rsig = sig; + _ref = args; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + a = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _1 = a.mode; + /* */ if (_1 === (3)) { $s = 4; continue; } + /* */ if (_1 === (0)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (3)) { */ case 4: + $r = check.errorf(a, 42, "%s used as value", new sliceType$6([a])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return rsig; + /* } else if (_1 === (0)) { */ case 5: + $s = -1; return rsig; + /* } */ case 6: + case 3: + _i++; + $s = 1; continue; + case 2: + nargs = args.$length; + npars = sig.params.Len(); + ddd = new token.Pos(call.Ellipsis).IsValid(); + sigParams = sig.params; + adjusted = false; + /* */ if (sig.variadic) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (sig.variadic) { */ case 8: + /* */ if (ddd) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (ddd) { */ case 11: + /* */ if ((call.Args.$length === 1) && nargs > 1) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if ((call.Args.$length === 1) && nargs > 1) { */ case 14: + _r$1 = inNode(call, call.Ellipsis); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = check.errorf((x = _r$1, new x.constructor.elem(x)), 81, "cannot use ... with %d-valued %s", new sliceType$6([new $Int(nargs), (x$1 = call.Args, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]))])); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return rsig; + /* } */ case 15: + $s = 13; continue; + /* } else { */ case 12: + if (nargs >= (npars - 1 >> 0)) { + vars = $makeSlice(sliceType$10, (npars - 1 >> 0)); + $copySlice(vars, sig.params.vars); + last = (x$2 = sig.params.vars, x$3 = npars - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3])); + typ$4 = $assertType(last.object.typ, ptrType$25).elem; + while (true) { + if (!(vars.$length < nargs)) { break; } + vars = $append(vars, NewParam(last.object.pos, last.object.pkg, last.object.name, typ$4)); + } + sigParams = NewTuple(vars); + adjusted = true; + npars = nargs; + } else { + npars = npars - (1) >> 0; + } + /* } */ case 13: + $s = 10; continue; + /* } else { */ case 9: + /* */ if (ddd) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (ddd) { */ case 18: + _r$2 = inNode(call, call.Ellipsis); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = check.errorf((x$4 = _r$2, new x$4.constructor.elem(x$4)), 78, "cannot use ... in call to non-variadic %s", new sliceType$6([call.Fun])); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return rsig; + /* } */ case 19: + /* } */ case 10: + /* */ if (!((nargs === npars))) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!((nargs === npars))) { */ case 22: + at$1 = call; + qualifier$1 = "not enough"; + if (nargs > npars) { + at$1 = ((npars < 0 || npars >= args.$length) ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + npars]).expr; + qualifier$1 = "too many"; + } else { + at$1 = new atPos(((call.Rparen >> 0))); + } + params = sliceType$10.nil; + if (!(sig.params === ptrType$15.nil)) { + params = sig.params.vars; + } + err = newErrorf(at$1, 126, "%s arguments in call to %s", new sliceType$6([new $String(qualifier$1), call.Fun])); + _r$3 = check.typesSummary(operandTypes(args), false); /* */ $s = 24; case 24: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg = new $String(_r$3); + $r = err.errorf(0, "have %s", new sliceType$6([_arg])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$4 = check.typesSummary(varTypes(params), sig.variadic); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$4); + $r = err.errorf(0, "want %s", new sliceType$6([_arg$1])); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.report(err); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return rsig; + /* } */ case 23: + /* */ if (sig.TypeParams().Len() > 0) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (sig.TypeParams().Len() > 0) { */ case 29: + /* */ if (!check.allowVersion(check.pkg, 1, 18)) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (!check.allowVersion(check.pkg, 1, 18)) { */ case 31: + _ref$1 = call.Fun; + /* */ if ($assertType(_ref$1, ptrType$37, true)[1] || $assertType(_ref$1, ptrType$38, true)[1]) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if ($assertType(_ref$1, ptrType$37, true)[1] || $assertType(_ref$1, ptrType$38, true)[1]) { */ case 33: + ix = typeparams.UnpackIndexExpr(call.Fun); + _r$5 = inNode(call.Fun, ix.IndexListExpr.Lbrack); /* */ $s = 36; case 36: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $r = check.softErrorf((x$5 = _r$5, new x$5.constructor.elem(x$5)), 135, "function instantiation requires go1.18 or later", sliceType$6.nil); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 35; continue; + /* } else { */ case 34: + _r$6 = inNode(call, call.Lparen); /* */ $s = 38; case 38: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $r = check.softErrorf((x$6 = _r$6, new x$6.constructor.elem(x$6)), 135, "implicit function instantiation requires go1.18 or later", sliceType$6.nil); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 35: + /* } */ case 32: + _r$7 = check.infer(call, sig.TypeParams().list(), targs, sigParams, args); /* */ $s = 40; case 40: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + targs$1 = _r$7; + if (targs$1 === sliceType$2.nil) { + $s = -1; return rsig; + } + _r$8 = call.Pos(); /* */ $s = 41; case 41: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$9 = check.instantiateSignature(_r$8, sig, targs$1, xlist); /* */ $s = 42; case 42: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + rsig = _r$9; + $r = assert(rsig.TypeParams().Len() === 0); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.recordInstance(call.Fun, targs$1, rsig); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (adjusted) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if (adjusted) { */ case 45: + _r$10 = call.Pos(); /* */ $s = 48; case 48: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _arg$2 = _r$10; + _arg$3 = sigParams; + _r$11 = makeSubstMap(sig.TypeParams().list(), targs$1); /* */ $s = 49; case 49: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _arg$4 = _r$11; + _arg$5 = ptrType$9.nil; + _arg$6 = check.context(); + _r$12 = check.subst(_arg$2, _arg$3, _arg$4, _arg$5, _arg$6); /* */ $s = 50; case 50: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + sigParams = $assertType(_r$12, ptrType$15); + $s = 47; continue; + /* } else { */ case 46: + sigParams = rsig.params; + /* } */ case 47: + /* } */ case 30: + /* */ if (args.$length > 0) { $s = 51; continue; } + /* */ $s = 52; continue; + /* if (args.$length > 0) { */ case 51: + _r$13 = check.sprintf("argument to %s", new sliceType$6([call.Fun])); /* */ $s = 53; case 53: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + context$1 = _r$13; + _ref$2 = args; + _i$1 = 0; + /* while (true) { */ case 54: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 55; continue; } + i = _i$1; + a$1 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + $r = check.assignment(a$1, (x$7 = sigParams.vars, ((i < 0 || i >= x$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + i])).object.typ, context$1); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 54; continue; + case 55: + /* } */ case 52: + $s = -1; return rsig; + /* */ } return; } var $f = {$blk: arguments$1, $c: true, $r, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _i, _i$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, a, a$1, adjusted, args, at$1, call, check, context$1, ddd, err, i, ix, last, nargs, npars, params, qualifier$1, rsig, sig, sigParams, targs, targs$1, typ$4, vars, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, xlist, $s};return $f; + }; + $ptrType(Checker).prototype.selector = function selector(x, e, def$2, wantType) { + var {_1, _arg, _arg$1, _arg$2, _arg$3, _i, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _v, changeCase, check, def$2, disabled, e, exp, exp$1, exp$2, exp$3, exp$4, exp$5, exp$6, funcMode, ident$1, index$2, indirect, m, m$1, m$2, mset, name, obj, obj$1, obj$2, obj$3, obj$4, ok, ok$1, params, pkg, pname, prefix, r, sel, sig, sig$1, typ$4, wantType, why, x, x$1, $s, $r, $c} = $restore(this, {x, e, def$2, wantType}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + sig = [sig]; + check = this; + obj = $ifaceNil; + index$2 = sliceType$13.nil; + indirect = false; + sel = e.Sel.Name; + _tuple = $assertType(e.X, ptrType$30, true); + ident$1 = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r$1 = check.environment.lookup(ident$1.Name); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + obj$1 = _r$1; + _tuple$1 = $assertType(obj$1, ptrType$31, true); + pname = _tuple$1[0]; + /* */ if (!(pname === ptrType$31.nil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(pname === ptrType$31.nil)) { */ case 4: + $r = assert(pname.object.pkg === check.pkg); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.recordUse(ident$1, pname); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + pname.used = true; + pkg = pname.imported; + exp = $ifaceNil; + funcMode = 7; + /* */ if (pkg.cgo) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (pkg.cgo) { */ case 8: + if (sel === "malloc") { + sel = "_CMalloc"; + } else { + funcMode = 10; + } + _ref = cgoPrefixes; + _i = 0; + /* while (true) { */ case 11: + /* if (!(_i < 8)) { break; } */ if(!(_i < 8)) { $s = 12; continue; } + prefix = ((_i < 0 || _i >= _ref.length) ? ($throwRuntimeError("index out of range"), undefined) : _ref[_i]); + _r$2 = check.environment.scope.LookupParent(prefix + sel, check.environment.pos); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + exp = _tuple$2[1]; + if (!($interfaceIsEqual(exp, $ifaceNil))) { + /* break; */ $s = 12; continue; + } + _i++; + $s = 11; continue; + case 12: + /* */ if ($interfaceIsEqual(exp, $ifaceNil)) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if ($interfaceIsEqual(exp, $ifaceNil)) { */ case 14: + $r = check.errorf(e.Sel, 73, "undefined: %s", new sliceType$6([(e)])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 17; continue; + /* } */ case 15: + $r = check.objDecl(exp, ptrType$9.nil); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 10; continue; + /* } else { */ case 9: + _r$3 = pkg.scope.Lookup(sel); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + exp = _r$3; + /* */ if ($interfaceIsEqual(exp, $ifaceNil)) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if ($interfaceIsEqual(exp, $ifaceNil)) { */ case 20: + /* */ if (!pkg.fake) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!pkg.fake) { */ case 22: + $r = check.errorf(e.Sel, 73, "undefined: %s", new sliceType$6([(e)])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 23: + /* goto Error */ $s = 17; continue; + /* } */ case 21: + _r$4 = exp.Exported(); /* */ $s = 27; case 27: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (!_r$4) { */ case 25: + $r = check.errorf(e.Sel, 74, "%s not exported by package %s", new sliceType$6([new $String(sel), new $String(pkg.name)])); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 26: + /* } */ case 10: + $r = check.recordUse(e.Sel, exp); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$1 = exp; + /* */ if ($assertType(_ref$1, ptrType$32, true)[1]) { $s = 30; continue; } + /* */ if ($assertType(_ref$1, ptrType$17, true)[1]) { $s = 31; continue; } + /* */ if ($assertType(_ref$1, ptrType$16, true)[1]) { $s = 32; continue; } + /* */ if ($assertType(_ref$1, ptrType$2, true)[1]) { $s = 33; continue; } + /* */ if ($assertType(_ref$1, ptrType$18, true)[1]) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if ($assertType(_ref$1, ptrType$32, true)[1]) { */ case 30: + exp$1 = _ref$1.$val; + $r = assert(!($interfaceIsEqual(exp$1.Val(), $ifaceNil))); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 4; + x.typ = exp$1.object.typ; + x.val = exp$1.val; + $s = 36; continue; + /* } else if ($assertType(_ref$1, ptrType$17, true)[1]) { */ case 31: + exp$2 = _ref$1.$val; + x.mode = 3; + x.typ = exp$2.object.typ; + $s = 36; continue; + /* } else if ($assertType(_ref$1, ptrType$16, true)[1]) { */ case 32: + exp$3 = _ref$1.$val; + x.mode = 5; + x.typ = exp$3.object.typ; + if (pkg.cgo && strings.HasPrefix(exp$3.object.name, "_Cvar_")) { + x.typ = $assertType(x.typ, ptrType$26).base; + } + $s = 36; continue; + /* } else if ($assertType(_ref$1, ptrType$2, true)[1]) { */ case 33: + exp$4 = _ref$1.$val; + x.mode = funcMode; + x.typ = exp$4.object.typ; + if (pkg.cgo && strings.HasPrefix(exp$4.object.name, "_Cmacro_")) { + x.mode = 7; + x.typ = (x$1 = $assertType(x.typ, ptrType$27).results.vars, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])).object.typ; + } + $s = 36; continue; + /* } else if ($assertType(_ref$1, ptrType$18, true)[1]) { */ case 34: + exp$5 = _ref$1.$val; + x.mode = 2; + x.typ = exp$5.object.typ; + x.id = exp$5.id; + $s = 36; continue; + /* } else { */ case 35: + exp$6 = _ref$1; + $r = check.dump("%v: unexpected object %v", new sliceType$6([new token.Pos(e.Sel.Pos()), exp$6])); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + unreachable(); + /* } */ case 36: + x.expr = e; + $s = -1; return; + /* } */ case 5: + /* } */ case 2: + $r = check.exprOrType(x, e.X, false); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _1 = x.mode; + /* */ if (_1 === (3)) { $s = 41; continue; } + /* */ if (_1 === (2)) { $s = 42; continue; } + /* */ if (_1 === (0)) { $s = 43; continue; } + /* */ $s = 44; continue; + /* if (_1 === (3)) { */ case 41: + /* */ if (!(def$2 === ptrType$9.nil) && $interfaceIsEqual(x.typ, def$2)) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if (!(def$2 === ptrType$9.nil) && $interfaceIsEqual(x.typ, def$2)) { */ case 45: + $r = check.cycleError(new sliceType$8([def$2.obj])); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 17; continue; + /* } */ case 46: + $s = 44; continue; + /* } else if (_1 === (2)) { */ case 42: + $r = check.errorf(e.Sel, 82, "cannot select on %s", new sliceType$6([x])); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 17; continue; + $s = 44; continue; + /* } else if (_1 === (0)) { */ case 43: + /* goto Error */ $s = 17; continue; + /* } */ case 44: + case 40: + /* */ if (wantType) { $s = 49; continue; } + /* */ $s = 50; continue; + /* if (wantType) { */ case 49: + $r = check.errorf(e.Sel, 25, "%s is not a type", new sliceType$6([(e)])); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 17; continue; + /* } */ case 50: + _r$5 = LookupFieldOrMethod(x.typ, x.mode === 5, check.pkg, sel); /* */ $s = 52; case 52: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$3 = _r$5; + obj = _tuple$3[0]; + index$2 = _tuple$3[1]; + indirect = _tuple$3[2]; + /* */ if ($interfaceIsEqual(obj, $ifaceNil)) { $s = 53; continue; } + /* */ $s = 54; continue; + /* if ($interfaceIsEqual(obj, $ifaceNil)) { */ case 53: + _r$6 = under(x.typ); /* */ $s = 57; case 57: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if ($interfaceIsEqual(_r$6, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if ($interfaceIsEqual(_r$6, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { */ case 55: + /* goto Error */ $s = 17; continue; + /* } */ case 56: + /* */ if (!(index$2 === sliceType$13.nil)) { $s = 58; continue; } + /* */ $s = 59; continue; + /* if (!(index$2 === sliceType$13.nil)) { */ case 58: + $r = check.errorf(e.Sel, 72, "ambiguous selector %s.%s", new sliceType$6([x.expr, new $String(sel)])); /* */ $s = 60; case 60: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 17; continue; + /* } */ case 59: + /* */ if (indirect) { $s = 61; continue; } + /* */ $s = 62; continue; + /* if (indirect) { */ case 61: + /* */ if (x.mode === 3) { $s = 63; continue; } + /* */ $s = 64; continue; + /* if (x.mode === 3) { */ case 63: + $r = check.errorf(e.Sel, 125, "invalid method expression %s.%s (needs pointer receiver (*%s).%s)", new sliceType$6([x.typ, new $String(sel), x.typ, new $String(sel)])); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 65; continue; + /* } else { */ case 64: + $r = check.errorf(e.Sel, 125, "cannot call pointer method %s on %s", new sliceType$6([new $String(sel), x.typ])); /* */ $s = 67; case 67: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 65: + /* goto Error */ $s = 17; continue; + /* } */ case 62: + why = ""; + _r$7 = isInterfacePtr(x.typ); /* */ $s = 71; case 71: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (_r$7) { $s = 68; continue; } + /* */ $s = 69; continue; + /* if (_r$7) { */ case 68: + _r$8 = check.interfacePtrError(x.typ); /* */ $s = 72; case 72: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + why = _r$8; + $s = 70; continue; + /* } else { */ case 69: + _r$9 = check.sprintf("type %s has no field or method %s", new sliceType$6([x.typ, new $String(sel)])); /* */ $s = 73; case 73: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + why = _r$9; + /* */ if (sel.length > 0) { $s = 74; continue; } + /* */ $s = 75; continue; + /* if (sel.length > 0) { */ case 74: + changeCase = ""; + r = ((sel.charCodeAt(0) >> 0)); + if (unicode.IsUpper(r)) { + changeCase = ($encodeRune(unicode.ToLower(r))) + $substring(sel, 1); + } else { + changeCase = ($encodeRune(unicode.ToUpper(r))) + $substring(sel, 1); + } + _r$10 = LookupFieldOrMethod(x.typ, x.mode === 5, check.pkg, changeCase); /* */ $s = 76; case 76: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$4 = _r$10; + obj = _tuple$4[0]; + if (!($interfaceIsEqual(obj, $ifaceNil))) { + why = why + (", but does have " + changeCase); + } + /* } */ case 75: + /* } */ case 70: + $r = check.errorf(e.Sel, 76, "%s.%s undefined (%s)", new sliceType$6([x.expr, new $String(sel), new $String(why)])); /* */ $s = 77; case 77: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 17; continue; + /* } */ case 54: + _tuple$5 = $assertType(obj, ptrType$2, true); + m = _tuple$5[0]; + /* */ if (!(m === ptrType$2.nil)) { $s = 78; continue; } + /* */ $s = 79; continue; + /* if (!(m === ptrType$2.nil)) { */ case 78: + $r = check.objDecl(m, ptrType$9.nil); /* */ $s = 80; case 80: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 79: + /* */ if (x.mode === 3) { $s = 81; continue; } + /* */ $s = 82; continue; + /* if (x.mode === 3) { */ case 81: + _tuple$6 = $assertType(obj, ptrType$2, true); + m$1 = _tuple$6[0]; + /* */ if (m$1 === ptrType$2.nil) { $s = 84; continue; } + /* */ $s = 85; continue; + /* if (m$1 === ptrType$2.nil) { */ case 84: + $r = check.errorf(e.Sel, 76, "%s.%s undefined (type %s has no method %s)", new sliceType$6([x.expr, new $String(sel), x.typ, new $String(sel)])); /* */ $s = 86; case 86: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 17; continue; + /* } */ case 85: + $r = check.recordSelection(e, 2, x.typ, m$1, index$2, indirect); /* */ $s = 87; case 87: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + sig$1 = $assertType(m$1.object.typ, ptrType$27); + /* */ if (sig$1.recv === ptrType$16.nil) { $s = 88; continue; } + /* */ $s = 89; continue; + /* if (sig$1.recv === ptrType$16.nil) { */ case 88: + $r = check.error(e, 11, "illegal cycle in method declaration"); /* */ $s = 90; case 90: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Error */ $s = 17; continue; + /* } */ case 89: + params = sliceType$10.nil; + if (!(sig$1.params === ptrType$15.nil)) { + params = sig$1.params.vars; + } + name = ""; + if (params.$length > 0 && !((0 >= params.$length ? ($throwRuntimeError("index out of range"), undefined) : params.$array[params.$offset + 0]).object.name === "")) { + name = sig$1.recv.object.name; + if (name === "") { + name = "_"; + } + } + params = $appendSlice(new sliceType$10([NewVar(sig$1.recv.object.pos, sig$1.recv.object.pkg, name, x.typ)]), params); + x.mode = 7; + x.typ = new Signature.ptr(ptrType$48.nil, sig$1.tparams, ptrType.nil, ptrType$16.nil, NewTuple(params), sig$1.results, sig$1.variadic); + check.addDeclDep(m$1); + $s = 83; continue; + /* } else { */ case 82: + _ref$2 = obj; + /* */ if ($assertType(_ref$2, ptrType$16, true)[1]) { $s = 91; continue; } + /* */ if ($assertType(_ref$2, ptrType$2, true)[1]) { $s = 92; continue; } + /* */ $s = 93; continue; + /* if ($assertType(_ref$2, ptrType$16, true)[1]) { */ case 91: + obj$2 = _ref$2.$val; + $r = check.recordSelection(e, 0, x.typ, obj$2, index$2, indirect); /* */ $s = 95; case 95: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if ((x.mode === 5) || indirect) { + x.mode = 5; + } else { + x.mode = 7; + } + x.typ = obj$2.object.typ; + $s = 94; continue; + /* } else if ($assertType(_ref$2, ptrType$2, true)[1]) { */ case 92: + obj$3 = _ref$2.$val; + $r = check.recordSelection(e, 1, x.typ, obj$3, index$2, indirect); /* */ $s = 96; case 96: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + disabled = true; + /* */ if (!disabled && false) { $s = 97; continue; } + /* */ $s = 98; continue; + /* if (!disabled && false) { */ case 97: + typ$4 = x.typ; + /* */ if (x.mode === 5) { $s = 99; continue; } + /* */ $s = 100; continue; + /* if (x.mode === 5) { */ case 99: + _tuple$7 = $assertType(typ$4, ptrType$26, true); + ok$1 = _tuple$7[1]; + if (!(!ok$1)) { _v = false; $s = 103; continue s; } + _r$11 = IsInterface(typ$4); /* */ $s = 104; case 104: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _v = !_r$11; case 103: + /* */ if (_v) { $s = 101; continue; } + /* */ $s = 102; continue; + /* if (_v) { */ case 101: + typ$4 = new Pointer.ptr(typ$4); + /* } */ case 102: + /* } */ case 100: + _r$12 = NewMethodSet(typ$4); /* */ $s = 105; case 105: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + mset = _r$12; + _r$13 = mset.Lookup(check.pkg, sel); /* */ $s = 106; case 106: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + m$2 = _r$13; + /* */ if (m$2 === ptrType$3.nil || !($interfaceIsEqual(m$2.obj, obj$3))) { $s = 107; continue; } + /* */ $s = 108; continue; + /* if (m$2 === ptrType$3.nil || !($interfaceIsEqual(m$2.obj, obj$3))) { */ case 107: + _r$14 = e.Pos(); /* */ $s = 109; case 109: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _arg = new token.Pos(_r$14); + _arg$1 = typ$4; + _arg$2 = new $String(obj$3.object.name); + _arg$3 = m$2; + $r = check.dump("%v: (%s).%v -> %s", new sliceType$6([_arg, _arg$1, _arg$2, _arg$3])); /* */ $s = 110; case 110: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.dump("%s\n", new sliceType$6([mset])); /* */ $s = 111; case 111: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $panic(new $String("method sets and lookup don't agree")); + /* } */ case 108: + /* } */ case 98: + x.mode = 7; + sig[0] = $clone($assertType(obj$3.object.typ, ptrType$27), Signature); + sig[0].recv = ptrType$16.nil; + x.typ = sig[0]; + check.addDeclDep(obj$3); + $s = 94; continue; + /* } else { */ case 93: + obj$4 = _ref$2; + unreachable(); + /* } */ case 94: + /* } */ case 83: + x.expr = e; + $s = -1; return; + /* Error: */ case 17: + x.mode = 0; + x.expr = e; + $s = -1; return; + /* */ } return; } var $f = {$blk: selector, $c: true, $r, _1, _arg, _arg$1, _arg$2, _arg$3, _i, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _v, changeCase, check, def$2, disabled, e, exp, exp$1, exp$2, exp$3, exp$4, exp$5, exp$6, funcMode, ident$1, index$2, indirect, m, m$1, m$2, mset, name, obj, obj$1, obj$2, obj$3, obj$4, ok, ok$1, params, pkg, pname, prefix, r, sel, sig, sig$1, typ$4, wantType, why, x, x$1, $s};return $f; + }; + $ptrType(Checker).prototype.use = function use(arg) { + var {_i, _r$1, _ref, arg, check, e, x, $s, $r, $c} = $restore(this, {arg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = [x]; + check = this; + x[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + _ref = arg; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 3: + _r$1 = check.rawExpr(x[0], e, $ifaceNil, false); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: use, $c: true, $r, _i, _r$1, _ref, arg, check, e, x, $s};return $f; + }; + $ptrType(Checker).prototype.useLHS = function useLHS(arg) { + var {_i, _r$1, _r$2, _ref, _tuple, _tuple$1, _tuple$2, arg, check, e, ident$1, obj, v, v_used, w, x, $s, $r, $c} = $restore(this, {arg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = [x]; + check = this; + x[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + _ref = arg; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + e = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + v = ptrType$16.nil; + v_used = false; + _tuple = $assertType(unparen(e), ptrType$30, true); + ident$1 = _tuple[0]; + /* */ if (!(ident$1 === ptrType$30.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(ident$1 === ptrType$30.nil)) { */ case 3: + if (ident$1.Name === "_") { + _i++; + /* continue; */ $s = 1; continue; + } + _r$1 = check.environment.scope.LookupParent(ident$1.Name, 0); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + obj = _tuple$1[1]; + if (!($interfaceIsEqual(obj, $ifaceNil))) { + _tuple$2 = $assertType(obj, ptrType$16, true); + w = _tuple$2[0]; + if (!(w === ptrType$16.nil) && w.object.pkg === check.pkg) { + v = w; + v_used = v.used; + } + } + /* } */ case 4: + _r$2 = check.rawExpr(x[0], e, $ifaceNil, false); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + if (!(v === ptrType$16.nil)) { + v.used = v_used; + } + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: useLHS, $c: true, $r, _i, _r$1, _r$2, _ref, _tuple, _tuple$1, _tuple$2, arg, check, e, ident$1, obj, v, v_used, w, x, $s};return $f; + }; + $ptrType(Checker).prototype.builtin = function builtin(x, call, id) { + var {S, T, T$1, T$2, _, _1, _2, _3, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$16, _arg$17, _arg$18, _arg$19, _arg$2, _arg$20, _arg$21, _arg$22, _arg$23, _arg$24, _arg$25, _arg$26, _arg$27, _arg$28, _arg$29, _arg$3, _arg$30, _arg$31, _arg$32, _arg$33, _arg$34, _arg$35, _arg$36, _arg$37, _arg$38, _arg$39, _arg$4, _arg$40, _arg$41, _arg$42, _arg$43, _arg$44, _arg$45, _arg$46, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _i, _i$1, _i$2, _key, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _r$5, _r$50, _r$51, _r$52, _r$53, _r$54, _r$55, _r$56, _r$57, _r$58, _r$59, _r$6, _r$60, _r$61, _r$62, _r$63, _r$64, _r$65, _r$66, _r$67, _r$68, _r$69, _r$7, _r$70, _r$71, _r$72, _r$73, _r$74, _r$75, _r$76, _r$77, _r$78, _r$79, _r$8, _r$80, _r$81, _r$82, _r$83, _r$84, _r$85, _r$86, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, _v$2, _v$3, alist, arg, arg$1, arg$2, arg0, arg0$1, base, bin, call, cause, check, code, code$1, d, dst, f, f$1, i, i$1, i$2, id, index$2, indirect, key, map_, min, mode, mode$1, msg$1, nargs, obj, ok, p, params, ptr, resTyp, resTyp$1, s, sel, selx, sig, sig$1, size, sizes, slice, src, src0, t, t$1, t$2, t$3, t$4, t$5, t$6, toFloat, typ$4, types$1, u, val, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, x1, xlist, xlist$1, y, y$1, y$2, y$3, y$4, $s, $deferred, $r, $c} = $restore(this, {x, call, id}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + check = [check]; + id = [id]; + key = [key]; + t = [t]; + x = [x]; + xlist = [xlist]; + y = [y]; + y$1 = [y$1]; + y$2 = [y$2]; + y$3 = [y$3]; + y$4 = [y$4]; + _ = false; + check[0] = this; + bin = $clone(((id[0] < 0 || id[0] >= predeclaredFuncs.length) ? ($throwRuntimeError("index out of range"), undefined) : predeclaredFuncs[id[0]]), structType); + /* */ if (new token.Pos(call.Ellipsis).IsValid() && !((id[0] === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (new token.Pos(call.Ellipsis).IsValid() && !((id[0] === 0))) { */ case 1: + $r = check[0].errorf(new atPos(((call.Ellipsis >> 0))), 81, "invalid operation: invalid use of ... with built-in %s", new sliceType$6([new $String(bin.name)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].use(call.Args); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 2: + /* */ if ((id[0] === 8) || (id[0] === 1)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ((id[0] === 8) || (id[0] === 1)) { */ case 5: + $deferred.push([(function(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4) { return function Checker·builtin·func1(b) { + var b; + check[0].environment.hasCallOrRecv = b; + }; })(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4), [check[0].environment.hasCallOrRecv]]); + check[0].environment.hasCallOrRecv = false; + /* } */ case 6: + arg = $throwNilPointerError; + nargs = call.Args.$length; + _1 = id[0]; + /* */ if ((_1 === (9)) || (_1 === (10)) || (_1 === (18)) || (_1 === (25))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ((_1 === (9)) || (_1 === (10)) || (_1 === (18)) || (_1 === (25))) { */ case 8: + $s = 10; continue; + /* } else { */ case 9: + _r$1 = check[0].exprList(call.Args, false); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + xlist[0] = _tuple[0]; + arg = (function(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4) { return function Checker·builtin·func2(x$1, i) { + var i, x$1; + operand.copy(x$1, ((i < 0 || i >= xlist[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : xlist[0].$array[xlist[0].$offset + i])); + }; })(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4); + nargs = xlist[0].$length; + /* */ if (nargs > 0) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (nargs > 0) { */ case 12: + $r = arg(x[0], 0); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + /* } */ case 13: + /* } */ case 10: + case 7: + msg$1 = ""; + if (nargs < bin.nargs) { + msg$1 = "not enough"; + } else if (!bin.variadic && nargs > bin.nargs) { + msg$1 = "too many"; + } + /* */ if (!(msg$1 === "")) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!(msg$1 === "")) { */ case 15: + _r$2 = inNode(call, call.Rparen); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = check[0].errorf((x$1 = _r$2, new x$1.constructor.elem(x$1)), 126, "invalid operation: %s arguments for %s (expected %d, found %d)", new sliceType$6([new $String(msg$1), call, new $Int(bin.nargs), new $Int(nargs)])); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 16: + _2 = id[0]; + /* */ if (_2 === (0)) { $s = 20; continue; } + /* */ if ((_2 === (1)) || (_2 === (8))) { $s = 21; continue; } + /* */ if (_2 === (2)) { $s = 22; continue; } + /* */ if (_2 === (3)) { $s = 23; continue; } + /* */ if (_2 === (4)) { $s = 24; continue; } + /* */ if (_2 === (5)) { $s = 25; continue; } + /* */ if (_2 === (6)) { $s = 26; continue; } + /* */ if ((_2 === (7)) || (_2 === (14))) { $s = 27; continue; } + /* */ if (_2 === (9)) { $s = 28; continue; } + /* */ if (_2 === (10)) { $s = 29; continue; } + /* */ if (_2 === (11)) { $s = 30; continue; } + /* */ if ((_2 === (12)) || (_2 === (13))) { $s = 31; continue; } + /* */ if (_2 === (15)) { $s = 32; continue; } + /* */ if (_2 === (16)) { $s = 33; continue; } + /* */ if (_2 === (17)) { $s = 34; continue; } + /* */ if (_2 === (18)) { $s = 35; continue; } + /* */ if (_2 === (19)) { $s = 36; continue; } + /* */ if (_2 === (20)) { $s = 37; continue; } + /* */ if (_2 === (21)) { $s = 38; continue; } + /* */ if (_2 === (22)) { $s = 39; continue; } + /* */ if (_2 === (23)) { $s = 40; continue; } + /* */ if (_2 === (24)) { $s = 41; continue; } + /* */ if (_2 === (25)) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (_2 === (0)) { */ case 20: + S = x[0].typ; + T = $ifaceNil; + _r$3 = coreType(S); /* */ $s = 45; case 45: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$3, ptrType$25, true); + s = _tuple$1[0]; + /* */ if (!(s === ptrType$25.nil)) { $s = 46; continue; } + /* */ $s = 47; continue; + /* if (!(s === ptrType$25.nil)) { */ case 46: + T = s.elem; + $s = 48; continue; + /* } else { */ case 47: + cause = ""; + /* */ if (x[0].isNil()) { $s = 50; continue; } + /* */ if (isTypeParam(S)) { $s = 51; continue; } + /* */ $s = 52; continue; + /* if (x[0].isNil()) { */ case 50: + cause = "have untyped nil"; + $s = 53; continue; + /* } else if (isTypeParam(S)) { */ case 51: + _r$4 = coreType(S); /* */ $s = 54; case 54: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + u = _r$4; + /* */ if (!($interfaceIsEqual(u, $ifaceNil))) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if (!($interfaceIsEqual(u, $ifaceNil))) { */ case 55: + _r$5 = check[0].sprintf("%s has core type %s", new sliceType$6([x[0], u])); /* */ $s = 58; case 58: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + cause = _r$5; + $s = 57; continue; + /* } else { */ case 56: + _r$6 = check[0].sprintf("%s has no core type", new sliceType$6([x[0]])); /* */ $s = 59; case 59: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + cause = _r$6; + /* } */ case 57: + $s = 53; continue; + /* } else { */ case 52: + _r$7 = check[0].sprintf("have %s", new sliceType$6([x[0]])); /* */ $s = 60; case 60: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + cause = _r$7; + /* } */ case 53: + case 49: + $r = check[0].errorf(x[0], 83, "first argument to append must be a slice; %s", new sliceType$6([new $String(cause)])); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 48: + alist = new sliceType$41([$clone(x[0], operand)]); + /* */ if ((nargs === 2) && new token.Pos(call.Ellipsis).IsValid()) { $s = 62; continue; } + /* */ $s = 63; continue; + /* if ((nargs === 2) && new token.Pos(call.Ellipsis).IsValid()) { */ case 62: + _r$8 = x[0].assignableTo(check[0], NewSlice(universeByte), ptrType$34.nil); /* */ $s = 64; case 64: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tuple$2 = _r$8; + ok = _tuple$2[0]; + /* */ if (ok) { $s = 65; continue; } + /* */ $s = 66; continue; + /* if (ok) { */ case 65: + $r = arg(x[0], 1); /* */ $s = 67; case 67: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + _r$9 = coreString(x[0].typ); /* */ $s = 68; case 68: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + t$1 = _r$9; + if (!(!($interfaceIsEqual(t$1, $ifaceNil)))) { _v = false; $s = 71; continue s; } + _r$10 = isString(t$1); /* */ $s = 72; case 72: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v = _r$10; case 71: + /* */ if (_v) { $s = 69; continue; } + /* */ $s = 70; continue; + /* if (_v) { */ case 69: + /* */ if (!(check[0].Info.Types === false)) { $s = 73; continue; } + /* */ $s = 74; continue; + /* if (!(check[0].Info.Types === false)) { */ case 73: + _r$11 = makeSig(S, new sliceType$2([S, x[0].typ])); /* */ $s = 75; case 75: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + sig = _r$11; + sig.variadic = true; + $r = check[0].recordBuiltinType(call.Fun, sig); /* */ $s = 76; case 76: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 74: + x[0].mode = 7; + x[0].typ = S; + /* break; */ $s = 19; continue; + /* } */ case 70: + alist = $append(alist, x[0]); + /* } */ case 66: + /* } */ case 63: + _r$12 = makeSig(S, new sliceType$2([S, NewSlice(T)])); /* */ $s = 77; case 77: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + sig$1 = _r$12; + sig$1.variadic = true; + xlist$1 = sliceType$29.nil; + _ref = alist; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + xlist$1 = $append(xlist$1, ((i < 0 || i >= alist.$length) ? ($throwRuntimeError("index out of range"), undefined) : alist.$array[alist.$offset + i])); + _i++; + } + i$1 = alist.$length; + /* while (true) { */ case 78: + /* if (!(i$1 < nargs)) { break; } */ if(!(i$1 < nargs)) { $s = 79; continue; } + x$2 = [x$2]; + x$2[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = arg(x$2[0], i$1); /* */ $s = 80; case 80: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + xlist$1 = $append(xlist$1, x$2[0]); + i$1 = i$1 + (1) >> 0; + $s = 78; continue; + case 79: + _r$13 = check[0].arguments$(call, sig$1, sliceType$2.nil, xlist$1, sliceType$11.nil); /* */ $s = 81; case 81: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$13; + x[0].mode = 7; + x[0].typ = S; + /* */ if (!(check[0].Info.Types === false)) { $s = 82; continue; } + /* */ $s = 83; continue; + /* if (!(check[0].Info.Types === false)) { */ case 82: + $r = check[0].recordBuiltinType(call.Fun, sig$1); /* */ $s = 84; case 84: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 83: + $s = 44; continue; + /* } else if ((_2 === (1)) || (_2 === (8))) { */ case 21: + mode = 0; + val = $ifaceNil; + _r$14 = under(x[0].typ); /* */ $s = 85; case 85: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _r$15 = arrayPtrDeref(_r$14); /* */ $s = 86; case 86: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _ref$1 = _r$15; + /* */ if ($assertType(_ref$1, ptrType$8, true)[1]) { $s = 87; continue; } + /* */ if ($assertType(_ref$1, ptrType$10, true)[1]) { $s = 88; continue; } + /* */ if ($assertType(_ref$1, ptrType$25, true)[1] || $assertType(_ref$1, ptrType$29, true)[1]) { $s = 89; continue; } + /* */ if ($assertType(_ref$1, ptrType$28, true)[1]) { $s = 90; continue; } + /* */ if ($assertType(_ref$1, ptrType$13, true)[1]) { $s = 91; continue; } + /* */ $s = 92; continue; + /* switch (0) { default: if ($assertType(_ref$1, ptrType$8, true)[1]) { */ case 87: + t$2 = _ref$1.$val; + _r$16 = isString(t$2); /* */ $s = 95; case 95: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + /* */ if (_r$16 && (id[0] === 8)) { $s = 93; continue; } + /* */ $s = 94; continue; + /* if (_r$16 && (id[0] === 8)) { */ case 93: + /* */ if (x[0].mode === 4) { $s = 96; continue; } + /* */ $s = 97; continue; + /* if (x[0].mode === 4) { */ case 96: + mode = 4; + _r$17 = constant.StringVal(x[0].val); /* */ $s = 99; case 99: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _r$18 = constant.MakeInt64((new $Int64(0, _r$17.length))); /* */ $s = 100; case 100: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + val = _r$18; + $s = 98; continue; + /* } else { */ case 97: + mode = 7; + /* } */ case 98: + /* } */ case 94: + $s = 92; continue; + /* } else if ($assertType(_ref$1, ptrType$10, true)[1]) { */ case 88: + t$3 = _ref$1.$val; + mode = 7; + if (!check[0].environment.hasCallOrRecv) { + mode = 4; + if ((x$3 = t$3.len, (x$3.$high > 0 || (x$3.$high === 0 && x$3.$low >= 0)))) { + val = constant.MakeInt64(t$3.len); + } else { + val = constant.MakeUnknown(); + } + } + $s = 92; continue; + /* } else if ($assertType(_ref$1, ptrType$25, true)[1] || $assertType(_ref$1, ptrType$29, true)[1]) { */ case 89: + t$4 = _ref$1; + mode = 7; + $s = 92; continue; + /* } else if ($assertType(_ref$1, ptrType$28, true)[1]) { */ case 90: + t$5 = _ref$1.$val; + if (id[0] === 8) { + mode = 7; + } + $s = 92; continue; + /* } else if ($assertType(_ref$1, ptrType$13, true)[1]) { */ case 91: + t$6 = _ref$1.$val; + if (!isTypeParam(x[0].typ)) { + /* break; */ $s = 92; continue; + } + _r$19 = t$6.typeSet(); /* */ $s = 103; case 103: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _r$20 = _r$19.underIs((function(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4) { return function Checker·builtin·func3(t$7) { + var {_r$20, _r$21, _ref$2, t$10, t$7, t$8, t$9, $s, $r, $c} = $restore(this, {t$7}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$20 = arrayPtrDeref(t$7); /* */ $s = 1; case 1: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _ref$2 = _r$20; + /* */ if ($assertType(_ref$2, ptrType$8, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref$2, ptrType$10, true)[1] || $assertType(_ref$2, ptrType$25, true)[1] || $assertType(_ref$2, ptrType$29, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref$2, ptrType$28, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref$2, ptrType$8, true)[1]) { */ case 2: + t$8 = _ref$2.$val; + _r$21 = isString(t$8); /* */ $s = 8; case 8: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + /* */ if (_r$21 && (id[0] === 8)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$21 && (id[0] === 8)) { */ case 6: + $s = -1; return true; + /* } */ case 7: + $s = 5; continue; + /* } else if ($assertType(_ref$2, ptrType$10, true)[1] || $assertType(_ref$2, ptrType$25, true)[1] || $assertType(_ref$2, ptrType$29, true)[1]) { */ case 3: + t$9 = _ref$2; + $s = -1; return true; + /* } else if ($assertType(_ref$2, ptrType$28, true)[1]) { */ case 4: + t$10 = _ref$2.$val; + if (id[0] === 8) { + $s = -1; return true; + } + /* } */ case 5: + $s = -1; return false; + /* */ } return; } var $f = {$blk: Checker·builtin·func3, $c: true, $r, _r$20, _r$21, _ref$2, t$10, t$7, t$8, t$9, $s};return $f; + }; })(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4)); /* */ $s = 104; case 104: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + /* */ if (_r$20) { $s = 101; continue; } + /* */ $s = 102; continue; + /* if (_r$20) { */ case 101: + mode = 7; + /* } */ case 102: + /* } } */ case 92: + if (!(mode === 0)) { _v$1 = false; $s = 107; continue s; } + _r$21 = under(x[0].typ); /* */ $s = 108; case 108: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + _v$1 = !($interfaceIsEqual(_r$21, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))); case 107: + /* */ if (_v$1) { $s = 105; continue; } + /* */ $s = 106; continue; + /* if (_v$1) { */ case 105: + code = 84; + if (id[0] === 8) { + code = 90; + } + $r = check[0].errorf(x[0], code, "invalid argument: %s for %s", new sliceType$6([x[0], new $String(bin.name)])); /* */ $s = 109; case 109: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 106: + /* */ if (!(check[0].Info.Types === false) && !((mode === 4))) { $s = 110; continue; } + /* */ $s = 111; continue; + /* if (!(check[0].Info.Types === false) && !((mode === 4))) { */ case 110: + _arg = call.Fun; + _r$22 = makeSig((2 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 2]), new sliceType$2([x[0].typ])); /* */ $s = 112; case 112: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _arg$1 = _r$22; + $r = check[0].recordBuiltinType(_arg, _arg$1); /* */ $s = 113; case 113: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 111: + x[0].mode = mode; + x[0].typ = (2 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 2]); + x[0].val = val; + $s = 44; continue; + /* } else if (_2 === (2)) { */ case 22: + /* */ if (!check[0].allowVersion(check[0].pkg, 1, 21)) { $s = 114; continue; } + /* */ $s = 115; continue; + /* if (!check[0].allowVersion(check[0].pkg, 1, 21)) { */ case 114: + $r = check[0].error(call.Fun, 135, "clear requires go1.21 or later"); /* */ $s = 116; case 116: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 115: + _r$23 = underIs(x[0].typ, (function(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4) { return function Checker·builtin·func4(u$1) { + var {_r$23, _ref$2, _tuple$3, ok$1, u$1, u$2, u$3, $s, $r, $c} = $restore(this, {u$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref$2 = u$1; + /* */ if ($assertType(_ref$2, ptrType$28, true)[1] || $assertType(_ref$2, ptrType$25, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref$2, ptrType$26, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref$2, ptrType$28, true)[1] || $assertType(_ref$2, ptrType$25, true)[1]) { */ case 1: + u$2 = _ref$2; + $s = -1; return true; + /* } else if ($assertType(_ref$2, ptrType$26, true)[1]) { */ case 2: + u$3 = _ref$2.$val; + _r$23 = under(u$3.base); /* */ $s = 4; case 4: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _tuple$3 = $assertType(_r$23, ptrType$10, true); + ok$1 = _tuple$3[1]; + if (ok$1) { + $s = -1; return true; + } + /* } */ case 3: + $r = check[0].errorf(x[0], 148, "invalid argument: cannot clear %s: argument must be (or constrained by) map, slice, or array pointer", new sliceType$6([x[0]])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* */ } return; } var $f = {$blk: Checker·builtin·func4, $c: true, $r, _r$23, _ref$2, _tuple$3, ok$1, u$1, u$2, u$3, $s};return $f; + }; })(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4)); /* */ $s = 119; case 119: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + /* */ if (!_r$23) { $s = 117; continue; } + /* */ $s = 118; continue; + /* if (!_r$23) { */ case 117: + $s = -1; return _; + /* } */ case 118: + x[0].mode = 1; + /* */ if (!(check[0].Info.Types === false)) { $s = 120; continue; } + /* */ $s = 121; continue; + /* if (!(check[0].Info.Types === false)) { */ case 120: + _arg$2 = call.Fun; + _r$24 = makeSig($ifaceNil, new sliceType$2([x[0].typ])); /* */ $s = 122; case 122: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + _arg$3 = _r$24; + $r = check[0].recordBuiltinType(_arg$2, _arg$3); /* */ $s = 123; case 123: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 121: + $s = 44; continue; + /* } else if (_2 === (3)) { */ case 23: + _r$25 = underIs(x[0].typ, (function(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4) { return function Checker·builtin·func5(u$1) { + var {_tuple$3, u$1, uch, $s, $r, $c} = $restore(this, {u$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple$3 = $assertType(u$1, ptrType$29, true); + uch = _tuple$3[0]; + /* */ if (uch === ptrType$29.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (uch === ptrType$29.nil) { */ case 1: + $r = check[0].errorf(x[0], 85, "invalid operation: cannot close non-channel %s", new sliceType$6([x[0]])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 2: + /* */ if (uch.dir === 2) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (uch.dir === 2) { */ case 4: + $r = check[0].errorf(x[0], 85, "invalid operation: cannot close receive-only channel %s", new sliceType$6([x[0]])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 5: + $s = -1; return true; + /* */ } return; } var $f = {$blk: Checker·builtin·func5, $c: true, $r, _tuple$3, u$1, uch, $s};return $f; + }; })(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4)); /* */ $s = 126; case 126: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + /* */ if (!_r$25) { $s = 124; continue; } + /* */ $s = 125; continue; + /* if (!_r$25) { */ case 124: + $s = -1; return _; + /* } */ case 125: + x[0].mode = 1; + /* */ if (!(check[0].Info.Types === false)) { $s = 127; continue; } + /* */ $s = 128; continue; + /* if (!(check[0].Info.Types === false)) { */ case 127: + _arg$4 = call.Fun; + _r$26 = makeSig($ifaceNil, new sliceType$2([x[0].typ])); /* */ $s = 129; case 129: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _arg$5 = _r$26; + $r = check[0].recordBuiltinType(_arg$4, _arg$5); /* */ $s = 130; case 130: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 128: + $s = 44; continue; + /* } else if (_2 === (4)) { */ case 24: + y[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = arg(y[0], 1); /* */ $s = 131; case 131: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (y[0].mode === 0) { + $s = -1; return _; + } + d = 0; + if (isUntyped(x[0].typ)) { + d = d | (1); + } + if (isUntyped(y[0].typ)) { + d = d | (2); + } + _3 = d; + /* */ if (_3 === (0)) { $s = 133; continue; } + /* */ if (_3 === (1)) { $s = 134; continue; } + /* */ if (_3 === (2)) { $s = 135; continue; } + /* */ if (_3 === (3)) { $s = 136; continue; } + /* */ $s = 137; continue; + /* if (_3 === (0)) { */ case 133: + $s = 137; continue; + /* } else if (_3 === (1)) { */ case 134: + $r = check[0].convertUntyped(x[0], y[0].typ); /* */ $s = 138; case 138: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 137; continue; + /* } else if (_3 === (2)) { */ case 135: + $r = check[0].convertUntyped(y[0], x[0].typ); /* */ $s = 139; case 139: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 137; continue; + /* } else if (_3 === (3)) { */ case 136: + /* */ if ((x[0].mode === 4) && (y[0].mode === 4)) { $s = 140; continue; } + /* */ $s = 141; continue; + /* if ((x[0].mode === 4) && (y[0].mode === 4)) { */ case 140: + toFloat = (function(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4) { return function Checker·builtin·func6(x$4) { + var {_r$27, _r$28, _r$29, _v$2, x$4, $s, $r, $c} = $restore(this, {x$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$27 = isNumeric(x$4.typ); /* */ $s = 4; case 4: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + if (!(_r$27)) { _v$2 = false; $s = 3; continue s; } + _r$28 = constant.Imag(x$4.val); /* */ $s = 5; case 5: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _r$29 = constant.Sign(_r$28); /* */ $s = 6; case 6: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + _v$2 = _r$29 === 0; case 3: + /* */ if (_v$2) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v$2) { */ case 1: + x$4.typ = (22 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 22]); + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Checker·builtin·func6, $c: true, $r, _r$27, _r$28, _r$29, _v$2, x$4, $s};return $f; + }; })(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4); + $r = toFloat(x[0]); /* */ $s = 143; case 143: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = toFloat(y[0]); /* */ $s = 144; case 144: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 142; continue; + /* } else { */ case 141: + $r = check[0].convertUntyped(x[0], (14 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 14])); /* */ $s = 145; case 145: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].convertUntyped(y[0], (14 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 14])); /* */ $s = 146; case 146: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 142: + /* } */ case 137: + case 132: + if ((x[0].mode === 0) || (y[0].mode === 0)) { + $s = -1; return _; + } + _r$27 = Identical(x[0].typ, y[0].typ); /* */ $s = 149; case 149: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + /* */ if (!_r$27) { $s = 147; continue; } + /* */ $s = 148; continue; + /* if (!_r$27) { */ case 147: + $r = check[0].errorf(x[0], 87, "invalid argument: mismatched types %s and %s", new sliceType$6([x[0].typ, y[0].typ])); /* */ $s = 150; case 150: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 148: + f = (function(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4) { return function Checker·builtin·func7(typ$4) { + var {_4, _r$28, _tuple$3, t$7, typ$4, $s, $r, $c} = $restore(this, {typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = assert(!isTypeParam(typ$4)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$28 = under(typ$4); /* */ $s = 2; case 2: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _tuple$3 = $assertType(_r$28, ptrType$8, true); + t$7 = _tuple$3[0]; + if (!(t$7 === ptrType$8.nil)) { + _4 = t$7.kind; + if (_4 === (13)) { + $s = -1; return (15 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 15]); + } else if (_4 === (14)) { + $s = -1; return (16 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 16]); + } else if (_4 === (22)) { + $s = -1; return (23 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 23]); + } + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Checker·builtin·func7, $c: true, $r, _4, _r$28, _tuple$3, t$7, typ$4, $s};return $f; + }; })(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4); + _r$28 = check[0].applyTypeFunc(f, x[0], id[0]); /* */ $s = 151; case 151: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + resTyp = _r$28; + /* */ if ($interfaceIsEqual(resTyp, $ifaceNil)) { $s = 152; continue; } + /* */ $s = 153; continue; + /* if ($interfaceIsEqual(resTyp, $ifaceNil)) { */ case 152: + $r = check[0].errorf(x[0], 87, "invalid argument: arguments have type %s, expected floating-point", new sliceType$6([x[0].typ])); /* */ $s = 154; case 154: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 153: + /* */ if ((x[0].mode === 4) && (y[0].mode === 4)) { $s = 155; continue; } + /* */ $s = 156; continue; + /* if ((x[0].mode === 4) && (y[0].mode === 4)) { */ case 155: + _r$29 = constant.ToFloat(x[0].val); /* */ $s = 158; case 158: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + _arg$6 = _r$29; + _r$30 = constant.ToFloat(y[0].val); /* */ $s = 159; case 159: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _r$31 = constant.MakeImag(_r$30); /* */ $s = 160; case 160: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + _arg$7 = _r$31; + _r$32 = constant.BinaryOp(_arg$6, 12, _arg$7); /* */ $s = 161; case 161: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + x[0].val = _r$32; + $s = 157; continue; + /* } else { */ case 156: + x[0].mode = 7; + /* } */ case 157: + /* */ if (!(check[0].Info.Types === false) && !((x[0].mode === 4))) { $s = 162; continue; } + /* */ $s = 163; continue; + /* if (!(check[0].Info.Types === false) && !((x[0].mode === 4))) { */ case 162: + _arg$8 = call.Fun; + _r$33 = makeSig(resTyp, new sliceType$2([x[0].typ, x[0].typ])); /* */ $s = 164; case 164: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + _arg$9 = _r$33; + $r = check[0].recordBuiltinType(_arg$8, _arg$9); /* */ $s = 165; case 165: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 163: + x[0].typ = resTyp; + $s = 44; continue; + /* } else if (_2 === (5)) { */ case 25: + _r$34 = coreType(x[0].typ); /* */ $s = 166; case 166: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + _tuple$3 = $assertType(_r$34, ptrType$25, true); + dst = _tuple$3[0]; + y$1[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = arg(y$1[0], 1); /* */ $s = 167; case 167: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (y$1[0].mode === 0) { + $s = -1; return _; + } + _r$35 = coreString(y$1[0].typ); /* */ $s = 168; case 168: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } + src0 = _r$35; + if (!(!($interfaceIsEqual(src0, $ifaceNil)))) { _v$2 = false; $s = 171; continue s; } + _r$36 = isString(src0); /* */ $s = 172; case 172: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } + _v$2 = _r$36; case 171: + /* */ if (_v$2) { $s = 169; continue; } + /* */ $s = 170; continue; + /* if (_v$2) { */ case 169: + src0 = NewSlice(universeByte); + /* } */ case 170: + _tuple$4 = $assertType(src0, ptrType$25, true); + src = _tuple$4[0]; + /* */ if (dst === ptrType$25.nil || src === ptrType$25.nil) { $s = 173; continue; } + /* */ $s = 174; continue; + /* if (dst === ptrType$25.nil || src === ptrType$25.nil) { */ case 173: + $r = check[0].errorf(x[0], 86, "invalid argument: copy expects slice arguments; found %s and %s", new sliceType$6([x[0], y$1[0]])); /* */ $s = 175; case 175: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 174: + _r$37 = Identical(dst.elem, src.elem); /* */ $s = 178; case 178: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; } + /* */ if (!_r$37) { $s = 176; continue; } + /* */ $s = 177; continue; + /* if (!_r$37) { */ case 176: + $r = check[0].errorf(x[0], 86, "arguments to copy %s and %s have different element types %s and %s", new sliceType$6([x[0], y$1[0], dst.elem, src.elem])); /* */ $s = 179; case 179: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 177: + /* */ if (!(check[0].Info.Types === false)) { $s = 180; continue; } + /* */ $s = 181; continue; + /* if (!(check[0].Info.Types === false)) { */ case 180: + _arg$10 = call.Fun; + _r$38 = makeSig((2 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 2]), new sliceType$2([x[0].typ, y$1[0].typ])); /* */ $s = 182; case 182: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; } + _arg$11 = _r$38; + $r = check[0].recordBuiltinType(_arg$10, _arg$11); /* */ $s = 183; case 183: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 181: + x[0].mode = 7; + x[0].typ = (2 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 2]); + $s = 44; continue; + /* } else if (_2 === (6)) { */ case 26: + map_ = x[0].typ; + key[0] = $ifaceNil; + _r$39 = underIs(map_, (function(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4) { return function Checker·builtin·func8(u$1) { + var {_r$39, _tuple$5, _v$3, map_$1, u$1, $s, $r, $c} = $restore(this, {u$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple$5 = $assertType(u$1, ptrType$28, true); + map_$1 = _tuple$5[0]; + /* */ if (map_$1 === ptrType$28.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (map_$1 === ptrType$28.nil) { */ case 1: + $r = check[0].errorf(x[0], 88, "invalid argument: %s is not a map", new sliceType$6([x[0]])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 2: + if (!(!($interfaceIsEqual(key[0], $ifaceNil)))) { _v$3 = false; $s = 6; continue s; } + _r$39 = Identical(map_$1.key, key[0]); /* */ $s = 7; case 7: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; } + _v$3 = !_r$39; case 6: + /* */ if (_v$3) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v$3) { */ case 4: + $r = check[0].errorf(x[0], 88, "invalid argument: maps of %s must have identical key types", new sliceType$6([x[0]])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return false; + /* } */ case 5: + key[0] = map_$1.key; + $s = -1; return true; + /* */ } return; } var $f = {$blk: Checker·builtin·func8, $c: true, $r, _r$39, _tuple$5, _v$3, map_$1, u$1, $s};return $f; + }; })(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4)); /* */ $s = 186; case 186: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; } + /* */ if (!_r$39) { $s = 184; continue; } + /* */ $s = 185; continue; + /* if (!_r$39) { */ case 184: + $s = -1; return _; + /* } */ case 185: + $r = arg(x[0], 1); /* */ $s = 187; case 187: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + $r = check[0].assignment(x[0], key[0], "argument to delete"); /* */ $s = 188; case 188: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + x[0].mode = 1; + /* */ if (!(check[0].Info.Types === false)) { $s = 189; continue; } + /* */ $s = 190; continue; + /* if (!(check[0].Info.Types === false)) { */ case 189: + _arg$12 = call.Fun; + _r$40 = makeSig($ifaceNil, new sliceType$2([map_, key[0]])); /* */ $s = 191; case 191: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; } + _arg$13 = _r$40; + $r = check[0].recordBuiltinType(_arg$12, _arg$13); /* */ $s = 192; case 192: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 190: + $s = 44; continue; + /* } else if ((_2 === (7)) || (_2 === (14))) { */ case 27: + /* */ if (isUntyped(x[0].typ)) { $s = 193; continue; } + /* */ $s = 194; continue; + /* if (isUntyped(x[0].typ)) { */ case 193: + /* */ if (x[0].mode === 4) { $s = 195; continue; } + /* */ $s = 196; continue; + /* if (x[0].mode === 4) { */ case 195: + _r$41 = isNumeric(x[0].typ); /* */ $s = 200; case 200: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; } + /* */ if (_r$41) { $s = 198; continue; } + /* */ $s = 199; continue; + /* if (_r$41) { */ case 198: + x[0].typ = (23 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 23]); + /* } */ case 199: + $s = 197; continue; + /* } else { */ case 196: + $r = check[0].convertUntyped(x[0], (16 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 16])); /* */ $s = 201; case 201: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + /* } */ case 197: + /* } */ case 194: + f$1 = (function(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4) { return function Checker·builtin·func9(typ$4) { + var {_5, _r$42, _tuple$5, t$7, typ$4, $s, $r, $c} = $restore(this, {typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = assert(!isTypeParam(typ$4)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$42 = under(typ$4); /* */ $s = 2; case 2: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; } + _tuple$5 = $assertType(_r$42, ptrType$8, true); + t$7 = _tuple$5[0]; + if (!(t$7 === ptrType$8.nil)) { + _5 = t$7.kind; + if (_5 === (15)) { + $s = -1; return (13 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 13]); + } else if (_5 === (16)) { + $s = -1; return (14 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 14]); + } else if (_5 === (23)) { + $s = -1; return (22 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 22]); + } + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Checker·builtin·func9, $c: true, $r, _5, _r$42, _tuple$5, t$7, typ$4, $s};return $f; + }; })(check, id, key, t, x, xlist, y, y$1, y$2, y$3, y$4); + _r$42 = check[0].applyTypeFunc(f$1, x[0], id[0]); /* */ $s = 202; case 202: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; } + resTyp$1 = _r$42; + /* */ if ($interfaceIsEqual(resTyp$1, $ifaceNil)) { $s = 203; continue; } + /* */ $s = 204; continue; + /* if ($interfaceIsEqual(resTyp$1, $ifaceNil)) { */ case 203: + code$1 = 89; + if (id[0] === 14) { + code$1 = 93; + } + $r = check[0].errorf(x[0], code$1, "invalid argument: argument has type %s, expected complex type", new sliceType$6([x[0].typ])); /* */ $s = 205; case 205: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 204: + /* */ if (x[0].mode === 4) { $s = 206; continue; } + /* */ $s = 207; continue; + /* if (x[0].mode === 4) { */ case 206: + /* */ if (id[0] === 14) { $s = 209; continue; } + /* */ $s = 210; continue; + /* if (id[0] === 14) { */ case 209: + _r$43 = constant.Real(x[0].val); /* */ $s = 212; case 212: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; } + x[0].val = _r$43; + $s = 211; continue; + /* } else { */ case 210: + _r$44 = constant.Imag(x[0].val); /* */ $s = 213; case 213: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; } + x[0].val = _r$44; + /* } */ case 211: + $s = 208; continue; + /* } else { */ case 207: + x[0].mode = 7; + /* } */ case 208: + /* */ if (!(check[0].Info.Types === false) && !((x[0].mode === 4))) { $s = 214; continue; } + /* */ $s = 215; continue; + /* if (!(check[0].Info.Types === false) && !((x[0].mode === 4))) { */ case 214: + _arg$14 = call.Fun; + _r$45 = makeSig(resTyp$1, new sliceType$2([x[0].typ])); /* */ $s = 216; case 216: if($c) { $c = false; _r$45 = _r$45.$blk(); } if (_r$45 && _r$45.$blk !== undefined) { break s; } + _arg$15 = _r$45; + $r = check[0].recordBuiltinType(_arg$14, _arg$15); /* */ $s = 217; case 217: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 215: + x[0].typ = resTyp$1; + $s = 44; continue; + /* } else if (_2 === (9)) { */ case 28: + arg0 = (x$4 = call.Args, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])); + _r$46 = check[0].varType(arg0); /* */ $s = 218; case 218: if($c) { $c = false; _r$46 = _r$46.$blk(); } if (_r$46 && _r$46.$blk !== undefined) { break s; } + T$1 = _r$46; + if ($interfaceIsEqual(T$1, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + $s = -1; return _; + } + min = 0; + _r$47 = coreType(T$1); /* */ $s = 219; case 219: if($c) { $c = false; _r$47 = _r$47.$blk(); } if (_r$47 && _r$47.$blk !== undefined) { break s; } + _ref$2 = _r$47; + /* */ if ($assertType(_ref$2, ptrType$25, true)[1]) { $s = 220; continue; } + /* */ if ($assertType(_ref$2, ptrType$28, true)[1] || $assertType(_ref$2, ptrType$29, true)[1]) { $s = 221; continue; } + /* */ if (_ref$2 === $ifaceNil) { $s = 222; continue; } + /* */ $s = 223; continue; + /* if ($assertType(_ref$2, ptrType$25, true)[1]) { */ case 220: + min = 2; + $s = 224; continue; + /* } else if ($assertType(_ref$2, ptrType$28, true)[1] || $assertType(_ref$2, ptrType$29, true)[1]) { */ case 221: + min = 1; + $s = 224; continue; + /* } else if (_ref$2 === $ifaceNil) { */ case 222: + $r = check[0].errorf(arg0, 92, "cannot make %s: no core type", new sliceType$6([arg0])); /* */ $s = 225; case 225: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } else { */ case 223: + $r = check[0].errorf(arg0, 92, "invalid argument: cannot make %s; type must be slice, map, or channel", new sliceType$6([arg0])); /* */ $s = 226; case 226: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 224: + /* */ if (nargs < min || (min + 1 >> 0) < nargs) { $s = 227; continue; } + /* */ $s = 228; continue; + /* if (nargs < min || (min + 1 >> 0) < nargs) { */ case 227: + $r = check[0].errorf(call, 126, "invalid operation: %v expects %d or %d arguments; found %d", new sliceType$6([call, new $Int(min), new $Int((min + 1 >> 0)), new $Int(nargs)])); /* */ $s = 229; case 229: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 228: + types$1 = new sliceType$2([T$1]); + sizes = sliceType$19.nil; + _ref$3 = $subslice(call.Args, 1); + _i$1 = 0; + /* while (true) { */ case 230: + /* if (!(_i$1 < _ref$3.$length)) { break; } */ if(!(_i$1 < _ref$3.$length)) { $s = 231; continue; } + arg$1 = ((_i$1 < 0 || _i$1 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$1]); + _r$48 = check[0].index(arg$1, new $Int64(-1, 4294967295)); /* */ $s = 232; case 232: if($c) { $c = false; _r$48 = _r$48.$blk(); } if (_r$48 && _r$48.$blk !== undefined) { break s; } + _tuple$5 = _r$48; + typ$4 = _tuple$5[0]; + size = _tuple$5[1]; + types$1 = $append(types$1, typ$4); + if ((size.$high > 0 || (size.$high === 0 && size.$low >= 0))) { + sizes = $append(sizes, size); + } + _i$1++; + $s = 230; continue; + case 231: + /* */ if ((sizes.$length === 2) && (x$5 = (0 >= sizes.$length ? ($throwRuntimeError("index out of range"), undefined) : sizes.$array[sizes.$offset + 0]), x$6 = (1 >= sizes.$length ? ($throwRuntimeError("index out of range"), undefined) : sizes.$array[sizes.$offset + 1]), (x$5.$high > x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low)))) { $s = 233; continue; } + /* */ $s = 234; continue; + /* if ((sizes.$length === 2) && (x$5 = (0 >= sizes.$length ? ($throwRuntimeError("index out of range"), undefined) : sizes.$array[sizes.$offset + 0]), x$6 = (1 >= sizes.$length ? ($throwRuntimeError("index out of range"), undefined) : sizes.$array[sizes.$offset + 1]), (x$5.$high > x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low)))) { */ case 233: + $r = check[0].error((x$7 = call.Args, (1 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 1])), 91, "invalid argument: length and capacity swapped"); /* */ $s = 235; case 235: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 234: + x[0].mode = 7; + x[0].typ = T$1; + /* */ if (!(check[0].Info.Types === false)) { $s = 236; continue; } + /* */ $s = 237; continue; + /* if (!(check[0].Info.Types === false)) { */ case 236: + _arg$16 = call.Fun; + _r$49 = makeSig(x[0].typ, types$1); /* */ $s = 238; case 238: if($c) { $c = false; _r$49 = _r$49.$blk(); } if (_r$49 && _r$49.$blk !== undefined) { break s; } + _arg$17 = _r$49; + $r = check[0].recordBuiltinType(_arg$16, _arg$17); /* */ $s = 239; case 239: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 237: + $s = 44; continue; + /* } else if (_2 === (10)) { */ case 29: + _r$50 = check[0].varType((x$8 = call.Args, (0 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 0]))); /* */ $s = 240; case 240: if($c) { $c = false; _r$50 = _r$50.$blk(); } if (_r$50 && _r$50.$blk !== undefined) { break s; } + T$2 = _r$50; + if ($interfaceIsEqual(T$2, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + $s = -1; return _; + } + x[0].mode = 7; + x[0].typ = new Pointer.ptr(T$2); + /* */ if (!(check[0].Info.Types === false)) { $s = 241; continue; } + /* */ $s = 242; continue; + /* if (!(check[0].Info.Types === false)) { */ case 241: + _arg$18 = call.Fun; + _r$51 = makeSig(x[0].typ, new sliceType$2([T$2])); /* */ $s = 243; case 243: if($c) { $c = false; _r$51 = _r$51.$blk(); } if (_r$51 && _r$51.$blk !== undefined) { break s; } + _arg$19 = _r$51; + $r = check[0].recordBuiltinType(_arg$18, _arg$19); /* */ $s = 244; case 244: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 242: + $s = 44; continue; + /* } else if (_2 === (11)) { */ case 30: + if (!(check[0].environment.sig === ptrType$27.nil) && check[0].environment.sig.results.Len() > 0) { + p = check[0].environment.isPanic; + if (p === false) { + p = new $global.Map(); + check[0].environment.isPanic = p; + } + _key = call; (p || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$86.keyFor(_key), { k: _key, v: true }); + } + $r = check[0].assignment(x[0], emptyInterface, "argument to panic"); /* */ $s = 245; case 245: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + x[0].mode = 1; + /* */ if (!(check[0].Info.Types === false)) { $s = 246; continue; } + /* */ $s = 247; continue; + /* if (!(check[0].Info.Types === false)) { */ case 246: + _arg$20 = call.Fun; + _r$52 = makeSig($ifaceNil, new sliceType$2([emptyInterface])); /* */ $s = 248; case 248: if($c) { $c = false; _r$52 = _r$52.$blk(); } if (_r$52 && _r$52.$blk !== undefined) { break s; } + _arg$21 = _r$52; + $r = check[0].recordBuiltinType(_arg$20, _arg$21); /* */ $s = 249; case 249: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 247: + $s = 44; continue; + /* } else if ((_2 === (12)) || (_2 === (13))) { */ case 31: + params = sliceType$2.nil; + /* */ if (nargs > 0) { $s = 250; continue; } + /* */ $s = 251; continue; + /* if (nargs > 0) { */ case 250: + params = $makeSlice(sliceType$2, nargs); + i$2 = 0; + /* while (true) { */ case 252: + /* if (!(i$2 < nargs)) { break; } */ if(!(i$2 < nargs)) { $s = 253; continue; } + /* */ if (i$2 > 0) { $s = 254; continue; } + /* */ $s = 255; continue; + /* if (i$2 > 0) { */ case 254: + $r = arg(x[0], i$2); /* */ $s = 256; case 256: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 255: + $r = check[0].assignment(x[0], $ifaceNil, "argument to " + ((id[0] < 0 || id[0] >= predeclaredFuncs.length) ? ($throwRuntimeError("index out of range"), undefined) : predeclaredFuncs[id[0]]).name); /* */ $s = 257; case 257: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + ((i$2 < 0 || i$2 >= params.$length) ? ($throwRuntimeError("index out of range"), undefined) : params.$array[params.$offset + i$2] = x[0].typ); + i$2 = i$2 + (1) >> 0; + $s = 252; continue; + case 253: + /* } */ case 251: + x[0].mode = 1; + /* */ if (!(check[0].Info.Types === false)) { $s = 258; continue; } + /* */ $s = 259; continue; + /* if (!(check[0].Info.Types === false)) { */ case 258: + _arg$22 = call.Fun; + _r$53 = makeSig($ifaceNil, params); /* */ $s = 260; case 260: if($c) { $c = false; _r$53 = _r$53.$blk(); } if (_r$53 && _r$53.$blk !== undefined) { break s; } + _arg$23 = _r$53; + $r = check[0].recordBuiltinType(_arg$22, _arg$23); /* */ $s = 261; case 261: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 259: + $s = 44; continue; + /* } else if (_2 === (15)) { */ case 32: + x[0].mode = 7; + x[0].typ = emptyInterface; + /* */ if (!(check[0].Info.Types === false)) { $s = 262; continue; } + /* */ $s = 263; continue; + /* if (!(check[0].Info.Types === false)) { */ case 262: + _arg$24 = call.Fun; + _r$54 = makeSig(x[0].typ, sliceType$2.nil); /* */ $s = 264; case 264: if($c) { $c = false; _r$54 = _r$54.$blk(); } if (_r$54 && _r$54.$blk !== undefined) { break s; } + _arg$25 = _r$54; + $r = check[0].recordBuiltinType(_arg$24, _arg$25); /* */ $s = 265; case 265: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 263: + $s = 44; continue; + /* } else if (_2 === (16)) { */ case 33: + /* */ if (!check[0].allowVersion(check[0].pkg, 1, 17)) { $s = 266; continue; } + /* */ $s = 267; continue; + /* if (!check[0].allowVersion(check[0].pkg, 1, 17)) { */ case 266: + $r = check[0].error(call.Fun, 135, "unsafe.Add requires go1.17 or later"); /* */ $s = 268; case 268: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 267: + $r = check[0].assignment(x[0], (18 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 18]), "argument to unsafe.Add"); /* */ $s = 269; case 269: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + y$2[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = arg(y$2[0], 1); /* */ $s = 270; case 270: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$55 = check[0].isValidIndex(y$2[0], 133, "length", true); /* */ $s = 273; case 273: if($c) { $c = false; _r$55 = _r$55.$blk(); } if (_r$55 && _r$55.$blk !== undefined) { break s; } + /* */ if (!_r$55) { $s = 271; continue; } + /* */ $s = 272; continue; + /* if (!_r$55) { */ case 271: + $s = -1; return _; + /* } */ case 272: + x[0].mode = 7; + x[0].typ = (18 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 18]); + /* */ if (!(check[0].Info.Types === false)) { $s = 274; continue; } + /* */ $s = 275; continue; + /* if (!(check[0].Info.Types === false)) { */ case 274: + _arg$26 = call.Fun; + _r$56 = makeSig(x[0].typ, new sliceType$2([x[0].typ, y$2[0].typ])); /* */ $s = 276; case 276: if($c) { $c = false; _r$56 = _r$56.$blk(); } if (_r$56 && _r$56.$blk !== undefined) { break s; } + _arg$27 = _r$56; + $r = check[0].recordBuiltinType(_arg$26, _arg$27); /* */ $s = 277; case 277: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 275: + $s = 44; continue; + /* } else if (_2 === (17)) { */ case 34: + $r = check[0].assignment(x[0], $ifaceNil, "argument to unsafe.Alignof"); /* */ $s = 278; case 278: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + _r$57 = hasVarSize(x[0].typ, false); /* */ $s = 282; case 282: if($c) { $c = false; _r$57 = _r$57.$blk(); } if (_r$57 && _r$57.$blk !== undefined) { break s; } + /* */ if (_r$57) { $s = 279; continue; } + /* */ $s = 280; continue; + /* if (_r$57) { */ case 279: + x[0].mode = 7; + /* */ if (!(check[0].Info.Types === false)) { $s = 283; continue; } + /* */ $s = 284; continue; + /* if (!(check[0].Info.Types === false)) { */ case 283: + _arg$28 = call.Fun; + _r$58 = makeSig((12 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 12]), new sliceType$2([x[0].typ])); /* */ $s = 285; case 285: if($c) { $c = false; _r$58 = _r$58.$blk(); } if (_r$58 && _r$58.$blk !== undefined) { break s; } + _arg$29 = _r$58; + $r = check[0].recordBuiltinType(_arg$28, _arg$29); /* */ $s = 286; case 286: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 284: + $s = 281; continue; + /* } else { */ case 280: + x[0].mode = 4; + _r$59 = check[0].conf.alignof(x[0].typ); /* */ $s = 287; case 287: if($c) { $c = false; _r$59 = _r$59.$blk(); } if (_r$59 && _r$59.$blk !== undefined) { break s; } + _r$60 = constant.MakeInt64(_r$59); /* */ $s = 288; case 288: if($c) { $c = false; _r$60 = _r$60.$blk(); } if (_r$60 && _r$60.$blk !== undefined) { break s; } + x[0].val = _r$60; + /* } */ case 281: + x[0].typ = (12 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 12]); + $s = 44; continue; + /* } else if (_2 === (18)) { */ case 35: + arg0$1 = (x$9 = call.Args, (0 >= x$9.$length ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + 0])); + _tuple$6 = $assertType(unparen(arg0$1), ptrType$36, true); + selx = _tuple$6[0]; + /* */ if (selx === ptrType$36.nil) { $s = 289; continue; } + /* */ $s = 290; continue; + /* if (selx === ptrType$36.nil) { */ case 289: + $r = check[0].errorf(arg0$1, 98, "invalid argument: %s is not a selector expression", new sliceType$6([arg0$1])); /* */ $s = 291; case 291: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check[0].use(new sliceType$11([arg0$1])); /* */ $s = 292; case 292: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 290: + $r = check[0].expr(x[0], selx.X); /* */ $s = 293; case 293: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + _r$61 = derefStructPtr(x[0].typ); /* */ $s = 294; case 294: if($c) { $c = false; _r$61 = _r$61.$blk(); } if (_r$61 && _r$61.$blk !== undefined) { break s; } + base = _r$61; + sel = selx.Sel.Name; + _r$62 = LookupFieldOrMethod(base, false, check[0].pkg, sel); /* */ $s = 295; case 295: if($c) { $c = false; _r$62 = _r$62.$blk(); } if (_r$62 && _r$62.$blk !== undefined) { break s; } + _tuple$7 = _r$62; + obj = _tuple$7[0]; + index$2 = _tuple$7[1]; + indirect = _tuple$7[2]; + _ref$4 = obj; + /* */ if (_ref$4 === $ifaceNil) { $s = 296; continue; } + /* */ if ($assertType(_ref$4, ptrType$2, true)[1]) { $s = 297; continue; } + /* */ $s = 298; continue; + /* if (_ref$4 === $ifaceNil) { */ case 296: + $r = check[0].errorf(x[0], 76, "invalid argument: %s has no single field %s", new sliceType$6([base, new $String(sel)])); /* */ $s = 299; case 299: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } else if ($assertType(_ref$4, ptrType$2, true)[1]) { */ case 297: + $r = check[0].errorf(arg0$1, 99, "invalid argument: %s is a method value", new sliceType$6([arg0$1])); /* */ $s = 300; case 300: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 298: + /* */ if (indirect) { $s = 301; continue; } + /* */ $s = 302; continue; + /* if (indirect) { */ case 301: + $r = check[0].errorf(x[0], 99, "invalid argument: field %s is embedded via a pointer in %s", new sliceType$6([new $String(sel), base])); /* */ $s = 303; case 303: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 302: + $r = check[0].recordSelection(selx, 0, base, obj, index$2, false); /* */ $s = 304; case 304: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + mode$1 = 7; + if ((x[0].mode === 5) || indirect) { + mode$1 = 5; + } + _r$63 = obj.Type(); /* */ $s = 305; case 305: if($c) { $c = false; _r$63 = _r$63.$blk(); } if (_r$63 && _r$63.$blk !== undefined) { break s; } + $r = check[0].record(new operand.ptr(mode$1, selx, _r$63, $ifaceNil, 0)); /* */ $s = 306; case 306: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$64 = hasVarSize(base, false); /* */ $s = 310; case 310: if($c) { $c = false; _r$64 = _r$64.$blk(); } if (_r$64 && _r$64.$blk !== undefined) { break s; } + /* */ if (_r$64) { $s = 307; continue; } + /* */ $s = 308; continue; + /* if (_r$64) { */ case 307: + x[0].mode = 7; + /* */ if (!(check[0].Info.Types === false)) { $s = 311; continue; } + /* */ $s = 312; continue; + /* if (!(check[0].Info.Types === false)) { */ case 311: + _arg$30 = call.Fun; + _arg$31 = (12 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 12]); + _r$65 = obj.Type(); /* */ $s = 313; case 313: if($c) { $c = false; _r$65 = _r$65.$blk(); } if (_r$65 && _r$65.$blk !== undefined) { break s; } + _arg$32 = _r$65; + _r$66 = makeSig(_arg$31, new sliceType$2([_arg$32])); /* */ $s = 314; case 314: if($c) { $c = false; _r$66 = _r$66.$blk(); } if (_r$66 && _r$66.$blk !== undefined) { break s; } + _arg$33 = _r$66; + $r = check[0].recordBuiltinType(_arg$30, _arg$33); /* */ $s = 315; case 315: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 312: + $s = 309; continue; + /* } else { */ case 308: + x[0].mode = 4; + _r$67 = check[0].conf.offsetof(base, index$2); /* */ $s = 316; case 316: if($c) { $c = false; _r$67 = _r$67.$blk(); } if (_r$67 && _r$67.$blk !== undefined) { break s; } + _r$68 = constant.MakeInt64(_r$67); /* */ $s = 317; case 317: if($c) { $c = false; _r$68 = _r$68.$blk(); } if (_r$68 && _r$68.$blk !== undefined) { break s; } + x[0].val = _r$68; + /* } */ case 309: + x[0].typ = (12 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 12]); + $s = 44; continue; + /* } else if (_2 === (19)) { */ case 36: + $r = check[0].assignment(x[0], $ifaceNil, "argument to unsafe.Sizeof"); /* */ $s = 318; case 318: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + _r$69 = hasVarSize(x[0].typ, false); /* */ $s = 322; case 322: if($c) { $c = false; _r$69 = _r$69.$blk(); } if (_r$69 && _r$69.$blk !== undefined) { break s; } + /* */ if (_r$69) { $s = 319; continue; } + /* */ $s = 320; continue; + /* if (_r$69) { */ case 319: + x[0].mode = 7; + /* */ if (!(check[0].Info.Types === false)) { $s = 323; continue; } + /* */ $s = 324; continue; + /* if (!(check[0].Info.Types === false)) { */ case 323: + _arg$34 = call.Fun; + _r$70 = makeSig((12 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 12]), new sliceType$2([x[0].typ])); /* */ $s = 325; case 325: if($c) { $c = false; _r$70 = _r$70.$blk(); } if (_r$70 && _r$70.$blk !== undefined) { break s; } + _arg$35 = _r$70; + $r = check[0].recordBuiltinType(_arg$34, _arg$35); /* */ $s = 326; case 326: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 324: + $s = 321; continue; + /* } else { */ case 320: + x[0].mode = 4; + _r$71 = check[0].conf.sizeof(x[0].typ); /* */ $s = 327; case 327: if($c) { $c = false; _r$71 = _r$71.$blk(); } if (_r$71 && _r$71.$blk !== undefined) { break s; } + _r$72 = constant.MakeInt64(_r$71); /* */ $s = 328; case 328: if($c) { $c = false; _r$72 = _r$72.$blk(); } if (_r$72 && _r$72.$blk !== undefined) { break s; } + x[0].val = _r$72; + /* } */ case 321: + x[0].typ = (12 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 12]); + $s = 44; continue; + /* } else if (_2 === (20)) { */ case 37: + /* */ if (!check[0].allowVersion(check[0].pkg, 1, 17)) { $s = 329; continue; } + /* */ $s = 330; continue; + /* if (!check[0].allowVersion(check[0].pkg, 1, 17)) { */ case 329: + $r = check[0].error(call.Fun, 135, "unsafe.Slice requires go1.17 or later"); /* */ $s = 331; case 331: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 330: + _r$73 = under(x[0].typ); /* */ $s = 332; case 332: if($c) { $c = false; _r$73 = _r$73.$blk(); } if (_r$73 && _r$73.$blk !== undefined) { break s; } + _tuple$8 = $assertType(_r$73, ptrType$26, true); + ptr = _tuple$8[0]; + /* */ if (ptr === ptrType$26.nil) { $s = 333; continue; } + /* */ $s = 334; continue; + /* if (ptr === ptrType$26.nil) { */ case 333: + $r = check[0].errorf(x[0], 134, "invalid argument: %s is not a pointer", new sliceType$6([x[0]])); /* */ $s = 335; case 335: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 334: + y$3[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = arg(y$3[0], 1); /* */ $s = 336; case 336: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$74 = check[0].isValidIndex(y$3[0], 134, "length", false); /* */ $s = 339; case 339: if($c) { $c = false; _r$74 = _r$74.$blk(); } if (_r$74 && _r$74.$blk !== undefined) { break s; } + /* */ if (!_r$74) { $s = 337; continue; } + /* */ $s = 338; continue; + /* if (!_r$74) { */ case 337: + $s = -1; return _; + /* } */ case 338: + x[0].mode = 7; + x[0].typ = NewSlice(ptr.base); + /* */ if (!(check[0].Info.Types === false)) { $s = 340; continue; } + /* */ $s = 341; continue; + /* if (!(check[0].Info.Types === false)) { */ case 340: + _arg$36 = call.Fun; + _r$75 = makeSig(x[0].typ, new sliceType$2([ptr, y$3[0].typ])); /* */ $s = 342; case 342: if($c) { $c = false; _r$75 = _r$75.$blk(); } if (_r$75 && _r$75.$blk !== undefined) { break s; } + _arg$37 = _r$75; + $r = check[0].recordBuiltinType(_arg$36, _arg$37); /* */ $s = 343; case 343: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 341: + $s = 44; continue; + /* } else if (_2 === (21)) { */ case 38: + /* */ if (!check[0].allowVersion(check[0].pkg, 1, 20)) { $s = 344; continue; } + /* */ $s = 345; continue; + /* if (!check[0].allowVersion(check[0].pkg, 1, 20)) { */ case 344: + $r = check[0].error(call.Fun, 135, "unsafe.SliceData requires go1.20 or later"); /* */ $s = 346; case 346: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 345: + _r$76 = under(x[0].typ); /* */ $s = 347; case 347: if($c) { $c = false; _r$76 = _r$76.$blk(); } if (_r$76 && _r$76.$blk !== undefined) { break s; } + _tuple$9 = $assertType(_r$76, ptrType$25, true); + slice = _tuple$9[0]; + /* */ if (slice === ptrType$25.nil) { $s = 348; continue; } + /* */ $s = 349; continue; + /* if (slice === ptrType$25.nil) { */ case 348: + $r = check[0].errorf(x[0], 145, "invalid argument: %s is not a slice", new sliceType$6([x[0]])); /* */ $s = 350; case 350: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 349: + x[0].mode = 7; + x[0].typ = NewPointer(slice.elem); + /* */ if (!(check[0].Info.Types === false)) { $s = 351; continue; } + /* */ $s = 352; continue; + /* if (!(check[0].Info.Types === false)) { */ case 351: + _arg$38 = call.Fun; + _r$77 = makeSig(x[0].typ, new sliceType$2([slice])); /* */ $s = 353; case 353: if($c) { $c = false; _r$77 = _r$77.$blk(); } if (_r$77 && _r$77.$blk !== undefined) { break s; } + _arg$39 = _r$77; + $r = check[0].recordBuiltinType(_arg$38, _arg$39); /* */ $s = 354; case 354: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 352: + $s = 44; continue; + /* } else if (_2 === (22)) { */ case 39: + /* */ if (!check[0].allowVersion(check[0].pkg, 1, 20)) { $s = 355; continue; } + /* */ $s = 356; continue; + /* if (!check[0].allowVersion(check[0].pkg, 1, 20)) { */ case 355: + $r = check[0].error(call.Fun, 135, "unsafe.String requires go1.20 or later"); /* */ $s = 357; case 357: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 356: + $r = check[0].assignment(x[0], NewPointer(universeByte), "argument to unsafe.String"); /* */ $s = 358; case 358: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + y$4[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = arg(y$4[0], 1); /* */ $s = 359; case 359: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$78 = check[0].isValidIndex(y$4[0], 146, "length", false); /* */ $s = 362; case 362: if($c) { $c = false; _r$78 = _r$78.$blk(); } if (_r$78 && _r$78.$blk !== undefined) { break s; } + /* */ if (!_r$78) { $s = 360; continue; } + /* */ $s = 361; continue; + /* if (!_r$78) { */ case 360: + $s = -1; return _; + /* } */ case 361: + x[0].mode = 7; + x[0].typ = (17 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 17]); + /* */ if (!(check[0].Info.Types === false)) { $s = 363; continue; } + /* */ $s = 364; continue; + /* if (!(check[0].Info.Types === false)) { */ case 363: + _arg$40 = call.Fun; + _r$79 = makeSig(x[0].typ, new sliceType$2([NewPointer(universeByte), y$4[0].typ])); /* */ $s = 365; case 365: if($c) { $c = false; _r$79 = _r$79.$blk(); } if (_r$79 && _r$79.$blk !== undefined) { break s; } + _arg$41 = _r$79; + $r = check[0].recordBuiltinType(_arg$40, _arg$41); /* */ $s = 366; case 366: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 364: + $s = 44; continue; + /* } else if (_2 === (23)) { */ case 40: + /* */ if (!check[0].allowVersion(check[0].pkg, 1, 20)) { $s = 367; continue; } + /* */ $s = 368; continue; + /* if (!check[0].allowVersion(check[0].pkg, 1, 20)) { */ case 367: + $r = check[0].error(call.Fun, 135, "unsafe.StringData requires go1.20 or later"); /* */ $s = 369; case 369: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 368: + $r = check[0].assignment(x[0], (17 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 17]), "argument to unsafe.StringData"); /* */ $s = 370; case 370: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x[0].mode === 0) { + $s = -1; return _; + } + x[0].mode = 7; + x[0].typ = NewPointer(universeByte); + /* */ if (!(check[0].Info.Types === false)) { $s = 371; continue; } + /* */ $s = 372; continue; + /* if (!(check[0].Info.Types === false)) { */ case 371: + _arg$42 = call.Fun; + _r$80 = makeSig(x[0].typ, new sliceType$2([(17 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 17])])); /* */ $s = 373; case 373: if($c) { $c = false; _r$80 = _r$80.$blk(); } if (_r$80 && _r$80.$blk !== undefined) { break s; } + _arg$43 = _r$80; + $r = check[0].recordBuiltinType(_arg$42, _arg$43); /* */ $s = 374; case 374: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 372: + $s = 44; continue; + /* } else if (_2 === (24)) { */ case 41: + if (!((x[0].mode === 4))) { _v$3 = true; $s = 377; continue s; } + _r$81 = isBoolean(x[0].typ); /* */ $s = 378; case 378: if($c) { $c = false; _r$81 = _r$81.$blk(); } if (_r$81 && _r$81.$blk !== undefined) { break s; } + _v$3 = !_r$81; case 377: + /* */ if (_v$3) { $s = 375; continue; } + /* */ $s = 376; continue; + /* if (_v$3) { */ case 375: + $r = check[0].errorf(x[0], 1, "invalid argument: %s is not a boolean constant", new sliceType$6([x[0]])); /* */ $s = 379; case 379: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 376: + _r$82 = x[0].val.Kind(); /* */ $s = 382; case 382: if($c) { $c = false; _r$82 = _r$82.$blk(); } if (_r$82 && _r$82.$blk !== undefined) { break s; } + /* */ if (!((_r$82 === 1))) { $s = 380; continue; } + /* */ $s = 381; continue; + /* if (!((_r$82 === 1))) { */ case 380: + $r = check[0].errorf(x[0], 1, "internal error: value of %s should be a boolean constant", new sliceType$6([x[0]])); /* */ $s = 383; case 383: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return _; + /* } */ case 381: + _r$83 = constant.BoolVal(x[0].val); /* */ $s = 386; case 386: if($c) { $c = false; _r$83 = _r$83.$blk(); } if (_r$83 && _r$83.$blk !== undefined) { break s; } + /* */ if (!_r$83) { $s = 384; continue; } + /* */ $s = 385; continue; + /* if (!_r$83) { */ case 384: + $r = check[0].errorf(call, 1, "%v failed", new sliceType$6([call])); /* */ $s = 387; case 387: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 385: + $s = 44; continue; + /* } else if (_2 === (25)) { */ case 42: + /* */ if (nargs === 0) { $s = 388; continue; } + /* */ $s = 389; continue; + /* if (nargs === 0) { */ case 388: + _r$84 = call.Pos(); /* */ $s = 390; case 390: if($c) { $c = false; _r$84 = _r$84.$blk(); } if (_r$84 && _r$84.$blk !== undefined) { break s; } + _arg$44 = new token.Pos(_r$84); + $r = check[0].dump("%v: trace() without arguments", new sliceType$6([_arg$44])); /* */ $s = 391; case 391: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x[0].mode = 1; + /* break; */ $s = 19; continue; + /* } */ case 389: + t[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + x1 = x[0]; + _ref$5 = call.Args; + _i$2 = 0; + /* while (true) { */ case 392: + /* if (!(_i$2 < _ref$5.$length)) { break; } */ if(!(_i$2 < _ref$5.$length)) { $s = 393; continue; } + arg$2 = ((_i$2 < 0 || _i$2 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$2]); + _r$85 = check[0].rawExpr(x1, arg$2, $ifaceNil, false); /* */ $s = 394; case 394: if($c) { $c = false; _r$85 = _r$85.$blk(); } if (_r$85 && _r$85.$blk !== undefined) { break s; } + _r$85; + _r$86 = x1.Pos(); /* */ $s = 395; case 395: if($c) { $c = false; _r$86 = _r$86.$blk(); } if (_r$86 && _r$86.$blk !== undefined) { break s; } + _arg$45 = new token.Pos(_r$86); + _arg$46 = x1; + $r = check[0].dump("%v: %s", new sliceType$6([_arg$45, _arg$46])); /* */ $s = 396; case 396: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x1 = t[0]; + _i$2++; + $s = 392; continue; + case 393: + $s = 44; continue; + /* } else { */ case 43: + unreachable(); + /* } */ case 44: + case 19: + _ = true; + $s = -1; return _; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return _; } if($curGoroutine.asleep) { var $f = {$blk: builtin, $c: true, $r, S, T, T$1, T$2, _, _1, _2, _3, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$16, _arg$17, _arg$18, _arg$19, _arg$2, _arg$20, _arg$21, _arg$22, _arg$23, _arg$24, _arg$25, _arg$26, _arg$27, _arg$28, _arg$29, _arg$3, _arg$30, _arg$31, _arg$32, _arg$33, _arg$34, _arg$35, _arg$36, _arg$37, _arg$38, _arg$39, _arg$4, _arg$40, _arg$41, _arg$42, _arg$43, _arg$44, _arg$45, _arg$46, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _i, _i$1, _i$2, _key, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _r$5, _r$50, _r$51, _r$52, _r$53, _r$54, _r$55, _r$56, _r$57, _r$58, _r$59, _r$6, _r$60, _r$61, _r$62, _r$63, _r$64, _r$65, _r$66, _r$67, _r$68, _r$69, _r$7, _r$70, _r$71, _r$72, _r$73, _r$74, _r$75, _r$76, _r$77, _r$78, _r$79, _r$8, _r$80, _r$81, _r$82, _r$83, _r$84, _r$85, _r$86, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, _v$2, _v$3, alist, arg, arg$1, arg$2, arg0, arg0$1, base, bin, call, cause, check, code, code$1, d, dst, f, f$1, i, i$1, i$2, id, index$2, indirect, key, map_, min, mode, mode$1, msg$1, nargs, obj, ok, p, params, ptr, resTyp, resTyp$1, s, sel, selx, sig, sig$1, size, sizes, slice, src, src0, t, t$1, t$2, t$3, t$4, t$5, t$6, toFloat, typ$4, types$1, u, val, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, x1, xlist, xlist$1, y, y$1, y$2, y$3, y$4, $s, $deferred};return $f; } } + }; + hasVarSize = function hasVarSize$1(t, seen) { + var {$24r, _entry, _i, _key, _r$1, _r$2, _r$3, _ref, _ref$1, _tuple, _tuple$1, f, named, ok, seen, t, u, u$1, u$2, u$3, v, varSized, $s, $deferred, $r, $c} = $restore(this, {t, seen}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + named = [named]; + seen = [seen]; + varSized = [varSized]; + varSized[0] = false; + _tuple = $assertType(t, ptrType$9, true); + named[0] = _tuple[0]; + /* */ if (!(named[0] === ptrType$9.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(named[0] === ptrType$9.nil)) { */ case 1: + _tuple$1 = (_entry = $mapIndex(seen[0],ptrType$9.keyFor(named[0])), _entry !== undefined ? [_entry.v, true] : [false, false]); + v = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok) { + varSized[0] = v; + $s = -1; return varSized[0]; + } + if (seen[0] === false) { + seen[0] = new $global.Map(); + } + _key = named[0]; (seen[0] || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$9.keyFor(_key), { k: _key, v: true }); + $deferred.push([(function(named, seen, varSized) { return function hasVarSize·func1() { + var _key$1; + _key$1 = named[0]; (seen[0] || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$9.keyFor(_key$1), { k: _key$1, v: varSized[0] }); + }; })(named, seen, varSized), []]); + /* } */ case 2: + _r$1 = under(t); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1] || $assertType(_ref, ptrType$12, true)[1]) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ($assertType(_ref, ptrType$10, true)[1]) { */ case 4: + u = _ref.$val; + _r$2 = hasVarSize(u.elem, seen[0]); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + varSized[0] = _r$2; + $24r = varSized[0]; + $s = 10; case 10: return $24r; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 5: + u$1 = _ref.$val; + _ref$1 = u$1.fields; + _i = 0; + /* while (true) { */ case 11: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 12; continue; } + f = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _r$3 = hasVarSize(f.object.typ, seen[0]); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_r$3) { */ case 13: + varSized[0] = true; + $s = -1; return varSized[0]; + /* } */ case 14: + _i++; + $s = 11; continue; + case 12: + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 6: + u$2 = _ref.$val; + varSized[0] = isTypeParam(t); + $s = -1; return varSized[0]; + /* } else if ($assertType(_ref, ptrType$9, true)[1] || $assertType(_ref, ptrType$12, true)[1]) { */ case 7: + u$3 = _ref; + unreachable(); + /* } */ case 8: + varSized[0] = false; + $s = -1; return varSized[0]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return varSized[0]; } if($curGoroutine.asleep) { var $f = {$blk: hasVarSize$1, $c: true, $r, $24r, _entry, _i, _key, _r$1, _r$2, _r$3, _ref, _ref$1, _tuple, _tuple$1, f, named, ok, seen, t, u, u$1, u$2, u$3, v, varSized, $s, $deferred};return $f; } } + }; + $ptrType(Checker).prototype.applyTypeFunc = function applyTypeFunc(f, x, id) { + var {$24r, _1, _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, _tuple, check, code, f, id, ptyp, terms, tp, tpar, x, $s, $r, $c} = $restore(this, {f, x, id}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = [f]; + terms = [terms]; + check = this; + _tuple = $assertType(x.typ, ptrType$14, true); + tp = _tuple[0]; + /* */ if (!(tp === ptrType$14.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(tp === ptrType$14.nil)) { */ case 1: + terms[0] = sliceType$12.nil; + _r$1 = tp.is((function(f, terms) { return function Checker·applyTypeFunc·func1(t) { + var {_r$1, r, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (t === ptrType$4.nil) { + $s = -1; return false; + } + _r$1 = f[0](t.typ); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + r = _r$1; + if (!($interfaceIsEqual(r, $ifaceNil))) { + terms[0] = $append(terms[0], NewTerm(t.tilde, r)); + $s = -1; return true; + } + $s = -1; return false; + /* */ } return; } var $f = {$blk: Checker·applyTypeFunc·func1, $c: true, $r, _r$1, r, t, $s};return $f; + }; })(f, terms)); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r$1) { */ case 3: + $s = -1; return $ifaceNil; + /* } */ case 4: + code = 0; + _1 = id; + if (_1 === (14)) { + code = 93; + } else if (_1 === (7)) { + code = 89; + } else if (_1 === (4)) { + code = 87; + } else { + unreachable(); + } + $r = check.softErrorf(x, code, "%s not supported as argument to %s for go1.18 (see issue #50937)", new sliceType$6([x, new $String(((id < 0 || id >= predeclaredFuncs.length) ? ($throwRuntimeError("index out of range"), undefined) : predeclaredFuncs[id]).name)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tpar = NewTypeName(0, check.pkg, tp.obj.object.name, $ifaceNil); + _arg = tpar; + _r$2 = NewInterfaceType(sliceType.nil, new sliceType$2([NewUnion(terms[0])])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = _r$2; + _r$3 = check.newTypeParam(_arg, _arg$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ptyp = _r$3; + ptyp.index = tp.index; + $s = -1; return ptyp; + /* } */ case 2: + _r$4 = f[0](x.typ); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 10; case 10: return $24r; + /* */ } return; } var $f = {$blk: applyTypeFunc, $c: true, $r, $24r, _1, _arg, _arg$1, _r$1, _r$2, _r$3, _r$4, _tuple, check, code, f, id, ptyp, terms, tp, tpar, x, $s};return $f; + }; + makeSig = function makeSig$1(res, args) { + var {_i, _ref, args, i, list$2, param, params, res, result, $s, $r, $c} = $restore(this, {res, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + list$2 = $makeSlice(sliceType$10, args.$length); + _ref = args; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + param = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ((i < 0 || i >= list$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : list$2.$array[list$2.$offset + i] = NewVar(0, ptrType$1.nil, "", Default(param))); + _i++; + } + params = NewTuple(list$2); + result = ptrType$15.nil; + /* */ if (!($interfaceIsEqual(res, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(res, $ifaceNil))) { */ case 1: + $r = assert(!isUntyped(res)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + result = NewTuple(new sliceType$10([NewVar(0, ptrType$1.nil, "", res)])); + /* } */ case 2: + $s = -1; return new Signature.ptr(ptrType$48.nil, ptrType$48.nil, ptrType.nil, ptrType$16.nil, params, result, false); + /* */ } return; } var $f = {$blk: makeSig$1, $c: true, $r, _i, _ref, args, i, list$2, param, params, res, result, $s};return $f; + }; + arrayPtrDeref = function arrayPtrDeref$1(typ$4) { + var {_r$1, _tuple, _tuple$1, a, ok, p, typ$4, $s, $r, $c} = $restore(this, {typ$4}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = $assertType(typ$4, ptrType$26, true); + p = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r$1 = under(p.base); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$1, ptrType$10, true); + a = _tuple$1[0]; + if (!(a === ptrType$10.nil)) { + $s = -1; return a; + } + /* } */ case 2: + $s = -1; return typ$4; + /* */ } return; } var $f = {$blk: arrayPtrDeref$1, $c: true, $r, _r$1, _tuple, _tuple$1, a, ok, p, typ$4, $s};return $f; + }; + unparen = function unparen$1(e) { + var _tuple, e, ok, p; + while (true) { + _tuple = $assertType(e, ptrType$39, true); + p = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + return e; + } + e = p.X; + } + }; + $ptrType(Basic).prototype.Kind = function Kind$1() { + var b; + b = this; + return b.kind; + }; + $ptrType(Basic).prototype.Info = function Info$1() { + var b; + b = this; + return b.info; + }; + $ptrType(Basic).prototype.Name = function Name$3() { + var b; + b = this; + return b.name; + }; + $ptrType(Basic).prototype.Underlying = function Underlying$11() { + var t; + t = this; + return t; + }; + $ptrType(Basic).prototype.String = function String$33() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$33, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(Checker).prototype.assignment = function assignment(x, T, context$1) { + var {T, _1, _2, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _v, cause, check, code, code$1, context$1, msg$1, newType, ok, sig, target, val, x, $s, $r, $c} = $restore(this, {x, T, context$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + cause = [cause]; + check = this; + $r = check.singleValue(x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _1 = x.mode; + /* */ if (_1 === (0)) { $s = 3; continue; } + /* */ if ((_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (0)) { */ case 3: + $s = -1; return; + /* } else if ((_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9))) { */ case 4: + $s = 6; continue; + /* } else { */ case 5: + $r = check.errorf(x, 23, "cannot assign %s to %s in %s", new sliceType$6([x, T, new $String(context$1)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 6: + case 2: + /* */ if (isUntyped(x.typ)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (isUntyped(x.typ)) { */ case 8: + target = T; + if ($interfaceIsEqual(T, $ifaceNil)) { _v = true; $s = 12; continue s; } + _r$1 = isNonTypeParamInterface(T); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 12: + /* */ if (_v) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v) { */ case 10: + /* */ if ($interfaceIsEqual(T, $ifaceNil) && $interfaceIsEqual(x.typ, (25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25]))) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if ($interfaceIsEqual(T, $ifaceNil) && $interfaceIsEqual(x.typ, (25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25]))) { */ case 14: + $r = check.errorf(x, 16, "use of untyped nil in %s", new sliceType$6([new $String(context$1)])); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 15: + target = Default(x.typ); + /* } */ case 11: + _r$2 = check.implicitTypeAndValue(x, target); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + newType = _tuple[0]; + val = _tuple[1]; + code = _tuple[2]; + /* */ if (!((code === 0))) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!((code === 0))) { */ case 18: + _r$3 = check.sprintf("cannot use %s as %s value in %s", new sliceType$6([x, target, new $String(context$1)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + msg$1 = _r$3; + _2 = code; + if (_2 === (43)) { + msg$1 = msg$1 + (" (truncated)"); + } else if (_2 === (44)) { + msg$1 = msg$1 + (" (overflows)"); + } else { + code = 23; + } + $r = check.error(x, code, msg$1); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + x.mode = 0; + $s = -1; return; + /* } */ case 19: + if (!($interfaceIsEqual(val, $ifaceNil))) { + x.val = val; + check.updateExprVal(x.expr, val); + } + /* */ if (!($interfaceIsEqual(newType, x.typ))) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!($interfaceIsEqual(newType, x.typ))) { */ case 22: + x.typ = newType; + $r = check.updateExprType(x.expr, newType, false); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 23: + /* } */ case 9: + _r$4 = under(x.typ); /* */ $s = 25; case 25: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$4, ptrType$27, true); + sig = _tuple$1[0]; + /* */ if (!(sig === ptrType$27.nil) && sig.TypeParams().Len() > 0) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!(sig === ptrType$27.nil) && sig.TypeParams().Len() > 0) { */ case 26: + $r = check.errorf(x, 137, "cannot use generic function %s without instantiation in %s", new sliceType$6([x, new $String(context$1)])); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 27: + if ($interfaceIsEqual(T, $ifaceNil)) { + $s = -1; return; + } + cause[0] = ""; + _r$5 = x.assignableTo(check, T, (cause.$ptr || (cause.$ptr = new ptrType$34(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, cause)))); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$2 = _r$5; + ok = _tuple$2[0]; + code$1 = _tuple$2[1]; + /* */ if (!ok) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (!ok) { */ case 30: + /* */ if (!(cause[0] === "")) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (!(cause[0] === "")) { */ case 32: + $r = check.errorf(x, code$1, "cannot use %s as %s value in %s: %s", new sliceType$6([x, T, new $String(context$1), new $String(cause[0])])); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 34; continue; + /* } else { */ case 33: + $r = check.errorf(x, code$1, "cannot use %s as %s value in %s", new sliceType$6([x, T, new $String(context$1)])); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 34: + x.mode = 0; + /* } */ case 31: + $s = -1; return; + /* */ } return; } var $f = {$blk: assignment, $c: true, $r, T, _1, _2, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _v, cause, check, code, code$1, context$1, msg$1, newType, ok, sig, target, val, x, $s};return $f; + }; + $ptrType(Checker).prototype.initConst = function initConst(lhs, x) { + var {_r$1, check, lhs, x, $s, $r, $c} = $restore(this, {lhs, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + if ((x.mode === 0) || $interfaceIsEqual(x.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])) || $interfaceIsEqual(lhs.object.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + if ($interfaceIsEqual(lhs.object.typ, $ifaceNil)) { + lhs.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + } + $s = -1; return; + } + /* */ if (!((x.mode === 4))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((x.mode === 4))) { */ case 1: + $r = check.errorf(x, 13, "%s is not constant", new sliceType$6([x])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if ($interfaceIsEqual(lhs.object.typ, $ifaceNil)) { + lhs.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + } + $s = -1; return; + /* } */ case 2: + _r$1 = isConstType(x.typ); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = assert(_r$1); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if ($interfaceIsEqual(lhs.object.typ, $ifaceNil)) { + lhs.object.typ = x.typ; + } + $r = check.assignment(x, lhs.object.typ, "constant declaration"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x.mode === 0) { + $s = -1; return; + } + lhs.val = x.val; + $s = -1; return; + /* */ } return; } var $f = {$blk: initConst, $c: true, $r, _r$1, check, lhs, x, $s};return $f; + }; + $ptrType(Checker).prototype.initVar = function initVar(lhs, x, context$1) { + var {check, context$1, lhs, typ$4, x, $s, $r, $c} = $restore(this, {lhs, x, context$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + if ((x.mode === 0) || $interfaceIsEqual(x.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0])) || $interfaceIsEqual(lhs.object.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + if ($interfaceIsEqual(lhs.object.typ, $ifaceNil)) { + lhs.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + } + $s = -1; return $ifaceNil; + } + /* */ if ($interfaceIsEqual(lhs.object.typ, $ifaceNil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($interfaceIsEqual(lhs.object.typ, $ifaceNil)) { */ case 1: + typ$4 = x.typ; + /* */ if (isUntyped(typ$4)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (isUntyped(typ$4)) { */ case 3: + /* */ if ($interfaceIsEqual(typ$4, (25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25]))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($interfaceIsEqual(typ$4, (25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25]))) { */ case 5: + $r = check.errorf(x, 16, "use of untyped nil in %s", new sliceType$6([new $String(context$1)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + lhs.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + $s = -1; return $ifaceNil; + /* } */ case 6: + typ$4 = Default(typ$4); + /* } */ case 4: + lhs.object.typ = typ$4; + /* } */ case 2: + $r = check.assignment(x, lhs.object.typ, context$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x.mode === 0) { + $s = -1; return $ifaceNil; + } + $s = -1; return x.typ; + /* */ } return; } var $f = {$blk: initVar, $c: true, $r, check, context$1, lhs, typ$4, x, $s};return $f; + }; + $ptrType(Checker).prototype.assignVar = function assignVar(lhs, x) { + var {_1, _arg, _arg$1, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, check, ident$1, lhs, obj, ok, op$1, sel, v, v_used, w, x, z, $s, $r, $c} = $restore(this, {lhs, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + op$1 = [op$1]; + z = [z]; + check = this; + /* */ if ((x.mode === 0) || $interfaceIsEqual(x.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((x.mode === 0) || $interfaceIsEqual(x.typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { */ case 1: + $r = check.useLHS(new sliceType$11([lhs])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return $ifaceNil; + /* } */ case 2: + _tuple = $assertType(unparen(lhs), ptrType$30, true); + ident$1 = _tuple[0]; + /* */ if (!(ident$1 === ptrType$30.nil) && ident$1.Name === "_") { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(ident$1 === ptrType$30.nil) && ident$1.Name === "_") { */ case 4: + $r = check.recordDef(ident$1, $ifaceNil); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.assignment(x, $ifaceNil, "assignment to _ identifier"); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x.mode === 0) { + $s = -1; return $ifaceNil; + } + $s = -1; return x.typ; + /* } */ case 5: + v = ptrType$16.nil; + v_used = false; + /* */ if (!(ident$1 === ptrType$30.nil)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!(ident$1 === ptrType$30.nil)) { */ case 8: + _r$1 = check.environment.lookup(ident$1.Name); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + obj = _r$1; + if (!($interfaceIsEqual(obj, $ifaceNil))) { + _tuple$1 = $assertType(obj, ptrType$16, true); + w = _tuple$1[0]; + if (!(w === ptrType$16.nil) && w.object.pkg === check.pkg) { + v = w; + v_used = v.used; + } + } + /* } */ case 9: + z[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.expr(z[0], lhs); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!(v === ptrType$16.nil)) { + v.used = v_used; + } + if ((z[0].mode === 0) || $interfaceIsEqual(z[0].typ, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { + $s = -1; return $ifaceNil; + } + _1 = z[0].mode; + /* */ if (_1 === (0)) { $s = 13; continue; } + /* */ if ((_1 === (5)) || (_1 === (6))) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_1 === (0)) { */ case 13: + $s = -1; return $ifaceNil; + /* } else if ((_1 === (5)) || (_1 === (6))) { */ case 14: + $s = 16; continue; + /* } else { */ case 15: + _tuple$2 = $assertType(z[0].expr, ptrType$36, true); + sel = _tuple$2[0]; + ok = _tuple$2[1]; + /* */ if (ok) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (ok) { */ case 17: + op$1[0] = new operand.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, 0); + $r = check.expr(op$1[0], sel.X); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (op$1[0].mode === 6) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (op$1[0].mode === 6) { */ case 20: + _arg = z[0]; + _r$2 = ExprString(z[0].expr); /* */ $s = 22; case 22: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$2); + $r = check.errorf(_arg, 24, "cannot assign to struct field %s in map", new sliceType$6([_arg$1])); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return $ifaceNil; + /* } */ case 21: + /* } */ case 18: + $r = check.errorf(z[0], 18, "cannot assign to %s", new sliceType$6([z[0]])); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return $ifaceNil; + /* } */ case 16: + case 12: + $r = check.assignment(x, z[0].typ, "assignment"); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (x.mode === 0) { + $s = -1; return $ifaceNil; + } + $s = -1; return x.typ; + /* */ } return; } var $f = {$blk: assignVar, $c: true, $r, _1, _arg, _arg$1, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, check, ident$1, lhs, obj, ok, op$1, sel, v, v_used, w, x, z, $s};return $f; + }; + operandTypes = function operandTypes$1(list$2) { + var _i, _ref, list$2, res, x; + res = sliceType$2.nil; + _ref = list$2; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + res = $append(res, x.typ); + _i++; + } + res = res; + return res; + }; + varTypes = function varTypes$1(list$2) { + var _i, _ref, list$2, res, x; + res = sliceType$2.nil; + _ref = list$2; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + res = $append(res, x.object.typ); + _i++; + } + res = res; + return res; + }; + $ptrType(Checker).prototype.typesSummary = function typesSummary(list$2, variadic) { + var {_i, _r$1, _r$2, _r$3, _ref, check, i, list$2, res, s, t, variadic, $s, $r, $c} = $restore(this, {list$2, variadic}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + res = sliceType$5.nil; + _ref = list$2; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + s = ""; + /* */ if ($interfaceIsEqual(t, $ifaceNil)) { $s = 4; continue; } + /* */ if ($interfaceIsEqual(t, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { $s = 5; continue; } + /* */ if (isUntyped(t)) { $s = 6; continue; } + /* */ if (variadic && (i === (list$2.$length - 1 >> 0))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ($interfaceIsEqual(t, $ifaceNil)) { */ case 4: + s = ""; + $s = 8; continue; + /* } else if ($interfaceIsEqual(t, (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]))) { */ case 5: + s = ""; + $s = 8; continue; + /* } else if (isUntyped(t)) { */ case 6: + _r$1 = isNumeric(t); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_r$1) { */ case 9: + s = "number"; + $s = 11; continue; + /* } else { */ case 10: + s = strings.Replace($assertType(t, ptrType$8).name, "untyped ", "", -1); + /* } */ case 11: + $s = 8; continue; + /* } else if (variadic && (i === (list$2.$length - 1 >> 0))) { */ case 7: + _r$2 = check.sprintf("...%s", new sliceType$6([$assertType(t, ptrType$25).elem])); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + s = _r$2; + /* } */ case 8: + case 3: + /* */ if (s === "") { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (s === "") { */ case 14: + _r$3 = check.sprintf("%s", new sliceType$6([t])); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + s = _r$3; + /* } */ case 15: + res = $append(res, s); + _i++; + $s = 1; continue; + case 2: + $s = -1; return "(" + strings.Join(res, ", ") + ")"; + /* */ } return; } var $f = {$blk: typesSummary, $c: true, $r, _i, _r$1, _r$2, _r$3, _ref, check, i, list$2, res, s, t, variadic, $s};return $f; + }; + measure = function measure$1(x, unit) { + var {$24r, _r$1, unit, x, $s, $r, $c} = $restore(this, {x, unit}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!((x === 1))) { + unit = unit + ("s"); + } + _r$1 = fmt.Sprintf("%d %s", new sliceType$6([new $Int(x), new $String(unit)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: measure$1, $c: true, $r, $24r, _r$1, unit, x, $s};return $f; + }; + $ptrType(Checker).prototype.assignError = function assignError(rhs, nvars, nvals) { + var {_r$1, _r$2, _tuple, call, check, nvals, nvars, rhs, rhs0, vals, vars, $s, $r, $c} = $restore(this, {rhs, nvars, nvals}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = measure(nvars, "variable"); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + vars = _r$1; + _r$2 = measure(nvals, "value"); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + vals = _r$2; + rhs0 = (0 >= rhs.$length ? ($throwRuntimeError("index out of range"), undefined) : rhs.$array[rhs.$offset + 0]); + /* */ if (rhs.$length === 1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (rhs.$length === 1) { */ case 3: + _tuple = $assertType(unparen(rhs0), ptrType$86, true); + call = _tuple[0]; + /* */ if (!(call === ptrType$86.nil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(call === ptrType$86.nil)) { */ case 5: + $r = check.errorf(rhs0, 17, "assignment mismatch: %s but %s returns %s", new sliceType$6([new $String(vars), call.Fun, new $String(vals)])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 6: + /* } */ case 4: + $r = check.errorf(rhs0, 17, "assignment mismatch: %s but %s", new sliceType$6([new $String(vars), new $String(vals)])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: assignError, $c: true, $r, _r$1, _r$2, _tuple, call, check, nvals, nvars, rhs, rhs0, vals, vars, $s};return $f; + }; + $ptrType(Checker).prototype.initVars = function initVars(lhs, origRHS, returnStmt) { + var {_arg, _arg$1, _i, _i$1, _i$2, _i$3, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$2, _ref$3, _tuple, a, at$1, check, commaOk, context$1, err, i, i$1, lhs, lhs$1, obj, origRHS, qualifier$1, returnStmt, rhs, x, x$1, x$2, $s, $r, $c} = $restore(this, {lhs, origRHS, returnStmt}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.exprList(origRHS, (lhs.$length === 2) && $interfaceIsEqual(returnStmt, $ifaceNil)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + rhs = _tuple[0]; + commaOk = _tuple[1]; + /* */ if (!((lhs.$length === rhs.$length))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((lhs.$length === rhs.$length))) { */ case 2: + _ref = lhs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + obj = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + obj.used = true; + if ($interfaceIsEqual(obj.object.typ, $ifaceNil)) { + obj.object.typ = (0 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 0]); + } + _i++; + } + _ref$1 = rhs; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + x = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (x.mode === 0) { + $s = -1; return; + } + _i$1++; + } + /* */ if (!($interfaceIsEqual(returnStmt, $ifaceNil))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!($interfaceIsEqual(returnStmt, $ifaceNil))) { */ case 4: + at$1 = returnStmt; + qualifier$1 = "not enough"; + if (rhs.$length > lhs.$length) { + at$1 = (x$1 = lhs.$length, ((x$1 < 0 || x$1 >= rhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : rhs.$array[rhs.$offset + x$1])).expr; + qualifier$1 = "too many"; + } else if (rhs.$length > 0) { + at$1 = (x$2 = rhs.$length - 1 >> 0, ((x$2 < 0 || x$2 >= rhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : rhs.$array[rhs.$offset + x$2])).expr; + } + err = newErrorf(at$1, 103, "%s return values", new sliceType$6([new $String(qualifier$1)])); + _r$2 = check.typesSummary(operandTypes(rhs), false); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg = new $String(_r$2); + $r = err.errorf(0, "have %s", new sliceType$6([_arg])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = check.typesSummary(varTypes(lhs), false); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$3); + $r = err.errorf(0, "want %s", new sliceType$6([_arg$1])); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.report(err); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 5: + $r = check.assignError(origRHS, lhs.$length, rhs.$length); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 3: + context$1 = "assignment"; + if (!($interfaceIsEqual(returnStmt, $ifaceNil))) { + context$1 = "return statement"; + } + /* */ if (commaOk) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (commaOk) { */ case 12: + a = arrayType$3.zero(); + _ref$2 = a; + _i$2 = 0; + /* while (true) { */ case 14: + /* if (!(_i$2 < 2)) { break; } */ if(!(_i$2 < 2)) { $s = 15; continue; } + i = _i$2; + _r$4 = check.initVar(((i < 0 || i >= lhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + i]), ((i < 0 || i >= rhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : rhs.$array[rhs.$offset + i]), context$1); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = _r$4); + _i$2++; + $s = 14; continue; + case 15: + $r = check.recordCommaOkTypes((0 >= origRHS.$length ? ($throwRuntimeError("index out of range"), undefined) : origRHS.$array[origRHS.$offset + 0]), $clone(a, arrayType$3)); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 13: + _ref$3 = lhs; + _i$3 = 0; + /* while (true) { */ case 18: + /* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 19; continue; } + i$1 = _i$3; + lhs$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]); + _r$5 = check.initVar(lhs$1, ((i$1 < 0 || i$1 >= rhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : rhs.$array[rhs.$offset + i$1]), context$1); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + _i$3++; + $s = 18; continue; + case 19: + $s = -1; return; + /* */ } return; } var $f = {$blk: initVars, $c: true, $r, _arg, _arg$1, _i, _i$1, _i$2, _i$3, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$2, _ref$3, _tuple, a, at$1, check, commaOk, context$1, err, i, i$1, lhs, lhs$1, obj, origRHS, qualifier$1, returnStmt, rhs, x, x$1, x$2, $s};return $f; + }; + $ptrType(Checker).prototype.assignVars = function assignVars(lhs, origRHS) { + var {_i, _i$1, _i$2, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, _tuple, a, check, commaOk, i, i$1, lhs, lhs$1, origRHS, rhs, x, $s, $r, $c} = $restore(this, {lhs, origRHS}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + _r$1 = check.exprList(origRHS, lhs.$length === 2); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + rhs = _tuple[0]; + commaOk = _tuple[1]; + /* */ if (!((lhs.$length === rhs.$length))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((lhs.$length === rhs.$length))) { */ case 2: + $r = check.useLHS(lhs); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = rhs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (x.mode === 0) { + $s = -1; return; + } + _i++; + } + $r = check.assignError(origRHS, lhs.$length, rhs.$length); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 3: + /* */ if (commaOk) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (commaOk) { */ case 6: + a = arrayType$3.zero(); + _ref$1 = a; + _i$1 = 0; + /* while (true) { */ case 8: + /* if (!(_i$1 < 2)) { break; } */ if(!(_i$1 < 2)) { $s = 9; continue; } + i = _i$1; + _r$2 = check.assignVar(((i < 0 || i >= lhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + i]), ((i < 0 || i >= rhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : rhs.$array[rhs.$offset + i])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ((i < 0 || i >= a.length) ? ($throwRuntimeError("index out of range"), undefined) : a[i] = _r$2); + _i$1++; + $s = 8; continue; + case 9: + $r = check.recordCommaOkTypes((0 >= origRHS.$length ? ($throwRuntimeError("index out of range"), undefined) : origRHS.$array[origRHS.$offset + 0]), $clone(a, arrayType$3)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 7: + _ref$2 = lhs; + _i$2 = 0; + /* while (true) { */ case 12: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 13; continue; } + i$1 = _i$2; + lhs$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + _r$3 = check.assignVar(lhs$1, ((i$1 < 0 || i$1 >= rhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : rhs.$array[rhs.$offset + i$1])); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + _i$2++; + $s = 12; continue; + case 13: + $s = -1; return; + /* */ } return; } var $f = {$blk: assignVars, $c: true, $r, _i, _i$1, _i$2, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, _tuple, a, check, commaOk, i, i$1, lhs, lhs$1, origRHS, rhs, x, $s};return $f; + }; + $ptrType(Checker).prototype.shortVarDecl = function shortVarDecl(pos$1, lhs, rhs) { + var {_entry, _i, _i$1, _i$2, _key, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _tuple, _tuple$1, alt, check, hasErr, i, i$1, ident$1, lhs, lhs$1, lhsVars, name, newVars, obj, obj$1, obj$2, obj$3, pos$1, rhs, scope, scopePos$2, seen, top, x, x$1, $s, $r, $c} = $restore(this, {pos$1, lhs, rhs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + check = this; + top = check.delayed.$length; + scope = check.environment.scope; + seen = (x = lhs.$length, ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : new $global.Map())); + lhsVars = $makeSlice(sliceType$10, lhs.$length); + newVars = $makeSlice(sliceType$10, 0, lhs.$length); + hasErr = false; + _ref = lhs; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + lhs$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _tuple = $assertType(lhs$1, ptrType$30, true); + ident$1 = _tuple[0]; + /* */ if (ident$1 === ptrType$30.nil) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (ident$1 === ptrType$30.nil) { */ case 3: + $r = check.useLHS(new sliceType$11([lhs$1])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.errorf(lhs$1, 131, "non-name %s on left side of :=", new sliceType$6([lhs$1])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + hasErr = true; + _i++; + /* continue; */ $s = 1; continue; + /* } */ case 4: + name = ident$1.Name; + /* */ if (!(name === "_")) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(name === "_")) { */ case 7: + /* */ if ((_entry = $mapIndex(seen,$String.keyFor(name)), _entry !== undefined ? _entry.v : false)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ((_entry = $mapIndex(seen,$String.keyFor(name)), _entry !== undefined ? _entry.v : false)) { */ case 9: + $r = check.errorf(lhs$1, 132, "%s repeated on left side of :=", new sliceType$6([lhs$1])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + hasErr = true; + _i++; + /* continue; */ $s = 1; continue; + /* } */ case 10: + _key = name; (seen || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: true }); + /* } */ case 8: + _r$1 = scope.Lookup(name); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + alt = _r$1; + /* */ if (!($interfaceIsEqual(alt, $ifaceNil))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!($interfaceIsEqual(alt, $ifaceNil))) { */ case 13: + $r = check.recordUse(ident$1, alt); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple$1 = $assertType(alt, ptrType$16, true); + obj = _tuple$1[0]; + /* */ if (!(obj === ptrType$16.nil)) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!(obj === ptrType$16.nil)) { */ case 16: + ((i < 0 || i >= lhsVars.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhsVars.$array[lhsVars.$offset + i] = obj); + $s = 18; continue; + /* } else { */ case 17: + $r = check.errorf(lhs$1, 18, "cannot assign to %s", new sliceType$6([lhs$1])); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + hasErr = true; + /* } */ case 18: + _i++; + /* continue; */ $s = 1; continue; + /* } */ case 14: + obj$1 = NewVar(ident$1.Pos(), check.pkg, name, $ifaceNil); + ((i < 0 || i >= lhsVars.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhsVars.$array[lhsVars.$offset + i] = obj$1); + if (!(name === "_")) { + newVars = $append(newVars, obj$1); + } + $r = check.recordDef(ident$1, obj$1); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + _ref$1 = lhsVars; + _i$1 = 0; + /* while (true) { */ case 21: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 22; continue; } + i$1 = _i$1; + obj$2 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + /* */ if (obj$2 === ptrType$16.nil) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (obj$2 === ptrType$16.nil) { */ case 23: + _r$2 = ((i$1 < 0 || i$1 >= lhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + i$1]).Pos(); /* */ $s = 25; case 25: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = NewVar(_r$2, check.pkg, "_", $ifaceNil); /* */ $s = 26; case 26: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ((i$1 < 0 || i$1 >= lhsVars.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhsVars.$array[lhsVars.$offset + i$1] = _r$3); + /* } */ case 24: + _i$1++; + $s = 21; continue; + case 22: + $r = check.initVars(lhsVars, rhs, $ifaceNil); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = check.processDelayed(top); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if ((newVars.$length === 0) && !hasErr) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if ((newVars.$length === 0) && !hasErr) { */ case 29: + $r = check.softErrorf(pos$1, 19, "no new variables on left side of :=", sliceType$6.nil); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 30: + _r$4 = (x$1 = rhs.$length - 1 >> 0, ((x$1 < 0 || x$1 >= rhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : rhs.$array[rhs.$offset + x$1])).End(); /* */ $s = 32; case 32: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + scopePos$2 = _r$4; + _ref$2 = newVars; + _i$2 = 0; + /* while (true) { */ case 33: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 34; continue; } + obj$3 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + $r = check.declare(scope, ptrType$30.nil, obj$3, scopePos$2); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + $s = 33; continue; + case 34: + $s = -1; return; + /* */ } return; } var $f = {$blk: shortVarDecl, $c: true, $r, _entry, _i, _i$1, _i$2, _key, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _tuple, _tuple$1, alt, check, hasErr, i, i$1, ident$1, lhs, lhs$1, lhsVars, name, newVars, obj, obj$1, obj$2, obj$3, pos$1, rhs, scope, scopePos$2, seen, top, x, x$1, $s};return $f; + }; + NewArray = function NewArray$1(elem, len) { + var elem, len; + return new Array.ptr(len, elem); + }; + $pkg.NewArray = NewArray; + $ptrType(Array).prototype.Len = function Len$9() { + var a; + a = this; + return a.len; + }; + $ptrType(Array).prototype.Elem = function Elem$4() { + var a; + a = this; + return a.elem; + }; + $ptrType(Array).prototype.Underlying = function Underlying$12() { + var t; + t = this; + return t; + }; + $ptrType(Array).prototype.String = function String$34() { + var {$24r, _r$1, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + _r$1 = TypeString(t, $throwNilPointerError); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$34, $c: true, $r, $24r, _r$1, t, $s};return $f; + }; + $ptrType(Error).prototype.Error = function Error$1() { + var {$24r, _arg, _arg$1, _r$1, _r$2, err, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = this; + _r$1 = err.Fset.Position(err.Pos); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = (x = _r$1, new x.constructor.elem(x)); + _arg$1 = new $String(err.Msg); + _r$2 = fmt.Sprintf("%s: %s", new sliceType$6([_arg, _arg$1])); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Error$1, $c: true, $r, $24r, _arg, _arg$1, _r$1, _r$2, err, x, $s};return $f; + }; + Error.prototype.Error = function(...$args) { return this.$val.Error(...$args); }; + $ptrType(ArgumentError).prototype.Error = function Error$2() { + var {$24r, _r$1, e, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _r$1 = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Error$2, $c: true, $r, $24r, _r$1, e, $s};return $f; + }; + $ptrType(ArgumentError).prototype.Unwrap = function Unwrap() { + var e; + e = this; + return e.Err; + }; + $ptrType(Info).prototype.TypeOf = function TypeOf(e) { + var {$24r, _entry, _r$1, _tuple, _tuple$1, e, id, info, obj, ok, t, $s, $r, $c} = $restore(this, {e}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + info = this; + _tuple = (_entry = $mapIndex(info.Types,ast.Expr.keyFor(e)), _entry !== undefined ? [_entry.v, true] : [new TypeAndValue.ptr(0, $ifaceNil, $ifaceNil), false]); + t = $clone(_tuple[0], TypeAndValue); + ok = _tuple[1]; + if (ok) { + $s = -1; return t.Type; + } + _tuple$1 = $assertType(e, ptrType$30, true); + id = _tuple$1[0]; + /* */ if (!(id === ptrType$30.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(id === ptrType$30.nil)) { */ case 1: + obj = info.ObjectOf(id); + /* */ if (!($interfaceIsEqual(obj, $ifaceNil))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!($interfaceIsEqual(obj, $ifaceNil))) { */ case 3: + _r$1 = obj.Type(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 6; case 6: return $24r; + /* } */ case 4: + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: TypeOf, $c: true, $r, $24r, _entry, _r$1, _tuple, _tuple$1, e, id, info, obj, ok, t, $s};return $f; + }; + $ptrType(Info).prototype.ObjectOf = function ObjectOf(id) { + var _entry, _entry$1, id, info, obj; + info = this; + obj = (_entry = $mapIndex(info.Defs,ptrType$30.keyFor(id)), _entry !== undefined ? _entry.v : $ifaceNil); + if (!($interfaceIsEqual(obj, $ifaceNil))) { + return obj; + } + return (_entry$1 = $mapIndex(info.Uses,ptrType$30.keyFor(id)), _entry$1 !== undefined ? _entry$1.v : $ifaceNil); + }; + $ptrType(TypeAndValue).prototype.IsVoid = function IsVoid() { + var tv; + tv = this; + return tv.mode === 1; + }; + TypeAndValue.prototype.IsVoid = function(...$args) { return this.$val.IsVoid(...$args); }; + $ptrType(TypeAndValue).prototype.IsType = function IsType() { + var tv; + tv = this; + return tv.mode === 3; + }; + TypeAndValue.prototype.IsType = function(...$args) { return this.$val.IsType(...$args); }; + $ptrType(TypeAndValue).prototype.IsBuiltin = function IsBuiltin() { + var tv; + tv = this; + return tv.mode === 2; + }; + TypeAndValue.prototype.IsBuiltin = function(...$args) { return this.$val.IsBuiltin(...$args); }; + $ptrType(TypeAndValue).prototype.IsValue = function IsValue() { + var _1, tv; + tv = this; + _1 = tv.mode; + if ((_1 === (4)) || (_1 === (5)) || (_1 === (6)) || (_1 === (7)) || (_1 === (8)) || (_1 === (9))) { + return true; + } + return false; + }; + TypeAndValue.prototype.IsValue = function(...$args) { return this.$val.IsValue(...$args); }; + $ptrType(TypeAndValue).prototype.IsNil = function IsNil() { + var tv; + tv = this; + return (tv.mode === 7) && $interfaceIsEqual(tv.Type, (25 >= $pkg.Typ.$length ? ($throwRuntimeError("index out of range"), undefined) : $pkg.Typ.$array[$pkg.Typ.$offset + 25])); + }; + TypeAndValue.prototype.IsNil = function(...$args) { return this.$val.IsNil(...$args); }; + $ptrType(TypeAndValue).prototype.Addressable = function Addressable() { + var tv; + tv = this; + return tv.mode === 5; + }; + TypeAndValue.prototype.Addressable = function(...$args) { return this.$val.Addressable(...$args); }; + $ptrType(TypeAndValue).prototype.Assignable = function Assignable() { + var tv; + tv = this; + return (tv.mode === 5) || (tv.mode === 6); + }; + TypeAndValue.prototype.Assignable = function(...$args) { return this.$val.Assignable(...$args); }; + $ptrType(TypeAndValue).prototype.HasOk = function HasOk() { + var tv; + tv = this; + return (tv.mode === 8) || (tv.mode === 6); + }; + TypeAndValue.prototype.HasOk = function(...$args) { return this.$val.HasOk(...$args); }; + $ptrType(Initializer).prototype.String = function String$35() { + var {_i, _ref, buf, i, init$7, lhs, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + init$7 = this; + buf[0] = new bytes.Buffer.ptr(sliceType$14.nil, 0, 0); + _ref = init$7.Lhs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + lhs = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + buf[0].WriteString(", "); + } + buf[0].WriteString(lhs.object.Name()); + _i++; + } + buf[0].WriteString(" = "); + $r = WriteExpr(buf[0], init$7.Rhs); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: String$35, $c: true, $r, _i, _ref, buf, i, init$7, lhs, $s};return $f; + }; + $ptrType(Config).prototype.Check = function Check(path, fset, files, info) { + var {$24r, _r$1, _r$2, _r$3, conf, files, fset, info, path, pkg, $s, $r, $c} = $restore(this, {path, fset, files, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + conf = this; + _r$1 = NewPackage(path, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pkg = _r$1; + _r$2 = NewChecker(conf, fset, pkg, info); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.Files(files); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = [pkg, _r$3]; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: Check, $c: true, $r, $24r, _r$1, _r$2, _r$3, conf, files, fset, info, path, pkg, $s};return $f; + }; + Identical = function Identical$1(x, y) { + var {$24r, _r$1, x, y, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = identical(x, y, true, ptrType$23.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Identical$1, $c: true, $r, $24r, _r$1, x, y, $s};return $f; + }; + $pkg.Identical = Identical; + IdenticalIgnoreTags = function IdenticalIgnoreTags$1(x, y) { + var {$24r, _r$1, x, y, $s, $r, $c} = $restore(this, {x, y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = identical(x, y, false, ptrType$23.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: IdenticalIgnoreTags$1, $c: true, $r, $24r, _r$1, x, y, $s};return $f; + }; + $pkg.IdenticalIgnoreTags = IdenticalIgnoreTags; + ptrType$12.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Term", name: "Term", pkg: "", typ: $funcType([$Int], [ptrType$19], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$19.methods = [{prop: "Tilde", name: "Tilde", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$22.methods = [{prop: "unify", name: "unify", pkg: "go/types", typ: $funcType([Type, Type], [$Bool], false)}, {prop: "tracef", name: "tracef", pkg: "go/types", typ: $funcType([$String, sliceType$6], [], true)}, {prop: "join", name: "join", pkg: "go/types", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "nifyEq", name: "nifyEq", pkg: "go/types", typ: $funcType([Type, Type, ptrType$23], [$Bool], false)}, {prop: "nify", name: "nify", pkg: "go/types", typ: $funcType([Type, Type, ptrType$23], [$Bool], false)}]; + ptrType$113.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "init", name: "init", pkg: "go/types", typ: $funcType([sliceType$9], [], false)}, {prop: "index", name: "index", pkg: "go/types", typ: $funcType([Type], [$Int], false)}, {prop: "setIndex", name: "setIndex", pkg: "go/types", typ: $funcType([$Int, $Int], [], false)}, {prop: "at", name: "at", pkg: "go/types", typ: $funcType([$Int], [Type], false)}, {prop: "set", name: "set", pkg: "go/types", typ: $funcType([$Int, Type], [], false)}, {prop: "unknowns", name: "unknowns", pkg: "go/types", typ: $funcType([], [$Int], false)}, {prop: "types", name: "types", pkg: "go/types", typ: $funcType([], [sliceType$2, $Int], false)}]; + ptrType$4.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "equal", name: "equal", pkg: "go/types", typ: $funcType([ptrType$4], [$Bool], false)}, {prop: "union", name: "union", pkg: "go/types", typ: $funcType([ptrType$4], [ptrType$4, ptrType$4], false)}, {prop: "intersect", name: "intersect", pkg: "go/types", typ: $funcType([ptrType$4], [ptrType$4], false)}, {prop: "includes", name: "includes", pkg: "go/types", typ: $funcType([Type], [$Bool], false)}, {prop: "subsetOf", name: "subsetOf", pkg: "go/types", typ: $funcType([ptrType$4], [$Bool], false)}, {prop: "disjoint", name: "disjoint", pkg: "go/types", typ: $funcType([ptrType$4], [$Bool], false)}]; + ptrType$115.methods = [{prop: "byte$", name: "byte", pkg: "go/types", typ: $funcType([$Uint8], [], false)}, {prop: "string", name: "string", pkg: "go/types", typ: $funcType([$String], [], false)}, {prop: "error", name: "error", pkg: "go/types", typ: $funcType([$String], [], false)}, {prop: "typ", name: "typ", pkg: "go/types", typ: $funcType([Type], [], false)}, {prop: "typeSet", name: "typeSet", pkg: "go/types", typ: $funcType([ptrType$7], [], false)}, {prop: "typeList", name: "typeList", pkg: "go/types", typ: $funcType([sliceType$2], [], false)}, {prop: "tParamList", name: "tParamList", pkg: "go/types", typ: $funcType([sliceType$9], [], false)}, {prop: "typeName", name: "typeName", pkg: "go/types", typ: $funcType([ptrType$17], [], false)}, {prop: "tuple", name: "tuple", pkg: "go/types", typ: $funcType([ptrType$15, $Bool], [], false)}, {prop: "signature", name: "signature", pkg: "go/types", typ: $funcType([ptrType$27], [], false)}]; + ptrType$7.methods = [{prop: "IsEmpty", name: "IsEmpty", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsAll", name: "IsAll", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsMethodSet", name: "IsMethodSet", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsComparable", name: "IsComparable", pkg: "", typ: $funcType([mapType], [$Bool], false)}, {prop: "NumMethods", name: "NumMethods", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [ptrType$2], false)}, {prop: "LookupMethod", name: "LookupMethod", pkg: "", typ: $funcType([ptrType$1, $String, $Bool], [$Int, ptrType$2], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "hasTerms", name: "hasTerms", pkg: "go/types", typ: $funcType([], [$Bool], false)}, {prop: "subsetOf", name: "subsetOf", pkg: "go/types", typ: $funcType([ptrType$7], [$Bool], false)}, {prop: "is", name: "is", pkg: "go/types", typ: $funcType([funcType$2], [$Bool], false)}, {prop: "underIs", name: "underIs", pkg: "go/types", typ: $funcType([funcType$3], [$Bool], false)}]; + byUniqueMethodName.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; + ptrType$14.methods = [{prop: "Index", name: "Index", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Obj", name: "Obj", pkg: "", typ: $funcType([], [ptrType$17], false)}, {prop: "Constraint", name: "Constraint", pkg: "", typ: $funcType([], [Type], false)}, {prop: "SetConstraint", name: "SetConstraint", pkg: "", typ: $funcType([Type], [], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "cleanup", name: "cleanup", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "iface", name: "iface", pkg: "go/types", typ: $funcType([], [ptrType$13], false)}, {prop: "is", name: "is", pkg: "go/types", typ: $funcType([funcType$2], [$Bool], false)}, {prop: "underIs", name: "underIs", pkg: "go/types", typ: $funcType([funcType$3], [$Bool], false)}]; + ptrType$48.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "At", name: "At", pkg: "", typ: $funcType([$Int], [ptrType$14], false)}, {prop: "list", name: "list", pkg: "go/types", typ: $funcType([], [sliceType$9], false)}]; + ptrType$56.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "At", name: "At", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "list", name: "list", pkg: "go/types", typ: $funcType([], [sliceType$2], false)}]; + ptrType$15.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "At", name: "At", pkg: "", typ: $funcType([$Int], [ptrType$16], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + termlist.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "isEmpty", name: "isEmpty", pkg: "go/types", typ: $funcType([], [$Bool], false)}, {prop: "isAll", name: "isAll", pkg: "go/types", typ: $funcType([], [$Bool], false)}, {prop: "norm", name: "norm", pkg: "go/types", typ: $funcType([], [termlist], false)}, {prop: "union", name: "union", pkg: "go/types", typ: $funcType([termlist], [termlist], false)}, {prop: "intersect", name: "intersect", pkg: "go/types", typ: $funcType([termlist], [termlist], false)}, {prop: "equal", name: "equal", pkg: "go/types", typ: $funcType([termlist], [$Bool], false)}, {prop: "includes", name: "includes", pkg: "go/types", typ: $funcType([Type], [$Bool], false)}, {prop: "supersetOf", name: "supersetOf", pkg: "go/types", typ: $funcType([ptrType$4], [$Bool], false)}, {prop: "subsetOf", name: "subsetOf", pkg: "go/types", typ: $funcType([termlist], [$Bool], false)}]; + substMap.methods = [{prop: "empty", name: "empty", pkg: "go/types", typ: $funcType([], [$Bool], false)}, {prop: "lookup", name: "lookup", pkg: "go/types", typ: $funcType([ptrType$14], [Type], false)}]; + ptrType$116.methods = [{prop: "typ", name: "typ", pkg: "go/types", typ: $funcType([Type], [Type], false)}, {prop: "typOrNil", name: "typOrNil", pkg: "go/types", typ: $funcType([Type], [Type], false)}, {prop: "var_", name: "var_", pkg: "go/types", typ: $funcType([ptrType$16], [ptrType$16], false)}, {prop: "tuple", name: "tuple", pkg: "go/types", typ: $funcType([ptrType$15], [ptrType$15], false)}, {prop: "varList", name: "varList", pkg: "go/types", typ: $funcType([sliceType$10], [sliceType$10, $Bool], false)}, {prop: "func_", name: "func_", pkg: "go/types", typ: $funcType([ptrType$2], [ptrType$2], false)}, {prop: "funcList", name: "funcList", pkg: "go/types", typ: $funcType([sliceType], [sliceType, $Bool], false)}, {prop: "typeList", name: "typeList", pkg: "go/types", typ: $funcType([sliceType$2], [sliceType$2, $Bool], false)}, {prop: "termlist", name: "termlist", pkg: "go/types", typ: $funcType([sliceType$12], [sliceType$12, $Bool], false)}]; + ptrType$11.methods = [{prop: "NumFields", name: "NumFields", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [ptrType$16], false)}, {prop: "Tag", name: "Tag", pkg: "", typ: $funcType([$Int], [$String], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "markComplete", name: "markComplete", pkg: "go/types", typ: $funcType([], [], false)}]; + ptrType$25.methods = [{prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$83.methods = [{prop: "Alignof", name: "Alignof", pkg: "", typ: $funcType([Type], [$Int64], false)}, {prop: "Offsetsof", name: "Offsetsof", pkg: "", typ: $funcType([sliceType$10], [sliceType$19], false)}, {prop: "Sizeof", name: "Sizeof", pkg: "", typ: $funcType([Type], [$Int64], false)}]; + ptrType$27.methods = [{prop: "Recv", name: "Recv", pkg: "", typ: $funcType([], [ptrType$16], false)}, {prop: "TypeParams", name: "TypeParams", pkg: "", typ: $funcType([], [ptrType$48], false)}, {prop: "RecvTypeParams", name: "RecvTypeParams", pkg: "", typ: $funcType([], [ptrType$48], false)}, {prop: "Params", name: "Params", pkg: "", typ: $funcType([], [ptrType$15], false)}, {prop: "Results", name: "Results", pkg: "", typ: $funcType([], [ptrType$15], false)}, {prop: "Variadic", name: "Variadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$3.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [SelectionKind], false)}, {prop: "Recv", name: "Recv", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Obj", name: "Obj", pkg: "", typ: $funcType([], [Object], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([], [sliceType$13], false)}, {prop: "Indirect", name: "Indirect", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType.methods = [{prop: "Parent", name: "Parent", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Names", name: "Names", pkg: "", typ: $funcType([], [sliceType$5], false)}, {prop: "NumChildren", name: "NumChildren", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Child", name: "Child", pkg: "", typ: $funcType([$Int], [ptrType], false)}, {prop: "Lookup", name: "Lookup", pkg: "", typ: $funcType([$String], [Object], false)}, {prop: "LookupParent", name: "LookupParent", pkg: "", typ: $funcType([$String, token.Pos], [ptrType, Object], false)}, {prop: "Insert", name: "Insert", pkg: "", typ: $funcType([Object], [Object], false)}, {prop: "_InsertLazy", name: "_InsertLazy", pkg: "go/types", typ: $funcType([$String, funcType$4], [$Bool], false)}, {prop: "insert", name: "insert", pkg: "go/types", typ: $funcType([$String, Object], [], false)}, {prop: "squash", name: "squash", pkg: "go/types", typ: $funcType([funcType$5], [], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "Contains", name: "Contains", pkg: "", typ: $funcType([token.Pos], [$Bool], false)}, {prop: "Innermost", name: "Innermost", pkg: "", typ: $funcType([token.Pos], [ptrType], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer, $Int, $Bool], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$85.methods = [{prop: "Parent", name: "Parent", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "Pkg", name: "Pkg", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Exported", name: "Exported", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Id", name: "Id", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "order", name: "order", pkg: "go/types", typ: $funcType([], [$Uint32], false)}, {prop: "color", name: "color", pkg: "go/types", typ: $funcType([], [color], false)}, {prop: "setType", name: "setType", pkg: "go/types", typ: $funcType([Type], [], false)}, {prop: "setOrder", name: "setOrder", pkg: "go/types", typ: $funcType([$Uint32], [], false)}, {prop: "setColor", name: "setColor", pkg: "go/types", typ: $funcType([color], [], false)}, {prop: "setParent", name: "setParent", pkg: "go/types", typ: $funcType([ptrType], [], false)}, {prop: "sameId", name: "sameId", pkg: "go/types", typ: $funcType([ptrType$1, $String], [$Bool], false)}, {prop: "scopePos", name: "scopePos", pkg: "go/types", typ: $funcType([], [token.Pos], false)}, {prop: "setScopePos", name: "setScopePos", pkg: "go/types", typ: $funcType([token.Pos], [], false)}]; + ptrType$58.methods = [{prop: "hasInitializer", name: "hasInitializer", pkg: "go/types", typ: $funcType([], [$Bool], false)}, {prop: "addDep", name: "addDep", pkg: "go/types", typ: $funcType([Object], [], false)}]; + inSourceOrder.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}]; + ptrType$23.methods = [{prop: "identical", name: "identical", pkg: "go/types", typ: $funcType([ptrType$23], [$Bool], false)}]; + ptrType$26.methods = [{prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$1.methods = [{prop: "Path", name: "Path", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "SetName", name: "SetName", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Scope", name: "Scope", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "Complete", name: "Complete", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "MarkComplete", name: "MarkComplete", pkg: "", typ: $funcType([], [], false)}, {prop: "Imports", name: "Imports", pkg: "", typ: $funcType([], [sliceType$24], false)}, {prop: "SetImports", name: "SetImports", pkg: "", typ: $funcType([sliceType$24], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$62.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "setConst", name: "setConst", pkg: "go/types", typ: $funcType([token.Token, $String], [], false)}, {prop: "isNil", name: "isNil", pkg: "go/types", typ: $funcType([], [$Bool], false)}, {prop: "assignableTo", name: "assignableTo", pkg: "go/types", typ: $funcType([ptrType$5, Type, ptrType$34], [$Bool, errors$1.Code], false)}, {prop: "convertibleTo", name: "convertibleTo", pkg: "go/types", typ: $funcType([ptrType$5, Type, ptrType$34], [$Bool], false)}]; + ptrType$54.methods = [{prop: "insert", name: "insert", pkg: "go/types", typ: $funcType([Object], [Object], false)}]; + ptrType$117.methods = [{prop: "Parent", name: "Parent", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "Pkg", name: "Pkg", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Exported", name: "Exported", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Id", name: "Id", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "order", name: "order", pkg: "go/types", typ: $funcType([], [$Uint32], false)}, {prop: "color", name: "color", pkg: "go/types", typ: $funcType([], [color], false)}, {prop: "scopePos", name: "scopePos", pkg: "go/types", typ: $funcType([], [token.Pos], false)}, {prop: "setParent", name: "setParent", pkg: "go/types", typ: $funcType([ptrType], [], false)}, {prop: "setType", name: "setType", pkg: "go/types", typ: $funcType([Type], [], false)}, {prop: "setOrder", name: "setOrder", pkg: "go/types", typ: $funcType([$Uint32], [], false)}, {prop: "setColor", name: "setColor", pkg: "go/types", typ: $funcType([color], [], false)}, {prop: "setScopePos", name: "setScopePos", pkg: "go/types", typ: $funcType([token.Pos], [], false)}, {prop: "sameId", name: "sameId", pkg: "go/types", typ: $funcType([ptrType$1, $String], [$Bool], false)}]; + color.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$31.methods = [{prop: "Imported", name: "Imported", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$32.methods = [{prop: "Val", name: "Val", pkg: "", typ: $funcType([], [constant.Value], false)}, {prop: "isDependency", name: "isDependency", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$17.methods = [{prop: "IsAlias", name: "IsAlias", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$16.methods = [{prop: "Anonymous", name: "Anonymous", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Embedded", name: "Embedded", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsField", name: "IsField", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Origin", name: "Origin", pkg: "", typ: $funcType([], [ptrType$16], false)}, {prop: "isDependency", name: "isDependency", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$2.methods = [{prop: "FullName", name: "FullName", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Scope", name: "Scope", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "Origin", name: "Origin", pkg: "", typ: $funcType([], [ptrType$2], false)}, {prop: "hasPtrRecv", name: "hasPtrRecv", pkg: "go/types", typ: $funcType([], [$Bool], false)}, {prop: "isDependency", name: "isDependency", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$91.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$18.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$33.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$9.methods = [{prop: "resolve", name: "resolve", pkg: "go/types", typ: $funcType([], [ptrType$9], false)}, {prop: "state", name: "state", pkg: "go/types", typ: $funcType([], [namedState], false)}, {prop: "setState", name: "setState", pkg: "go/types", typ: $funcType([namedState], [], false)}, {prop: "cleanup", name: "cleanup", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "Obj", name: "Obj", pkg: "", typ: $funcType([], [ptrType$17], false)}, {prop: "Origin", name: "Origin", pkg: "", typ: $funcType([], [ptrType$9], false)}, {prop: "TypeParams", name: "TypeParams", pkg: "", typ: $funcType([], [ptrType$48], false)}, {prop: "SetTypeParams", name: "SetTypeParams", pkg: "", typ: $funcType([sliceType$9], [], false)}, {prop: "TypeArgs", name: "TypeArgs", pkg: "", typ: $funcType([], [ptrType$56], false)}, {prop: "NumMethods", name: "NumMethods", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [ptrType$2], false)}, {prop: "expandMethod", name: "expandMethod", pkg: "go/types", typ: $funcType([$Int], [ptrType$2], false)}, {prop: "SetUnderlying", name: "SetUnderlying", pkg: "", typ: $funcType([Type], [], false)}, {prop: "AddMethod", name: "AddMethod", pkg: "", typ: $funcType([ptrType$2], [], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "under", name: "under", pkg: "go/types", typ: $funcType([], [Type], false)}, {prop: "setUnderlying", name: "setUnderlying", pkg: "go/types", typ: $funcType([Type], [], false)}, {prop: "lookupMethod", name: "lookupMethod", pkg: "go/types", typ: $funcType([ptrType$1, $String, $Bool], [$Int, ptrType$2], false)}, {prop: "expandUnderlying", name: "expandUnderlying", pkg: "go/types", typ: $funcType([], [Type], false)}]; + ptrType$118.methods = [{prop: "recordCanon", name: "recordCanon", pkg: "go/types", typ: $funcType([ptrType$14, ptrType$14], [], false)}, {prop: "recordInstance", name: "recordInstance", pkg: "go/types", typ: $funcType([ptrType$1, token.Pos, sliceType$9, sliceType$2, sliceType$11], [], false)}, {prop: "assign", name: "assign", pkg: "go/types", typ: $funcType([ptrType$1, token.Pos, ptrType$14, Type], [], false)}, {prop: "localNamedVertex", name: "localNamedVertex", pkg: "go/types", typ: $funcType([ptrType$1, ptrType$9], [$Int], false)}, {prop: "typeParamVertex", name: "typeParamVertex", pkg: "go/types", typ: $funcType([ptrType$14], [$Int], false)}, {prop: "addEdge", name: "addEdge", pkg: "go/types", typ: $funcType([$Int, $Int, $Int, token.Pos, Type], [], false)}]; + ptrType$119.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "At", name: "At", pkg: "", typ: $funcType([$Int], [ptrType$3], false)}, {prop: "Lookup", name: "Lookup", pkg: "", typ: $funcType([ptrType$1, $String], [ptrType$3], false)}]; + methodSet.methods = [{prop: "add", name: "add", pkg: "go/types", typ: $funcType([sliceType, sliceType$13, $Bool, $Bool], [methodSet], false)}, {prop: "addOne", name: "addOne", pkg: "go/types", typ: $funcType([ptrType$2, sliceType$13, $Bool, $Bool], [methodSet], false)}]; + ptrType$28.methods = [{prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$120.methods = [{prop: "lookup", name: "lookup", pkg: "go/types", typ: $funcType([ptrType$9], [ptrType$9], false)}, {prop: "add", name: "add", pkg: "go/types", typ: $funcType([ptrType$9], [], false)}]; + ptrType$92.methods = [{prop: "insert", name: "insert", pkg: "go/types", typ: $funcType([ptrType$65], [], false)}, {prop: "gotoTarget", name: "gotoTarget", pkg: "go/types", typ: $funcType([$String], [ptrType$65], false)}, {prop: "enclosingTarget", name: "enclosingTarget", pkg: "go/types", typ: $funcType([$String], [ptrType$65], false)}]; + ptrType$13.methods = [{prop: "typeSet", name: "typeSet", pkg: "go/types", typ: $funcType([], [ptrType$7], false)}, {prop: "MarkImplicit", name: "MarkImplicit", pkg: "", typ: $funcType([], [], false)}, {prop: "NumExplicitMethods", name: "NumExplicitMethods", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "ExplicitMethod", name: "ExplicitMethod", pkg: "", typ: $funcType([$Int], [ptrType$2], false)}, {prop: "NumEmbeddeds", name: "NumEmbeddeds", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Embedded", name: "Embedded", pkg: "", typ: $funcType([$Int], [ptrType$9], false)}, {prop: "EmbeddedType", name: "EmbeddedType", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "NumMethods", name: "NumMethods", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [ptrType$2], false)}, {prop: "Empty", name: "Empty", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsComparable", name: "IsComparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsMethodSet", name: "IsMethodSet", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsImplicit", name: "IsImplicit", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Complete", name: "Complete", pkg: "", typ: $funcType([], [ptrType$13], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "cleanup", name: "cleanup", pkg: "go/types", typ: $funcType([], [], false)}]; + ptrType$95.methods = [{prop: "cost", name: "cost", pkg: "go/types", typ: $funcType([], [$Int], false)}]; + ptrType$96.methods = [{prop: "add", name: "add", pkg: "go/types", typ: $funcType([ptrType$95], [], false)}]; + nodeQueue.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}]; + ptrType$94.methods = [{prop: "Push", name: "Push", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "Pop", name: "Pop", pkg: "", typ: $funcType([], [$emptyInterface], false)}]; + ptrType$121.methods = [{prop: "isParameterized", name: "isParameterized", pkg: "go/types", typ: $funcType([Type], [$Bool], false)}, {prop: "isParameterizedTypeList", name: "isParameterizedTypeList", pkg: "go/types", typ: $funcType([sliceType$2], [$Bool], false)}]; + ptrType$122.methods = [{prop: "typ", name: "typ", pkg: "go/types", typ: $funcType([Type], [], false)}, {prop: "varList", name: "varList", pkg: "go/types", typ: $funcType([sliceType$10], [], false)}]; + ptrType$104.methods = [{prop: "empty", name: "empty", pkg: "go/types", typ: $funcType([], [$Bool], false)}, {prop: "pos", name: "pos", pkg: "go/types", typ: $funcType([], [token.Pos], false)}, {prop: "msg", name: "msg", pkg: "go/types", typ: $funcType([ptrType$24, Qualifier], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "errorf", name: "errorf", pkg: "go/types", typ: $funcType([token.Pos, $String, sliceType$6], [], true)}]; + posSpan.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}]; + atPos.methods = [{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}]; + importDecl.methods = [{prop: "node", name: "node", pkg: "go/types", typ: $funcType([], [ast.Node], false)}]; + constDecl.methods = [{prop: "node", name: "node", pkg: "go/types", typ: $funcType([], [ast.Node], false)}]; + varDecl.methods = [{prop: "node", name: "node", pkg: "go/types", typ: $funcType([], [ast.Node], false)}]; + typeDecl.methods = [{prop: "node", name: "node", pkg: "go/types", typ: $funcType([], [ast.Node], false)}]; + funcDecl.methods = [{prop: "node", name: "node", pkg: "go/types", typ: $funcType([], [ast.Node], false)}]; + ptrType$51.methods = [{prop: "instanceHash", name: "instanceHash", pkg: "go/types", typ: $funcType([Type, sliceType$2], [$String], false)}, {prop: "lookup", name: "lookup", pkg: "go/types", typ: $funcType([$String, Type, sliceType$2], [Type], false)}, {prop: "update", name: "update", pkg: "go/types", typ: $funcType([$String, Type, sliceType$2, Type], [Type], false)}, {prop: "getID", name: "getID", pkg: "go/types", typ: $funcType([Type], [$Int], false)}]; + ptrType$123.methods = [{prop: "lookup", name: "lookup", pkg: "go/types", typ: $funcType([$String], [Object], false)}]; + ptrType$124.methods = [{prop: "describef", name: "describef", pkg: "go/types", typ: $funcType([positioner, $String, sliceType$6], [], true)}]; + ptrType$5.methods = [{prop: "langCompat", name: "langCompat", pkg: "go/types", typ: $funcType([ptrType$57], [], false)}, {prop: "allowVersion", name: "allowVersion", pkg: "go/types", typ: $funcType([ptrType$1, $Int, $Int], [$Bool], false)}, {prop: "validType", name: "validType", pkg: "go/types", typ: $funcType([ptrType$9], [], false)}, {prop: "validType0", name: "validType0", pkg: "go/types", typ: $funcType([Type, sliceType$7, sliceType$7], [$Bool], false)}, {prop: "ident", name: "ident", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$30, ptrType$9, $Bool], [], false)}, {prop: "typ", name: "typ", pkg: "go/types", typ: $funcType([ast.Expr], [Type], false)}, {prop: "varType", name: "varType", pkg: "go/types", typ: $funcType([ast.Expr], [Type], false)}, {prop: "validVarType", name: "validVarType", pkg: "go/types", typ: $funcType([ast.Expr, Type], [], false)}, {prop: "definedType", name: "definedType", pkg: "go/types", typ: $funcType([ast.Expr, ptrType$9], [Type], false)}, {prop: "genericType", name: "genericType", pkg: "go/types", typ: $funcType([ast.Expr, ptrType$34], [Type], false)}, {prop: "typInternal", name: "typInternal", pkg: "go/types", typ: $funcType([ast.Expr, ptrType$9], [Type], false)}, {prop: "instantiatedType", name: "instantiatedType", pkg: "go/types", typ: $funcType([ptrType$112, ptrType$9], [Type], false)}, {prop: "arrayLength", name: "arrayLength", pkg: "go/types", typ: $funcType([ast.Expr], [$Int64], false)}, {prop: "typeList", name: "typeList", pkg: "go/types", typ: $funcType([sliceType$11], [sliceType$2], false)}, {prop: "newTypeParam", name: "newTypeParam", pkg: "go/types", typ: $funcType([ptrType$17, Type], [ptrType$14], false)}, {prop: "subst", name: "subst", pkg: "go/types", typ: $funcType([token.Pos, Type, substMap, ptrType$9, ptrType$51], [Type], false)}, {prop: "structType", name: "structType", pkg: "go/types", typ: $funcType([ptrType$11, ptrType$42], [], false)}, {prop: "declareInSet", name: "declareInSet", pkg: "go/types", typ: $funcType([ptrType$54, token.Pos, Object], [$Bool], false)}, {prop: "tag", name: "tag", pkg: "go/types", typ: $funcType([ptrType$57], [$String], false)}, {prop: "funcBody", name: "funcBody", pkg: "go/types", typ: $funcType([ptrType$58, $String, ptrType$27, ptrType$74, constant.Value], [], false)}, {prop: "usage", name: "usage", pkg: "go/types", typ: $funcType([ptrType], [], false)}, {prop: "simpleStmt", name: "simpleStmt", pkg: "go/types", typ: $funcType([ast.Stmt], [], false)}, {prop: "stmtList", name: "stmtList", pkg: "go/types", typ: $funcType([stmtContext, sliceType$17], [], false)}, {prop: "multipleDefaults", name: "multipleDefaults", pkg: "go/types", typ: $funcType([sliceType$17], [], false)}, {prop: "openScope", name: "openScope", pkg: "go/types", typ: $funcType([ast.Node, $String], [], false)}, {prop: "closeScope", name: "closeScope", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "suspendedCall", name: "suspendedCall", pkg: "go/types", typ: $funcType([$String, ptrType$86], [], false)}, {prop: "caseValues", name: "caseValues", pkg: "go/types", typ: $funcType([ptrType$62, sliceType$11, valueMap], [], false)}, {prop: "isNil", name: "isNil", pkg: "go/types", typ: $funcType([ast.Expr], [$Bool], false)}, {prop: "caseTypes", name: "caseTypes", pkg: "go/types", typ: $funcType([ptrType$62, sliceType$11, mapType$10], [Type], false)}, {prop: "stmt", name: "stmt", pkg: "go/types", typ: $funcType([stmtContext, ast.Stmt], [], false)}, {prop: "funcType", name: "funcType", pkg: "go/types", typ: $funcType([ptrType$27, ptrType$49, ptrType$44], [], false)}, {prop: "collectParams", name: "collectParams", pkg: "go/types", typ: $funcType([ptrType, ptrType$49, $Bool], [sliceType$10, $Bool], false)}, {prop: "isTerminating", name: "isTerminating", pkg: "go/types", typ: $funcType([ast.Stmt, $String], [$Bool], false)}, {prop: "isTerminatingList", name: "isTerminatingList", pkg: "go/types", typ: $funcType([sliceType$17, $String], [$Bool], false)}, {prop: "isTerminatingSwitch", name: "isTerminatingSwitch", pkg: "go/types", typ: $funcType([ptrType$74, $String], [$Bool], false)}, {prop: "arityMatch", name: "arityMatch", pkg: "go/types", typ: $funcType([ptrType$88, ptrType$88], [], false)}, {prop: "declarePkgObj", name: "declarePkgObj", pkg: "go/types", typ: $funcType([ptrType$30, Object, ptrType$58], [], false)}, {prop: "filename", name: "filename", pkg: "go/types", typ: $funcType([$Int], [$String], false)}, {prop: "importPackage", name: "importPackage", pkg: "go/types", typ: $funcType([positioner, $String, $String], [ptrType$1], false)}, {prop: "collectObjects", name: "collectObjects", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "unpackRecv", name: "unpackRecv", pkg: "go/types", typ: $funcType([ast.Expr, $Bool], [$Bool, ptrType$30, sliceType$22], false)}, {prop: "resolveBaseTypeName", name: "resolveBaseTypeName", pkg: "go/types", typ: $funcType([$Bool, ptrType$30], [$Bool, ptrType$17], false)}, {prop: "packageObjects", name: "packageObjects", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "unusedImports", name: "unusedImports", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "errorUnusedPkg", name: "errorUnusedPkg", pkg: "go/types", typ: $funcType([ptrType$31], [], false)}, {prop: "newNamed", name: "newNamed", pkg: "go/types", typ: $funcType([ptrType$17, Type, sliceType], [ptrType$9], false)}, {prop: "newNamedInstance", name: "newNamedInstance", pkg: "go/types", typ: $funcType([token.Pos, ptrType$9, sliceType$2, ptrType$9], [ptrType$9], false)}, {prop: "context", name: "context", pkg: "go/types", typ: $funcType([], [ptrType$51], false)}, {prop: "monomorph", name: "monomorph", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "reportInstanceLoop", name: "reportInstanceLoop", pkg: "go/types", typ: $funcType([$Int], [], false)}, {prop: "missingMethod", name: "missingMethod", pkg: "go/types", typ: $funcType([Type, ptrType$13, $Bool], [ptrType$2, ptrType$2], false)}, {prop: "missingMethodCause", name: "missingMethodCause", pkg: "go/types", typ: $funcType([Type, Type, ptrType$2, ptrType$2], [$String], false)}, {prop: "interfacePtrError", name: "interfacePtrError", pkg: "go/types", typ: $funcType([Type], [$String], false)}, {prop: "funcString", name: "funcString", pkg: "go/types", typ: $funcType([ptrType$2, $Bool], [$String], false)}, {prop: "assertableTo", name: "assertableTo", pkg: "go/types", typ: $funcType([ptrType$13, Type], [ptrType$2, ptrType$2], false)}, {prop: "newAssertableTo", name: "newAssertableTo", pkg: "go/types", typ: $funcType([ptrType$13, Type], [$Bool], false)}, {prop: "labels", name: "labels", pkg: "go/types", typ: $funcType([ptrType$74], [], false)}, {prop: "blockBranches", name: "blockBranches", pkg: "go/types", typ: $funcType([ptrType, ptrType$92, ptrType$65, sliceType$17], [sliceType$26], false)}, {prop: "newInterface", name: "newInterface", pkg: "go/types", typ: $funcType([], [ptrType$13], false)}, {prop: "interfaceType", name: "interfaceType", pkg: "go/types", typ: $funcType([ptrType$13, ptrType$45, ptrType$9], [], false)}, {prop: "instance", name: "instance", pkg: "go/types", typ: $funcType([token.Pos, Type, sliceType$2, ptrType$9, ptrType$51], [Type], false)}, {prop: "validateTArgLen", name: "validateTArgLen", pkg: "go/types", typ: $funcType([token.Pos, $Int, $Int], [$Bool], false)}, {prop: "verify", name: "verify", pkg: "go/types", typ: $funcType([token.Pos, sliceType$9, sliceType$2, ptrType$51], [$Int, $error], false)}, {prop: "implements$", name: "implements", pkg: "go/types", typ: $funcType([Type, Type, $Bool, ptrType$34], [$Bool], false)}, {prop: "initOrder", name: "initOrder", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "reportCycle", name: "reportCycle", pkg: "go/types", typ: $funcType([sliceType$8], [], false)}, {prop: "infer", name: "infer", pkg: "go/types", typ: $funcType([positioner, sliceType$9, sliceType$2, ptrType$15, sliceType$29], [sliceType$2], false)}, {prop: "inferB", name: "inferB", pkg: "go/types", typ: $funcType([positioner, sliceType$9, sliceType$2], [sliceType$2, $Int], false)}, {prop: "indexExpr", name: "indexExpr", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$112], [$Bool], false)}, {prop: "sliceExpr", name: "sliceExpr", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$100], [], false)}, {prop: "singleIndex", name: "singleIndex", pkg: "go/types", typ: $funcType([ptrType$112], [ast.Expr], false)}, {prop: "index", name: "index", pkg: "go/types", typ: $funcType([ast.Expr, $Int64], [Type, $Int64], false)}, {prop: "isValidIndex", name: "isValidIndex", pkg: "go/types", typ: $funcType([ptrType$62, errors$1.Code, $String, $Bool], [$Bool], false)}, {prop: "indexedElts", name: "indexedElts", pkg: "go/types", typ: $funcType([sliceType$11, Type, $Int64], [$Int64], false)}, {prop: "op", name: "op", pkg: "go/types", typ: $funcType([opPredicates, ptrType$62, token.Token], [$Bool], false)}, {prop: "overflow", name: "overflow", pkg: "go/types", typ: $funcType([ptrType$62, token.Pos], [], false)}, {prop: "unary", name: "unary", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$20], [], false)}, {prop: "representable", name: "representable", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$8], [], false)}, {prop: "representation", name: "representation", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$8], [constant.Value, errors$1.Code], false)}, {prop: "invalidConversion", name: "invalidConversion", pkg: "go/types", typ: $funcType([errors$1.Code, ptrType$62, Type], [], false)}, {prop: "updateExprType", name: "updateExprType", pkg: "go/types", typ: $funcType([ast.Expr, Type, $Bool], [], false)}, {prop: "updateExprType0", name: "updateExprType0", pkg: "go/types", typ: $funcType([ast.Expr, ast.Expr, Type, $Bool], [], false)}, {prop: "updateExprVal", name: "updateExprVal", pkg: "go/types", typ: $funcType([ast.Expr, constant.Value], [], false)}, {prop: "convertUntyped", name: "convertUntyped", pkg: "go/types", typ: $funcType([ptrType$62, Type], [], false)}, {prop: "implicitTypeAndValue", name: "implicitTypeAndValue", pkg: "go/types", typ: $funcType([ptrType$62, Type], [Type, constant.Value, errors$1.Code], false)}, {prop: "comparison", name: "comparison", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$62, token.Token, $Bool], [], false)}, {prop: "incomparableCause", name: "incomparableCause", pkg: "go/types", typ: $funcType([Type], [$String], false)}, {prop: "kindString", name: "kindString", pkg: "go/types", typ: $funcType([Type], [$String], false)}, {prop: "shift", name: "shift", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$62, ast.Expr, token.Token], [], false)}, {prop: "binary", name: "binary", pkg: "go/types", typ: $funcType([ptrType$62, ast.Expr, ast.Expr, ast.Expr, token.Token, token.Pos], [], false)}, {prop: "rawExpr", name: "rawExpr", pkg: "go/types", typ: $funcType([ptrType$62, ast.Expr, Type, $Bool], [exprKind], false)}, {prop: "nonGeneric", name: "nonGeneric", pkg: "go/types", typ: $funcType([ptrType$62], [], false)}, {prop: "exprInternal", name: "exprInternal", pkg: "go/types", typ: $funcType([ptrType$62, ast.Expr, Type], [exprKind], false)}, {prop: "typeAssertion", name: "typeAssertion", pkg: "go/types", typ: $funcType([ast.Expr, ptrType$62, Type, $Bool], [], false)}, {prop: "expr", name: "expr", pkg: "go/types", typ: $funcType([ptrType$62, ast.Expr], [], false)}, {prop: "multiExpr", name: "multiExpr", pkg: "go/types", typ: $funcType([ptrType$62, ast.Expr], [], false)}, {prop: "exprWithHint", name: "exprWithHint", pkg: "go/types", typ: $funcType([ptrType$62, ast.Expr, Type], [], false)}, {prop: "exprOrType", name: "exprOrType", pkg: "go/types", typ: $funcType([ptrType$62, ast.Expr, $Bool], [], false)}, {prop: "exclude", name: "exclude", pkg: "go/types", typ: $funcType([ptrType$62, $Uint], [], false)}, {prop: "singleValue", name: "singleValue", pkg: "go/types", typ: $funcType([ptrType$62], [], false)}, {prop: "qualifier", name: "qualifier", pkg: "go/types", typ: $funcType([ptrType$1], [$String], false)}, {prop: "markImports", name: "markImports", pkg: "go/types", typ: $funcType([ptrType$1], [], false)}, {prop: "sprintf", name: "sprintf", pkg: "go/types", typ: $funcType([$String, sliceType$6], [$String], true)}, {prop: "trace", name: "trace", pkg: "go/types", typ: $funcType([token.Pos, $String, sliceType$6], [], true)}, {prop: "dump", name: "dump", pkg: "go/types", typ: $funcType([$String, sliceType$6], [], true)}, {prop: "report", name: "report", pkg: "go/types", typ: $funcType([ptrType$104], [], false)}, {prop: "error", name: "error", pkg: "go/types", typ: $funcType([positioner, errors$1.Code, $String], [], false)}, {prop: "errorf", name: "errorf", pkg: "go/types", typ: $funcType([positioner, errors$1.Code, $String, sliceType$6], [], true)}, {prop: "softErrorf", name: "softErrorf", pkg: "go/types", typ: $funcType([positioner, errors$1.Code, $String, sliceType$6], [], true)}, {prop: "versionErrorf", name: "versionErrorf", pkg: "go/types", typ: $funcType([positioner, $String, $String, sliceType$6], [], true)}, {prop: "reportAltDecl", name: "reportAltDecl", pkg: "go/types", typ: $funcType([Object], [], false)}, {prop: "declare", name: "declare", pkg: "go/types", typ: $funcType([ptrType, ptrType$30, Object, token.Pos], [], false)}, {prop: "objDecl", name: "objDecl", pkg: "go/types", typ: $funcType([Object, ptrType$9], [], false)}, {prop: "validCycle", name: "validCycle", pkg: "go/types", typ: $funcType([Object], [$Bool], false)}, {prop: "cycleError", name: "cycleError", pkg: "go/types", typ: $funcType([sliceType$8], [], false)}, {prop: "walkDecls", name: "walkDecls", pkg: "go/types", typ: $funcType([sliceType$42, funcType$7], [], false)}, {prop: "walkDecl", name: "walkDecl", pkg: "go/types", typ: $funcType([ast.Decl, funcType$7], [], false)}, {prop: "constDecl", name: "constDecl", pkg: "go/types", typ: $funcType([ptrType$32, ast.Expr, ast.Expr, $Bool], [], false)}, {prop: "varDecl", name: "varDecl", pkg: "go/types", typ: $funcType([ptrType$16, sliceType$10, ast.Expr, ast.Expr], [], false)}, {prop: "isImportedConstraint", name: "isImportedConstraint", pkg: "go/types", typ: $funcType([Type], [$Bool], false)}, {prop: "typeDecl", name: "typeDecl", pkg: "go/types", typ: $funcType([ptrType$17, ptrType$90, ptrType$9], [], false)}, {prop: "collectTypeParams", name: "collectTypeParams", pkg: "go/types", typ: $funcType([ptrType$84, ptrType$49], [], false)}, {prop: "bound", name: "bound", pkg: "go/types", typ: $funcType([ast.Expr], [Type], false)}, {prop: "declareTypeParams", name: "declareTypeParams", pkg: "go/types", typ: $funcType([sliceType$9, sliceType$22], [sliceType$9], false)}, {prop: "collectMethods", name: "collectMethods", pkg: "go/types", typ: $funcType([ptrType$17], [], false)}, {prop: "checkFieldUniqueness", name: "checkFieldUniqueness", pkg: "go/types", typ: $funcType([ptrType$9], [], false)}, {prop: "funcDecl", name: "funcDecl", pkg: "go/types", typ: $funcType([ptrType$2, ptrType$58], [], false)}, {prop: "declStmt", name: "declStmt", pkg: "go/types", typ: $funcType([ast.Decl], [], false)}, {prop: "conversion", name: "conversion", pkg: "go/types", typ: $funcType([ptrType$62, Type], [], false)}, {prop: "addDeclDep", name: "addDeclDep", pkg: "go/types", typ: $funcType([Object], [], false)}, {prop: "brokenAlias", name: "brokenAlias", pkg: "go/types", typ: $funcType([ptrType$17], [], false)}, {prop: "validAlias", name: "validAlias", pkg: "go/types", typ: $funcType([ptrType$17, Type], [], false)}, {prop: "isBrokenAlias", name: "isBrokenAlias", pkg: "go/types", typ: $funcType([ptrType$17], [$Bool], false)}, {prop: "rememberUntyped", name: "rememberUntyped", pkg: "go/types", typ: $funcType([ast.Expr, $Bool, operandMode, ptrType$8, constant.Value], [], false)}, {prop: "later", name: "later", pkg: "go/types", typ: $funcType([funcType$1], [ptrType$124], false)}, {prop: "push", name: "push", pkg: "go/types", typ: $funcType([Object], [$Int], false)}, {prop: "pop", name: "pop", pkg: "go/types", typ: $funcType([], [Object], false)}, {prop: "needsCleanup", name: "needsCleanup", pkg: "go/types", typ: $funcType([cleaner], [], false)}, {prop: "initFiles", name: "initFiles", pkg: "go/types", typ: $funcType([sliceType$35], [], false)}, {prop: "handleBailout", name: "handleBailout", pkg: "go/types", typ: $funcType([ptrType$103], [], false)}, {prop: "Files", name: "Files", pkg: "", typ: $funcType([sliceType$35], [$error], false)}, {prop: "checkFiles", name: "checkFiles", pkg: "go/types", typ: $funcType([sliceType$35], [$error], false)}, {prop: "processDelayed", name: "processDelayed", pkg: "go/types", typ: $funcType([$Int], [], false)}, {prop: "cleanup", name: "cleanup", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "record", name: "record", pkg: "go/types", typ: $funcType([ptrType$62], [], false)}, {prop: "recordUntyped", name: "recordUntyped", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "recordTypeAndValue", name: "recordTypeAndValue", pkg: "go/types", typ: $funcType([ast.Expr, operandMode, Type, constant.Value], [], false)}, {prop: "recordBuiltinType", name: "recordBuiltinType", pkg: "go/types", typ: $funcType([ast.Expr, ptrType$27], [], false)}, {prop: "recordCommaOkTypes", name: "recordCommaOkTypes", pkg: "go/types", typ: $funcType([ast.Expr, arrayType$3], [], false)}, {prop: "recordInstance", name: "recordInstance", pkg: "go/types", typ: $funcType([ast.Expr, sliceType$2, Type], [], false)}, {prop: "recordDef", name: "recordDef", pkg: "go/types", typ: $funcType([ptrType$30, Object], [], false)}, {prop: "recordUse", name: "recordUse", pkg: "go/types", typ: $funcType([ptrType$30, Object], [], false)}, {prop: "recordImplicit", name: "recordImplicit", pkg: "go/types", typ: $funcType([ast.Node, Object], [], false)}, {prop: "recordSelection", name: "recordSelection", pkg: "go/types", typ: $funcType([ptrType$36, SelectionKind, Type, Object, sliceType$13, $Bool], [], false)}, {prop: "recordScope", name: "recordScope", pkg: "go/types", typ: $funcType([ast.Node, ptrType], [], false)}, {prop: "funcInst", name: "funcInst", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$112], [], false)}, {prop: "instantiateSignature", name: "instantiateSignature", pkg: "go/types", typ: $funcType([token.Pos, ptrType$27, sliceType$2, sliceType$11], [ptrType$27], false)}, {prop: "callExpr", name: "callExpr", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$86], [exprKind], false)}, {prop: "exprList", name: "exprList", pkg: "go/types", typ: $funcType([sliceType$11, $Bool], [sliceType$29, $Bool], false)}, {prop: "arguments$", name: "arguments", pkg: "go/types", typ: $funcType([ptrType$86, ptrType$27, sliceType$2, sliceType$29, sliceType$11], [ptrType$27], false)}, {prop: "selector", name: "selector", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$36, ptrType$9, $Bool], [], false)}, {prop: "use", name: "use", pkg: "go/types", typ: $funcType([sliceType$11], [], true)}, {prop: "useLHS", name: "useLHS", pkg: "go/types", typ: $funcType([sliceType$11], [], true)}, {prop: "builtin", name: "builtin", pkg: "go/types", typ: $funcType([ptrType$62, ptrType$86, builtinId], [$Bool], false)}, {prop: "applyTypeFunc", name: "applyTypeFunc", pkg: "go/types", typ: $funcType([funcType$8, ptrType$62, builtinId], [Type], false)}, {prop: "assignment", name: "assignment", pkg: "go/types", typ: $funcType([ptrType$62, Type, $String], [], false)}, {prop: "initConst", name: "initConst", pkg: "go/types", typ: $funcType([ptrType$32, ptrType$62], [], false)}, {prop: "initVar", name: "initVar", pkg: "go/types", typ: $funcType([ptrType$16, ptrType$62, $String], [Type], false)}, {prop: "assignVar", name: "assignVar", pkg: "go/types", typ: $funcType([ast.Expr, ptrType$62], [Type], false)}, {prop: "typesSummary", name: "typesSummary", pkg: "go/types", typ: $funcType([sliceType$2, $Bool], [$String], false)}, {prop: "assignError", name: "assignError", pkg: "go/types", typ: $funcType([sliceType$11, $Int, $Int], [], false)}, {prop: "initVars", name: "initVars", pkg: "go/types", typ: $funcType([sliceType$10, sliceType$11, ast.Stmt], [], false)}, {prop: "assignVars", name: "assignVars", pkg: "go/types", typ: $funcType([sliceType$11, sliceType$11], [], false)}, {prop: "shortVarDecl", name: "shortVarDecl", pkg: "go/types", typ: $funcType([positioner, sliceType$11, sliceType$11], [], false)}]; + ptrType$29.methods = [{prop: "Dir", name: "Dir", pkg: "", typ: $funcType([], [ChanDir], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$8.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [BasicKind], false)}, {prop: "Info", name: "Info", pkg: "", typ: $funcType([], [BasicInfo], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$10.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + Error.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$125.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [$error], false)}]; + ptrType$101.methods = [{prop: "alignof", name: "alignof", pkg: "go/types", typ: $funcType([Type], [$Int64], false)}, {prop: "offsetsof", name: "offsetsof", pkg: "go/types", typ: $funcType([ptrType$11], [sliceType$19], false)}, {prop: "offsetof", name: "offsetof", pkg: "go/types", typ: $funcType([Type, sliceType$13], [$Int64], false)}, {prop: "sizeof", name: "sizeof", pkg: "go/types", typ: $funcType([Type], [$Int64], false)}, {prop: "Check", name: "Check", pkg: "", typ: $funcType([$String, ptrType$24, sliceType$35, ptrType$110], [ptrType$1, $error], false)}]; + ptrType$110.methods = [{prop: "TypeOf", name: "TypeOf", pkg: "", typ: $funcType([ast.Expr], [Type], false)}, {prop: "ObjectOf", name: "ObjectOf", pkg: "", typ: $funcType([ptrType$30], [Object], false)}]; + TypeAndValue.methods = [{prop: "IsVoid", name: "IsVoid", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsType", name: "IsType", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsBuiltin", name: "IsBuiltin", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsValue", name: "IsValue", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsNil", name: "IsNil", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Addressable", name: "Addressable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Assignable", name: "Assignable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "HasOk", name: "HasOk", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$102.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + version.init("go/types", [{prop: "major", name: "major", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "minor", name: "minor", embedded: false, exported: false, typ: $Int, tag: ""}]); + Union.init("go/types", [{prop: "terms", name: "terms", embedded: false, exported: false, typ: sliceType$12, tag: ""}]); + Term.init("go/types", [{prop: "tilde", name: "tilde", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: Type, tag: ""}]); + unifier.init("go/types", [{prop: "exact", name: "exact", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "x", name: "x", embedded: false, exported: false, typ: tparamsList, tag: ""}, {prop: "y", name: "y", embedded: false, exported: false, typ: tparamsList, tag: ""}, {prop: "types", name: "types", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "depth", name: "depth", embedded: false, exported: false, typ: $Int, tag: ""}]); + tparamsList.init("go/types", [{prop: "unifier", name: "unifier", embedded: false, exported: false, typ: ptrType$22, tag: ""}, {prop: "tparams", name: "tparams", embedded: false, exported: false, typ: sliceType$9, tag: ""}, {prop: "indices", name: "indices", embedded: false, exported: false, typ: sliceType$13, tag: ""}]); + term.init("go/types", [{prop: "tilde", name: "tilde", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: Type, tag: ""}]); + Qualifier.init([ptrType$1], [$String], false); + typeWriter.init("go/types", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: ptrType$114, tag: ""}, {prop: "seen", name: "seen", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "qf", name: "qf", embedded: false, exported: false, typ: Qualifier, tag: ""}, {prop: "ctxt", name: "ctxt", embedded: false, exported: false, typ: ptrType$51, tag: ""}, {prop: "tparams", name: "tparams", embedded: false, exported: false, typ: ptrType$48, tag: ""}, {prop: "paramNames", name: "paramNames", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "tpSubscripts", name: "tpSubscripts", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "pkgInfo", name: "pkgInfo", embedded: false, exported: false, typ: $Bool, tag: ""}]); + _TypeSet.init("go/types", [{prop: "methods", name: "methods", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "terms", name: "terms", embedded: false, exported: false, typ: termlist, tag: ""}, {prop: "comparable", name: "comparable", embedded: false, exported: false, typ: $Bool, tag: ""}]); + byUniqueMethodName.init(ptrType$2); + TypeParam.init("go/types", [{prop: "check", name: "check", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "id", name: "id", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "obj", name: "obj", embedded: false, exported: false, typ: ptrType$17, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "bound", name: "bound", embedded: false, exported: false, typ: Type, tag: ""}]); + TypeParamList.init("go/types", [{prop: "tparams", name: "tparams", embedded: false, exported: false, typ: sliceType$9, tag: ""}]); + TypeList.init("go/types", [{prop: "types", name: "types", embedded: false, exported: false, typ: sliceType$2, tag: ""}]); + Type.init([{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Underlying", name: "Underlying", pkg: "", typ: $funcType([], [Type], false)}]); + Tuple.init("go/types", [{prop: "vars", name: "vars", embedded: false, exported: false, typ: sliceType$10, tag: ""}]); + termlist.init(ptrType$4); + substMap.init(ptrType$14, Type); + subster.init("go/types", [{prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "smap", name: "smap", embedded: false, exported: false, typ: substMap, tag: ""}, {prop: "check", name: "check", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "expanding", name: "expanding", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "ctxt", name: "ctxt", embedded: false, exported: false, typ: ptrType$51, tag: ""}]); + Struct.init("go/types", [{prop: "fields", name: "fields", embedded: false, exported: false, typ: sliceType$10, tag: ""}, {prop: "tags", name: "tags", embedded: false, exported: false, typ: sliceType$5, tag: ""}]); + valueMap.init($emptyInterface, sliceType$18); + valueType.init("go/types", [{prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: Type, tag: ""}]); + Slice.init("go/types", [{prop: "elem", name: "elem", embedded: false, exported: false, typ: Type, tag: ""}]); + Sizes.init([{prop: "Alignof", name: "Alignof", pkg: "", typ: $funcType([Type], [$Int64], false)}, {prop: "Offsetsof", name: "Offsetsof", pkg: "", typ: $funcType([sliceType$10], [sliceType$19], false)}, {prop: "Sizeof", name: "Sizeof", pkg: "", typ: $funcType([Type], [$Int64], false)}]); + StdSizes.init("", [{prop: "WordSize", name: "WordSize", embedded: false, exported: true, typ: $Int64, tag: ""}, {prop: "MaxAlign", name: "MaxAlign", embedded: false, exported: true, typ: $Int64, tag: ""}]); + Signature.init("go/types", [{prop: "rparams", name: "rparams", embedded: false, exported: false, typ: ptrType$48, tag: ""}, {prop: "tparams", name: "tparams", embedded: false, exported: false, typ: ptrType$48, tag: ""}, {prop: "scope", name: "scope", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "recv", name: "recv", embedded: false, exported: false, typ: ptrType$16, tag: ""}, {prop: "params", name: "params", embedded: false, exported: false, typ: ptrType$15, tag: ""}, {prop: "results", name: "results", embedded: false, exported: false, typ: ptrType$15, tag: ""}, {prop: "variadic", name: "variadic", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Selection.init("go/types", [{prop: "kind", name: "kind", embedded: false, exported: false, typ: SelectionKind, tag: ""}, {prop: "recv", name: "recv", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "obj", name: "obj", embedded: false, exported: false, typ: Object, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: sliceType$13, tag: ""}, {prop: "indirect", name: "indirect", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Scope.init("go/types", [{prop: "parent", name: "parent", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "children", name: "children", embedded: false, exported: false, typ: sliceType$20, tag: ""}, {prop: "number", name: "number", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "elems", name: "elems", embedded: false, exported: false, typ: mapType$1, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "end", name: "end", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "comment", name: "comment", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "isFunc", name: "isFunc", embedded: false, exported: false, typ: $Bool, tag: ""}]); + lazyObject.init("go/types", [{prop: "parent", name: "parent", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "resolve", name: "resolve", embedded: false, exported: false, typ: funcType$4, tag: ""}, {prop: "obj", name: "obj", embedded: false, exported: false, typ: Object, tag: ""}, {prop: "once", name: "once", embedded: false, exported: false, typ: sync.Once, tag: ""}]); + declInfo.init("go/types", [{prop: "file", name: "file", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "lhs", name: "lhs", embedded: false, exported: false, typ: sliceType$10, tag: ""}, {prop: "vtyp", name: "vtyp", embedded: false, exported: false, typ: ast.Expr, tag: ""}, {prop: "init", name: "init", embedded: false, exported: false, typ: ast.Expr, tag: ""}, {prop: "inherited", name: "inherited", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "tdecl", name: "tdecl", embedded: false, exported: false, typ: ptrType$90, tag: ""}, {prop: "fdecl", name: "fdecl", embedded: false, exported: false, typ: ptrType$87, tag: ""}, {prop: "deps", name: "deps", embedded: false, exported: false, typ: mapType$2, tag: ""}]); + inSourceOrder.init(Object); + ifacePair.init("go/types", [{prop: "x", name: "x", embedded: false, exported: false, typ: ptrType$13, tag: ""}, {prop: "y", name: "y", embedded: false, exported: false, typ: ptrType$13, tag: ""}, {prop: "prev", name: "prev", embedded: false, exported: false, typ: ptrType$23, tag: ""}]); + Pointer.init("go/types", [{prop: "base", name: "base", embedded: false, exported: false, typ: Type, tag: ""}]); + Package.init("go/types", [{prop: "path", name: "path", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "scope", name: "scope", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "complete", name: "complete", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "imports", name: "imports", embedded: false, exported: false, typ: sliceType$24, tag: ""}, {prop: "fake", name: "fake", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "cgo", name: "cgo", embedded: false, exported: false, typ: $Bool, tag: ""}]); + operand.init("go/types", [{prop: "mode", name: "mode", embedded: false, exported: false, typ: operandMode, tag: ""}, {prop: "expr", name: "expr", embedded: false, exported: false, typ: ast.Expr, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "val", name: "val", embedded: false, exported: false, typ: constant.Value, tag: ""}, {prop: "id", name: "id", embedded: false, exported: false, typ: builtinId, tag: ""}]); + objset.init($String, Object); + Object.init([{prop: "Exported", name: "Exported", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Id", name: "Id", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Parent", name: "Parent", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "Pkg", name: "Pkg", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "color", name: "color", pkg: "go/types", typ: $funcType([], [color], false)}, {prop: "order", name: "order", pkg: "go/types", typ: $funcType([], [$Uint32], false)}, {prop: "sameId", name: "sameId", pkg: "go/types", typ: $funcType([ptrType$1, $String], [$Bool], false)}, {prop: "scopePos", name: "scopePos", pkg: "go/types", typ: $funcType([], [token.Pos], false)}, {prop: "setColor", name: "setColor", pkg: "go/types", typ: $funcType([color], [], false)}, {prop: "setOrder", name: "setOrder", pkg: "go/types", typ: $funcType([$Uint32], [], false)}, {prop: "setParent", name: "setParent", pkg: "go/types", typ: $funcType([ptrType], [], false)}, {prop: "setScopePos", name: "setScopePos", pkg: "go/types", typ: $funcType([token.Pos], [], false)}, {prop: "setType", name: "setType", pkg: "go/types", typ: $funcType([Type], [], false)}]); + object.init("go/types", [{prop: "parent", name: "parent", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "pkg", name: "pkg", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "order_", name: "order_", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "color_", name: "color_", embedded: false, exported: false, typ: color, tag: ""}, {prop: "scopePos_", name: "scopePos_", embedded: false, exported: false, typ: token.Pos, tag: ""}]); + PkgName.init("go/types", [{prop: "object", name: "object", embedded: true, exported: false, typ: object, tag: ""}, {prop: "imported", name: "imported", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "used", name: "used", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Const.init("go/types", [{prop: "object", name: "object", embedded: true, exported: false, typ: object, tag: ""}, {prop: "val", name: "val", embedded: false, exported: false, typ: constant.Value, tag: ""}]); + TypeName.init("go/types", [{prop: "object", name: "object", embedded: true, exported: false, typ: object, tag: ""}]); + Var.init("go/types", [{prop: "object", name: "object", embedded: true, exported: false, typ: object, tag: ""}, {prop: "embedded", name: "embedded", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "isField", name: "isField", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "used", name: "used", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "origin", name: "origin", embedded: false, exported: false, typ: ptrType$16, tag: ""}]); + Func.init("go/types", [{prop: "object", name: "object", embedded: true, exported: false, typ: object, tag: ""}, {prop: "hasPtrRecv_", name: "hasPtrRecv_", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "origin", name: "origin", embedded: false, exported: false, typ: ptrType$2, tag: ""}]); + Label.init("go/types", [{prop: "object", name: "object", embedded: true, exported: false, typ: object, tag: ""}, {prop: "used", name: "used", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Builtin.init("go/types", [{prop: "object", name: "object", embedded: true, exported: false, typ: object, tag: ""}, {prop: "id", name: "id", embedded: false, exported: false, typ: builtinId, tag: ""}]); + Nil.init("go/types", [{prop: "object", name: "object", embedded: true, exported: false, typ: object, tag: ""}]); + Named.init("go/types", [{prop: "check", name: "check", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "obj", name: "obj", embedded: false, exported: false, typ: ptrType$17, tag: ""}, {prop: "fromRHS", name: "fromRHS", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "inst", name: "inst", embedded: false, exported: false, typ: ptrType$52, tag: ""}, {prop: "mu", name: "mu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "state_", name: "state_", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "underlying", name: "underlying", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "tparams", name: "tparams", embedded: false, exported: false, typ: ptrType$48, tag: ""}, {prop: "methods", name: "methods", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "loader", name: "loader", embedded: false, exported: false, typ: funcType$6, tag: ""}]); + instance.init("go/types", [{prop: "orig", name: "orig", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "targs", name: "targs", embedded: false, exported: false, typ: ptrType$56, tag: ""}, {prop: "expandedMethods", name: "expandedMethods", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "ctxt", name: "ctxt", embedded: false, exported: false, typ: ptrType$51, tag: ""}]); + monoGraph.init("go/types", [{prop: "vertices", name: "vertices", embedded: false, exported: false, typ: sliceType$37, tag: ""}, {prop: "edges", name: "edges", embedded: false, exported: false, typ: sliceType$38, tag: ""}, {prop: "canon", name: "canon", embedded: false, exported: false, typ: mapType$3, tag: ""}, {prop: "nameIdx", name: "nameIdx", embedded: false, exported: false, typ: mapType$4, tag: ""}]); + monoVertex.init("go/types", [{prop: "weight", name: "weight", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "pre", name: "pre", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "len", name: "len", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "obj", name: "obj", embedded: false, exported: false, typ: ptrType$17, tag: ""}]); + monoEdge.init("go/types", [{prop: "dst", name: "dst", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "src", name: "src", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "weight", name: "weight", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: Type, tag: ""}]); + MethodSet.init("go/types", [{prop: "list", name: "list", embedded: false, exported: false, typ: sliceType$1, tag: ""}]); + methodSet.init($String, ptrType$3); + Map.init("go/types", [{prop: "key", name: "key", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: Type, tag: ""}]); + embeddedType.init("go/types", [{prop: "typ", name: "typ", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: sliceType$13, tag: ""}, {prop: "indirect", name: "indirect", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "multiples", name: "multiples", embedded: false, exported: false, typ: $Bool, tag: ""}]); + instanceLookup.init("go/types", [{prop: "buf", name: "buf", embedded: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "m", name: "m", embedded: false, exported: false, typ: mapType$5, tag: ""}]); + block.init("go/types", [{prop: "parent", name: "parent", embedded: false, exported: false, typ: ptrType$92, tag: ""}, {prop: "lstmt", name: "lstmt", embedded: false, exported: false, typ: ptrType$65, tag: ""}, {prop: "labels", name: "labels", embedded: false, exported: false, typ: mapType$6, tag: ""}]); + Interface.init("go/types", [{prop: "check", name: "check", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "methods", name: "methods", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "embeddeds", name: "embeddeds", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "embedPos", name: "embedPos", embedded: false, exported: false, typ: ptrType$6, tag: ""}, {prop: "implicit", name: "implicit", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "complete", name: "complete", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "tset", name: "tset", embedded: false, exported: false, typ: ptrType$7, tag: ""}]); + dependency.init([{prop: "Exported", name: "Exported", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Id", name: "Id", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Parent", name: "Parent", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "Pkg", name: "Pkg", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "color", name: "color", pkg: "go/types", typ: $funcType([], [color], false)}, {prop: "isDependency", name: "isDependency", pkg: "go/types", typ: $funcType([], [], false)}, {prop: "order", name: "order", pkg: "go/types", typ: $funcType([], [$Uint32], false)}, {prop: "sameId", name: "sameId", pkg: "go/types", typ: $funcType([ptrType$1, $String], [$Bool], false)}, {prop: "scopePos", name: "scopePos", pkg: "go/types", typ: $funcType([], [token.Pos], false)}, {prop: "setColor", name: "setColor", pkg: "go/types", typ: $funcType([color], [], false)}, {prop: "setOrder", name: "setOrder", pkg: "go/types", typ: $funcType([$Uint32], [], false)}, {prop: "setParent", name: "setParent", pkg: "go/types", typ: $funcType([ptrType], [], false)}, {prop: "setScopePos", name: "setScopePos", pkg: "go/types", typ: $funcType([token.Pos], [], false)}, {prop: "setType", name: "setType", pkg: "go/types", typ: $funcType([Type], [], false)}]); + graphNode.init("go/types", [{prop: "obj", name: "obj", embedded: false, exported: false, typ: dependency, tag: ""}, {prop: "pred", name: "pred", embedded: false, exported: false, typ: nodeSet, tag: ""}, {prop: "succ", name: "succ", embedded: false, exported: false, typ: nodeSet, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "ndeps", name: "ndeps", embedded: false, exported: false, typ: $Int, tag: ""}]); + nodeSet.init(ptrType$95, $Bool); + nodeQueue.init(ptrType$95); + tpWalker.init("go/types", [{prop: "seen", name: "seen", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "tparams", name: "tparams", embedded: false, exported: false, typ: sliceType$9, tag: ""}]); + cycleFinder.init("go/types", [{prop: "tparams", name: "tparams", embedded: false, exported: false, typ: sliceType$9, tag: ""}, {prop: "types", name: "types", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "seen", name: "seen", embedded: false, exported: false, typ: mapType, tag: ""}]); + opPredicates.init(token.Token, funcType$3); + error_.init("go/types", [{prop: "desc", name: "desc", embedded: false, exported: false, typ: sliceType$31, tag: ""}, {prop: "code", name: "code", embedded: false, exported: false, typ: errors$1.Code, tag: ""}, {prop: "soft", name: "soft", embedded: false, exported: false, typ: $Bool, tag: ""}]); + errorDesc.init("go/types", [{prop: "posn", name: "posn", embedded: false, exported: false, typ: positioner, tag: ""}, {prop: "format", name: "format", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "args", name: "args", embedded: false, exported: false, typ: sliceType$6, tag: ""}]); + positioner.init([{prop: "Pos", name: "Pos", pkg: "", typ: $funcType([], [token.Pos], false)}]); + posSpan.init("go/types", [{prop: "start", name: "start", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "end", name: "end", embedded: false, exported: false, typ: token.Pos, tag: ""}]); + decl.init([{prop: "node", name: "node", pkg: "go/types", typ: $funcType([], [ast.Node], false)}]); + importDecl.init("go/types", [{prop: "spec", name: "spec", embedded: false, exported: false, typ: ptrType$106, tag: ""}]); + constDecl.init("go/types", [{prop: "spec", name: "spec", embedded: false, exported: false, typ: ptrType$88, tag: ""}, {prop: "iota", name: "iota", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: ast.Expr, tag: ""}, {prop: "init", name: "init", embedded: false, exported: false, typ: sliceType$11, tag: ""}, {prop: "inherited", name: "inherited", embedded: false, exported: false, typ: $Bool, tag: ""}]); + varDecl.init("go/types", [{prop: "spec", name: "spec", embedded: false, exported: false, typ: ptrType$88, tag: ""}]); + typeDecl.init("go/types", [{prop: "spec", name: "spec", embedded: false, exported: false, typ: ptrType$90, tag: ""}]); + funcDecl.init("go/types", [{prop: "decl", name: "decl", embedded: false, exported: false, typ: ptrType$87, tag: ""}]); + Context.init("go/types", [{prop: "mu", name: "mu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "typeMap", name: "typeMap", embedded: false, exported: false, typ: mapType$7, tag: ""}, {prop: "nextID", name: "nextID", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "originIDs", name: "originIDs", embedded: false, exported: false, typ: mapType$8, tag: ""}]); + ctxtEntry.init("go/types", [{prop: "orig", name: "orig", embedded: false, exported: false, typ: Type, tag: ""}, {prop: "targs", name: "targs", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "instance", name: "instance", embedded: false, exported: false, typ: Type, tag: ""}]); + exprInfo.init("go/types", [{prop: "isLhs", name: "isLhs", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "mode", name: "mode", embedded: false, exported: false, typ: operandMode, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "val", name: "val", embedded: false, exported: false, typ: constant.Value, tag: ""}]); + environment.init("go/types", [{prop: "decl", name: "decl", embedded: false, exported: false, typ: ptrType$58, tag: ""}, {prop: "scope", name: "scope", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "iota", name: "iota", embedded: false, exported: false, typ: constant.Value, tag: ""}, {prop: "errpos", name: "errpos", embedded: false, exported: false, typ: positioner, tag: ""}, {prop: "inTParamList", name: "inTParamList", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "sig", name: "sig", embedded: false, exported: false, typ: ptrType$27, tag: ""}, {prop: "isPanic", name: "isPanic", embedded: false, exported: false, typ: mapType$9, tag: ""}, {prop: "hasLabel", name: "hasLabel", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "hasCallOrRecv", name: "hasCallOrRecv", embedded: false, exported: false, typ: $Bool, tag: ""}]); + importKey.init("go/types", [{prop: "path", name: "path", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "dir", name: "dir", embedded: false, exported: false, typ: $String, tag: ""}]); + dotImportKey.init("go/types", [{prop: "scope", name: "scope", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}]); + action.init("go/types", [{prop: "f", name: "f", embedded: false, exported: false, typ: funcType$1, tag: ""}, {prop: "desc", name: "desc", embedded: false, exported: false, typ: ptrType$109, tag: ""}]); + actionDesc.init("go/types", [{prop: "pos", name: "pos", embedded: false, exported: false, typ: positioner, tag: ""}, {prop: "format", name: "format", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "args", name: "args", embedded: false, exported: false, typ: sliceType$6, tag: ""}]); + Checker.init("go/types", [{prop: "conf", name: "conf", embedded: false, exported: false, typ: ptrType$101, tag: ""}, {prop: "ctxt", name: "ctxt", embedded: false, exported: false, typ: ptrType$51, tag: ""}, {prop: "fset", name: "fset", embedded: false, exported: false, typ: ptrType$24, tag: ""}, {prop: "pkg", name: "pkg", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "Info", name: "Info", embedded: true, exported: true, typ: ptrType$110, tag: ""}, {prop: "version", name: "version", embedded: false, exported: false, typ: version, tag: ""}, {prop: "nextID", name: "nextID", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "objMap", name: "objMap", embedded: false, exported: false, typ: mapType$11, tag: ""}, {prop: "impMap", name: "impMap", embedded: false, exported: false, typ: mapType$12, tag: ""}, {prop: "valids", name: "valids", embedded: false, exported: false, typ: instanceLookup, tag: ""}, {prop: "pkgPathMap", name: "pkgPathMap", embedded: false, exported: false, typ: mapType$14, tag: ""}, {prop: "seenPkgMap", name: "seenPkgMap", embedded: false, exported: false, typ: mapType$15, tag: ""}, {prop: "files", name: "files", embedded: false, exported: false, typ: sliceType$35, tag: ""}, {prop: "imports", name: "imports", embedded: false, exported: false, typ: sliceType$36, tag: ""}, {prop: "dotImportMap", name: "dotImportMap", embedded: false, exported: false, typ: mapType$16, tag: ""}, {prop: "recvTParamMap", name: "recvTParamMap", embedded: false, exported: false, typ: mapType$17, tag: ""}, {prop: "brokenAliases", name: "brokenAliases", embedded: false, exported: false, typ: mapType$18, tag: ""}, {prop: "unionTypeSets", name: "unionTypeSets", embedded: false, exported: false, typ: mapType$19, tag: ""}, {prop: "mono", name: "mono", embedded: false, exported: false, typ: monoGraph, tag: ""}, {prop: "firstErr", name: "firstErr", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "methods", name: "methods", embedded: false, exported: false, typ: mapType$20, tag: ""}, {prop: "untyped", name: "untyped", embedded: false, exported: false, typ: mapType$21, tag: ""}, {prop: "delayed", name: "delayed", embedded: false, exported: false, typ: sliceType$39, tag: ""}, {prop: "objPath", name: "objPath", embedded: false, exported: false, typ: sliceType$8, tag: ""}, {prop: "cleaners", name: "cleaners", embedded: false, exported: false, typ: sliceType$40, tag: ""}, {prop: "environment", name: "environment", embedded: true, exported: false, typ: environment, tag: ""}, {prop: "indent", name: "indent", embedded: false, exported: false, typ: $Int, tag: ""}]); + cleaner.init([{prop: "cleanup", name: "cleanup", pkg: "go/types", typ: $funcType([], [], false)}]); + bailout.init("", []); + Chan.init("go/types", [{prop: "dir", name: "dir", embedded: false, exported: false, typ: ChanDir, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: Type, tag: ""}]); + Basic.init("go/types", [{prop: "kind", name: "kind", embedded: false, exported: false, typ: BasicKind, tag: ""}, {prop: "info", name: "info", embedded: false, exported: false, typ: BasicInfo, tag: ""}, {prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}]); + Array.init("go/types", [{prop: "len", name: "len", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "elem", name: "elem", embedded: false, exported: false, typ: Type, tag: ""}]); + Error.init("go/types", [{prop: "Fset", name: "Fset", embedded: false, exported: true, typ: ptrType$24, tag: ""}, {prop: "Pos", name: "Pos", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "Msg", name: "Msg", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Soft", name: "Soft", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "go116code", name: "go116code", embedded: false, exported: false, typ: errors$1.Code, tag: ""}, {prop: "go116start", name: "go116start", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "go116end", name: "go116end", embedded: false, exported: false, typ: token.Pos, tag: ""}]); + ArgumentError.init("", [{prop: "Index", name: "Index", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + Importer.init([{prop: "Import", name: "Import", pkg: "", typ: $funcType([$String], [ptrType$1, $error], false)}]); + ImporterFrom.init([{prop: "Import", name: "Import", pkg: "", typ: $funcType([$String], [ptrType$1, $error], false)}, {prop: "ImportFrom", name: "ImportFrom", pkg: "", typ: $funcType([$String, $String, ImportMode], [ptrType$1, $error], false)}]); + Config.init("go/types", [{prop: "Context", name: "Context", embedded: false, exported: true, typ: ptrType$51, tag: ""}, {prop: "GoVersion", name: "GoVersion", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "IgnoreFuncBodies", name: "IgnoreFuncBodies", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "FakeImportC", name: "FakeImportC", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "go115UsesCgo", name: "go115UsesCgo", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "Error", name: "Error", embedded: false, exported: true, typ: funcType$9, tag: ""}, {prop: "Importer", name: "Importer", embedded: false, exported: true, typ: Importer, tag: ""}, {prop: "Sizes", name: "Sizes", embedded: false, exported: true, typ: Sizes, tag: ""}, {prop: "DisableUnusedImportCheck", name: "DisableUnusedImportCheck", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "oldComparableSemantics", name: "oldComparableSemantics", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Info.init("", [{prop: "Types", name: "Types", embedded: false, exported: true, typ: mapType$22, tag: ""}, {prop: "Instances", name: "Instances", embedded: false, exported: true, typ: mapType$23, tag: ""}, {prop: "Defs", name: "Defs", embedded: false, exported: true, typ: mapType$24, tag: ""}, {prop: "Uses", name: "Uses", embedded: false, exported: true, typ: mapType$24, tag: ""}, {prop: "Implicits", name: "Implicits", embedded: false, exported: true, typ: mapType$25, tag: ""}, {prop: "Selections", name: "Selections", embedded: false, exported: true, typ: mapType$26, tag: ""}, {prop: "Scopes", name: "Scopes", embedded: false, exported: true, typ: mapType$27, tag: ""}, {prop: "InitOrder", name: "InitOrder", embedded: false, exported: true, typ: sliceType$30, tag: ""}]); + TypeAndValue.init("go/types", [{prop: "mode", name: "mode", embedded: false, exported: false, typ: operandMode, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: constant.Value, tag: ""}]); + Instance.init("", [{prop: "TypeArgs", name: "TypeArgs", embedded: false, exported: true, typ: ptrType$56, tag: ""}, {prop: "Type", name: "Type", embedded: false, exported: true, typ: Type, tag: ""}]); + Initializer.init("", [{prop: "Lhs", name: "Lhs", embedded: false, exported: true, typ: sliceType$10, tag: ""}, {prop: "Rhs", name: "Rhs", embedded: false, exported: true, typ: ast.Expr, tag: ""}]); + methodInfo.init("go/types", [{prop: "obj", name: "obj", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "ptr", name: "ptr", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "recv", name: "recv", embedded: false, exported: false, typ: ptrType$30, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = heap.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = constant.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typeparams.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = parser.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors$1.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = regexp.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.Universe = ptrType.nil; + $pkg.Unsafe = ptrType$1.nil; + universeIota = $ifaceNil; + universeByte = $ifaceNil; + universeRune = $ifaceNil; + universeAny = $ifaceNil; + universeError = $ifaceNil; + universeComparable = $ifaceNil; + invalidTypeSet = new _TypeSet.ptr(sliceType.nil, termlist.nil, false); + lastID = 0; + emptyMethodSet = new MethodSet.ptr(sliceType$1.nil); + unaryOpPredicates = false; + binaryOpPredicates = false; + _r = regexp.MustCompile("^go([1-9]\\d*)\\.(0|[1-9]\\d*)$"); /* */ $s = 22; case 22: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + goVersionRx = _r; + allTermlist = new termlist([new term.ptr(false, $ifaceNil)]); + topTypeSet = new _TypeSet.ptr(sliceType.nil, allTermlist, false); + gcArchSizes = $makeMap($String.keyFor, [{ k: "386", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 4)) }, { k: "amd64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "amd64p32", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "arm", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 4)) }, { k: "arm64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "loong64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "mips", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 4)) }, { k: "mipsle", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 4)) }, { k: "mips64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "mips64le", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "ppc64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "ppc64le", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "riscv64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "s390x", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "sparc64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "wasm", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }]); + operandModeString = $toNativeArray($kindString, ["invalid operand", "no value", "built-in", "type", "constant", "variable", "map index expression", "value", "comma, ok expression", "comma, error expression", "cgo function"]); + emptyInterface = new Interface.ptr(ptrType$5.nil, sliceType.nil, sliceType$2.nil, ptrType$6.nil, false, true, topTypeSet); + gccgoArchSizes = $makeMap($String.keyFor, [{ k: "386", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 4)) }, { k: "alpha", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "amd64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "amd64p32", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "arm", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "armbe", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "arm64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "arm64be", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "ia64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "loong64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "m68k", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 2)) }, { k: "mips", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "mipsle", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "mips64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "mips64le", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "mips64p32", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "mips64p32le", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "nios2", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "ppc", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "ppc64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "ppc64le", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "riscv", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "riscv64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "s390", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "s390x", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "sh", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "shbe", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "sparc", v: new StdSizes.ptr(new $Int64(0, 4), new $Int64(0, 8)) }, { k: "sparc64", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }, { k: "wasm", v: new StdSizes.ptr(new $Int64(0, 8), new $Int64(0, 8)) }]); + stdSizes = SizesFor("gc", "amd64"); + op2str1 = $toNativeArray($kindString, ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "bitwise complement"]); + op2str2 = $toNativeArray($kindString, ["", "", "", "", "", "", "", "", "", "", "", "", "addition", "subtraction", "multiplication", "", "", "", "", "bitwise XOR", "shift"]); + predeclaredFuncs = $toNativeArray($kindStruct, [$clone(new structType.ptr("append", 1, true, 1), structType), $clone(new structType.ptr("cap", 1, false, 1), structType), $clone(new structType.ptr("clear", 1, false, 2), structType), $clone(new structType.ptr("close", 1, false, 2), structType), $clone(new structType.ptr("complex", 2, false, 1), structType), $clone(new structType.ptr("copy", 2, false, 2), structType), $clone(new structType.ptr("delete", 2, false, 2), structType), $clone(new structType.ptr("imag", 1, false, 1), structType), $clone(new structType.ptr("len", 1, false, 1), structType), $clone(new structType.ptr("make", 1, true, 1), structType), $clone(new structType.ptr("new", 1, false, 1), structType), $clone(new structType.ptr("panic", 1, false, 2), structType), $clone(new structType.ptr("print", 0, true, 2), structType), $clone(new structType.ptr("println", 0, true, 2), structType), $clone(new structType.ptr("real", 1, false, 1), structType), $clone(new structType.ptr("recover", 0, false, 2), structType), $clone(new structType.ptr("Add", 2, false, 1), structType), $clone(new structType.ptr("Alignof", 1, false, 1), structType), $clone(new structType.ptr("Offsetof", 1, false, 1), structType), $clone(new structType.ptr("Sizeof", 1, false, 1), structType), $clone(new structType.ptr("Slice", 2, false, 1), structType), $clone(new structType.ptr("SliceData", 1, false, 1), structType), $clone(new structType.ptr("String", 2, false, 1), structType), $clone(new structType.ptr("StringData", 1, false, 1), structType), $clone(new structType.ptr("assert", 1, false, 2), structType), $clone(new structType.ptr("trace", 0, true, 2), structType)]); + errBadCgo = errors.New("cannot use FakeImportC and go115UsesCgo together"); + cgoPrefixes = $toNativeArray($kindString, ["_Ciconst_", "_Cfconst_", "_Csconst_", "_Ctype_", "_Cvar_", "_Cfpvar_fp_", "_Cfunc_", "_Cmacro_"]); + basicSizes = $toNativeArray($kindUint8, [0, 1, 0, 1, 2, 4, 8, 0, 1, 2, 4, 8, 0, 4, 8, 8, 16]); + predeclaredConsts = $toNativeArray($kindStruct, [$clone(new structType$1.ptr("true", 19, constant.MakeBool(true)), structType$1), $clone(new structType$1.ptr("false", 19, constant.MakeBool(false)), structType$1), $clone(new structType$1.ptr("iota", 20, constant.MakeInt64(new $Int64(0, 0))), structType$1)]); + aliases = $toNativeArray($kindPtr, [new Basic.ptr(8, 6, "byte"), new Basic.ptr(5, 2, "rune")]); + $pkg.Typ = new sliceType$4([new Basic.ptr(0, 0, "invalid type"), new Basic.ptr(1, 1, "bool"), new Basic.ptr(2, 2, "int"), new Basic.ptr(3, 2, "int8"), new Basic.ptr(4, 2, "int16"), new Basic.ptr(5, 2, "int32"), new Basic.ptr(6, 2, "int64"), new Basic.ptr(7, 6, "uint"), new Basic.ptr(8, 6, "uint8"), new Basic.ptr(9, 6, "uint16"), new Basic.ptr(10, 6, "uint32"), new Basic.ptr(11, 6, "uint64"), new Basic.ptr(12, 6, "uintptr"), new Basic.ptr(13, 8, "float32"), new Basic.ptr(14, 8, "float64"), new Basic.ptr(15, 16, "complex64"), new Basic.ptr(16, 16, "complex128"), new Basic.ptr(17, 32, "string"), new Basic.ptr(18, 0, "Pointer"), new Basic.ptr(19, 65, "untyped bool"), new Basic.ptr(20, 66, "untyped int"), new Basic.ptr(21, 66, "untyped rune"), new Basic.ptr(22, 72, "untyped float"), new Basic.ptr(23, 80, "untyped complex"), new Basic.ptr(24, 96, "untyped string"), new Basic.ptr(25, 64, "untyped nil")]); + $r = init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + init$1(); + init$2(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/astutil"] = (function() { + var $pkg = {}, $init, fmt, ast, token, types, path, reflect, regexp, strconv, strings, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, sliceType, ptrType$17, ptrType$18, ptrType$19, ptrType$20, ptrType$21, ptrType$22, sliceType$1, directiveMatcher, _r, RemoveParens, SetType, NewIdent, IsTypeExpr, ImportsUnsafe, FindLoopStmt, EndsWithReturn; + fmt = $packages["fmt"]; + ast = $packages["go/ast"]; + token = $packages["go/token"]; + types = $packages["go/types"]; + path = $packages["path"]; + reflect = $packages["reflect"]; + regexp = $packages["regexp"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + $pkg.$finishSetup = function() { + ptrType = $ptrType(ast.ParenExpr); + ptrType$1 = $ptrType(ast.Ident); + ptrType$2 = $ptrType(ast.ArrayType); + ptrType$3 = $ptrType(ast.ChanType); + ptrType$4 = $ptrType(ast.FuncType); + ptrType$5 = $ptrType(ast.InterfaceType); + ptrType$6 = $ptrType(ast.MapType); + ptrType$7 = $ptrType(ast.StructType); + ptrType$8 = $ptrType(ast.StarExpr); + ptrType$9 = $ptrType(ast.SelectorExpr); + ptrType$10 = $ptrType(ast.IndexExpr); + ptrType$11 = $ptrType(ast.IndexListExpr); + ptrType$12 = $ptrType(types.TypeName); + sliceType = $sliceType($emptyInterface); + ptrType$17 = $ptrType(types.Label); + ptrType$18 = $ptrType(ast.LabeledStmt); + ptrType$19 = $ptrType(ast.RangeStmt); + ptrType$20 = $ptrType(ast.ForStmt); + ptrType$21 = $ptrType(ast.ReturnStmt); + ptrType$22 = $ptrType(ast.BlockStmt); + sliceType$1 = $sliceType(ast.Stmt); + RemoveParens = function RemoveParens$1(e) { + var _tuple, e, isParen, p; + while (true) { + _tuple = $assertType(e, ptrType, true); + p = _tuple[0]; + isParen = _tuple[1]; + if (!isParen) { + return e; + } + e = p.X; + } + }; + $pkg.RemoveParens = RemoveParens; + SetType = function SetType$1(info, t, e) { + var _key, e, info, t; + _key = e; (info.Types || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(new types.TypeAndValue.ptr(0, t, $ifaceNil), types.TypeAndValue) }); + return e; + }; + $pkg.SetType = SetType; + NewIdent = function NewIdent$1(name, t, info, pkg) { + var _key, _key$1, ident, info, name, obj, pkg, t; + ident = ast.NewIdent(name); + _key = ident; (info.Types || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(new types.TypeAndValue.ptr(0, t, $ifaceNil), types.TypeAndValue) }); + obj = types.NewVar(0, pkg, name, t); + _key$1 = ident; (info.Uses || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$1.keyFor(_key$1), { k: _key$1, v: obj }); + return ident; + }; + $pkg.NewIdent = NewIdent; + IsTypeExpr = function IsTypeExpr$1(expr, info) { + var _entry, _ref, _tuple, e, e$1, e$2, e$3, e$4, e$5, e$6, e$7, expr, info, ok; + _ref = expr; + if ($assertType(_ref, ptrType$2, true)[1] || $assertType(_ref, ptrType$3, true)[1] || $assertType(_ref, ptrType$4, true)[1] || $assertType(_ref, ptrType$5, true)[1] || $assertType(_ref, ptrType$6, true)[1] || $assertType(_ref, ptrType$7, true)[1]) { + e = _ref; + return true; + } else if ($assertType(_ref, ptrType$8, true)[1]) { + e$1 = _ref.$val; + return IsTypeExpr(e$1.X, info); + } else if ($assertType(_ref, ptrType$1, true)[1]) { + e$2 = _ref.$val; + _tuple = $assertType((_entry = $mapIndex(info.Uses,ptrType$1.keyFor(e$2)), _entry !== undefined ? _entry.v : $ifaceNil), ptrType$12, true); + ok = _tuple[1]; + return ok; + } else if ($assertType(_ref, ptrType$9, true)[1]) { + e$3 = _ref.$val; + return IsTypeExpr(e$3.Sel, info); + } else if ($assertType(_ref, ptrType$10, true)[1]) { + e$4 = _ref.$val; + return IsTypeExpr(e$4.X, info); + } else if ($assertType(_ref, ptrType$11, true)[1]) { + e$5 = _ref.$val; + return IsTypeExpr(e$5.X, info); + } else if ($assertType(_ref, ptrType, true)[1]) { + e$6 = _ref.$val; + return IsTypeExpr(e$6.X, info); + } else { + e$7 = _ref; + return false; + } + }; + $pkg.IsTypeExpr = IsTypeExpr; + ImportsUnsafe = function ImportsUnsafe$1(file) { + var _i, _ref, file, imp; + _ref = file.Imports; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + imp = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (imp.Path.Value === "\"unsafe\"") { + return true; + } + _i++; + } + return false; + }; + $pkg.ImportsUnsafe = ImportsUnsafe; + FindLoopStmt = function FindLoopStmt$1(stack, branch, typeInfo) { + var {_entry, _entry$1, _r$1, _r$2, _ref, _tuple, branch, definedLabel, i, labelStmt, n, ok, referencedLabel, s, stack, typeInfo, $s, $r, $c} = $restore(this, {stack, branch, typeInfo}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!((branch.Tok === 65)) && !((branch.Tok === 61))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((branch.Tok === 65)) && !((branch.Tok === 61))) { */ case 1: + _r$1 = fmt.Errorf("FindLoopStmt() must be used with a break or continue statement only, got: %v", new sliceType([branch])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(_r$1); + /* } */ case 2: + i = stack.$length - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + n = ((i < 0 || i >= stack.$length) ? ($throwRuntimeError("index out of range"), undefined) : stack.$array[stack.$offset + i]); + if (!(branch.Label === ptrType$1.nil)) { + referencedLabel = $assertType((_entry = $mapIndex(typeInfo.Uses,ptrType$1.keyFor(branch.Label)), _entry !== undefined ? _entry.v : $ifaceNil), ptrType$17); + _tuple = $assertType(n, ptrType$18, true); + labelStmt = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + i = i - (1) >> 0; + continue; + } + definedLabel = (_entry$1 = $mapIndex(typeInfo.Defs,ptrType$1.keyFor(labelStmt.Label)), _entry$1 !== undefined ? _entry$1.v : $ifaceNil); + if (!($interfaceIsEqual(definedLabel, referencedLabel))) { + i = i - (1) >> 0; + continue; + } + n = labelStmt.Stmt; + } + _ref = n; + if ($assertType(_ref, ptrType$19, true)[1] || $assertType(_ref, ptrType$20, true)[1]) { + s = _ref; + $s = -1; return $assertType(s, ast.Stmt); + } + i = i - (1) >> 0; + } + _r$2 = fmt.Errorf("continue/break statement %v doesn't have a matching loop statement among ancestors", new sliceType([branch])); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $panic(_r$2); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: FindLoopStmt$1, $c: true, $r, _entry, _entry$1, _r$1, _r$2, _ref, _tuple, branch, definedLabel, i, labelStmt, n, ok, referencedLabel, s, stack, typeInfo, $s};return $f; + }; + $pkg.FindLoopStmt = FindLoopStmt; + EndsWithReturn = function EndsWithReturn$1(stmts) { + var _ref, l, l$1, l$2, l$3, last, stmts, x; + if (stmts.$length === 0) { + return false; + } + last = (x = stmts.$length - 1 >> 0, ((x < 0 || x >= stmts.$length) ? ($throwRuntimeError("index out of range"), undefined) : stmts.$array[stmts.$offset + x])); + _ref = last; + if ($assertType(_ref, ptrType$21, true)[1]) { + l = _ref.$val; + return true; + } else if ($assertType(_ref, ptrType$18, true)[1]) { + l$1 = _ref.$val; + return EndsWithReturn(new sliceType$1([l$1.Stmt])); + } else if ($assertType(_ref, ptrType$22, true)[1]) { + l$2 = _ref.$val; + return EndsWithReturn(l$2.List); + } else { + l$3 = _ref; + return false; + } + }; + $pkg.EndsWithReturn = EndsWithReturn; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = types.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = path.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = regexp.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = regexp.MustCompile("^\\/(?:\\/|\\*)gopherjs:([\\w-]+)"); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + directiveMatcher = _r; + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/errlist"] = (function() { + var $pkg = {}, $init, errors, fmt, ErrorList, sliceType, sliceType$1; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + ErrorList = $newType(12, $kindSlice, "errlist.ErrorList", true, "github.com/gopherjs/gopherjs/compiler/errlist", true, null); + $pkg.ErrorList = ErrorList; + $pkg.$finishSetup = function() { + sliceType = $sliceType($emptyInterface); + sliceType$1 = $sliceType($error); + ErrorList.prototype.Error = function Error() { + var {$24r, _arg, _arg$1, _r, _r$1, errs, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + errs = this; + if (errs.$length === 0) { + $s = -1; return ""; + } + _r = (0 >= errs.$length ? ($throwRuntimeError("index out of range"), undefined) : errs.$array[errs.$offset + 0]).Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = new $String(_r); + _arg$1 = new $Int($subslice(errs, 1).$length); + _r$1 = fmt.Sprintf("%s (and %d more errors)", new sliceType([_arg, _arg$1])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Error, $c: true, $r, $24r, _arg, _arg$1, _r, _r$1, errs, $s};return $f; + }; + $ptrType(ErrorList).prototype.Error = function(...$args) { return this.$get().Error(...$args); }; + ErrorList.prototype.ErrOrNil = function ErrOrNil() { + var errs; + errs = this; + if (errs.$length === 0) { + return $ifaceNil; + } + return errs; + }; + $ptrType(ErrorList).prototype.ErrOrNil = function(...$args) { return this.$get().ErrOrNil(...$args); }; + ErrorList.prototype.Append = function Append(err) { + var _tuple, err, err$1, errs, ok; + errs = this; + if ($interfaceIsEqual(err, $ifaceNil)) { + return errs; + } + _tuple = $assertType(err, ErrorList, true); + err$1 = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return $appendSlice(errs, $convertSliceType(err$1, sliceType$1)); + } + return $append(errs, err); + }; + $ptrType(ErrorList).prototype.Append = function(...$args) { return this.$get().Append(...$args); }; + ErrorList.prototype.AppendDistinct = function AppendDistinct(err) { + var {_r, _r$1, _v, err, errs, l, prev, x, $s, $r, $c} = $restore(this, {err}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + errs = this; + l = errs.$length; + /* */ if (l > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (l > 0) { */ case 1: + prev = (x = l - 1 >> 0, ((x < 0 || x >= errs.$length) ? ($throwRuntimeError("index out of range"), undefined) : errs.$array[errs.$offset + x])); + if (!(!($interfaceIsEqual(prev, $ifaceNil)))) { _v = false; $s = 5; continue s; } + _r = err.Error(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = prev.Error(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r === _r$1; case 5: + /* */ if (_v) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_v) { */ case 3: + $s = -1; return errs; + /* } */ case 4: + /* } */ case 2: + $s = -1; return errs.Append(err); + /* */ } return; } var $f = {$blk: AppendDistinct, $c: true, $r, _r, _r$1, _v, err, errs, l, prev, x, $s};return $f; + }; + $ptrType(ErrorList).prototype.AppendDistinct = function(...$args) { return this.$get().AppendDistinct(...$args); }; + ErrorList.prototype.Trim = function Trim(limit) { + var errs, limit; + errs = this; + if (errs.$length <= limit) { + return errs; + } + return $append($subslice(errs, 0, limit), $pkg.ErrTooManyErrors); + }; + $ptrType(ErrorList).prototype.Trim = function(...$args) { return this.$get().Trim(...$args); }; + ErrorList.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ErrOrNil", name: "ErrOrNil", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Append", name: "Append", pkg: "", typ: $funcType([$error], [ErrorList], false)}, {prop: "AppendDistinct", name: "AppendDistinct", pkg: "", typ: $funcType([$error], [ErrorList], false)}, {prop: "Trim", name: "Trim", pkg: "", typ: $funcType([$Int], [ErrorList], false)}]; + ErrorList.init($error); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ErrTooManyErrors = errors.New("too many errors"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/filter"] = (function() { + var $pkg = {}, $init, astutil, ast, constant, token, types, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, sliceType, ptrType$5, sliceType$1, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, IncDecStmt, Assign; + astutil = $packages["github.com/gopherjs/gopherjs/compiler/astutil"]; + ast = $packages["go/ast"]; + constant = $packages["go/constant"]; + token = $packages["go/token"]; + types = $packages["go/types"]; + $pkg.$finishSetup = function() { + ptrType = $ptrType(ast.IncDecStmt); + ptrType$1 = $ptrType(ast.IndexExpr); + ptrType$2 = $ptrType(types.Array); + ptrType$3 = $ptrType(types.Slice); + ptrType$4 = $ptrType(types.Map); + sliceType = $sliceType(ast.Expr); + ptrType$5 = $ptrType(ast.AssignStmt); + sliceType$1 = $sliceType(ast.Stmt); + ptrType$6 = $ptrType(ast.SelectorExpr); + ptrType$7 = $ptrType(ast.StarExpr); + ptrType$8 = $ptrType(ast.Ident); + ptrType$9 = $ptrType(ast.BasicLit); + ptrType$10 = $ptrType(types.Selection); + IncDecStmt = function IncDecStmt$1(stmt, info) { + var {_key, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, iExpr, info, isIExpr, ok, one, s, stmt, t, tok, u, u$1, u$2, $s, $r, $c} = $restore(this, {stmt, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = $assertType(stmt, ptrType, true); + s = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = info.TypeOf(s.X); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + t = _r; + _tuple$1 = $assertType(s.X, ptrType$1, true); + iExpr = _tuple$1[0]; + isIExpr = _tuple$1[1]; + /* */ if (isIExpr) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (isIExpr) { */ case 4: + _r$1 = info.TypeOf(iExpr.X); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Underlying(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _ref = _r$2; + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ($assertType(_ref, ptrType$2, true)[1]) { */ case 8: + u = _ref.$val; + t = u.Elem(); + $s = 11; continue; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 9: + u$1 = _ref.$val; + t = u$1.Elem(); + $s = 11; continue; + /* } else if ($assertType(_ref, ptrType$4, true)[1]) { */ case 10: + u$2 = _ref.$val; + t = u$2.Elem(); + /* } */ case 11: + /* } */ case 5: + tok = 23; + if (s.Tok === 38) { + tok = 24; + } + one = new ast.BasicLit.ptr(0, 5, ""); + _key = one; (info.Types || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(new types.TypeAndValue.ptr(0, t, constant.MakeInt64(new $Int64(0, 1))), types.TypeAndValue) }); + $s = -1; return new ast.AssignStmt.ptr(new sliceType([s.X]), 0, tok, new sliceType([one])); + /* } */ case 2: + $s = -1; return stmt; + /* */ } return; } var $f = {$blk: IncDecStmt$1, $c: true, $r, _key, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, iExpr, info, isIExpr, ok, one, s, stmt, t, tok, u, u$1, u$2, $s};return $f; + }; + $pkg.IncDecStmt = IncDecStmt; + Assign = function Assign$1(stmt, info, pkg) { + var {_1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r, _r$1, _r$2, _r$3, _r$4, _tuple, info, lhs, list, ok, op, pkg, s, stmt, viaTmpVars, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {stmt, info, pkg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + info = [info]; + list = [list]; + pkg = [pkg]; + viaTmpVars = [viaTmpVars]; + _tuple = $assertType(stmt, ptrType$5, true); + s = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok && !((s.Tok === 42)) && !((s.Tok === 47))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok && !((s.Tok === 42)) && !((s.Tok === 47))) { */ case 1: + op = 0; + _1 = s.Tok; + if (_1 === (23)) { + op = 12; + } else if (_1 === (24)) { + op = 13; + } else if (_1 === (25)) { + op = 14; + } else if (_1 === (26)) { + op = 15; + } else if (_1 === (27)) { + op = 16; + } else if (_1 === (28)) { + op = 17; + } else if (_1 === (29)) { + op = 18; + } else if (_1 === (30)) { + op = 19; + } else if (_1 === (31)) { + op = 20; + } else if (_1 === (32)) { + op = 21; + } else if (_1 === (33)) { + op = 22; + } else { + $panic(new token.Token(s.Tok)); + } + list[0] = sliceType$1.nil; + viaTmpVars[0] = $throwNilPointerError; + viaTmpVars[0] = (function(info, list, pkg, viaTmpVars) { return function Assign·func1(expr, name) { + var {$24r, $24r$1, $24r$2, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _entry, _key, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple$1, e, e$1, e$2, e$3, e$4, expr, name, newSel, ok$1, sel, tmpVar, $s, $r, $c} = $restore(this, {expr, name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = astutil.RemoveParens(expr); + /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$6, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1] || $assertType(_ref, ptrType$9, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref, ptrType$1, true)[1]) { */ case 1: + e = _ref.$val; + _arg = info[0]; + _r = info[0].TypeOf(e); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + _r$1 = viaTmpVars[0](e.X, "_slice"); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = viaTmpVars[0](e.Index, "_index"); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$2 = new ast.IndexExpr.ptr(_r$1, 0, _r$2, 0); + _r$3 = astutil.SetType(_arg, _arg$1, _arg$2); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 11; case 11: return $24r; + /* } else if ($assertType(_ref, ptrType$6, true)[1]) { */ case 2: + e$1 = _ref.$val; + _tuple$1 = (_entry = $mapIndex(info[0].Selections,ptrType$6.keyFor(e$1)), _entry !== undefined ? [_entry.v, true] : [ptrType$10.nil, false]); + sel = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (!ok$1) { + $s = -1; return e$1; + } + _r$4 = viaTmpVars[0](e$1.X, "_struct"); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + newSel = new ast.SelectorExpr.ptr(_r$4, e$1.Sel); + _key = newSel; (info[0].Selections || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$6.keyFor(_key), { k: _key, v: sel }); + _arg$3 = info[0]; + _r$5 = info[0].TypeOf(e$1); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$4 = _r$5; + _arg$5 = newSel; + _r$6 = astutil.SetType(_arg$3, _arg$4, _arg$5); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$1 = _r$6; + $s = 15; case 15: return $24r$1; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 3: + e$2 = _ref.$val; + _arg$6 = info[0]; + _r$7 = info[0].TypeOf(e$2); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _arg$7 = _r$7; + _r$8 = viaTmpVars[0](e$2.X, "_ptr"); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _arg$8 = new ast.StarExpr.ptr(0, _r$8); + _r$9 = astutil.SetType(_arg$6, _arg$7, _arg$8); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $24r$2 = _r$9; + $s = 19; case 19: return $24r$2; + /* } else if ($assertType(_ref, ptrType$8, true)[1] || $assertType(_ref, ptrType$9, true)[1]) { */ case 4: + e$3 = _ref; + $s = -1; return e$3; + /* } else { */ case 5: + e$4 = _ref; + _arg$9 = name; + _r$10 = info[0].TypeOf(e$4); /* */ $s = 20; case 20: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _arg$10 = _r$10; + _arg$11 = info[0]; + _arg$12 = pkg[0]; + _r$11 = astutil.NewIdent(_arg$9, _arg$10, _arg$11, _arg$12); /* */ $s = 21; case 21: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + tmpVar = _r$11; + list[0] = $append(list[0], new ast.AssignStmt.ptr(new sliceType([tmpVar]), 0, 47, new sliceType([e$4]))); + $s = -1; return tmpVar; + /* } */ case 6: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Assign·func1, $c: true, $r, $24r, $24r$1, $24r$2, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _entry, _key, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple$1, e, e$1, e$2, e$3, e$4, expr, name, newSel, ok$1, sel, tmpVar, $s};return $f; + }; })(info, list, pkg, viaTmpVars); + _r = viaTmpVars[0]((x = s.Lhs, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), "_val"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + lhs = _r; + _arg = info[0]; + _r$1 = info[0].TypeOf((x$1 = s.Lhs, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = _r$1; + _arg$2 = info[0]; + _r$2 = info[0].TypeOf((x$2 = s.Rhs, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0]))); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$3 = _r$2; + _arg$4 = new ast.ParenExpr.ptr(0, (x$3 = s.Rhs, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), 0); + _r$3 = astutil.SetType(_arg$2, _arg$3, _arg$4); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$5 = new ast.BinaryExpr.ptr(lhs, 0, op, _r$3); + _r$4 = astutil.SetType(_arg, _arg$1, _arg$5); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + list[0] = $append(list[0], new ast.AssignStmt.ptr(new sliceType([lhs]), 0, 42, new sliceType([_r$4]))); + $s = -1; return new ast.BlockStmt.ptr(0, list[0], 0); + /* } */ case 2: + $s = -1; return stmt; + /* */ } return; } var $f = {$blk: Assign$1, $c: true, $r, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r, _r$1, _r$2, _r$3, _r$4, _tuple, info, lhs, list, ok, op, pkg, s, stmt, viaTmpVars, x, x$1, x$2, x$3, $s};return $f; + }; + $pkg.Assign = Assign; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = astutil.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = constant.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = types.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["go/build/constraint"] = (function() { + var $pkg = {}, $init, errors, strings, unicode, utf8, Expr, TagExpr, NotExpr, AndExpr, OrExpr, SyntaxError, exprParser, ptrType, ptrType$1, ptrType$2, sliceType, sliceType$1, sliceType$2, ptrType$3, ptrType$4, sliceType$3, funcType, ptrType$5, errNotConstraint, errComplex, tag, not, andArg, and, orArg, or, Parse, IsGoBuild, splitGoBuild, parseExpr, IsPlusBuild, splitPlusBuild, parsePlusBuildExpr, isValidTag, PlusBuildLines, pushNot, appendSplitAnd, appendSplitOr; + errors = $packages["errors"]; + strings = $packages["strings"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + Expr = $newType(8, $kindInterface, "constraint.Expr", true, "go/build/constraint", true, null); + TagExpr = $newType(0, $kindStruct, "constraint.TagExpr", true, "go/build/constraint", true, function(Tag_) { + this.$val = this; + if (arguments.length === 0) { + this.Tag = ""; + return; + } + this.Tag = Tag_; + }); + NotExpr = $newType(0, $kindStruct, "constraint.NotExpr", true, "go/build/constraint", true, function(X_) { + this.$val = this; + if (arguments.length === 0) { + this.X = $ifaceNil; + return; + } + this.X = X_; + }); + AndExpr = $newType(0, $kindStruct, "constraint.AndExpr", true, "go/build/constraint", true, function(X_, Y_) { + this.$val = this; + if (arguments.length === 0) { + this.X = $ifaceNil; + this.Y = $ifaceNil; + return; + } + this.X = X_; + this.Y = Y_; + }); + OrExpr = $newType(0, $kindStruct, "constraint.OrExpr", true, "go/build/constraint", true, function(X_, Y_) { + this.$val = this; + if (arguments.length === 0) { + this.X = $ifaceNil; + this.Y = $ifaceNil; + return; + } + this.X = X_; + this.Y = Y_; + }); + SyntaxError = $newType(0, $kindStruct, "constraint.SyntaxError", true, "go/build/constraint", true, function(Offset_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Offset = 0; + this.Err = ""; + return; + } + this.Offset = Offset_; + this.Err = Err_; + }); + exprParser = $newType(0, $kindStruct, "constraint.exprParser", true, "go/build/constraint", false, function(s_, i_, tok_, isTag_, pos_) { + this.$val = this; + if (arguments.length === 0) { + this.s = ""; + this.i = 0; + this.tok = ""; + this.isTag = false; + this.pos = 0; + return; + } + this.s = s_; + this.i = i_; + this.tok = tok_; + this.isTag = isTag_; + this.pos = pos_; + }); + $pkg.Expr = Expr; + $pkg.TagExpr = TagExpr; + $pkg.NotExpr = NotExpr; + $pkg.AndExpr = AndExpr; + $pkg.OrExpr = OrExpr; + $pkg.SyntaxError = SyntaxError; + $pkg.exprParser = exprParser; + $pkg.$finishSetup = function() { + ptrType = $ptrType(AndExpr); + ptrType$1 = $ptrType(OrExpr); + ptrType$2 = $ptrType(SyntaxError); + sliceType = $sliceType(Expr); + sliceType$1 = $sliceType(sliceType); + sliceType$2 = $sliceType(sliceType$1); + ptrType$3 = $ptrType(TagExpr); + ptrType$4 = $ptrType(NotExpr); + sliceType$3 = $sliceType($String); + funcType = $funcType([$String], [$Bool], false); + ptrType$5 = $ptrType(exprParser); + $ptrType(TagExpr).prototype.Eval = function Eval(ok) { + var {$24r, _r, ok, x, $s, $r, $c} = $restore(this, {ok}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = ok(x.Tag); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Eval, $c: true, $r, $24r, _r, ok, x, $s};return $f; + }; + $ptrType(TagExpr).prototype.String = function String() { + var x; + x = this; + return x.Tag; + }; + tag = function tag$1(tag$2) { + var tag$2; + return new TagExpr.ptr(tag$2); + }; + $ptrType(NotExpr).prototype.Eval = function Eval$1(ok) { + var {$24r, _r, ok, x, $s, $r, $c} = $restore(this, {ok}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.Eval(ok); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = !_r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Eval$1, $c: true, $r, $24r, _r, ok, x, $s};return $f; + }; + $ptrType(NotExpr).prototype.String = function String$1() { + var {_r, _ref, s, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s = _r; + _ref = x.X; + if ($assertType(_ref, ptrType, true)[1] || $assertType(_ref, ptrType$1, true)[1]) { + s = "(" + s + ")"; + } + $s = -1; return "!" + s; + /* */ } return; } var $f = {$blk: String$1, $c: true, $r, _r, _ref, s, x, $s};return $f; + }; + not = function not$1(x) { + var x; + return new NotExpr.ptr(x); + }; + $ptrType(AndExpr).prototype.Eval = function Eval$2(ok) { + var {_r, _r$1, ok, x, xok, yok, $s, $r, $c} = $restore(this, {ok}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.Eval(ok); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + xok = _r; + _r$1 = x.Y.Eval(ok); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + yok = _r$1; + $s = -1; return xok && yok; + /* */ } return; } var $f = {$blk: Eval$2, $c: true, $r, _r, _r$1, ok, x, xok, yok, $s};return $f; + }; + $ptrType(AndExpr).prototype.String = function String$2() { + var {$24r, _r, _r$1, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = andArg(x.X); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = andArg(x.Y); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r + " && " + _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: String$2, $c: true, $r, $24r, _r, _r$1, x, $s};return $f; + }; + andArg = function andArg$1(x) { + var {_r, _tuple, ok, s, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = x.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s = _r; + _tuple = $assertType(x, ptrType$1, true); + ok = _tuple[1]; + if (ok) { + s = "(" + s + ")"; + } + $s = -1; return s; + /* */ } return; } var $f = {$blk: andArg$1, $c: true, $r, _r, _tuple, ok, s, x, $s};return $f; + }; + and = function and$1(x, y) { + var x, y; + return new AndExpr.ptr(x, y); + }; + $ptrType(OrExpr).prototype.Eval = function Eval$3(ok) { + var {_r, _r$1, ok, x, xok, yok, $s, $r, $c} = $restore(this, {ok}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = x.X.Eval(ok); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + xok = _r; + _r$1 = x.Y.Eval(ok); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + yok = _r$1; + $s = -1; return xok || yok; + /* */ } return; } var $f = {$blk: Eval$3, $c: true, $r, _r, _r$1, ok, x, xok, yok, $s};return $f; + }; + $ptrType(OrExpr).prototype.String = function String$3() { + var {$24r, _r, _r$1, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + _r = orArg(x.X); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = orArg(x.Y); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r + " || " + _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: String$3, $c: true, $r, $24r, _r, _r$1, x, $s};return $f; + }; + orArg = function orArg$1(x) { + var {_r, _tuple, ok, s, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = x.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s = _r; + _tuple = $assertType(x, ptrType, true); + ok = _tuple[1]; + if (ok) { + s = "(" + s + ")"; + } + $s = -1; return s; + /* */ } return; } var $f = {$blk: orArg$1, $c: true, $r, _r, _tuple, ok, s, x, $s};return $f; + }; + or = function or$1(x, y) { + var x, y; + return new OrExpr.ptr(x, y); + }; + $ptrType(SyntaxError).prototype.Error = function Error() { + var e; + e = this; + return e.Err; + }; + Parse = function Parse$1(line) { + var {$24r, _r, _r$1, _r$2, _tuple, _tuple$1, line, ok, ok$1, text, text$1, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = splitGoBuild(line); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + text = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return parseExpr(text); + } + _r$1 = splitPlusBuild(line); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + text$1 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + /* */ if (ok$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (ok$1) { */ case 3: + _r$2 = parsePlusBuildExpr(text$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = [_r$2, $ifaceNil]; + $s = 6; case 6: return $24r; + /* } */ case 4: + $s = -1; return [$ifaceNil, errNotConstraint]; + /* */ } return; } var $f = {$blk: Parse$1, $c: true, $r, $24r, _r, _r$1, _r$2, _tuple, _tuple$1, line, ok, ok$1, text, text$1, $s};return $f; + }; + $pkg.Parse = Parse; + IsGoBuild = function IsGoBuild$1(line) { + var {_r, _tuple, line, ok, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = splitGoBuild(line); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ok = _tuple[1]; + $s = -1; return ok; + /* */ } return; } var $f = {$blk: IsGoBuild$1, $c: true, $r, _r, _tuple, line, ok, $s};return $f; + }; + $pkg.IsGoBuild = IsGoBuild; + splitGoBuild = function splitGoBuild$1(line) { + var {_r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, expr, line, ok, trim, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + expr = ""; + ok = false; + if (line.length > 0 && (line.charCodeAt((line.length - 1 >> 0)) === 10)) { + line = $substring(line, 0, (line.length - 1 >> 0)); + } + if (strings.Contains(line, "\n")) { + _tmp = ""; + _tmp$1 = false; + expr = _tmp; + ok = _tmp$1; + $s = -1; return [expr, ok]; + } + if (!strings.HasPrefix(line, "//go:build")) { + _tmp$2 = ""; + _tmp$3 = false; + expr = _tmp$2; + ok = _tmp$3; + $s = -1; return [expr, ok]; + } + _r = strings.TrimSpace(line); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + line = _r; + line = $substring(line, 10); + _r$1 = strings.TrimSpace(line); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + trim = _r$1; + if ((line.length === trim.length) && !(line === "")) { + _tmp$4 = ""; + _tmp$5 = false; + expr = _tmp$4; + ok = _tmp$5; + $s = -1; return [expr, ok]; + } + _tmp$6 = trim; + _tmp$7 = true; + expr = _tmp$6; + ok = _tmp$7; + $s = -1; return [expr, ok]; + /* */ } return; } var $f = {$blk: splitGoBuild$1, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, expr, line, ok, trim, $s};return $f; + }; + parseExpr = function parseExpr$1(text) { + var _tmp, _tmp$1, err, p, text, x, $deferred; + /* */ var $err = null; try { $deferred = []; $curGoroutine.deferStack.push($deferred); + x = $ifaceNil; + err = $ifaceNil; + $deferred.push([(function parseExpr·func1() { + var _tuple, e, e$1, ok; + e = $recover(); + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tuple = $assertType(e, ptrType$2, true); + e$1 = _tuple[0]; + ok = _tuple[1]; + if (ok) { + err = e$1; + return; + } + $panic(e); + } + }), []]); + p = new exprParser.ptr(text, 0, "", false, 0); + x = p.or(); + if (!(p.tok === "")) { + $panic(new SyntaxError.ptr(p.pos, "unexpected token " + p.tok)); + } + _tmp = x; + _tmp$1 = $ifaceNil; + x = _tmp; + err = _tmp$1; + return [x, err]; + /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [x, err]; } } + }; + $ptrType(exprParser).prototype.or = function or$2() { + var p, x; + p = this; + x = p.and(); + while (true) { + if (!(p.tok === "||")) { break; } + x = or(x, p.and()); + } + return x; + }; + $ptrType(exprParser).prototype.and = function and$2() { + var p, x; + p = this; + x = p.not(); + while (true) { + if (!(p.tok === "&&")) { break; } + x = and(x, p.not()); + } + return x; + }; + $ptrType(exprParser).prototype.not = function not$2() { + var p; + p = this; + p.lex(); + if (p.tok === "!") { + p.lex(); + if (p.tok === "!") { + $panic(new SyntaxError.ptr(p.pos, "double negation not allowed")); + } + return not(p.atom()); + } + return p.atom(); + }; + $ptrType(exprParser).prototype.atom = function atom() { + var p, pos, tok, x, $deferred; + /* */ var $err = null; try { $deferred = []; $curGoroutine.deferStack.push($deferred); + p = this; + if (p.tok === "(") { + pos = p.pos; + $deferred.push([(function exprParser·atom·func1() { + var _tuple, e, e$1, ok; + e = $recover(); + if (!($interfaceIsEqual(e, $ifaceNil))) { + _tuple = $assertType(e, ptrType$2, true); + e$1 = _tuple[0]; + ok = _tuple[1]; + if (ok && e$1.Err === "unexpected end of expression") { + e$1.Err = "missing close paren"; + } + $panic(e); + } + }), []]); + x = p.or(); + if (!(p.tok === ")")) { + $panic(new SyntaxError.ptr(pos, "missing close paren")); + } + p.lex(); + return x; + } + if (!p.isTag) { + if (p.tok === "") { + $panic(new SyntaxError.ptr(p.pos, "unexpected end of expression")); + } + $panic(new SyntaxError.ptr(p.pos, "unexpected token " + p.tok)); + } + tok = p.tok; + p.lex(); + return tag(tok); + /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); } + }; + $ptrType(exprParser).prototype.lex = function lex() { + var _1, _i, _ref, _rune, _tuple, c, c$1, i, p, tag$2; + p = this; + p.isTag = false; + while (true) { + if (!(p.i < p.s.length && ((p.s.charCodeAt(p.i) === 32) || (p.s.charCodeAt(p.i) === 9)))) { break; } + p.i = p.i + (1) >> 0; + } + if (p.i >= p.s.length) { + p.tok = ""; + p.pos = p.i; + return; + } + _1 = p.s.charCodeAt(p.i); + if ((_1 === (40)) || (_1 === (41)) || (_1 === (33))) { + p.pos = p.i; + p.i = p.i + (1) >> 0; + p.tok = $substring(p.s, p.pos, p.i); + return; + } else if ((_1 === (38)) || (_1 === (124))) { + if ((p.i + 1 >> 0) >= p.s.length || !((p.s.charCodeAt((p.i + 1 >> 0)) === p.s.charCodeAt(p.i)))) { + $panic(new SyntaxError.ptr(p.i, "invalid syntax at " + ($encodeRune(((p.s.charCodeAt(p.i) >> 0)))))); + } + p.pos = p.i; + p.i = p.i + (2) >> 0; + p.tok = $substring(p.s, p.pos, p.i); + return; + } + tag$2 = $substring(p.s, p.i); + _ref = tag$2; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + c = _rune[0]; + if (!unicode.IsLetter(c) && !unicode.IsDigit(c) && !((c === 95)) && !((c === 46))) { + tag$2 = $substring(tag$2, 0, i); + break; + } + _i += _rune[1]; + } + if (tag$2 === "") { + _tuple = utf8.DecodeRuneInString($substring(p.s, p.i)); + c$1 = _tuple[0]; + $panic(new SyntaxError.ptr(p.i, "invalid syntax at " + ($encodeRune(c$1)))); + } + p.pos = p.i; + p.i = p.i + (tag$2.length) >> 0; + p.tok = $substring(p.s, p.pos, p.i); + p.isTag = true; + }; + IsPlusBuild = function IsPlusBuild$1(line) { + var {_r, _tuple, line, ok, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = splitPlusBuild(line); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ok = _tuple[1]; + $s = -1; return ok; + /* */ } return; } var $f = {$blk: IsPlusBuild$1, $c: true, $r, _r, _tuple, line, ok, $s};return $f; + }; + $pkg.IsPlusBuild = IsPlusBuild; + splitPlusBuild = function splitPlusBuild$1(line) { + var {_r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, expr, line, ok, trim, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + expr = ""; + ok = false; + if (line.length > 0 && (line.charCodeAt((line.length - 1 >> 0)) === 10)) { + line = $substring(line, 0, (line.length - 1 >> 0)); + } + if (strings.Contains(line, "\n")) { + _tmp = ""; + _tmp$1 = false; + expr = _tmp; + ok = _tmp$1; + $s = -1; return [expr, ok]; + } + if (!strings.HasPrefix(line, "//")) { + _tmp$2 = ""; + _tmp$3 = false; + expr = _tmp$2; + ok = _tmp$3; + $s = -1; return [expr, ok]; + } + line = $substring(line, 2); + _r = strings.TrimSpace(line); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + line = _r; + if (!strings.HasPrefix(line, "+build")) { + _tmp$4 = ""; + _tmp$5 = false; + expr = _tmp$4; + ok = _tmp$5; + $s = -1; return [expr, ok]; + } + line = $substring(line, 6); + _r$1 = strings.TrimSpace(line); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + trim = _r$1; + if ((line.length === trim.length) && !(line === "")) { + _tmp$6 = ""; + _tmp$7 = false; + expr = _tmp$6; + ok = _tmp$7; + $s = -1; return [expr, ok]; + } + _tmp$8 = trim; + _tmp$9 = true; + expr = _tmp$8; + ok = _tmp$9; + $s = -1; return [expr, ok]; + /* */ } return; } var $f = {$blk: splitPlusBuild$1, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, expr, line, ok, trim, $s};return $f; + }; + parsePlusBuildExpr = function parsePlusBuildExpr$1(text) { + var {_i, _i$1, _r, _ref, _ref$1, clause, lit, neg, text, x, y, z, $s, $r, $c} = $restore(this, {text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = $ifaceNil; + _r = strings.Fields(text); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _ref = _r; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + clause = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + y = $ifaceNil; + _ref$1 = strings.Split(clause, ","); + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + lit = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + z = $ifaceNil; + neg = false; + if (strings.HasPrefix(lit, "!!") || lit === "!") { + z = tag("ignore"); + } else { + if (strings.HasPrefix(lit, "!")) { + neg = true; + lit = $substring(lit, 1); + } + if (isValidTag(lit)) { + z = tag(lit); + } else { + z = tag("ignore"); + } + if (neg) { + z = not(z); + } + } + if ($interfaceIsEqual(y, $ifaceNil)) { + y = z; + } else { + y = and(y, z); + } + _i$1++; + } + if ($interfaceIsEqual(x, $ifaceNil)) { + x = y; + } else { + x = or(x, y); + } + _i++; + $s = 2; continue; + case 3: + if ($interfaceIsEqual(x, $ifaceNil)) { + x = tag("ignore"); + } + $s = -1; return x; + /* */ } return; } var $f = {$blk: parsePlusBuildExpr$1, $c: true, $r, _i, _i$1, _r, _ref, _ref$1, clause, lit, neg, text, x, y, z, $s};return $f; + }; + isValidTag = function isValidTag$1(word) { + var _i, _ref, _rune, c, word; + if (word === "") { + return false; + } + _ref = word; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + c = _rune[0]; + if (!unicode.IsLetter(c) && !unicode.IsDigit(c) && !((c === 95)) && !((c === 46))) { + return false; + } + _i += _rune[1]; + } + return true; + }; + PlusBuildLines = function PlusBuildLines$1(x) { + var {_i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, and$3, and$4, ands, clause, i, line, lines, lit, lit$1, lits, lits$1, maxOr, or$3, or$4, or$5, or$6, split, x, $s, $r, $c} = $restore(this, {x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = pushNot(x, false); + split = sliceType$2.nil; + _ref = appendSplitAnd(sliceType.nil, x); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + or$3 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ands = sliceType$1.nil; + _ref$1 = appendSplitOr(sliceType.nil, or$3); + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + and$3 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + lits = sliceType.nil; + _ref$2 = appendSplitAnd(sliceType.nil, and$3); + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + lit = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + _ref$3 = lit; + if ($assertType(_ref$3, ptrType$3, true)[1] || $assertType(_ref$3, ptrType$4, true)[1]) { + lits = $append(lits, lit); + } else { + $s = -1; return [sliceType$3.nil, errComplex]; + } + _i$2++; + } + ands = $append(ands, lits); + _i$1++; + } + split = $append(split, ands); + _i++; + } + maxOr = 0; + _ref$4 = split; + _i$3 = 0; + while (true) { + if (!(_i$3 < _ref$4.$length)) { break; } + or$4 = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); + if (maxOr < or$4.$length) { + maxOr = or$4.$length; + } + _i$3++; + } + if (maxOr === 1) { + lits$1 = sliceType.nil; + _ref$5 = split; + _i$4 = 0; + while (true) { + if (!(_i$4 < _ref$5.$length)) { break; } + or$5 = ((_i$4 < 0 || _i$4 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$4]); + lits$1 = $appendSlice(lits$1, (0 >= or$5.$length ? ($throwRuntimeError("index out of range"), undefined) : or$5.$array[or$5.$offset + 0])); + _i$4++; + } + split = new sliceType$2([new sliceType$1([lits$1])]); + } + lines = sliceType$3.nil; + _ref$6 = split; + _i$5 = 0; + /* while (true) { */ case 1: + /* if (!(_i$5 < _ref$6.$length)) { break; } */ if(!(_i$5 < _ref$6.$length)) { $s = 2; continue; } + or$6 = ((_i$5 < 0 || _i$5 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$5]); + line = "// +build"; + _ref$7 = or$6; + _i$6 = 0; + /* while (true) { */ case 3: + /* if (!(_i$6 < _ref$7.$length)) { break; } */ if(!(_i$6 < _ref$7.$length)) { $s = 4; continue; } + and$4 = ((_i$6 < 0 || _i$6 >= _ref$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$7.$array[_ref$7.$offset + _i$6]); + clause = ""; + _ref$8 = and$4; + _i$7 = 0; + /* while (true) { */ case 5: + /* if (!(_i$7 < _ref$8.$length)) { break; } */ if(!(_i$7 < _ref$8.$length)) { $s = 6; continue; } + i = _i$7; + lit$1 = ((_i$7 < 0 || _i$7 >= _ref$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$8.$array[_ref$8.$offset + _i$7]); + if (i > 0) { + clause = clause + (","); + } + _r = lit$1.String(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + clause = clause + (_r); + _i$7++; + $s = 5; continue; + case 6: + line = line + (" " + clause); + _i$6++; + $s = 3; continue; + case 4: + lines = $append(lines, line); + _i$5++; + $s = 1; continue; + case 2: + $s = -1; return [lines, $ifaceNil]; + /* */ } return; } var $f = {$blk: PlusBuildLines$1, $c: true, $r, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _r, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, and$3, and$4, ands, clause, i, line, lines, lit, lit$1, lits, lits$1, maxOr, or$3, or$4, or$5, or$6, split, x, $s};return $f; + }; + $pkg.PlusBuildLines = PlusBuildLines; + pushNot = function pushNot$1(x, not$3) { + var _ref, _tuple, not$3, ok, x, x$1, x$2, x$3, x$4, x$5, x1, x1$1, y1, y1$1; + _ref = x; + if ($assertType(_ref, ptrType$4, true)[1]) { + x$2 = _ref.$val; + _tuple = $assertType(x$2.X, ptrType$3, true); + ok = _tuple[1]; + if (ok && !not$3) { + return x$2; + } + return pushNot(x$2.X, !not$3); + } else if ($assertType(_ref, ptrType$3, true)[1]) { + x$3 = _ref.$val; + if (not$3) { + return new NotExpr.ptr(x$3); + } + return x$3; + } else if ($assertType(_ref, ptrType, true)[1]) { + x$4 = _ref.$val; + x1 = pushNot(x$4.X, not$3); + y1 = pushNot(x$4.Y, not$3); + if (not$3) { + return or(x1, y1); + } + if ($interfaceIsEqual(x1, x$4.X) && $interfaceIsEqual(y1, x$4.Y)) { + return x$4; + } + return and(x1, y1); + } else if ($assertType(_ref, ptrType$1, true)[1]) { + x$5 = _ref.$val; + x1$1 = pushNot(x$5.X, not$3); + y1$1 = pushNot(x$5.Y, not$3); + if (not$3) { + return and(x1$1, y1$1); + } + if ($interfaceIsEqual(x1$1, x$5.X) && $interfaceIsEqual(y1$1, x$5.Y)) { + return x$5; + } + return or(x1$1, y1$1); + } else { + x$1 = _ref; + return x$1; + } + }; + appendSplitAnd = function appendSplitAnd$1(list, x) { + var _tuple, list, ok, x, x$1; + _tuple = $assertType(x, ptrType, true); + x$1 = _tuple[0]; + ok = _tuple[1]; + if (ok) { + list = appendSplitAnd(list, x$1.X); + list = appendSplitAnd(list, x$1.Y); + return list; + } + return $append(list, x); + }; + appendSplitOr = function appendSplitOr$1(list, x) { + var _tuple, list, ok, x, x$1; + _tuple = $assertType(x, ptrType$1, true); + x$1 = _tuple[0]; + ok = _tuple[1]; + if (ok) { + list = appendSplitOr(list, x$1.X); + list = appendSplitOr(list, x$1.Y); + return list; + } + return $append(list, x); + }; + ptrType$3.methods = [{prop: "isExpr", name: "isExpr", pkg: "go/build/constraint", typ: $funcType([], [], false)}, {prop: "Eval", name: "Eval", pkg: "", typ: $funcType([funcType], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$4.methods = [{prop: "isExpr", name: "isExpr", pkg: "go/build/constraint", typ: $funcType([], [], false)}, {prop: "Eval", name: "Eval", pkg: "", typ: $funcType([funcType], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType.methods = [{prop: "isExpr", name: "isExpr", pkg: "go/build/constraint", typ: $funcType([], [], false)}, {prop: "Eval", name: "Eval", pkg: "", typ: $funcType([funcType], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$1.methods = [{prop: "isExpr", name: "isExpr", pkg: "go/build/constraint", typ: $funcType([], [], false)}, {prop: "Eval", name: "Eval", pkg: "", typ: $funcType([funcType], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$5.methods = [{prop: "or", name: "or", pkg: "go/build/constraint", typ: $funcType([], [Expr], false)}, {prop: "and", name: "and", pkg: "go/build/constraint", typ: $funcType([], [Expr], false)}, {prop: "not", name: "not", pkg: "go/build/constraint", typ: $funcType([], [Expr], false)}, {prop: "atom", name: "atom", pkg: "go/build/constraint", typ: $funcType([], [Expr], false)}, {prop: "lex", name: "lex", pkg: "go/build/constraint", typ: $funcType([], [], false)}]; + Expr.init([{prop: "Eval", name: "Eval", pkg: "", typ: $funcType([funcType], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "isExpr", name: "isExpr", pkg: "go/build/constraint", typ: $funcType([], [], false)}]); + TagExpr.init("", [{prop: "Tag", name: "Tag", embedded: false, exported: true, typ: $String, tag: ""}]); + NotExpr.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}]); + AndExpr.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Y", name: "Y", embedded: false, exported: true, typ: Expr, tag: ""}]); + OrExpr.init("", [{prop: "X", name: "X", embedded: false, exported: true, typ: Expr, tag: ""}, {prop: "Y", name: "Y", embedded: false, exported: true, typ: Expr, tag: ""}]); + SyntaxError.init("", [{prop: "Offset", name: "Offset", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $String, tag: ""}]); + exprParser.init("go/build/constraint", [{prop: "s", name: "s", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "i", name: "i", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "tok", name: "tok", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "isTag", name: "isTag", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: $Int, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + errNotConstraint = errors.New("not a build constraint"); + errComplex = errors.New("expression too complex for // +build lines"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["go/doc/comment"] = (function() { + var $pkg = {}, $init, bytes, fmt, sort, strconv, strings, unicode, utf8, textPrinter, Printer, commentPrinter, Doc, LinkDef, Block, Heading, List, ListItem, Paragraph, Code, Text, Plain, Italic, Link, DocLink, Parser, parseDoc, span, spanKind, mdPrinter, htmlPrinter, score, sliceType, ptrType, ptrType$1, sliceType$1, sliceType$2, ptrType$2, ptrType$3, ptrType$4, ptrType$5, sliceType$3, ptrType$6, ptrType$7, sliceType$4, ptrType$8, ptrType$9, sliceType$5, ptrType$10, sliceType$6, sliceType$7, sliceType$8, ptrType$11, sliceType$9, ptrType$12, ptrType$13, funcType, funcType$1, ptrType$14, mapType, mapType$1, funcType$2, funcType$3, ptrType$15, mapType$2, ptrType$16, ptrType$17, stdPkgs, writeNL, wrap, wrapPenalty, blankBefore, isStdPkg, DefaultLookupPackage, parseSpans, indented, unindent, isBlank, commonPrefix, leadingSpace, isOldHeading, isHeading, parseLink, listMarker, isList, splitDocName, autoURL, isScheme, isHost, isPunct, isPath, isName, ident, isIdentASCII, validImportPath, validImportPathElem, importPathOK, inc; + bytes = $packages["bytes"]; + fmt = $packages["fmt"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + textPrinter = $newType(0, $kindStruct, "comment.textPrinter", true, "go/doc/comment", false, function(Printer_, long$1_, prefix_, codePrefix_, width_) { + this.$val = this; + if (arguments.length === 0) { + this.Printer = ptrType.nil; + this.long$1 = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + this.prefix = ""; + this.codePrefix = ""; + this.width = 0; + return; + } + this.Printer = Printer_; + this.long$1 = long$1_; + this.prefix = prefix_; + this.codePrefix = codePrefix_; + this.width = width_; + }); + Printer = $newType(0, $kindStruct, "comment.Printer", true, "go/doc/comment", true, function(HeadingLevel_, HeadingID_, DocLinkURL_, DocLinkBaseURL_, TextPrefix_, TextCodePrefix_, TextWidth_) { + this.$val = this; + if (arguments.length === 0) { + this.HeadingLevel = 0; + this.HeadingID = $throwNilPointerError; + this.DocLinkURL = $throwNilPointerError; + this.DocLinkBaseURL = ""; + this.TextPrefix = ""; + this.TextCodePrefix = ""; + this.TextWidth = 0; + return; + } + this.HeadingLevel = HeadingLevel_; + this.HeadingID = HeadingID_; + this.DocLinkURL = DocLinkURL_; + this.DocLinkBaseURL = DocLinkBaseURL_; + this.TextPrefix = TextPrefix_; + this.TextCodePrefix = TextCodePrefix_; + this.TextWidth = TextWidth_; + }); + commentPrinter = $newType(0, $kindStruct, "comment.commentPrinter", true, "go/doc/comment", false, function(Printer_, headingPrefix_, needDoc_) { + this.$val = this; + if (arguments.length === 0) { + this.Printer = ptrType.nil; + this.headingPrefix = ""; + this.needDoc = false; + return; + } + this.Printer = Printer_; + this.headingPrefix = headingPrefix_; + this.needDoc = needDoc_; + }); + Doc = $newType(0, $kindStruct, "comment.Doc", true, "go/doc/comment", true, function(Content_, Links_) { + this.$val = this; + if (arguments.length === 0) { + this.Content = sliceType$5.nil; + this.Links = sliceType$6.nil; + return; + } + this.Content = Content_; + this.Links = Links_; + }); + LinkDef = $newType(0, $kindStruct, "comment.LinkDef", true, "go/doc/comment", true, function(Text_, URL_, Used_) { + this.$val = this; + if (arguments.length === 0) { + this.Text = ""; + this.URL = ""; + this.Used = false; + return; + } + this.Text = Text_; + this.URL = URL_; + this.Used = Used_; + }); + Block = $newType(8, $kindInterface, "comment.Block", true, "go/doc/comment", true, null); + Heading = $newType(0, $kindStruct, "comment.Heading", true, "go/doc/comment", true, function(Text_) { + this.$val = this; + if (arguments.length === 0) { + this.Text = sliceType$8.nil; + return; + } + this.Text = Text_; + }); + List = $newType(0, $kindStruct, "comment.List", true, "go/doc/comment", true, function(Items_, ForceBlankBefore_, ForceBlankBetween_) { + this.$val = this; + if (arguments.length === 0) { + this.Items = sliceType$9.nil; + this.ForceBlankBefore = false; + this.ForceBlankBetween = false; + return; + } + this.Items = Items_; + this.ForceBlankBefore = ForceBlankBefore_; + this.ForceBlankBetween = ForceBlankBetween_; + }); + ListItem = $newType(0, $kindStruct, "comment.ListItem", true, "go/doc/comment", true, function(Number_, Content_) { + this.$val = this; + if (arguments.length === 0) { + this.Number = ""; + this.Content = sliceType$5.nil; + return; + } + this.Number = Number_; + this.Content = Content_; + }); + Paragraph = $newType(0, $kindStruct, "comment.Paragraph", true, "go/doc/comment", true, function(Text_) { + this.$val = this; + if (arguments.length === 0) { + this.Text = sliceType$8.nil; + return; + } + this.Text = Text_; + }); + Code = $newType(0, $kindStruct, "comment.Code", true, "go/doc/comment", true, function(Text_) { + this.$val = this; + if (arguments.length === 0) { + this.Text = ""; + return; + } + this.Text = Text_; + }); + Text = $newType(8, $kindInterface, "comment.Text", true, "go/doc/comment", true, null); + Plain = $newType(8, $kindString, "comment.Plain", true, "go/doc/comment", true, null); + Italic = $newType(8, $kindString, "comment.Italic", true, "go/doc/comment", true, null); + Link = $newType(0, $kindStruct, "comment.Link", true, "go/doc/comment", true, function(Auto_, Text_, URL_) { + this.$val = this; + if (arguments.length === 0) { + this.Auto = false; + this.Text = sliceType$8.nil; + this.URL = ""; + return; + } + this.Auto = Auto_; + this.Text = Text_; + this.URL = URL_; + }); + DocLink = $newType(0, $kindStruct, "comment.DocLink", true, "go/doc/comment", true, function(Text_, ImportPath_, Recv_, Name_) { + this.$val = this; + if (arguments.length === 0) { + this.Text = sliceType$8.nil; + this.ImportPath = ""; + this.Recv = ""; + this.Name = ""; + return; + } + this.Text = Text_; + this.ImportPath = ImportPath_; + this.Recv = Recv_; + this.Name = Name_; + }); + Parser = $newType(0, $kindStruct, "comment.Parser", true, "go/doc/comment", true, function(Words_, LookupPackage_, LookupSym_) { + this.$val = this; + if (arguments.length === 0) { + this.Words = false; + this.LookupPackage = $throwNilPointerError; + this.LookupSym = $throwNilPointerError; + return; + } + this.Words = Words_; + this.LookupPackage = LookupPackage_; + this.LookupSym = LookupSym_; + }); + parseDoc = $newType(0, $kindStruct, "comment.parseDoc", true, "go/doc/comment", false, function(Parser_, Doc_, links_, lines_, lookupSym_) { + this.$val = this; + if (arguments.length === 0) { + this.Parser = ptrType$8.nil; + this.Doc = ptrType$9.nil; + this.links = false; + this.lines = sliceType.nil; + this.lookupSym = $throwNilPointerError; + return; + } + this.Parser = Parser_; + this.Doc = Doc_; + this.links = links_; + this.lines = lines_; + this.lookupSym = lookupSym_; + }); + span = $newType(0, $kindStruct, "comment.span", true, "go/doc/comment", false, function(start_, end_, kind_) { + this.$val = this; + if (arguments.length === 0) { + this.start = 0; + this.end = 0; + this.kind = 0; + return; + } + this.start = start_; + this.end = end_; + this.kind = kind_; + }); + spanKind = $newType(4, $kindInt, "comment.spanKind", true, "go/doc/comment", false, null); + mdPrinter = $newType(0, $kindStruct, "comment.mdPrinter", true, "go/doc/comment", false, function(Printer_, headingPrefix_, raw_) { + this.$val = this; + if (arguments.length === 0) { + this.Printer = ptrType.nil; + this.headingPrefix = ""; + this.raw = new bytes.Buffer.ptr(sliceType$1.nil, 0, 0); + return; + } + this.Printer = Printer_; + this.headingPrefix = headingPrefix_; + this.raw = raw_; + }); + htmlPrinter = $newType(0, $kindStruct, "comment.htmlPrinter", true, "go/doc/comment", false, function(Printer_, tight_) { + this.$val = this; + if (arguments.length === 0) { + this.Printer = ptrType.nil; + this.tight = false; + return; + } + this.Printer = Printer_; + this.tight = tight_; + }); + score = $newType(0, $kindStruct, "comment.score", true, "go/doc/comment", false, function(hi_, lo_) { + this.$val = this; + if (arguments.length === 0) { + this.hi = new $Int64(0, 0); + this.lo = new $Int64(0, 0); + return; + } + this.hi = hi_; + this.lo = lo_; + }); + $pkg.textPrinter = textPrinter; + $pkg.Printer = Printer; + $pkg.commentPrinter = commentPrinter; + $pkg.Doc = Doc; + $pkg.LinkDef = LinkDef; + $pkg.Block = Block; + $pkg.Heading = Heading; + $pkg.List = List; + $pkg.ListItem = ListItem; + $pkg.Paragraph = Paragraph; + $pkg.Code = Code; + $pkg.Text = Text; + $pkg.Plain = Plain; + $pkg.Italic = Italic; + $pkg.Link = Link; + $pkg.DocLink = DocLink; + $pkg.Parser = Parser; + $pkg.parseDoc = parseDoc; + $pkg.span = span; + $pkg.spanKind = spanKind; + $pkg.mdPrinter = mdPrinter; + $pkg.htmlPrinter = htmlPrinter; + $pkg.score = score; + $pkg.$finishSetup = function() { + sliceType = $sliceType($String); + ptrType = $ptrType(Printer); + ptrType$1 = $ptrType(strings.Builder); + sliceType$1 = $sliceType($Uint8); + sliceType$2 = $sliceType($emptyInterface); + ptrType$2 = $ptrType(Paragraph); + ptrType$3 = $ptrType(Heading); + ptrType$4 = $ptrType(Code); + ptrType$5 = $ptrType(List); + sliceType$3 = $sliceType($Int); + ptrType$6 = $ptrType(Link); + ptrType$7 = $ptrType(DocLink); + sliceType$4 = $sliceType(score); + ptrType$8 = $ptrType(Parser); + ptrType$9 = $ptrType(Doc); + sliceType$5 = $sliceType(Block); + ptrType$10 = $ptrType(LinkDef); + sliceType$6 = $sliceType(ptrType$10); + sliceType$7 = $sliceType(span); + sliceType$8 = $sliceType(Text); + ptrType$11 = $ptrType(ListItem); + sliceType$9 = $sliceType(ptrType$11); + ptrType$12 = $ptrType(bytes.Buffer); + ptrType$13 = $ptrType(textPrinter); + funcType = $funcType([ptrType$3], [$String], false); + funcType$1 = $funcType([ptrType$7], [$String], false); + ptrType$14 = $ptrType(commentPrinter); + mapType = $mapType($String, $Bool); + mapType$1 = $mapType($String, $String); + funcType$2 = $funcType([$String], [$String, $Bool], false); + funcType$3 = $funcType([$String, $String], [$Bool], false); + ptrType$15 = $ptrType(parseDoc); + mapType$2 = $mapType($String, ptrType$10); + ptrType$16 = $ptrType(mdPrinter); + ptrType$17 = $ptrType(htmlPrinter); + $ptrType(Printer).prototype.Text = function Text$1(d) { + var {_i, _i$1, _i$2, _r, _ref, _ref$1, _ref$2, anyUsed, d, def, def$1, i, out, p, tp, x, $s, $r, $c} = $restore(this, {d}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = [out]; + p = this; + tp = new textPrinter.ptr(p, new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil), p.TextPrefix, p.TextCodePrefix, p.TextWidth); + if (tp.codePrefix === "") { + tp.codePrefix = p.TextPrefix + "\t"; + } + if (tp.width === 0) { + tp.width = 80 - utf8.RuneCountInString(tp.prefix) >> 0; + } + out[0] = new bytes.Buffer.ptr(sliceType$1.nil, 0, 0); + _ref = d.Content; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0 && blankBefore(x)) { + out[0].WriteString(tp.prefix); + writeNL(out[0]); + } + $r = tp.block(out[0], x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + anyUsed = false; + _ref$1 = d.Links; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + def = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (def.Used) { + anyUsed = true; + break; + } + _i$1++; + } + /* */ if (anyUsed) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (anyUsed) { */ case 4: + writeNL(out[0]); + _ref$2 = d.Links; + _i$2 = 0; + /* while (true) { */ case 6: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 7; continue; } + def$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + /* */ if (def$1.Used) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (def$1.Used) { */ case 8: + _r = fmt.Fprintf(out[0], "[%s]: %s\n", new sliceType$2([new $String(def$1.Text), new $String(def$1.URL)])); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* } */ case 9: + _i$2++; + $s = 6; continue; + case 7: + /* } */ case 5: + $s = -1; return out[0].Bytes(); + /* */ } return; } var $f = {$blk: Text$1, $c: true, $r, _i, _i$1, _i$2, _r, _ref, _ref$1, _ref$2, anyUsed, d, def, def$1, i, out, p, tp, x, $s};return $f; + }; + writeNL = function writeNL$1(out) { + var data, n, out, x, x$1; + data = out.Bytes(); + n = 0; + while (true) { + if (!(n < data.$length && (((x = (data.$length - n >> 0) - 1 >> 0, ((x < 0 || x >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x])) === 32) || ((x$1 = (data.$length - n >> 0) - 1 >> 0, ((x$1 < 0 || x$1 >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x$1])) === 9)))) { break; } + n = n + (1) >> 0; + } + if (n > 0) { + out.Truncate(data.$length - n >> 0); + } + out.WriteByte(10); + }; + $ptrType(textPrinter).prototype.block = function block(out, x) { + var {_i, _i$1, _r, _ref, _ref$1, _ref$2, _tuple, blk, i, i$1, item, line, loose, out, p, text, x, x$1, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {out, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _ref = x; + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref, ptrType$2, true)[1]) { */ case 1: + x$2 = _ref.$val; + out.WriteString(p.prefix); + $r = p.text(out, "", x$2.Text); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 2: + x$3 = _ref.$val; + out.WriteString(p.prefix); + out.WriteString("# "); + $r = p.text(out, "", x$3.Text); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$4, true)[1]) { */ case 3: + x$4 = _ref.$val; + text = x$4.Text; + while (true) { + if (!(!(text === ""))) { break; } + line = ""; + _tuple = strings.Cut(text, "\n"); + line = _tuple[0]; + text = _tuple[1]; + if (!(line === "")) { + out.WriteString(p.codePrefix); + out.WriteString(line); + } + writeNL(out); + } + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 4: + x$5 = _ref.$val; + loose = x$5.BlankBetween(); + _ref$1 = x$5.Items; + _i = 0; + /* while (true) { */ case 9: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 10; continue; } + i = _i; + item = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + if (i > 0 && loose) { + out.WriteString(p.prefix); + writeNL(out); + } + out.WriteString(p.prefix); + out.WriteString(" "); + if (item.Number === "") { + out.WriteString(" - "); + } else { + out.WriteString(item.Number); + out.WriteString(". "); + } + _ref$2 = item.Content; + _i$1 = 0; + /* while (true) { */ case 11: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 12; continue; } + i$1 = _i$1; + blk = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + if (i$1 > 0) { + writeNL(out); + out.WriteString(p.prefix); + out.WriteString(" "); + } + $r = p.text(out, " ", $assertType(blk, ptrType$2).Text); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 11; continue; + case 12: + _i++; + $s = 9; continue; + case 10: + $s = 6; continue; + /* } else { */ case 5: + x$1 = _ref; + _r = fmt.Fprintf(out, "?%T\n", new sliceType$2([x$1])); /* */ $s = 14; case 14: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* } */ case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: block, $c: true, $r, _i, _i$1, _r, _ref, _ref$1, _ref$2, _tuple, blk, i, i$1, item, line, loose, out, p, text, x, x$1, x$2, x$3, x$4, x$5, $s};return $f; + }; + $ptrType(textPrinter).prototype.text = function text(out, indent, x) { + var {_i, _r, _r$1, _ref, i, indent, j, out, p, seq, w, words, x, x$1, $s, $r, $c} = $restore(this, {out, indent, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + p.oneLongLine(p.long$1, x); + _r = strings.Fields(p.long$1.String()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + words = _r; + p.long$1.Reset(); + seq = sliceType$3.nil; + /* */ if (p.width < 0 || (words.$length === 0)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (p.width < 0 || (words.$length === 0)) { */ case 2: + seq = new sliceType$3([0, words.$length]); + $s = 4; continue; + /* } else { */ case 3: + _r$1 = wrap(words, p.width - utf8.RuneCountInString(indent) >> 0); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + seq = _r$1; + /* } */ case 4: + i = 0; + while (true) { + if (!((i + 1 >> 0) < seq.$length)) { break; } + if (i > 0) { + out.WriteString(p.prefix); + out.WriteString(indent); + } + _ref = $subslice(words, ((i < 0 || i >= seq.$length) ? ($throwRuntimeError("index out of range"), undefined) : seq.$array[seq.$offset + i]), (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= seq.$length) ? ($throwRuntimeError("index out of range"), undefined) : seq.$array[seq.$offset + x$1]))); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + j = _i; + w = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (j > 0) { + out.WriteString(" "); + } + out.WriteString(w); + _i++; + } + writeNL(out); + i = i + (1) >> 0; + } + $s = -1; return; + /* */ } return; } var $f = {$blk: text, $c: true, $r, _i, _r, _r$1, _ref, i, indent, j, out, p, seq, w, words, x, x$1, $s};return $f; + }; + $ptrType(textPrinter).prototype.oneLongLine = function oneLongLine(out, x) { + var _i, _ref, _ref$1, out, p, t, t$1, t$2, t$3, t$4, x; + p = this; + _ref = x; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = t; + if ($assertType(_ref$1, Plain, true)[1]) { + t$1 = _ref$1.$val; + out.WriteString((t$1)); + } else if ($assertType(_ref$1, Italic, true)[1]) { + t$2 = _ref$1.$val; + out.WriteString((t$2)); + } else if ($assertType(_ref$1, ptrType$6, true)[1]) { + t$3 = _ref$1.$val; + p.oneLongLine(out, t$3.Text); + } else if ($assertType(_ref$1, ptrType$7, true)[1]) { + t$4 = _ref$1.$val; + p.oneLongLine(out, t$4.Text); + } + _i++; + } + }; + wrap = function wrap$1(words, max) { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _i, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _v, _v$1, _v$2, add, bestleft, bridge, cmp, d, f, g, i, m, m$1, m$2, max, n, s, seq, total, weight, words, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {words, max}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + add = [add]; + cmp = [cmp]; + f = [f]; + g = [g]; + max = [max]; + total = [total]; + weight = [weight]; + words = [words]; + seq = sliceType$3.nil; + add[0] = (function(add, cmp, f, g, max, total, weight, words) { return function wrap·func1(s, t) { + var s, t, x, x$1, x$2, x$3; + return new score.ptr((x = s.hi, x$1 = t.hi, new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)), (x$2 = s.lo, x$3 = t.lo, new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low))); + }; })(add, cmp, f, g, max, total, weight, words); + cmp[0] = (function(add, cmp, f, g, max, total, weight, words) { return function wrap·func2(s, t) { + var s, t, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7; + if ((x = s.hi, x$1 = t.hi, (x.$high < x$1.$high || (x.$high === x$1.$high && x.$low < x$1.$low)))) { + return -1; + } else if ((x$2 = s.hi, x$3 = t.hi, (x$2.$high > x$3.$high || (x$2.$high === x$3.$high && x$2.$low > x$3.$low)))) { + return 1; + } else if ((x$4 = s.lo, x$5 = t.lo, (x$4.$high < x$5.$high || (x$4.$high === x$5.$high && x$4.$low < x$5.$low)))) { + return -1; + } else if ((x$6 = s.lo, x$7 = t.lo, (x$6.$high > x$7.$high || (x$6.$high === x$7.$high && x$6.$low > x$7.$low)))) { + return 1; + } + return 0; + }; })(add, cmp, f, g, max, total, weight, words); + total[0] = $makeSlice(sliceType$3, (words[0].$length + 1 >> 0)); + (0 >= total[0].$length ? ($throwRuntimeError("index out of range"), undefined) : total[0].$array[total[0].$offset + 0] = 0); + _ref = words[0]; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + (x = 1 + i >> 0, ((x < 0 || x >= total[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : total[0].$array[total[0].$offset + x] = ((((i < 0 || i >= total[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : total[0].$array[total[0].$offset + i]) + utf8.RuneCountInString(s) >> 0) + 1 >> 0))); + _i++; + } + weight[0] = (function(add, cmp, f, g, max, total, weight, words) { return function wrap·func3(i$1, j) { + var i$1, j, n, p, v, x$1; + n = (((j < 0 || j >= total[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : total[0].$array[total[0].$offset + j]) - 1 >> 0) - ((i$1 < 0 || i$1 >= total[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : total[0].$array[total[0].$offset + i$1]) >> 0; + if ((j === words[0].$length) && n <= max[0]) { + return new score.ptr(new $Int64(0, 0), new $Int64(0, 0)); + } + p = wrapPenalty((x$1 = j - 1 >> 0, ((x$1 < 0 || x$1 >= words[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : words[0].$array[words[0].$offset + x$1]))); + v = $mul64((new $Int64(0, (max[0] - n >> 0))), (new $Int64(0, (max[0] - n >> 0)))); + if (n > max[0]) { + return new score.ptr(v, p); + } + return new score.ptr(new $Int64(0, 0), new $Int64(v.$high + p.$high, v.$low + p.$low)); + }; })(add, cmp, f, g, max, total, weight, words); + f[0] = new sliceType$4([$clone(new score.ptr(new $Int64(0, 0), new $Int64(0, 0)), score)]); + g[0] = (function(add, cmp, f, g, max, total, weight, words) { return function wrap·func4(i$1, j) { + var {$24r, _arg, _arg$1, _r, _r$1, i$1, j, $s, $r, $c} = $restore(this, {i$1, j}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = $clone(((i$1 < 0 || i$1 >= f[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : f[0].$array[f[0].$offset + i$1]), score); + _r = weight[0](i$1, j); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = $clone(_r, score); + _r$1 = add[0](_arg, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: wrap·func4, $c: true, $r, $24r, _arg, _arg$1, _r, _r$1, i$1, j, $s};return $f; + }; })(add, cmp, f, g, max, total, weight, words); + bridge = (function(add, cmp, f, g, max, total, weight, words) { return function wrap·func5(a, b, c) { + var {$24r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, a, b, c, k, $s, $r, $c} = $restore(this, {a, b, c}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + a = [a]; + b = [b]; + c = [c]; + _r = sort.Search((words[0].$length + 1 >> 0) - c[0] >> 0, (function(a, add, b, c, cmp, f, g, max, total, weight, words) { return function wrap·func5·func1(k) { + var {$24r, _arg, _arg$1, _r, _r$1, _r$2, k, $s, $r, $c} = $restore(this, {k}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + k = k + (c[0]) >> 0; + _r = g[0](a[0], k); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = $clone(_r, score); + _r$1 = g[0](b[0], k); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$1, score); + _r$2 = cmp[0](_arg, _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2 > 0; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: wrap·func5·func1, $c: true, $r, $24r, _arg, _arg$1, _r, _r$1, _r$2, k, $s};return $f; + }; })(a, add, b, c, cmp, f, g, max, total, weight, words)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + k = c[0] + _r >> 0; + if (k > words[0].$length) { + $s = -1; return true; + } + _r$1 = g[0](c[0], k); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = $clone(_r$1, score); + _r$2 = g[0](b[0], k); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$2, score); + _r$3 = cmp[0](_arg, _arg$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3 <= 0; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: wrap·func5, $c: true, $r, $24r, _arg, _arg$1, _r, _r$1, _r$2, _r$3, a, b, c, k, $s};return $f; + }; })(add, cmp, f, g, max, total, weight, words); + d = $makeSlice(sliceType$3, 1, words[0].$length); + (0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0] = 0); + bestleft = $makeSlice(sliceType$3, 1, words[0].$length); + (0 >= bestleft.$length ? ($throwRuntimeError("index out of range"), undefined) : bestleft.$array[bestleft.$offset + 0] = -1); + m = 1; + /* while (true) { */ case 1: + /* if (!(m < words[0].$length)) { break; } */ if(!(m < words[0].$length)) { $s = 2; continue; } + _r = g[0]((0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0]), m); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + f[0] = $append(f[0], _r); + bestleft = $append(bestleft, (0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0])); + /* while (true) { */ case 4: + if (!(d.$length > 1)) { _v = false; $s = 6; continue s; } + _r$1 = g[0]((1 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 1]), m + 1 >> 0); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = $clone(_r$1, score); + _r$2 = g[0]((0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0]), m + 1 >> 0); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$2, score); + _r$3 = cmp[0](_arg, _arg$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3 <= 0; case 6: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 5; continue; } + d = $subslice(d, 1); + $s = 4; continue; + case 5: + /* while (true) { */ case 10: + if (!(d.$length > 1)) { _v$1 = false; $s = 12; continue s; } + _r$4 = bridge((x$1 = d.$length - 2 >> 0, ((x$1 < 0 || x$1 >= d.$length) ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + x$1])), (x$2 = d.$length - 1 >> 0, ((x$2 < 0 || x$2 >= d.$length) ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + x$2])), m); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _v$1 = _r$4; case 12: + /* if (!(_v$1)) { break; } */ if(!(_v$1)) { $s = 11; continue; } + d = $subslice(d, 0, (d.$length - 1 >> 0)); + $s = 10; continue; + case 11: + _r$5 = g[0](m, words[0].$length); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$2 = $clone(_r$5, score); + _r$6 = g[0]((x$3 = d.$length - 1 >> 0, ((x$3 < 0 || x$3 >= d.$length) ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + x$3])), words[0].$length); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _arg$3 = $clone(_r$6, score); + _r$7 = cmp[0](_arg$2, _arg$3); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (_r$7 < 0) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (_r$7 < 0) { */ case 14: + d = $append(d, m); + if (!(d.$length === 2)) { _v$2 = false; $s = 21; continue s; } + _r$8 = g[0]((1 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 1]), m + 1 >> 0); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _arg$4 = $clone(_r$8, score); + _r$9 = g[0]((0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0]), m + 1 >> 0); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _arg$5 = $clone(_r$9, score); + _r$10 = cmp[0](_arg$4, _arg$5); /* */ $s = 24; case 24: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v$2 = _r$10 <= 0; case 21: + /* */ if (_v$2) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (_v$2) { */ case 19: + d = $subslice(d, 1); + /* } */ case 20: + /* } */ case 15: + m = m + (1) >> 0; + $s = 1; continue; + case 2: + bestleft = $append(bestleft, (0 >= d.$length ? ($throwRuntimeError("index out of range"), undefined) : d.$array[d.$offset + 0])); + n = 1; + m$1 = words[0].$length; + while (true) { + if (!(m$1 > 0)) { break; } + n = n + (1) >> 0; + m$1 = ((m$1 < 0 || m$1 >= bestleft.$length) ? ($throwRuntimeError("index out of range"), undefined) : bestleft.$array[bestleft.$offset + m$1]); + } + seq = $makeSlice(sliceType$3, n); + m$2 = words[0].$length; + while (true) { + if (!(m$2 > 0)) { break; } + n = n - (1) >> 0; + ((n < 0 || n >= seq.$length) ? ($throwRuntimeError("index out of range"), undefined) : seq.$array[seq.$offset + n] = m$2); + m$2 = ((m$2 < 0 || m$2 >= bestleft.$length) ? ($throwRuntimeError("index out of range"), undefined) : bestleft.$array[bestleft.$offset + m$2]); + } + seq = seq; + $s = -1; return seq; + /* */ } return; } var $f = {$blk: wrap$1, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _i, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _v, _v$1, _v$2, add, bestleft, bridge, cmp, d, f, g, i, m, m$1, m$2, max, n, s, seq, total, weight, words, x, x$1, x$2, x$3, $s};return $f; + }; + wrapPenalty = function wrapPenalty$1(s) { + var _1, s; + _1 = s.charCodeAt((s.length - 1 >> 0)); + if ((_1 === (46)) || (_1 === (44)) || (_1 === (58)) || (_1 === (59))) { + return new $Int64(0, 0); + } + return new $Int64(0, 64); + }; + $ptrType(Printer).prototype.headingLevel = function headingLevel() { + var p; + p = this; + if (p.HeadingLevel <= 0) { + return 3; + } + return p.HeadingLevel; + }; + $ptrType(Printer).prototype.headingID = function headingID(h) { + var {$24r, $24r$1, _r, _r$1, h, p, $s, $r, $c} = $restore(this, {h}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (p.HeadingID === $throwNilPointerError) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (p.HeadingID === $throwNilPointerError) { */ case 1: + _r = h.DefaultID(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = p.HeadingID(h); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: headingID, $c: true, $r, $24r, $24r$1, _r, _r$1, h, p, $s};return $f; + }; + $ptrType(Printer).prototype.docLinkURL = function docLinkURL(link) { + var {$24r, _r, link, p, $s, $r, $c} = $restore(this, {link}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + /* */ if (!(p.DocLinkURL === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(p.DocLinkURL === $throwNilPointerError)) { */ case 1: + _r = p.DocLinkURL(link); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return link.DefaultURL(p.DocLinkBaseURL); + /* */ } return; } var $f = {$blk: docLinkURL, $c: true, $r, $24r, _r, link, p, $s};return $f; + }; + $ptrType(DocLink).prototype.DefaultURL = function DefaultURL(baseURL) { + var baseURL, l, slash; + l = this; + if (!(l.ImportPath === "")) { + slash = ""; + if (strings.HasSuffix(baseURL, "/")) { + slash = "/"; + } else { + baseURL = baseURL + ("/"); + } + if (l.Name === "") { + return baseURL + l.ImportPath + slash; + } else if (!(l.Recv === "")) { + return baseURL + l.ImportPath + slash + "#" + l.Recv + "." + l.Name; + } else { + return baseURL + l.ImportPath + slash + "#" + l.Name; + } + } + if (!(l.Recv === "")) { + return "#" + l.Recv + "." + l.Name; + } + return "#" + l.Name; + }; + $ptrType(Heading).prototype.DefaultID = function DefaultID() { + var {_i, _r, _ref, _rune, h, out, p, r, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = [out]; + h = this; + out[0] = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + p = new textPrinter.ptr(ptrType.nil, new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil), "", "", 0); + p.oneLongLine(out[0], h.Text); + _r = strings.TrimSpace(out[0].String()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s = _r; + if (s === "") { + $s = -1; return ""; + } + out[0].Reset(); + out[0].WriteString("hdr-"); + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + r = _rune[0]; + if (r < 128 && isIdentASCII(((r << 24 >>> 24)))) { + out[0].WriteByte(((r << 24 >>> 24))); + } else { + out[0].WriteByte(95); + } + _i += _rune[1]; + } + $s = -1; return out[0].String(); + /* */ } return; } var $f = {$blk: DefaultID, $c: true, $r, _i, _r, _ref, _rune, h, out, p, r, s, $s};return $f; + }; + $ptrType(Printer).prototype.Comment = function Comment(d) { + var {_i, _i$1, _ref, _ref$1, cp, d, def, first, i, i$1, out, p, used, x, $s, $r, $c} = $restore(this, {d}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = [out]; + p = this; + cp = new commentPrinter.ptr(p, "", false); + out[0] = new bytes.Buffer.ptr(sliceType$1.nil, 0, 0); + _ref = d.Content; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0 && blankBefore(x)) { + out[0].WriteString("\n"); + } + $r = cp.block(out[0], x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + i$1 = 0; + while (true) { + if (!(i$1 < 2)) { break; } + used = i$1 === 0; + first = true; + _ref$1 = d.Links; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + def = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (def.Used === used) { + if (first) { + out[0].WriteString("\n"); + first = false; + } + out[0].WriteString("["); + out[0].WriteString(def.Text); + out[0].WriteString("]: "); + out[0].WriteString(def.URL); + out[0].WriteString("\n"); + } + _i$1++; + } + i$1 = i$1 + (1) >> 0; + } + $s = -1; return out[0].Bytes(); + /* */ } return; } var $f = {$blk: Comment, $c: true, $r, _i, _i$1, _ref, _ref$1, cp, d, def, first, i, i$1, out, p, used, x, $s};return $f; + }; + blankBefore = function blankBefore$1(x) { + var _tuple, ok, x, x$1; + _tuple = $assertType(x, ptrType$5, true); + x$1 = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return x$1.BlankBefore(); + } + return true; + }; + $ptrType(commentPrinter).prototype.block = function block$1(out, x) { + var {_i, _i$1, _r, _ref, _ref$1, _ref$2, _tuple, blk, i, i$1, item, line, loose, md, out, p, x, x$1, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {out, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _ref = x; + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref, ptrType$2, true)[1]) { */ case 1: + x$2 = _ref.$val; + p.text(out, "", x$2.Text); + out.WriteString("\n"); + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 2: + x$3 = _ref.$val; + out.WriteString("# "); + p.text(out, "", x$3.Text); + out.WriteString("\n"); + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$4, true)[1]) { */ case 3: + x$4 = _ref.$val; + md = x$4.Text; + while (true) { + if (!(!(md === ""))) { break; } + line = ""; + _tuple = strings.Cut(md, "\n"); + line = _tuple[0]; + md = _tuple[1]; + if (!(line === "")) { + out.WriteString("\t"); + out.WriteString(line); + } + out.WriteString("\n"); + } + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 4: + x$5 = _ref.$val; + loose = x$5.BlankBetween(); + _ref$1 = x$5.Items; + _i = 0; + while (true) { + if (!(_i < _ref$1.$length)) { break; } + i = _i; + item = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + if (i > 0 && loose) { + out.WriteString("\n"); + } + out.WriteString(" "); + if (item.Number === "") { + out.WriteString(" - "); + } else { + out.WriteString(item.Number); + out.WriteString(". "); + } + _ref$2 = item.Content; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$2.$length)) { break; } + i$1 = _i$1; + blk = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + if (i$1 > 0) { + out.WriteString("\n "); + } + p.text(out, " ", $assertType(blk, ptrType$2).Text); + out.WriteString("\n"); + _i$1++; + } + _i++; + } + $s = 6; continue; + /* } else { */ case 5: + x$1 = _ref; + _r = fmt.Fprintf(out, "?%T", new sliceType$2([x$1])); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* } */ case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: block$1, $c: true, $r, _i, _i$1, _r, _ref, _ref$1, _ref$2, _tuple, blk, i, i$1, item, line, loose, md, out, p, x, x$1, x$2, x$3, x$4, x$5, $s};return $f; + }; + $ptrType(commentPrinter).prototype.text = function text$1(out, indent, x) { + var _i, _ref, _ref$1, indent, out, p, t, t$1, t$2, t$3, t$4, x; + p = this; + _ref = x; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = t; + if ($assertType(_ref$1, Plain, true)[1]) { + t$1 = _ref$1.$val; + p.indent(out, indent, (t$1)); + } else if ($assertType(_ref$1, Italic, true)[1]) { + t$2 = _ref$1.$val; + p.indent(out, indent, (t$2)); + } else if ($assertType(_ref$1, ptrType$6, true)[1]) { + t$3 = _ref$1.$val; + if (t$3.Auto) { + p.text(out, indent, t$3.Text); + } else { + out.WriteString("["); + p.text(out, indent, t$3.Text); + out.WriteString("]"); + } + } else if ($assertType(_ref$1, ptrType$7, true)[1]) { + t$4 = _ref$1.$val; + out.WriteString("["); + p.text(out, indent, t$4.Text); + out.WriteString("]"); + } + _i++; + } + }; + $ptrType(commentPrinter).prototype.indent = function indent(out, indent$1, s) { + var _tuple, indent$1, line, ok, out, p, rest, s; + p = this; + while (true) { + if (!(!(s === ""))) { break; } + _tuple = strings.Cut(s, "\n"); + line = _tuple[0]; + rest = _tuple[1]; + ok = _tuple[2]; + out.WriteString(line); + if (ok) { + out.WriteString("\n"); + out.WriteString(indent$1); + } + s = rest; + } + }; + $ptrType(List).prototype.BlankBefore = function BlankBefore() { + var l; + l = this; + return l.ForceBlankBefore || l.BlankBetween(); + }; + $ptrType(List).prototype.BlankBetween = function BlankBetween() { + var _i, _ref, item, l; + l = this; + if (l.ForceBlankBetween) { + return true; + } + _ref = l.Items; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + item = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((item.Content.$length === 1))) { + return true; + } + _i++; + } + return false; + }; + $ptrType(parseDoc).prototype.lookupPkg = function lookupPkg(pkg) { + var {$24r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, d, importPath, ok, ok$1, path, pkg, $s, $r, $c} = $restore(this, {pkg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + importPath = ""; + ok = false; + d = this; + if (strings.Contains(pkg, "/")) { + if (validImportPath(pkg)) { + _tmp = pkg; + _tmp$1 = true; + importPath = _tmp; + ok = _tmp$1; + $s = -1; return [importPath, ok]; + } + _tmp$2 = ""; + _tmp$3 = false; + importPath = _tmp$2; + ok = _tmp$3; + $s = -1; return [importPath, ok]; + } + /* */ if (!(d.Parser.LookupPackage === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(d.Parser.LookupPackage === $throwNilPointerError)) { */ case 1: + _r = d.Parser.LookupPackage(pkg); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + path = _tuple[0]; + ok$1 = _tuple[1]; + if (ok$1) { + _tmp$4 = path; + _tmp$5 = true; + importPath = _tmp$4; + ok = _tmp$5; + $s = -1; return [importPath, ok]; + } + /* } */ case 2: + _r$1 = DefaultLookupPackage(pkg); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + importPath = _tuple$1[0]; + ok = _tuple$1[1]; + $24r = [importPath, ok]; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: lookupPkg, $c: true, $r, $24r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, d, importPath, ok, ok$1, path, pkg, $s};return $f; + }; + isStdPkg = function isStdPkg$1(path) { + var {_r, i, path, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + path = [path]; + _r = sort.Search(stdPkgs.$length, (function(path) { return function isStdPkg·func1(i) { + var i; + return ((i < 0 || i >= stdPkgs.$length) ? ($throwRuntimeError("index out of range"), undefined) : stdPkgs.$array[stdPkgs.$offset + i]) >= path[0]; + }; })(path)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + $s = -1; return i < stdPkgs.$length && ((i < 0 || i >= stdPkgs.$length) ? ($throwRuntimeError("index out of range"), undefined) : stdPkgs.$array[stdPkgs.$offset + i]) === path[0]; + /* */ } return; } var $f = {$blk: isStdPkg$1, $c: true, $r, _r, i, path, $s};return $f; + }; + DefaultLookupPackage = function DefaultLookupPackage$1(name) { + var {_r, _tmp, _tmp$1, _tmp$2, _tmp$3, importPath, name, ok, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + importPath = ""; + ok = false; + _r = isStdPkg(name); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + _tmp = name; + _tmp$1 = true; + importPath = _tmp; + ok = _tmp$1; + $s = -1; return [importPath, ok]; + /* } */ case 2: + _tmp$2 = ""; + _tmp$3 = false; + importPath = _tmp$2; + ok = _tmp$3; + $s = -1; return [importPath, ok]; + /* */ } return; } var $f = {$blk: DefaultLookupPackage$1, $c: true, $r, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, importPath, name, ok, $s};return $f; + }; + $pkg.DefaultLookupPackage = DefaultLookupPackage; + $ptrType(Parser).prototype.Parse = function Parse(text$6) { + var {_1, _i, _i$1, _i$2, _i$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _ref$1, _ref$2, _ref$3, _ref$4, b, b$1, b$2, b$3, c, d, i, lines, p, p$1, prev, s, text$6, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {text$6}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r = unindent(strings.Split(text$6, "\n")); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + lines = _r; + d = new parseDoc.ptr(p, new Doc.ptr(sliceType$5.nil, sliceType$6.nil), new $global.Map(), lines, (function Parser·Parse·func1(recv, name) { + var name, recv; + return false; + })); + if (!(p.LookupSym === $throwNilPointerError)) { + d.lookupSym = p.LookupSym; + } + prev = new span.ptr(0, 0, 0); + _r$1 = parseSpans(lines); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + s = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), span); + b = $ifaceNil; + _1 = s.kind; + /* */ if (_1 === (3)) { $s = 6; continue; } + /* */ if (_1 === (1)) { $s = 7; continue; } + /* */ if (_1 === (4)) { $s = 8; continue; } + /* */ if (_1 === (2)) { $s = 9; continue; } + /* */ if (_1 === (5)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_1 === (3)) { */ case 6: + _r$2 = d.list($subslice(lines, s.start, s.end), prev.end < s.start); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + b = _r$2; + $s = 12; continue; + /* } else if (_1 === (1)) { */ case 7: + _r$3 = d.code($subslice(lines, s.start, s.end)); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + b = _r$3; + $s = 12; continue; + /* } else if (_1 === (4)) { */ case 8: + _r$4 = d.oldHeading((x = s.start, ((x < 0 || x >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x]))); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + b = _r$4; + $s = 12; continue; + /* } else if (_1 === (2)) { */ case 9: + _r$5 = d.heading((x$1 = s.start, ((x$1 < 0 || x$1 >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x$1]))); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + b = _r$5; + $s = 12; continue; + /* } else if (_1 === (5)) { */ case 10: + _r$6 = d.paragraph($subslice(lines, s.start, s.end)); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + b = _r$6; + $s = 12; continue; + /* } else { */ case 11: + $panic(new $String("go/doc/comment: internal error: unknown span kind")); + /* } */ case 12: + case 5: + if (!($interfaceIsEqual(b, $ifaceNil))) { + d.Doc.Content = $append(d.Doc.Content, b); + } + span.copy(prev, s); + _i++; + $s = 3; continue; + case 4: + _ref$1 = d.Doc.Content; + _i$1 = 0; + /* while (true) { */ case 18: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 19; continue; } + b$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _ref$2 = b$1; + /* */ if ($assertType(_ref$2, ptrType$2, true)[1]) { $s = 20; continue; } + /* */ if ($assertType(_ref$2, ptrType$5, true)[1]) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if ($assertType(_ref$2, ptrType$2, true)[1]) { */ case 20: + b$2 = _ref$2.$val; + _r$7 = d.parseLinkedText(($assertType((x$2 = b$2.Text, (0 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 0])), Plain))); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + b$2.Text = _r$7; + $s = 22; continue; + /* } else if ($assertType(_ref$2, ptrType$5, true)[1]) { */ case 21: + b$3 = _ref$2.$val; + _ref$3 = b$3.Items; + _i$2 = 0; + /* while (true) { */ case 24: + /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 25; continue; } + i = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + _ref$4 = i.Content; + _i$3 = 0; + /* while (true) { */ case 26: + /* if (!(_i$3 < _ref$4.$length)) { break; } */ if(!(_i$3 < _ref$4.$length)) { $s = 27; continue; } + c = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$3]); + p$1 = $assertType(c, ptrType$2); + _r$8 = d.parseLinkedText(($assertType((x$3 = p$1.Text, (0 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 0])), Plain))); /* */ $s = 28; case 28: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + p$1.Text = _r$8; + _i$3++; + $s = 26; continue; + case 27: + _i$2++; + $s = 24; continue; + case 25: + /* } */ case 22: + _i$1++; + $s = 18; continue; + case 19: + $s = -1; return d.Doc; + /* */ } return; } var $f = {$blk: Parse, $c: true, $r, _1, _i, _i$1, _i$2, _i$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _ref$1, _ref$2, _ref$3, _ref$4, b, b$1, b$2, b$3, c, d, i, lines, p, p$1, prev, s, text$6, x, x$1, x$2, x$3, $s};return $f; + }; + parseSpans = function parseSpans$1(lines) { + var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, end, forceIndent, i, kind, lines, spans, start, unindentedListOK, watchdog, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {lines}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + spans = sliceType$7.nil; + watchdog = $imul(2, lines.$length); + i = 0; + forceIndent = 0; + /* while (true) { */ case 1: + while (true) { + if (!(i < lines.$length && ((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i]) === "")) { break; } + i = i + (1) >> 0; + } + if (i >= lines.$length) { + /* break; */ $s = 2; continue; + } + watchdog = watchdog - (1) >> 0; + if (watchdog < 0) { + $panic(new $String("go/doc/comment: internal error: not making progress")); + } + kind = 0; + start = i; + end = i; + /* */ if (i < forceIndent || indented(((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i]))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (i < forceIndent || indented(((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i]))) { */ case 3: + _r = isList(((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + unindentedListOK = _r && i < forceIndent; + i = i + (1) >> 0; + /* while (true) { */ case 7: + if (!(i < lines.$length)) { _v = false; $s = 9; continue s; } + if (((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i]) === "" || i < forceIndent || indented(((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i]))) { _v$1 = true; $s = 10; continue s; } + if (!(unindentedListOK)) { _v$2 = false; $s = 11; continue s; } + _r$1 = isList(((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i])); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v$2 = _r$1; case 11: + _v$1 = _v$2; case 10: + _v = _v$1; case 9: + /* if (!(_v)) { break; } */ if(!(_v)) { $s = 8; continue; } + if (((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i]) === "") { + unindentedListOK = false; + } + i = i + (1) >> 0; + $s = 7; continue; + case 8: + end = i; + while (true) { + if (!(end > start && (x = end - 1 >> 0, ((x < 0 || x >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x])) === "")) { break; } + end = end - (1) >> 0; + } + if (end < lines.$length && strings.HasPrefix(((end < 0 || end >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + end]), "}")) { + end = end + (1) >> 0; + } + _r$2 = isList(((start < 0 || start >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + start])); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_r$2) { */ case 13: + kind = 3; + $s = 15; continue; + /* } else { */ case 14: + kind = 1; + /* } */ case 15: + $s = 5; continue; + /* } else { */ case 4: + i = i + (1) >> 0; + while (true) { + if (!(i < lines.$length && !(((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i]) === "") && !indented(((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i])))) { break; } + i = i + (1) >> 0; + } + end = i; + if (!(i < lines.$length && !(((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i]) === ""))) { _v$3 = false; $s = 19; continue s; } + _r$3 = isList(((i < 0 || i >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i])); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v$3 = !_r$3; case 19: + /* */ if (_v$3) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_v$3) { */ case 17: + _r$4 = isList((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x$1]))); /* */ $s = 25; case 25: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 22; continue; } + /* */ if (strings.HasSuffix((x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x$2])), "{") || strings.HasSuffix((x$3 = i - 1 >> 0, ((x$3 < 0 || x$3 >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x$3])), "\\")) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (_r$4) { */ case 22: + forceIndent = end; + end = end - (1) >> 0; + /* while (true) { */ case 26: + if (!(end > start)) { _v$4 = false; $s = 28; continue s; } + _r$5 = isList((x$4 = end - 1 >> 0, ((x$4 < 0 || x$4 >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x$4]))); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _v$4 = _r$5; case 28: + /* if (!(_v$4)) { break; } */ if(!(_v$4)) { $s = 27; continue; } + end = end - (1) >> 0; + $s = 26; continue; + case 27: + $s = 24; continue; + /* } else if (strings.HasSuffix((x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x$2])), "{") || strings.HasSuffix((x$3 = i - 1 >> 0, ((x$3 < 0 || x$3 >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x$3])), "\\")) { */ case 23: + forceIndent = end; + end = end - (1) >> 0; + /* } */ case 24: + case 21: + if ((start === end) && forceIndent > start) { + i = start; + /* continue Spans; */ $s = 1; continue s; + } + /* } */ case 18: + if (!((end - start >> 0) === 1)) { _v$5 = false; $s = 34; continue s; } + _r$6 = isHeading(((start < 0 || start >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + start])); /* */ $s = 35; case 35: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _v$5 = _r$6; case 34: + /* */ if (_v$5) { $s = 30; continue; } + if (!((end - start >> 0) === 1)) { _v$6 = false; $s = 36; continue s; } + _r$7 = isOldHeading(((start < 0 || start >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + start]), lines, start); /* */ $s = 37; case 37: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _v$6 = _r$7; case 36: + /* */ if (_v$6) { $s = 31; continue; } + /* */ $s = 32; continue; + /* if (_v$5) { */ case 30: + kind = 2; + $s = 33; continue; + /* } else if (_v$6) { */ case 31: + kind = 4; + $s = 33; continue; + /* } else { */ case 32: + kind = 5; + /* } */ case 33: + /* } */ case 5: + spans = $append(spans, new span.ptr(start, end, kind)); + i = end; + $s = 1; continue; + case 2: + $s = -1; return spans; + /* */ } return; } var $f = {$blk: parseSpans$1, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, end, forceIndent, i, kind, lines, spans, start, unindentedListOK, watchdog, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + indented = function indented$1(line) { + var line; + return !(line === "") && ((line.charCodeAt(0) === 32) || (line.charCodeAt(0) === 9)); + }; + unindent = function unindent$1(lines) { + var {_i, _i$1, _r, _ref, _ref$1, i, line, line$1, lines, out, prefix, x, x$1, $s, $r, $c} = $restore(this, {lines}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + while (true) { + if (!(lines.$length > 0 && isBlank((0 >= lines.$length ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + 0])))) { break; } + lines = $subslice(lines, 1); + } + while (true) { + if (!(lines.$length > 0 && isBlank((x = lines.$length - 1 >> 0, ((x < 0 || x >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + x]))))) { break; } + lines = $subslice(lines, 0, (lines.$length - 1 >> 0)); + } + if (lines.$length === 0) { + $s = -1; return sliceType.nil; + } + prefix = leadingSpace((0 >= lines.$length ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + 0])); + _ref = $subslice(lines, 1); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + line = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!isBlank(line)) { + prefix = commonPrefix(prefix, leadingSpace(line)); + } + _i++; + } + out = $makeSlice(sliceType, lines.$length); + _ref$1 = lines; + _i$1 = 0; + /* while (true) { */ case 1: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 2; continue; } + i = _i$1; + line$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + line$1 = strings.TrimPrefix(line$1, prefix); + _r = strings.TrimSpace(line$1); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === "") { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r === "") { */ case 3: + line$1 = ""; + /* } */ case 4: + ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = line$1); + _i$1++; + $s = 1; continue; + case 2: + while (true) { + if (!(out.$length > 0 && (0 >= out.$length ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + 0]) === "")) { break; } + out = $subslice(out, 1); + } + while (true) { + if (!(out.$length > 0 && (x$1 = out.$length - 1 >> 0, ((x$1 < 0 || x$1 >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + x$1])) === "")) { break; } + out = $subslice(out, 0, (out.$length - 1 >> 0)); + } + $s = -1; return out; + /* */ } return; } var $f = {$blk: unindent$1, $c: true, $r, _i, _i$1, _r, _ref, _ref$1, i, line, line$1, lines, out, prefix, x, x$1, $s};return $f; + }; + isBlank = function isBlank$1(s) { + var s; + return (s.length === 0) || ((s.length === 1) && (s.charCodeAt(0) === 10)); + }; + commonPrefix = function commonPrefix$1(a, b) { + var a, b, i; + i = 0; + while (true) { + if (!(i < a.length && i < b.length && (a.charCodeAt(i) === b.charCodeAt(i)))) { break; } + i = i + (1) >> 0; + } + return $substring(a, 0, i); + }; + leadingSpace = function leadingSpace$1(s) { + var i, s; + i = 0; + while (true) { + if (!(i < s.length && ((s.charCodeAt(i) === 32) || (s.charCodeAt(i) === 9)))) { break; } + i = i + (1) >> 0; + } + return $substring(s, 0, i); + }; + isOldHeading = function isOldHeading$1(line, all, off) { + var {_r, _tuple, _tuple$1, _tuple$2, _tuple$3, all, b, b$1, line, off, ok, ok$1, r, x, x$1, x$2, $s, $r, $c} = $restore(this, {line, all, off}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (off <= 0 || !((x = off - 1 >> 0, ((x < 0 || x >= all.$length) ? ($throwRuntimeError("index out of range"), undefined) : all.$array[all.$offset + x])) === "") || (off + 2 >> 0) >= all.$length || !((x$1 = off + 1 >> 0, ((x$1 < 0 || x$1 >= all.$length) ? ($throwRuntimeError("index out of range"), undefined) : all.$array[all.$offset + x$1])) === "") || !(leadingSpace((x$2 = off + 2 >> 0, ((x$2 < 0 || x$2 >= all.$length) ? ($throwRuntimeError("index out of range"), undefined) : all.$array[all.$offset + x$2]))) === "")) { + $s = -1; return false; + } + _r = strings.TrimSpace(line); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + line = _r; + _tuple = utf8.DecodeRuneInString(line); + r = _tuple[0]; + if (!unicode.IsLetter(r) || !unicode.IsUpper(r)) { + $s = -1; return false; + } + _tuple$1 = utf8.DecodeLastRuneInString(line); + r = _tuple$1[0]; + if (!unicode.IsLetter(r) && !unicode.IsDigit(r)) { + $s = -1; return false; + } + if (strings.ContainsAny(line, ";:!?+*/=[]{}_^\xC2\xB0&\xC2\xA7~%#@<\">\\")) { + $s = -1; return false; + } + b = line; + while (true) { + ok = false; + _tuple$2 = strings.Cut(b, "'"); + b = _tuple$2[1]; + ok = _tuple$2[2]; + if (!ok) { + break; + } + if (!(b === "s") && !strings.HasPrefix(b, "s ")) { + $s = -1; return false; + } + } + b$1 = line; + while (true) { + ok$1 = false; + _tuple$3 = strings.Cut(b$1, "."); + b$1 = _tuple$3[1]; + ok$1 = _tuple$3[2]; + if (!ok$1) { + break; + } + if (b$1 === "" || strings.HasPrefix(b$1, " ")) { + $s = -1; return false; + } + } + $s = -1; return true; + /* */ } return; } var $f = {$blk: isOldHeading$1, $c: true, $r, _r, _tuple, _tuple$1, _tuple$2, _tuple$3, all, b, b$1, line, off, ok, ok$1, r, x, x$1, x$2, $s};return $f; + }; + $ptrType(parseDoc).prototype.oldHeading = function oldHeading(line) { + var {$24r, _r, d, line, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + _r = strings.TrimSpace(line); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = new Heading.ptr(new sliceType$8([new Plain((_r))])); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: oldHeading, $c: true, $r, $24r, _r, d, line, $s};return $f; + }; + isHeading = function isHeading$1(line) { + var {$24r, _r, _v, line, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(line.length >= 2 && (line.charCodeAt(0) === 35) && ((line.charCodeAt(1) === 32) || (line.charCodeAt(1) === 9)))) { _v = false; $s = 1; continue s; } + _r = strings.TrimSpace(line); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = !(_r === "#"); case 1: + $24r = _v; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: isHeading$1, $c: true, $r, $24r, _r, _v, line, $s};return $f; + }; + $ptrType(parseDoc).prototype.heading = function heading(line) { + var {$24r, _r, d, line, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + _r = strings.TrimSpace($substring(line, 1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = new Heading.ptr(new sliceType$8([new Plain((_r))])); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: heading, $c: true, $r, $24r, _r, d, line, $s};return $f; + }; + $ptrType(parseDoc).prototype.code = function code(lines) { + var {_r, body, d, lines, $s, $r, $c} = $restore(this, {lines}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + _r = unindent(lines); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + body = _r; + body = $append(body, ""); + $s = -1; return new Code.ptr(strings.Join(body, "\n")); + /* */ } return; } var $f = {$blk: code, $c: true, $r, _r, body, d, lines, $s};return $f; + }; + $ptrType(parseDoc).prototype.paragraph = function paragraph(lines) { + var {_entry, _i, _i$1, _key, _r, _ref, _ref$1, _tuple, d, def, def$1, defs, line, lines, ok, $s, $r, $c} = $restore(this, {lines}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + defs = sliceType$6.nil; + _ref = lines; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + line = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r = parseLink(line); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + def = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!ok) { */ case 4: + /* goto NoDefs */ $s = 6; continue; + /* } */ case 5: + defs = $append(defs, def); + _i++; + $s = 1; continue; + case 2: + _ref$1 = defs; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + def$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + d.Doc.Links = $append(d.Doc.Links, def$1); + if ((_entry = $mapIndex(d.links,$String.keyFor(def$1.Text)), _entry !== undefined ? _entry.v : ptrType$10.nil) === ptrType$10.nil) { + _key = def$1.Text; (d.links || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: def$1 }); + } + _i$1++; + } + $s = -1; return $ifaceNil; + /* NoDefs: */ case 6: + $s = -1; return new Paragraph.ptr(new sliceType$8([new Plain((strings.Join(lines, "\n")))])); + /* */ } return; } var $f = {$blk: paragraph, $c: true, $r, _entry, _i, _i$1, _key, _r, _ref, _ref$1, _tuple, d, def, def$1, defs, line, lines, ok, $s};return $f; + }; + parseLink = function parseLink$1(line) { + var {_r, i, j, line, text$6, url, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (line === "" || !((line.charCodeAt(0) === 91))) { + $s = -1; return [ptrType$10.nil, false]; + } + i = strings.Index(line, "]:"); + if (i < 0 || (i + 3 >> 0) >= line.length || (!((line.charCodeAt((i + 2 >> 0)) === 32)) && !((line.charCodeAt((i + 2 >> 0)) === 9)))) { + $s = -1; return [ptrType$10.nil, false]; + } + text$6 = $substring(line, 1, i); + _r = strings.TrimSpace($substring(line, (i + 3 >> 0))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + url = _r; + j = strings.Index(url, "://"); + if (j < 0 || !isScheme($substring(url, 0, j))) { + $s = -1; return [ptrType$10.nil, false]; + } + $s = -1; return [new LinkDef.ptr(text$6, url, false), true]; + /* */ } return; } var $f = {$blk: parseLink$1, $c: true, $r, _r, i, j, line, text$6, url, $s};return $f; + }; + $ptrType(parseDoc).prototype.list = function list(lines, forceBlankBefore) { + var {_i, _r, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, after, d, flush, forceBlankBefore, item, line, lines, list$1, n, num, ok, text$6, $s, $r, $c} = $restore(this, {lines, forceBlankBefore}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = [d]; + item = [item]; + text$6 = [text$6]; + d[0] = this; + _r = listMarker((0 >= lines.$length ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + 0])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + num = _tuple[0]; + list$1 = new List.ptr(sliceType$9.nil, forceBlankBefore, false); + item[0] = ptrType$11.nil; + text$6[0] = sliceType.nil; + flush = (function(d, item, text$6) { return function parseDoc·list·func1() { + var {_r$1, para, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!(item[0] === ptrType$11.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(item[0] === ptrType$11.nil)) { */ case 1: + _r$1 = d[0].paragraph(text$6[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + para = _r$1; + if (!($interfaceIsEqual(para, $ifaceNil))) { + item[0].Content = $append(item[0].Content, para); + } + /* } */ case 2: + text$6[0] = sliceType.nil; + $s = -1; return; + /* */ } return; } var $f = {$blk: parseDoc·list·func1, $c: true, $r, _r$1, para, $s};return $f; + }; })(d, item, text$6); + _ref = lines; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + line = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = listMarker(line); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + n = _tuple$1[0]; + after = _tuple$1[1]; + ok = _tuple$1[2]; + /* */ if (ok && (!(n === "")) === (!(num === ""))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (ok && (!(n === "")) === (!(num === ""))) { */ case 5: + $r = flush(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + item[0] = new ListItem.ptr(n, sliceType$5.nil); + list$1.Items = $append(list$1.Items, item[0]); + line = after; + /* } */ case 6: + _r$2 = strings.TrimSpace(line); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + line = _r$2; + /* */ if (line === "") { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (line === "") { */ case 9: + list$1.ForceBlankBetween = true; + $r = flush(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + /* continue; */ $s = 2; continue; + /* } */ case 10: + _r$3 = strings.TrimSpace(line); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + text$6[0] = $append(text$6[0], _r$3); + _i++; + $s = 2; continue; + case 3: + $r = flush(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return list$1; + /* */ } return; } var $f = {$blk: list, $c: true, $r, _i, _r, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, after, d, flush, forceBlankBefore, item, line, lines, list$1, n, num, ok, text$6, $s};return $f; + }; + listMarker = function listMarker$1(line) { + var {_r, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _v, line, n, n$1, num, ok, r, rest, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + num = ""; + rest = ""; + ok = false; + _r = strings.TrimSpace(line); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + line = _r; + if (line === "") { + _tmp = ""; + _tmp$1 = ""; + _tmp$2 = false; + num = _tmp; + rest = _tmp$1; + ok = _tmp$2; + $s = -1; return [num, rest, ok]; + } + _tuple = utf8.DecodeRuneInString(line); + r = _tuple[0]; + n = _tuple[1]; + if ((r === 8226) || (r === 42) || (r === 43) || (r === 45)) { + _tmp$3 = ""; + _tmp$4 = $substring(line, n); + num = _tmp$3; + rest = _tmp$4; + } else if (48 <= line.charCodeAt(0) && line.charCodeAt(0) <= 57) { + n$1 = 1; + while (true) { + if (!(n$1 < line.length && 48 <= line.charCodeAt(n$1) && line.charCodeAt(n$1) <= 57)) { break; } + n$1 = n$1 + (1) >> 0; + } + if (n$1 >= line.length || (!((line.charCodeAt(n$1) === 46)) && !((line.charCodeAt(n$1) === 41)))) { + _tmp$5 = ""; + _tmp$6 = ""; + _tmp$7 = false; + num = _tmp$5; + rest = _tmp$6; + ok = _tmp$7; + $s = -1; return [num, rest, ok]; + } + _tmp$8 = $substring(line, 0, n$1); + _tmp$9 = $substring(line, (n$1 + 1 >> 0)); + num = _tmp$8; + rest = _tmp$9; + } else { + _tmp$10 = ""; + _tmp$11 = ""; + _tmp$12 = false; + num = _tmp$10; + rest = _tmp$11; + ok = _tmp$12; + $s = -1; return [num, rest, ok]; + } + if (!indented(rest)) { _v = true; $s = 4; continue s; } + _r$1 = strings.TrimSpace(rest); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1 === ""; case 4: + /* */ if (_v) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_v) { */ case 2: + _tmp$13 = ""; + _tmp$14 = ""; + _tmp$15 = false; + num = _tmp$13; + rest = _tmp$14; + ok = _tmp$15; + $s = -1; return [num, rest, ok]; + /* } */ case 3: + _tmp$16 = num; + _tmp$17 = rest; + _tmp$18 = true; + num = _tmp$16; + rest = _tmp$17; + ok = _tmp$18; + $s = -1; return [num, rest, ok]; + /* */ } return; } var $f = {$blk: listMarker$1, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _v, line, n, n$1, num, ok, r, rest, $s};return $f; + }; + isList = function isList$1(line) { + var {_r, _tuple, line, ok, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = listMarker(line); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ok = _tuple[2]; + $s = -1; return ok; + /* */ } return; } var $f = {$blk: isList$1, $c: true, $r, _r, _tuple, line, ok, $s};return $f; + }; + $ptrType(parseDoc).prototype.parseLinkedText = function parseLinkedText(text$6) { + var {_1, _entry, _r, _r$1, _r$2, _tuple, _tuple$1, buf, c, d, def, flush, i, link, ok, ok$1, out, start, text$6, wrote, $s, $r, $c} = $restore(this, {text$6}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = [d]; + out = [out]; + text$6 = [text$6]; + wrote = [wrote]; + d[0] = this; + out[0] = sliceType$8.nil; + wrote[0] = 0; + flush = (function(d, out, text$6, wrote) { return function parseDoc·parseLinkedText·func1(i) { + var {_r, i, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (wrote[0] < i) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (wrote[0] < i) { */ case 1: + _r = d[0].parseText(out[0], $substring(text$6[0], wrote[0], i), true); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + out[0] = _r; + wrote[0] = i; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: parseDoc·parseLinkedText·func1, $c: true, $r, _r, i, $s};return $f; + }; })(d, out, text$6, wrote); + start = -1; + buf = sliceType$1.nil; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < text$6[0].length)) { break; } */ if(!(i < text$6[0].length)) { $s = 2; continue; } + c = text$6[0].charCodeAt(i); + if ((c === 10) || (c === 9)) { + c = 32; + } + _1 = c; + /* */ if (_1 === (91)) { $s = 4; continue; } + /* */ if (_1 === (93)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_1 === (91)) { */ case 4: + start = i; + $s = 6; continue; + /* } else if (_1 === (93)) { */ case 5: + /* */ if (start >= 0) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (start >= 0) { */ case 7: + _tuple = (_entry = $mapIndex(d[0].links,$String.keyFor(($bytesToString(buf)))), _entry !== undefined ? [_entry.v, true] : [ptrType$10.nil, false]); + def = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (ok) { */ case 9: + def.Used = true; + $r = flush(start); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = d[0].parseText(sliceType$8.nil, $substring(text$6[0], (start + 1 >> 0), i), false); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + out[0] = $append(out[0], new Link.ptr(false, _r, def.URL)); + wrote[0] = i + 1 >> 0; + $s = 11; continue; + /* } else { */ case 10: + _r$1 = d[0].docLink($substring(text$6[0], (start + 1 >> 0), i), $substring(text$6[0], 0, start), $substring(text$6[0], (i + 1 >> 0))); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + link = _tuple$1[0]; + ok$1 = _tuple$1[1]; + /* */ if (ok$1) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (ok$1) { */ case 15: + $r = flush(start); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = d[0].parseText(sliceType$8.nil, $substring(text$6[0], (start + 1 >> 0), i), false); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + link.Text = _r$2; + out[0] = $append(out[0], link); + wrote[0] = i + 1 >> 0; + /* } */ case 16: + /* } */ case 11: + /* } */ case 8: + start = -1; + buf = $subslice(buf, 0, 0); + /* } */ case 6: + case 3: + if (start >= 0 && !((i === start))) { + buf = $append(buf, c); + } + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $r = flush(text$6[0].length); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return out[0]; + /* */ } return; } var $f = {$blk: parseLinkedText, $c: true, $r, _1, _entry, _r, _r$1, _r$2, _tuple, _tuple$1, buf, c, d, def, flush, i, link, ok, ok$1, out, start, text$6, wrote, $s};return $f; + }; + $ptrType(parseDoc).prototype.docLink = function docLink(text$6, before, after) { + var {_r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, after, before, d, link, name, ok, pkg, r, r$1, recv, text$6, $s, $r, $c} = $restore(this, {text$6, before, after}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + link = ptrType$7.nil; + ok = false; + d = this; + if (!(before === "")) { + _tuple = utf8.DecodeLastRuneInString(before); + r = _tuple[0]; + if (!unicode.IsPunct(r) && !((r === 32)) && !((r === 9)) && !((r === 10))) { + _tmp = ptrType$7.nil; + _tmp$1 = false; + link = _tmp; + ok = _tmp$1; + $s = -1; return [link, ok]; + } + } + if (!(after === "")) { + _tuple$1 = utf8.DecodeRuneInString(after); + r$1 = _tuple$1[0]; + if (!unicode.IsPunct(r$1) && !((r$1 === 32)) && !((r$1 === 9)) && !((r$1 === 10))) { + _tmp$2 = ptrType$7.nil; + _tmp$3 = false; + link = _tmp$2; + ok = _tmp$3; + $s = -1; return [link, ok]; + } + } + text$6 = strings.TrimPrefix(text$6, "*"); + _tuple$2 = splitDocName(text$6); + pkg = _tuple$2[0]; + name = _tuple$2[1]; + ok = _tuple$2[2]; + recv = ""; + if (ok) { + _tuple$3 = splitDocName(pkg); + pkg = _tuple$3[0]; + recv = _tuple$3[1]; + } + /* */ if (!(pkg === "")) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(pkg === "")) { */ case 1: + _r = d.lookupPkg(pkg); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$4 = _r; + pkg = _tuple$4[0]; + ok = _tuple$4[1]; + if (!ok) { + _tmp$4 = ptrType$7.nil; + _tmp$5 = false; + link = _tmp$4; + ok = _tmp$5; + $s = -1; return [link, ok]; + } + $s = 3; continue; + /* } else { */ case 2: + _r$1 = d.lookupSym(recv, name); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ok = _r$1; + if (!ok) { + _tmp$6 = ptrType$7.nil; + _tmp$7 = false; + link = _tmp$6; + ok = _tmp$7; + $s = -1; return [link, ok]; + } + /* } */ case 3: + link = new DocLink.ptr(sliceType$8.nil, pkg, recv, name); + _tmp$8 = link; + _tmp$9 = true; + link = _tmp$8; + ok = _tmp$9; + $s = -1; return [link, ok]; + /* */ } return; } var $f = {$blk: docLink, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, after, before, d, link, name, ok, pkg, r, r$1, recv, text$6, $s};return $f; + }; + splitDocName = function splitDocName$1(text$6) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, before, foundDot, i, name, text$6; + before = ""; + name = ""; + foundDot = false; + i = strings.LastIndex(text$6, "."); + name = $substring(text$6, (i + 1 >> 0)); + if (!isName(name)) { + _tmp = text$6; + _tmp$1 = ""; + _tmp$2 = false; + before = _tmp; + name = _tmp$1; + foundDot = _tmp$2; + return [before, name, foundDot]; + } + if (i >= 0) { + before = $substring(text$6, 0, i); + } + _tmp$3 = before; + _tmp$4 = name; + _tmp$5 = true; + before = _tmp$3; + name = _tmp$4; + foundDot = _tmp$5; + return [before, name, foundDot]; + }; + $ptrType(parseDoc).prototype.parseText = function parseText(out, s, autoLink) { + var {_entry, _tuple, _tuple$1, _tuple$2, autoLink, d, flush, i, id, italics, ok, ok$1, out, s, t, url, url$1, w, writeUntil, wrote, $s, $r, $c} = $restore(this, {out, s, autoLink}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = [out]; + s = [s]; + w = [w]; + writeUntil = [writeUntil]; + wrote = [wrote]; + d = this; + w[0] = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + wrote[0] = 0; + writeUntil[0] = (function(out, s, w, writeUntil, wrote) { return function parseDoc·parseText·func1(i) { + var i; + w[0].WriteString($substring(s[0], wrote[0], i)); + wrote[0] = i; + }; })(out, s, w, writeUntil, wrote); + flush = (function(out, s, w, writeUntil, wrote) { return function parseDoc·parseText·func2(i) { + var {i, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = writeUntil[0](i); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (w[0].Len() > 0) { + out[0] = $append(out[0], new Plain((w[0].String()))); + w[0].Reset(); + } + $s = -1; return; + /* */ } return; } var $f = {$blk: parseDoc·parseText·func2, $c: true, $r, i, $s};return $f; + }; })(out, s, w, writeUntil, wrote); + i = 0; + /* while (true) { */ case 1: + /* if (!(i < s[0].length)) { break; } */ if(!(i < s[0].length)) { $s = 2; continue; } + t = $substring(s[0], i); + /* */ if (autoLink) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (autoLink) { */ case 3: + _tuple = autoURL(t); + url = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (ok) { */ case 5: + $r = flush(i); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + out[0] = $append(out[0], new Link.ptr(true, new sliceType$8([new Plain((url))]), url)); + i = i + (url.length) >> 0; + wrote[0] = i; + /* continue; */ $s = 1; continue; + /* } */ case 6: + _tuple$1 = ident(t); + id = _tuple$1[0]; + ok$1 = _tuple$1[1]; + /* */ if (ok$1) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (ok$1) { */ case 8: + _tuple$2 = (_entry = $mapIndex(d.Parser.Words,$String.keyFor(id)), _entry !== undefined ? [_entry.v, true] : ["", false]); + url$1 = _tuple$2[0]; + italics = _tuple$2[1]; + if (!italics) { + i = i + (id.length) >> 0; + /* continue; */ $s = 1; continue; + } + $r = flush(i); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (url$1 === "") { + out[0] = $append(out[0], new Italic((id))); + } else { + out[0] = $append(out[0], new Link.ptr(true, new sliceType$8([new Italic((id))]), url$1)); + } + i = i + (id.length) >> 0; + wrote[0] = i; + /* continue; */ $s = 1; continue; + /* } */ case 9: + /* } */ case 4: + /* */ if (strings.HasPrefix(t, "``")) { $s = 12; continue; } + /* */ if (strings.HasPrefix(t, "''")) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (strings.HasPrefix(t, "``")) { */ case 12: + if (t.length >= 3 && (t.charCodeAt(2) === 96)) { + i = i + (3) >> 0; + while (true) { + if (!(i < t.length && (t.charCodeAt(i) === 96))) { break; } + i = i + (1) >> 0; + } + /* break; */ $s = 11; continue; + } + $r = writeUntil[0](i); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + w[0].WriteRune(8220); + i = i + (2) >> 0; + wrote[0] = i; + $s = 15; continue; + /* } else if (strings.HasPrefix(t, "''")) { */ case 13: + $r = writeUntil[0](i); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + w[0].WriteRune(8221); + i = i + (2) >> 0; + wrote[0] = i; + $s = 15; continue; + /* } else { */ case 14: + i = i + (1) >> 0; + /* } */ case 15: + case 11: + $s = 1; continue; + case 2: + $r = flush(s[0].length); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return out[0]; + /* */ } return; } var $f = {$blk: parseText, $c: true, $r, _entry, _tuple, _tuple$1, _tuple$2, autoLink, d, flush, i, id, italics, ok, ok$1, out, s, t, url, url$1, w, writeUntil, wrote, $s};return $f; + }; + autoURL = function autoURL$1(s) { + var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, end, i, ok, s, stk, url, x; + url = ""; + ok = false; + i = 0; + if (s.length < 7) { + _tmp = ""; + _tmp$1 = false; + url = _tmp; + ok = _tmp$1; + return [url, ok]; + } else if ((s.charCodeAt(3) === 58)) { + i = 3; + } else if ((s.charCodeAt(4) === 58)) { + i = 4; + } else if ((s.charCodeAt(5) === 58)) { + i = 5; + } else if ((s.charCodeAt(6) === 58)) { + i = 6; + } else { + _tmp$2 = ""; + _tmp$3 = false; + url = _tmp$2; + ok = _tmp$3; + return [url, ok]; + } + if ((i + 3 >> 0) > s.length || !($substring(s, i, (i + 3 >> 0)) === "://")) { + _tmp$4 = ""; + _tmp$5 = false; + url = _tmp$4; + ok = _tmp$5; + return [url, ok]; + } + if (!isScheme($substring(s, 0, i))) { + _tmp$6 = ""; + _tmp$7 = false; + url = _tmp$6; + ok = _tmp$7; + return [url, ok]; + } + i = i + (3) >> 0; + if (i >= s.length || !isHost(s.charCodeAt(i)) || isPunct(s.charCodeAt(i))) { + _tmp$8 = ""; + _tmp$9 = false; + url = _tmp$8; + ok = _tmp$9; + return [url, ok]; + } + i = i + (1) >> 0; + end = i; + while (true) { + if (!(i < s.length && isHost(s.charCodeAt(i)))) { break; } + if (!isPunct(s.charCodeAt(i))) { + end = i + 1 >> 0; + } + i = i + (1) >> 0; + } + i = end; + stk = new sliceType$1([]); + end = i; + Path: + while (true) { + if (!(i < s.length)) { break; } + if (isPunct(s.charCodeAt(i))) { + i = i + (1) >> 0; + continue; + } + if (!isPath(s.charCodeAt(i))) { + break; + } + _1 = s.charCodeAt(i); + if (_1 === (40)) { + stk = $append(stk, 41); + } else if (_1 === (123)) { + stk = $append(stk, 125); + } else if (_1 === (91)) { + stk = $append(stk, 93); + } else if ((_1 === (41)) || (_1 === (125)) || (_1 === (93))) { + if ((stk.$length === 0) || !(((x = stk.$length - 1 >> 0, ((x < 0 || x >= stk.$length) ? ($throwRuntimeError("index out of range"), undefined) : stk.$array[stk.$offset + x])) === s.charCodeAt(i)))) { + break Path; + } + stk = $subslice(stk, 0, (stk.$length - 1 >> 0)); + } + if (stk.$length === 0) { + end = i + 1 >> 0; + } + i = i + (1) >> 0; + } + _tmp$10 = $substring(s, 0, end); + _tmp$11 = true; + url = _tmp$10; + ok = _tmp$11; + return [url, ok]; + }; + isScheme = function isScheme$1(s) { + var _1, s; + _1 = s; + if (_1 === ("file") || _1 === ("ftp") || _1 === ("gopher") || _1 === ("http") || _1 === ("https") || _1 === ("mailto") || _1 === ("nntp")) { + return true; + } + return false; + }; + isHost = function isHost$1(c) { + var c, x, x$1, x$2, x$3, x$4; + return !((x = (x$1 = (x$2 = $shiftLeft64(new $Uint64(0, 1), c), new $Uint64(x$2.$high & 134176768, (x$2.$low & 0) >>> 0)), x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), ((c - 64 << 24 >>> 24))), new $Uint64(x$4.$high & 134217726, (x$4.$low & 2952790015) >>> 0)), new $Uint64(x$1.$high | x$3.$high, (x$1.$low | x$3.$low) >>> 0)), (x.$high === 0 && x.$low === 0))); + }; + isPunct = function isPunct$1(c) { + var c, x, x$1, x$2, x$3, x$4; + return !((x = (x$1 = (x$2 = $shiftLeft64(new $Uint64(0, 1), c), new $Uint64(x$2.$high & 2348830722, (x$2.$low & 0) >>> 0)), x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), ((c - 64 << 24 >>> 24))), new $Uint64(x$4.$high & 0, (x$4.$low & 0) >>> 0)), new $Uint64(x$1.$high | x$3.$high, (x$1.$low | x$3.$low) >>> 0)), (x.$high === 0 && x.$low === 0))); + }; + isPath = function isPath$1(c) { + var c, x, x$1, x$2, x$3, x$4; + return !((x = (x$1 = (x$2 = $shiftLeft64(new $Uint64(0, 1), c), new $Uint64(x$2.$high & 603959288, (x$2.$low & 0) >>> 0)), x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), ((c - 64 << 24 >>> 24))), new $Uint64(x$4.$high & 1879048190, (x$4.$low & 2952790015) >>> 0)), new $Uint64(x$1.$high | x$3.$high, (x$1.$low | x$3.$low) >>> 0)), (x.$high === 0 && x.$low === 0))); + }; + isName = function isName$1(s) { + var _tuple, _tuple$1, ok, r, s, t; + _tuple = ident(s); + t = _tuple[0]; + ok = _tuple[1]; + if (!ok || !(t === s)) { + return false; + } + _tuple$1 = utf8.DecodeRuneInString(s); + r = _tuple$1[0]; + return unicode.IsUpper(r); + }; + ident = function ident$1(s) { + var _tmp, _tmp$1, _tuple, c, id, n, nr, ok, r, s; + id = ""; + ok = false; + n = 0; + while (true) { + if (!(n < s.length)) { break; } + c = s.charCodeAt(n); + if (c < 128) { + if (isIdentASCII(c) && (n > 0 || c < 48 || c > 57)) { + n = n + (1) >> 0; + continue; + } + break; + } + _tuple = utf8.DecodeRuneInString($substring(s, n)); + r = _tuple[0]; + nr = _tuple[1]; + if (unicode.IsLetter(r)) { + n = n + (nr) >> 0; + continue; + } + break; + } + _tmp = $substring(s, 0, n); + _tmp$1 = n > 0; + id = _tmp; + ok = _tmp$1; + return [id, ok]; + }; + isIdentASCII = function isIdentASCII$1(c) { + var c, x, x$1, x$2, x$3, x$4; + return !((x = (x$1 = (x$2 = $shiftLeft64(new $Uint64(0, 1), c), new $Uint64(x$2.$high & 67043328, (x$2.$low & 0) >>> 0)), x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), ((c - 64 << 24 >>> 24))), new $Uint64(x$4.$high & 134217726, (x$4.$low & 2281701374) >>> 0)), new $Uint64(x$1.$high | x$3.$high, (x$1.$low | x$3.$low) >>> 0)), (x.$high === 0 && x.$low === 0))); + }; + validImportPath = function validImportPath$1(path) { + var _i, _ref, _rune, elemStart, i, path, r; + if (!utf8.ValidString(path)) { + return false; + } + if (path === "") { + return false; + } + if (path.charCodeAt(0) === 45) { + return false; + } + if (strings.Contains(path, "//")) { + return false; + } + if (path.charCodeAt((path.length - 1 >> 0)) === 47) { + return false; + } + elemStart = 0; + _ref = path; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + r = _rune[0]; + if (r === 47) { + if (!validImportPathElem($substring(path, elemStart, i))) { + return false; + } + elemStart = i + 1 >> 0; + } + _i += _rune[1]; + } + return validImportPathElem($substring(path, elemStart)); + }; + validImportPathElem = function validImportPathElem$1(elem) { + var elem, i; + if (elem === "" || (elem.charCodeAt(0) === 46) || (elem.charCodeAt((elem.length - 1 >> 0)) === 46)) { + return false; + } + i = 0; + while (true) { + if (!(i < elem.length)) { break; } + if (!importPathOK(elem.charCodeAt(i))) { + return false; + } + i = i + (1) >> 0; + } + return true; + }; + importPathOK = function importPathOK$1(c) { + var c, x, x$1, x$2, x$3, x$4; + return !((x = (x$1 = (x$2 = $shiftLeft64(new $Uint64(0, 1), c), new $Uint64(x$2.$high & 67069952, (x$2.$low & 0) >>> 0)), x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), ((c - 64 << 24 >>> 24))), new $Uint64(x$4.$high & 1207959550, (x$4.$low & 2281701374) >>> 0)), new $Uint64(x$1.$high | x$3.$high, (x$1.$low | x$3.$low) >>> 0)), (x.$high === 0 && x.$low === 0))); + }; + $ptrType(Printer).prototype.Markdown = function Markdown(d) { + var {_i, _ref, d, i, mp, out, p, x, $s, $r, $c} = $restore(this, {d}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = [out]; + p = this; + mp = new mdPrinter.ptr(p, strings.Repeat("#", p.headingLevel()) + " ", new bytes.Buffer.ptr(sliceType$1.nil, 0, 0)); + out[0] = new bytes.Buffer.ptr(sliceType$1.nil, 0, 0); + _ref = d.Content; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + out[0].WriteByte(10); + } + $r = mp.block(out[0], x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return out[0].Bytes(); + /* */ } return; } var $f = {$blk: Markdown, $c: true, $r, _i, _ref, d, i, mp, out, p, x, $s};return $f; + }; + $ptrType(mdPrinter).prototype.block = function block$6(out, x) { + var {_i, _i$1, _r, _r$1, _ref, _ref$1, _ref$2, _tuple, blk, i, i$1, id, item, line, loose, md, n, out, p, x, x$1, x$2, x$3, x$4, x$5, $s, $r, $c} = $restore(this, {out, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _ref = x; + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref, ptrType$2, true)[1]) { */ case 1: + x$2 = _ref.$val; + $r = p.text(out, x$2.Text); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + out.WriteString("\n"); + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 2: + x$3 = _ref.$val; + out.WriteString(p.headingPrefix); + $r = p.text(out, x$3.Text); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = p.Printer.headingID(x$3); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + id = _r; + if (!(id === "")) { + out.WriteString(" {#"); + out.WriteString(id); + out.WriteString("}"); + } + out.WriteString("\n"); + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$4, true)[1]) { */ case 3: + x$4 = _ref.$val; + md = x$4.Text; + while (true) { + if (!(!(md === ""))) { break; } + line = ""; + _tuple = strings.Cut(md, "\n"); + line = _tuple[0]; + md = _tuple[1]; + if (!(line === "")) { + out.WriteString("\t"); + out.WriteString(line); + } + out.WriteString("\n"); + } + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 4: + x$5 = _ref.$val; + loose = x$5.BlankBetween(); + _ref$1 = x$5.Items; + _i = 0; + /* while (true) { */ case 10: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 11; continue; } + i = _i; + item = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + if (i > 0 && loose) { + out.WriteString("\n"); + } + n = item.Number; + if (!(n === "")) { + out.WriteString(" "); + out.WriteString(n); + out.WriteString(". "); + } else { + out.WriteString(" - "); + } + _ref$2 = item.Content; + _i$1 = 0; + /* while (true) { */ case 12: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 13; continue; } + i$1 = _i$1; + blk = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + if (i$1 > 0) { + out.WriteString("\n "); + } + $r = p.text(out, $assertType(blk, ptrType$2).Text); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + out.WriteString("\n"); + _i$1++; + $s = 12; continue; + case 13: + _i++; + $s = 10; continue; + case 11: + $s = 6; continue; + /* } else { */ case 5: + x$1 = _ref; + _r$1 = fmt.Fprintf(out, "?%T", new sliceType$2([x$1])); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + /* } */ case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: block$6, $c: true, $r, _i, _i$1, _r, _r$1, _ref, _ref$1, _ref$2, _tuple, blk, i, i$1, id, item, line, loose, md, n, out, p, x, x$1, x$2, x$3, x$4, x$5, $s};return $f; + }; + $ptrType(mdPrinter).prototype.text = function text$6(out, x) { + var {_1, _r, i, line, out, p, x, $s, $r, $c} = $restore(this, {out, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + p.raw.Reset(); + $r = p.rawText(p.raw, x); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = bytes.TrimSpace(p.raw.Bytes()); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + line = _r; + if (line.$length === 0) { + $s = -1; return; + } + _1 = (0 >= line.$length ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + 0]); + if ((_1 === (43)) || (_1 === (45)) || (_1 === (42)) || (_1 === (35))) { + out.WriteByte(92); + } else if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55)) || (_1 === (56)) || (_1 === (57))) { + i = 1; + while (true) { + if (!(i < line.$length && 48 <= ((i < 0 || i >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + i]) && ((i < 0 || i >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + i]) <= 57)) { break; } + i = i + (1) >> 0; + } + if (i < line.$length && ((((i < 0 || i >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + i]) === 46) || (((i < 0 || i >= line.$length) ? ($throwRuntimeError("index out of range"), undefined) : line.$array[line.$offset + i]) === 41))) { + out.Write($subslice(line, 0, i)); + out.WriteByte(92); + line = $subslice(line, i); + } + } + out.Write(line); + $s = -1; return; + /* */ } return; } var $f = {$blk: text$6, $c: true, $r, _1, _r, i, line, out, p, x, $s};return $f; + }; + $ptrType(mdPrinter).prototype.rawText = function rawText(out, x) { + var {_i, _r, _ref, _ref$1, out, p, t, t$1, t$2, t$3, t$4, url, x, $s, $r, $c} = $restore(this, {out, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _ref = x; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = t; + /* */ if ($assertType(_ref$1, Plain, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref$1, Italic, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref$1, ptrType$6, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref$1, ptrType$7, true)[1]) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ($assertType(_ref$1, Plain, true)[1]) { */ case 3: + t$1 = _ref$1.$val; + p.escape(out, (t$1)); + $s = 7; continue; + /* } else if ($assertType(_ref$1, Italic, true)[1]) { */ case 4: + t$2 = _ref$1.$val; + out.WriteString("*"); + p.escape(out, (t$2)); + out.WriteString("*"); + $s = 7; continue; + /* } else if ($assertType(_ref$1, ptrType$6, true)[1]) { */ case 5: + t$3 = _ref$1.$val; + out.WriteString("["); + $r = p.rawText(out, t$3.Text); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + out.WriteString("]("); + out.WriteString(t$3.URL); + out.WriteString(")"); + $s = 7; continue; + /* } else if ($assertType(_ref$1, ptrType$7, true)[1]) { */ case 6: + t$4 = _ref$1.$val; + _r = p.Printer.docLinkURL(t$4); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + url = _r; + if (!(url === "")) { + out.WriteString("["); + } + $r = p.rawText(out, t$4.Text); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!(url === "")) { + out.WriteString("]("); + url = strings.ReplaceAll(url, "(", "%28"); + url = strings.ReplaceAll(url, ")", "%29"); + out.WriteString(url); + out.WriteString(")"); + } + /* } */ case 7: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: rawText, $c: true, $r, _i, _r, _ref, _ref$1, out, p, t, t$1, t$2, t$3, t$4, url, x, $s};return $f; + }; + $ptrType(mdPrinter).prototype.escape = function escape(out, s) { + var _1, i, out, p, s, start; + p = this; + start = 0; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + _1 = s.charCodeAt(i); + if (_1 === (10)) { + out.WriteString($substring(s, start, i)); + out.WriteByte(32); + start = i + 1 >> 0; + i = i + (1) >> 0; + continue; + } else if ((_1 === (96)) || (_1 === (95)) || (_1 === (42)) || (_1 === (91)) || (_1 === (60)) || (_1 === (92))) { + out.WriteString($substring(s, start, i)); + out.WriteByte(92); + out.WriteByte(s.charCodeAt(i)); + start = i + 1 >> 0; + } + i = i + (1) >> 0; + } + out.WriteString($substring(s, start)); + }; + $ptrType(Printer).prototype.HTML = function HTML(d) { + var {_i, _ref, d, hp, out, p, x, $s, $r, $c} = $restore(this, {d}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + out = [out]; + p = this; + hp = new htmlPrinter.ptr(p, false); + out[0] = new bytes.Buffer.ptr(sliceType$1.nil, 0, 0); + _ref = d.Content; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = hp.block(out[0], x); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return out[0].Bytes(); + /* */ } return; } var $f = {$blk: HTML, $c: true, $r, _i, _ref, d, hp, out, p, x, $s};return $f; + }; + $ptrType(htmlPrinter).prototype.block = function block$7(out, x) { + var {_i, _i$1, _r, _r$1, _ref, _ref$1, _ref$2, blk, h, id, item, kind, n, next, out, p, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r, $c} = $restore(this, {out, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _ref = x; + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$4, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref, ptrType$2, true)[1]) { */ case 1: + x$2 = _ref.$val; + if (!p.tight) { + out.WriteString("

"); + } + $r = p.text(out, x$2.Text); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + out.WriteString("\n"); + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 2: + x$3 = _ref.$val; + out.WriteString(""); + $r = p.text(out, x$3.Text); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + out.WriteString("\n"); + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$4, true)[1]) { */ case 3: + x$4 = _ref.$val; + out.WriteString("

");
+				p.escape(out, x$4.Text);
+				out.WriteString("
\n"); + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 4: + x$5 = _ref.$val; + kind = "ol>\n"; + if ((x$6 = x$5.Items, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0])).Number === "") { + kind = "ul>\n"; + } + out.WriteString("<"); + out.WriteString(kind); + next = "1"; + _ref$1 = x$5.Items; + _i = 0; + /* while (true) { */ case 10: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 11; continue; } + item = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + out.WriteString(""); + p.tight = !x$5.BlankBetween(); + _ref$2 = item.Content; + _i$1 = 0; + /* while (true) { */ case 12: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 13; continue; } + blk = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + $r = p.block(out, blk); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 12; continue; + case 13: + p.tight = false; + _i++; + $s = 10; continue; + case 11: + out.WriteString("> 0; + while (true) { + if (!(i >= 0)) { break; } + if (((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) < 57) { + ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i] = (((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]) + (1) << 24 >>> 24)); + return ($bytesToString(b)); + } + ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i] = 48); + i = i - (1) >> 0; + } + return "1" + ($bytesToString(b)); + }; + $ptrType(htmlPrinter).prototype.text = function text$7(out, x) { + var {_i, _r, _ref, _ref$1, out, p, t, t$1, t$2, t$3, t$4, url, x, $s, $r, $c} = $restore(this, {out, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _ref = x; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + t = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = t; + /* */ if ($assertType(_ref$1, Plain, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref$1, Italic, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref$1, ptrType$6, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref$1, ptrType$7, true)[1]) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ($assertType(_ref$1, Plain, true)[1]) { */ case 3: + t$1 = _ref$1.$val; + p.escape(out, (t$1)); + $s = 7; continue; + /* } else if ($assertType(_ref$1, Italic, true)[1]) { */ case 4: + t$2 = _ref$1.$val; + out.WriteString(""); + p.escape(out, (t$2)); + out.WriteString(""); + $s = 7; continue; + /* } else if ($assertType(_ref$1, ptrType$6, true)[1]) { */ case 5: + t$3 = _ref$1.$val; + out.WriteString(""); + $r = p.text(out, t$3.Text); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + out.WriteString(""); + $s = 7; continue; + /* } else if ($assertType(_ref$1, ptrType$7, true)[1]) { */ case 6: + t$4 = _ref$1.$val; + _r = p.Printer.docLinkURL(t$4); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + url = _r; + if (!(url === "")) { + out.WriteString(""); + } + $r = p.text(out, t$4.Text); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!(url === "")) { + out.WriteString(""); + } + /* } */ case 7: + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: text$7, $c: true, $r, _i, _r, _ref, _ref$1, out, p, t, t$1, t$2, t$3, t$4, url, x, $s};return $f; + }; + $ptrType(htmlPrinter).prototype.escape = function escape$1(out, s) { + var _1, i, out, p, s, start; + p = this; + start = 0; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + _1 = s.charCodeAt(i); + if (_1 === (60)) { + out.WriteString($substring(s, start, i)); + out.WriteString("<"); + start = i + 1 >> 0; + } else if (_1 === (38)) { + out.WriteString($substring(s, start, i)); + out.WriteString("&"); + start = i + 1 >> 0; + } else if (_1 === (34)) { + out.WriteString($substring(s, start, i)); + out.WriteString("""); + start = i + 1 >> 0; + } else if (_1 === (39)) { + out.WriteString($substring(s, start, i)); + out.WriteString("'"); + start = i + 1 >> 0; + } else if (_1 === (62)) { + out.WriteString($substring(s, start, i)); + out.WriteString(">"); + start = i + 1 >> 0; + } + i = i + (1) >> 0; + } + out.WriteString($substring(s, start)); + }; + ptrType$13.methods = [{prop: "block", name: "block", pkg: "go/doc/comment", typ: $funcType([ptrType$12, Block], [], false)}, {prop: "text", name: "text", pkg: "go/doc/comment", typ: $funcType([ptrType$12, $String, sliceType$8], [], false)}, {prop: "oneLongLine", name: "oneLongLine", pkg: "go/doc/comment", typ: $funcType([ptrType$1, sliceType$8], [], false)}]; + ptrType.methods = [{prop: "Text", name: "Text", pkg: "", typ: $funcType([ptrType$9], [sliceType$1], false)}, {prop: "headingLevel", name: "headingLevel", pkg: "go/doc/comment", typ: $funcType([], [$Int], false)}, {prop: "headingID", name: "headingID", pkg: "go/doc/comment", typ: $funcType([ptrType$3], [$String], false)}, {prop: "docLinkURL", name: "docLinkURL", pkg: "go/doc/comment", typ: $funcType([ptrType$7], [$String], false)}, {prop: "Comment", name: "Comment", pkg: "", typ: $funcType([ptrType$9], [sliceType$1], false)}, {prop: "Markdown", name: "Markdown", pkg: "", typ: $funcType([ptrType$9], [sliceType$1], false)}, {prop: "HTML", name: "HTML", pkg: "", typ: $funcType([ptrType$9], [sliceType$1], false)}]; + ptrType$14.methods = [{prop: "block", name: "block", pkg: "go/doc/comment", typ: $funcType([ptrType$12, Block], [], false)}, {prop: "text", name: "text", pkg: "go/doc/comment", typ: $funcType([ptrType$12, $String, sliceType$8], [], false)}, {prop: "indent", name: "indent", pkg: "go/doc/comment", typ: $funcType([ptrType$12, $String, $String], [], false)}]; + ptrType$3.methods = [{prop: "DefaultID", name: "DefaultID", pkg: "", typ: $funcType([], [$String], false)}, {prop: "block", name: "block", pkg: "go/doc/comment", typ: $funcType([], [], false)}]; + ptrType$5.methods = [{prop: "block", name: "block", pkg: "go/doc/comment", typ: $funcType([], [], false)}, {prop: "BlankBefore", name: "BlankBefore", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "BlankBetween", name: "BlankBetween", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$2.methods = [{prop: "block", name: "block", pkg: "go/doc/comment", typ: $funcType([], [], false)}]; + ptrType$4.methods = [{prop: "block", name: "block", pkg: "go/doc/comment", typ: $funcType([], [], false)}]; + Plain.methods = [{prop: "text", name: "text", pkg: "go/doc/comment", typ: $funcType([], [], false)}]; + Italic.methods = [{prop: "text", name: "text", pkg: "go/doc/comment", typ: $funcType([], [], false)}]; + ptrType$6.methods = [{prop: "text", name: "text", pkg: "go/doc/comment", typ: $funcType([], [], false)}]; + ptrType$7.methods = [{prop: "DefaultURL", name: "DefaultURL", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "text", name: "text", pkg: "go/doc/comment", typ: $funcType([], [], false)}]; + ptrType$8.methods = [{prop: "Parse", name: "Parse", pkg: "", typ: $funcType([$String], [ptrType$9], false)}]; + ptrType$15.methods = [{prop: "lookupPkg", name: "lookupPkg", pkg: "go/doc/comment", typ: $funcType([$String], [$String, $Bool], false)}, {prop: "oldHeading", name: "oldHeading", pkg: "go/doc/comment", typ: $funcType([$String], [Block], false)}, {prop: "heading", name: "heading", pkg: "go/doc/comment", typ: $funcType([$String], [Block], false)}, {prop: "code", name: "code", pkg: "go/doc/comment", typ: $funcType([sliceType], [ptrType$4], false)}, {prop: "paragraph", name: "paragraph", pkg: "go/doc/comment", typ: $funcType([sliceType], [Block], false)}, {prop: "list", name: "list", pkg: "go/doc/comment", typ: $funcType([sliceType, $Bool], [ptrType$5], false)}, {prop: "parseLinkedText", name: "parseLinkedText", pkg: "go/doc/comment", typ: $funcType([$String], [sliceType$8], false)}, {prop: "docLink", name: "docLink", pkg: "go/doc/comment", typ: $funcType([$String, $String, $String], [ptrType$7, $Bool], false)}, {prop: "parseText", name: "parseText", pkg: "go/doc/comment", typ: $funcType([sliceType$8, $String, $Bool], [sliceType$8], false)}]; + ptrType$16.methods = [{prop: "block", name: "block", pkg: "go/doc/comment", typ: $funcType([ptrType$12, Block], [], false)}, {prop: "text", name: "text", pkg: "go/doc/comment", typ: $funcType([ptrType$12, sliceType$8], [], false)}, {prop: "rawText", name: "rawText", pkg: "go/doc/comment", typ: $funcType([ptrType$12, sliceType$8], [], false)}, {prop: "escape", name: "escape", pkg: "go/doc/comment", typ: $funcType([ptrType$12, $String], [], false)}]; + ptrType$17.methods = [{prop: "block", name: "block", pkg: "go/doc/comment", typ: $funcType([ptrType$12, Block], [], false)}, {prop: "text", name: "text", pkg: "go/doc/comment", typ: $funcType([ptrType$12, sliceType$8], [], false)}, {prop: "escape", name: "escape", pkg: "go/doc/comment", typ: $funcType([ptrType$12, $String], [], false)}]; + textPrinter.init("go/doc/comment", [{prop: "Printer", name: "Printer", embedded: true, exported: true, typ: ptrType, tag: ""}, {prop: "long$1", name: "long", embedded: false, exported: false, typ: strings.Builder, tag: ""}, {prop: "prefix", name: "prefix", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "codePrefix", name: "codePrefix", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "width", name: "width", embedded: false, exported: false, typ: $Int, tag: ""}]); + Printer.init("", [{prop: "HeadingLevel", name: "HeadingLevel", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "HeadingID", name: "HeadingID", embedded: false, exported: true, typ: funcType, tag: ""}, {prop: "DocLinkURL", name: "DocLinkURL", embedded: false, exported: true, typ: funcType$1, tag: ""}, {prop: "DocLinkBaseURL", name: "DocLinkBaseURL", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "TextPrefix", name: "TextPrefix", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "TextCodePrefix", name: "TextCodePrefix", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "TextWidth", name: "TextWidth", embedded: false, exported: true, typ: $Int, tag: ""}]); + commentPrinter.init("go/doc/comment", [{prop: "Printer", name: "Printer", embedded: true, exported: true, typ: ptrType, tag: ""}, {prop: "headingPrefix", name: "headingPrefix", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "needDoc", name: "needDoc", embedded: false, exported: false, typ: mapType, tag: ""}]); + Doc.init("", [{prop: "Content", name: "Content", embedded: false, exported: true, typ: sliceType$5, tag: ""}, {prop: "Links", name: "Links", embedded: false, exported: true, typ: sliceType$6, tag: ""}]); + LinkDef.init("", [{prop: "Text", name: "Text", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "URL", name: "URL", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Used", name: "Used", embedded: false, exported: true, typ: $Bool, tag: ""}]); + Block.init([{prop: "block", name: "block", pkg: "go/doc/comment", typ: $funcType([], [], false)}]); + Heading.init("", [{prop: "Text", name: "Text", embedded: false, exported: true, typ: sliceType$8, tag: ""}]); + List.init("", [{prop: "Items", name: "Items", embedded: false, exported: true, typ: sliceType$9, tag: ""}, {prop: "ForceBlankBefore", name: "ForceBlankBefore", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "ForceBlankBetween", name: "ForceBlankBetween", embedded: false, exported: true, typ: $Bool, tag: ""}]); + ListItem.init("", [{prop: "Number", name: "Number", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Content", name: "Content", embedded: false, exported: true, typ: sliceType$5, tag: ""}]); + Paragraph.init("", [{prop: "Text", name: "Text", embedded: false, exported: true, typ: sliceType$8, tag: ""}]); + Code.init("", [{prop: "Text", name: "Text", embedded: false, exported: true, typ: $String, tag: ""}]); + Text.init([{prop: "text", name: "text", pkg: "go/doc/comment", typ: $funcType([], [], false)}]); + Link.init("", [{prop: "Auto", name: "Auto", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Text", name: "Text", embedded: false, exported: true, typ: sliceType$8, tag: ""}, {prop: "URL", name: "URL", embedded: false, exported: true, typ: $String, tag: ""}]); + DocLink.init("", [{prop: "Text", name: "Text", embedded: false, exported: true, typ: sliceType$8, tag: ""}, {prop: "ImportPath", name: "ImportPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Recv", name: "Recv", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}]); + Parser.init("", [{prop: "Words", name: "Words", embedded: false, exported: true, typ: mapType$1, tag: ""}, {prop: "LookupPackage", name: "LookupPackage", embedded: false, exported: true, typ: funcType$2, tag: ""}, {prop: "LookupSym", name: "LookupSym", embedded: false, exported: true, typ: funcType$3, tag: ""}]); + parseDoc.init("go/doc/comment", [{prop: "Parser", name: "Parser", embedded: true, exported: true, typ: ptrType$8, tag: ""}, {prop: "Doc", name: "Doc", embedded: true, exported: true, typ: ptrType$9, tag: ""}, {prop: "links", name: "links", embedded: false, exported: false, typ: mapType$2, tag: ""}, {prop: "lines", name: "lines", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "lookupSym", name: "lookupSym", embedded: false, exported: false, typ: funcType$3, tag: ""}]); + span.init("go/doc/comment", [{prop: "start", name: "start", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "end", name: "end", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "kind", name: "kind", embedded: false, exported: false, typ: spanKind, tag: ""}]); + mdPrinter.init("go/doc/comment", [{prop: "Printer", name: "Printer", embedded: true, exported: true, typ: ptrType, tag: ""}, {prop: "headingPrefix", name: "headingPrefix", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "raw", name: "raw", embedded: false, exported: false, typ: bytes.Buffer, tag: ""}]); + htmlPrinter.init("go/doc/comment", [{prop: "Printer", name: "Printer", embedded: true, exported: true, typ: ptrType, tag: ""}, {prop: "tight", name: "tight", embedded: false, exported: false, typ: $Bool, tag: ""}]); + score.init("go/doc/comment", [{prop: "hi", name: "hi", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "lo", name: "lo", embedded: false, exported: false, typ: $Int64, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + stdPkgs = new sliceType(["bufio", "bytes", "context", "crypto", "embed", "encoding", "errors", "expvar", "flag", "fmt", "hash", "html", "image", "io", "log", "math", "mime", "net", "os", "path", "plugin", "reflect", "regexp", "runtime", "sort", "strconv", "strings", "sync", "syscall", "testing", "time", "unicode", "unsafe"]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/lazyregexp"] = (function() { + var $pkg = {}, $init, os, regexp, strings, sync, Regexp, ptrType, sliceType, sliceType$1, sliceType$2, sliceType$3, ptrType$1, inTest, x, New; + os = $packages["os"]; + regexp = $packages["regexp"]; + strings = $packages["strings"]; + sync = $packages["sync"]; + Regexp = $newType(0, $kindStruct, "lazyregexp.Regexp", true, "internal/lazyregexp", true, function(str_, once_, rx_) { + this.$val = this; + if (arguments.length === 0) { + this.str = ""; + this.once = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)); + this.rx = ptrType.nil; + return; + } + this.str = str_; + this.once = once_; + this.rx = rx_; + }); + $pkg.Regexp = Regexp; + $pkg.$finishSetup = function() { + ptrType = $ptrType(regexp.Regexp); + sliceType = $sliceType($Uint8); + sliceType$1 = $sliceType(sliceType); + sliceType$2 = $sliceType($String); + sliceType$3 = $sliceType($Int); + ptrType$1 = $ptrType(Regexp); + $ptrType(Regexp).prototype.re = function re() { + var {r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + $r = r.once.Do($methodVal(r, "build")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return r.rx; + /* */ } return; } var $f = {$blk: re, $c: true, $r, r, $s};return $f; + }; + $ptrType(Regexp).prototype.build = function build() { + var {_r, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = regexp.MustCompile(r.str); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r.rx = _r; + r.str = ""; + $s = -1; return; + /* */ } return; } var $f = {$blk: build, $c: true, $r, _r, r, $s};return $f; + }; + $ptrType(Regexp).prototype.FindSubmatch = function FindSubmatch(s) { + var {$24r, _r, _r$1, r, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.re(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.FindSubmatch(s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: FindSubmatch, $c: true, $r, $24r, _r, _r$1, r, s, $s};return $f; + }; + $ptrType(Regexp).prototype.FindStringSubmatch = function FindStringSubmatch(s) { + var {$24r, _r, _r$1, r, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.re(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.FindStringSubmatch(s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: FindStringSubmatch, $c: true, $r, $24r, _r, _r$1, r, s, $s};return $f; + }; + $ptrType(Regexp).prototype.FindStringSubmatchIndex = function FindStringSubmatchIndex(s) { + var {$24r, _r, _r$1, r, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.re(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.FindStringSubmatchIndex(s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: FindStringSubmatchIndex, $c: true, $r, $24r, _r, _r$1, r, s, $s};return $f; + }; + $ptrType(Regexp).prototype.ReplaceAllString = function ReplaceAllString(src, repl) { + var {$24r, _r, _r$1, r, repl, src, $s, $r, $c} = $restore(this, {src, repl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.re(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.ReplaceAllString(src, repl); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: ReplaceAllString, $c: true, $r, $24r, _r, _r$1, r, repl, src, $s};return $f; + }; + $ptrType(Regexp).prototype.FindString = function FindString(s) { + var {$24r, _r, _r$1, r, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.re(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.FindString(s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: FindString, $c: true, $r, $24r, _r, _r$1, r, s, $s};return $f; + }; + $ptrType(Regexp).prototype.FindAllString = function FindAllString(s, n) { + var {$24r, _r, _r$1, n, r, s, $s, $r, $c} = $restore(this, {s, n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.re(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.FindAllString(s, n); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: FindAllString, $c: true, $r, $24r, _r, _r$1, n, r, s, $s};return $f; + }; + $ptrType(Regexp).prototype.MatchString = function MatchString(s) { + var {$24r, _r, _r$1, r, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.re(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.MatchString(s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: MatchString, $c: true, $r, $24r, _r, _r$1, r, s, $s};return $f; + }; + $ptrType(Regexp).prototype.SubexpNames = function SubexpNames() { + var {$24r, _r, _r$1, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = r.re(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.SubexpNames(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: SubexpNames, $c: true, $r, $24r, _r, _r$1, r, $s};return $f; + }; + New = function New$1(str) { + var {_r, lr, str, $s, $r, $c} = $restore(this, {str}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + lr = new Regexp.ptr(str, new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), ptrType.nil); + /* */ if (inTest) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (inTest) { */ case 1: + _r = lr.re(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + /* } */ case 2: + $s = -1; return lr; + /* */ } return; } var $f = {$blk: New$1, $c: true, $r, _r, lr, str, $s};return $f; + }; + $pkg.New = New; + ptrType$1.methods = [{prop: "re", name: "re", pkg: "internal/lazyregexp", typ: $funcType([], [ptrType], false)}, {prop: "build", name: "build", pkg: "internal/lazyregexp", typ: $funcType([], [], false)}, {prop: "FindSubmatch", name: "FindSubmatch", pkg: "", typ: $funcType([sliceType], [sliceType$1], false)}, {prop: "FindStringSubmatch", name: "FindStringSubmatch", pkg: "", typ: $funcType([$String], [sliceType$2], false)}, {prop: "FindStringSubmatchIndex", name: "FindStringSubmatchIndex", pkg: "", typ: $funcType([$String], [sliceType$3], false)}, {prop: "ReplaceAllString", name: "ReplaceAllString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "FindString", name: "FindString", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "FindAllString", name: "FindAllString", pkg: "", typ: $funcType([$String, $Int], [sliceType$2], false)}, {prop: "MatchString", name: "MatchString", pkg: "", typ: $funcType([$String], [$Bool], false)}, {prop: "SubexpNames", name: "SubexpNames", pkg: "", typ: $funcType([], [sliceType$2], false)}]; + Regexp.init("internal/lazyregexp", [{prop: "str", name: "str", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "once", name: "once", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "rx", name: "rx", embedded: false, exported: false, typ: ptrType, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = os.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = regexp.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + inTest = os.Args.$length > 0 && strings.HasSuffix(strings.TrimSuffix((x = os.Args, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), ".exe"), ".test"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["go/doc"] = (function() { + var $pkg = {}, $init, fmt, ast, comment, token, lazyregexp, io, path, sort, strconv, strings, unicode, utf8, Filter, Example, Package, Value, Type, Func, Note, sliceType, ptrType, sliceType$1, ptrType$1, sliceType$2, ptrType$2, sliceType$3, ptrType$3, sliceType$4, ptrType$4, sliceType$6, ptrType$10, ptrType$11, ptrType$12, ptrType$16, ptrType$17, ptrType$18, ptrType$21, ptrType$25, sliceType$11, ptrType$27, sliceType$13, ptrType$28, ptrType$41, mapType, mapType$2, mapType$4, ptrType$45, ptrType$46, noteMarker, noteMarkerRx, _r, noteCommentRx, _r$1, underscore, outputPrefix, _r$2, firstSentence, Synopsis, matchFields, matchDecl, filterValues, filterFuncs, filterTypes; + fmt = $packages["fmt"]; + ast = $packages["go/ast"]; + comment = $packages["go/doc/comment"]; + token = $packages["go/token"]; + lazyregexp = $packages["internal/lazyregexp"]; + io = $packages["io"]; + path = $packages["path"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + Filter = $newType(4, $kindFunc, "doc.Filter", true, "go/doc", true, null); + Example = $newType(0, $kindStruct, "doc.Example", true, "go/doc", true, function(Name_, Suffix_, Doc_, Code_, Play_, Comments_, Output_, Unordered_, EmptyOutput_, Order_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.Suffix = ""; + this.Doc = ""; + this.Code = $ifaceNil; + this.Play = ptrType$28.nil; + this.Comments = sliceType$13.nil; + this.Output = ""; + this.Unordered = false; + this.EmptyOutput = false; + this.Order = 0; + return; + } + this.Name = Name_; + this.Suffix = Suffix_; + this.Doc = Doc_; + this.Code = Code_; + this.Play = Play_; + this.Comments = Comments_; + this.Output = Output_; + this.Unordered = Unordered_; + this.EmptyOutput = EmptyOutput_; + this.Order = Order_; + }); + Package = $newType(0, $kindStruct, "doc.Package", true, "go/doc", true, function(Doc_, Name_, ImportPath_, Imports_, Filenames_, Notes_, Bugs_, Consts_, Types_, Vars_, Funcs_, Examples_, importByName_, syms_) { + this.$val = this; + if (arguments.length === 0) { + this.Doc = ""; + this.Name = ""; + this.ImportPath = ""; + this.Imports = sliceType.nil; + this.Filenames = sliceType.nil; + this.Notes = false; + this.Bugs = sliceType.nil; + this.Consts = sliceType$1.nil; + this.Types = sliceType$2.nil; + this.Vars = sliceType$1.nil; + this.Funcs = sliceType$3.nil; + this.Examples = sliceType$4.nil; + this.importByName = false; + this.syms = false; + return; + } + this.Doc = Doc_; + this.Name = Name_; + this.ImportPath = ImportPath_; + this.Imports = Imports_; + this.Filenames = Filenames_; + this.Notes = Notes_; + this.Bugs = Bugs_; + this.Consts = Consts_; + this.Types = Types_; + this.Vars = Vars_; + this.Funcs = Funcs_; + this.Examples = Examples_; + this.importByName = importByName_; + this.syms = syms_; + }); + Value = $newType(0, $kindStruct, "doc.Value", true, "go/doc", true, function(Doc_, Names_, Decl_, order_) { + this.$val = this; + if (arguments.length === 0) { + this.Doc = ""; + this.Names = sliceType.nil; + this.Decl = ptrType$16.nil; + this.order = 0; + return; + } + this.Doc = Doc_; + this.Names = Names_; + this.Decl = Decl_; + this.order = order_; + }); + Type = $newType(0, $kindStruct, "doc.Type", true, "go/doc", true, function(Doc_, Name_, Decl_, Consts_, Vars_, Funcs_, Methods_, Examples_) { + this.$val = this; + if (arguments.length === 0) { + this.Doc = ""; + this.Name = ""; + this.Decl = ptrType$16.nil; + this.Consts = sliceType$1.nil; + this.Vars = sliceType$1.nil; + this.Funcs = sliceType$3.nil; + this.Methods = sliceType$3.nil; + this.Examples = sliceType$4.nil; + return; + } + this.Doc = Doc_; + this.Name = Name_; + this.Decl = Decl_; + this.Consts = Consts_; + this.Vars = Vars_; + this.Funcs = Funcs_; + this.Methods = Methods_; + this.Examples = Examples_; + }); + Func = $newType(0, $kindStruct, "doc.Func", true, "go/doc", true, function(Doc_, Name_, Decl_, Recv_, Orig_, Level_, Examples_) { + this.$val = this; + if (arguments.length === 0) { + this.Doc = ""; + this.Name = ""; + this.Decl = ptrType$11.nil; + this.Recv = ""; + this.Orig = ""; + this.Level = 0; + this.Examples = sliceType$4.nil; + return; + } + this.Doc = Doc_; + this.Name = Name_; + this.Decl = Decl_; + this.Recv = Recv_; + this.Orig = Orig_; + this.Level = Level_; + this.Examples = Examples_; + }); + Note = $newType(0, $kindStruct, "doc.Note", true, "go/doc", true, function(Pos_, End_, UID_, Body_) { + this.$val = this; + if (arguments.length === 0) { + this.Pos = 0; + this.End = 0; + this.UID = ""; + this.Body = ""; + return; + } + this.Pos = Pos_; + this.End = End_; + this.UID = UID_; + this.Body = Body_; + }); + $pkg.Filter = Filter; + $pkg.Example = Example; + $pkg.Package = Package; + $pkg.Value = Value; + $pkg.Type = Type; + $pkg.Func = Func; + $pkg.Note = Note; + $pkg.$finishSetup = function() { + sliceType = $sliceType($String); + ptrType = $ptrType(Value); + sliceType$1 = $sliceType(ptrType); + ptrType$1 = $ptrType(Type); + sliceType$2 = $sliceType(ptrType$1); + ptrType$2 = $ptrType(Func); + sliceType$3 = $sliceType(ptrType$2); + ptrType$3 = $ptrType(Example); + sliceType$4 = $sliceType(ptrType$3); + ptrType$4 = $ptrType(comment.Paragraph); + sliceType$6 = $sliceType($Uint8); + ptrType$10 = $ptrType(ast.FieldList); + ptrType$11 = $ptrType(ast.FuncDecl); + ptrType$12 = $ptrType(ast.CommentGroup); + ptrType$16 = $ptrType(ast.GenDecl); + ptrType$17 = $ptrType(ast.InterfaceType); + ptrType$18 = $ptrType(ast.ValueSpec); + ptrType$21 = $ptrType(ast.StructType); + ptrType$25 = $ptrType(Note); + sliceType$11 = $sliceType(ptrType$25); + ptrType$27 = $ptrType(ast.TypeSpec); + sliceType$13 = $sliceType(ptrType$12); + ptrType$28 = $ptrType(ast.File); + ptrType$41 = $ptrType(Package); + mapType = $mapType($String, sliceType$11); + mapType$2 = $mapType($String, $String); + mapType$4 = $mapType($String, $Bool); + ptrType$45 = $ptrType(comment.Parser); + ptrType$46 = $ptrType(comment.Printer); + firstSentence = function firstSentence$1(s) { + var _i, _ref, _rune, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, i, p, pp, ppp, q, s; + _tmp = 0; + _tmp$1 = 0; + _tmp$2 = 0; + ppp = _tmp; + pp = _tmp$1; + p = _tmp$2; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + q = _rune[0]; + if ((q === 10) || (q === 13) || (q === 9)) { + q = 32; + } + if ((q === 32) && (p === 46) && (!unicode.IsUpper(pp) || unicode.IsUpper(ppp))) { + return $substring(s, 0, i); + } + if ((p === 12290) || (p === 65294)) { + return $substring(s, 0, i); + } + _tmp$3 = pp; + _tmp$4 = p; + _tmp$5 = q; + ppp = _tmp$3; + pp = _tmp$4; + p = _tmp$5; + _i += _rune[1]; + } + return s; + }; + Synopsis = function Synopsis$1(text) { + var {$24r, _r$3, p, text, $s, $r, $c} = $restore(this, {text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = new Package.ptr("", "", "", sliceType.nil, sliceType.nil, false, sliceType.nil, sliceType$1.nil, sliceType$2.nil, sliceType$1.nil, sliceType$3.nil, sliceType$4.nil, false, false); + _r$3 = p.Synopsis(text); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Synopsis$1, $c: true, $r, $24r, _r$3, p, text, $s};return $f; + }; + $pkg.Synopsis = Synopsis; + $ptrType(Package).prototype.Synopsis = function Synopsis$2(text) { + var {$24r, _i, _r$3, _r$4, _r$5, _r$6, _ref, _tuple, d, lower, ok, p, pr, prefix, text, x, $s, $r, $c} = $restore(this, {text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + text = firstSentence(text); + _r$3 = strings.ToLower(text); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + lower = _r$3; + _ref = $pkg.IllegalPrefixes; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + prefix = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (strings.HasPrefix(lower, prefix)) { + $s = -1; return ""; + } + _i++; + } + pr = p.Printer(); + pr.TextWidth = -1; + _r$4 = p.Parser().Parse(text); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + d = _r$4; + if (d.Content.$length === 0) { + $s = -1; return ""; + } + _tuple = $assertType((x = d.Content, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])), ptrType$4, true); + ok = _tuple[1]; + if (!ok) { + $s = -1; return ""; + } + d.Content = $subslice(d.Content, 0, 1); + _r$5 = pr.Text(d); /* */ $s = 3; case 3: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = strings.TrimSpace(($bytesToString(_r$5))); /* */ $s = 4; case 4: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r = _r$6; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: Synopsis$2, $c: true, $r, $24r, _i, _r$3, _r$4, _r$5, _r$6, _ref, _tuple, d, lower, ok, p, pr, prefix, text, x, $s};return $f; + }; + matchFields = function matchFields$1(fields$2, f) { + var {_i, _i$1, _r$3, _ref, _ref$1, f, field, fields$2, name, $s, $r, $c} = $restore(this, {fields$2, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!(fields$2 === ptrType$10.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(fields$2 === ptrType$10.nil)) { */ case 1: + _ref = fields$2.List; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + field = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = field.Names; + _i$1 = 0; + /* while (true) { */ case 5: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 6; continue; } + name = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r$3 = f(name.Name); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_r$3) { */ case 7: + $s = -1; return true; + /* } */ case 8: + _i$1++; + $s = 5; continue; + case 6: + _i++; + $s = 3; continue; + case 4: + /* } */ case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: matchFields$1, $c: true, $r, _i, _i$1, _r$3, _ref, _ref$1, f, field, fields$2, name, $s};return $f; + }; + matchDecl = function matchDecl$1(d, f) { + var {_i, _i$1, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, d, d$1, f, name, t, t$1, v, v$1, $s, $r, $c} = $restore(this, {d, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = d.Specs; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + d$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = d$1; + /* */ if ($assertType(_ref$1, ptrType$18, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref$1, ptrType$27, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref$1, ptrType$18, true)[1]) { */ case 3: + v = _ref$1.$val; + _ref$2 = v.Names; + _i$1 = 0; + /* while (true) { */ case 6: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 7; continue; } + name = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + _r$3 = f(name.Name); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_r$3) { */ case 8: + $s = -1; return true; + /* } */ case 9: + _i$1++; + $s = 6; continue; + case 7: + $s = 5; continue; + /* } else if ($assertType(_ref$1, ptrType$27, true)[1]) { */ case 4: + v$1 = _ref$1.$val; + _r$4 = f(v$1.Name.Name); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_r$4) { */ case 11: + $s = -1; return true; + /* } */ case 12: + _ref$3 = v$1.Type; + /* */ if ($assertType(_ref$3, ptrType$21, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref$3, ptrType$17, true)[1]) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if ($assertType(_ref$3, ptrType$21, true)[1]) { */ case 14: + t = _ref$3.$val; + _r$5 = matchFields(t.Fields, f); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (_r$5) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (_r$5) { */ case 17: + $s = -1; return true; + /* } */ case 18: + $s = 16; continue; + /* } else if ($assertType(_ref$3, ptrType$17, true)[1]) { */ case 15: + t$1 = _ref$3.$val; + _r$6 = matchFields(t$1.Methods, f); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (_r$6) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (_r$6) { */ case 20: + $s = -1; return true; + /* } */ case 21: + /* } */ case 16: + /* } */ case 5: + _i++; + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: matchDecl$1, $c: true, $r, _i, _i$1, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, d, d$1, f, name, t, t$1, v, v$1, $s};return $f; + }; + filterValues = function filterValues$1(a, f) { + var {_i, _r$3, _ref, a, f, vd, w, $s, $r, $c} = $restore(this, {a, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = 0; + _ref = a; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + vd = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$3 = matchDecl(vd.Decl, f); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$3) { */ case 3: + ((w < 0 || w >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + w] = vd); + w = w + (1) >> 0; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return $subslice(a, 0, w); + /* */ } return; } var $f = {$blk: filterValues$1, $c: true, $r, _i, _r$3, _ref, a, f, vd, w, $s};return $f; + }; + filterFuncs = function filterFuncs$1(a, f) { + var {_i, _r$3, _ref, a, f, fd, w, $s, $r, $c} = $restore(this, {a, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = 0; + _ref = a; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + fd = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$3 = f(fd.Name); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$3) { */ case 3: + ((w < 0 || w >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + w] = fd); + w = w + (1) >> 0; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return $subslice(a, 0, w); + /* */ } return; } var $f = {$blk: filterFuncs$1, $c: true, $r, _i, _r$3, _ref, a, f, fd, w, $s};return $f; + }; + filterTypes = function filterTypes$1(a, f) { + var {_i, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, a, f, n, td, w, $s, $r, $c} = $restore(this, {a, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = 0; + _ref = a; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + td = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + n = 0; + _r$3 = matchDecl(td.Decl, f); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$3) { */ case 3: + n = 1; + $s = 5; continue; + /* } else { */ case 4: + _r$4 = filterValues(td.Consts, f); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + td.Consts = _r$4; + _r$5 = filterValues(td.Vars, f); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + td.Vars = _r$5; + _r$6 = filterFuncs(td.Funcs, f); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + td.Funcs = _r$6; + _r$7 = filterFuncs(td.Methods, f); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + td.Methods = _r$7; + n = n + ((((td.Consts.$length + td.Vars.$length >> 0) + td.Funcs.$length >> 0) + td.Methods.$length >> 0)) >> 0; + /* } */ case 5: + if (n > 0) { + ((w < 0 || w >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + w] = td); + w = w + (1) >> 0; + } + _i++; + $s = 1; continue; + case 2: + $s = -1; return $subslice(a, 0, w); + /* */ } return; } var $f = {$blk: filterTypes$1, $c: true, $r, _i, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, a, f, n, td, w, $s};return $f; + }; + $ptrType(Package).prototype.Filter = function Filter$1(f) { + var {_r$3, _r$4, _r$5, _r$6, f, p, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r$3 = filterValues(p.Consts, f); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + p.Consts = _r$3; + _r$4 = filterValues(p.Vars, f); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + p.Vars = _r$4; + _r$5 = filterTypes(p.Types, f); /* */ $s = 3; case 3: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + p.Types = _r$5; + _r$6 = filterFuncs(p.Funcs, f); /* */ $s = 4; case 4: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + p.Funcs = _r$6; + p.Doc = ""; + $s = -1; return; + /* */ } return; } var $f = {$blk: Filter$1, $c: true, $r, _r$3, _r$4, _r$5, _r$6, f, p, $s};return $f; + }; + $ptrType(Package).prototype.lookupSym = function lookupSym(recv, name) { + var _entry, _entry$1, name, p, recv; + p = this; + if (!(recv === "")) { + return (_entry = $mapIndex(p.syms,$String.keyFor(recv + "." + name)), _entry !== undefined ? _entry.v : false); + } + return (_entry$1 = $mapIndex(p.syms,$String.keyFor(name)), _entry$1 !== undefined ? _entry$1.v : false); + }; + $ptrType(Package).prototype.lookupPackage = function lookupPackage(name) { + var _entry, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, importPath, name, ok, ok$1, p, path$1; + importPath = ""; + ok = false; + p = this; + _tuple = (_entry = $mapIndex(p.importByName,$String.keyFor(name)), _entry !== undefined ? [_entry.v, true] : ["", false]); + path$1 = _tuple[0]; + ok$1 = _tuple[1]; + if (ok$1) { + if (path$1 === "") { + _tmp = ""; + _tmp$1 = false; + importPath = _tmp; + ok = _tmp$1; + return [importPath, ok]; + } + _tmp$2 = path$1; + _tmp$3 = true; + importPath = _tmp$2; + ok = _tmp$3; + return [importPath, ok]; + } + if (p.Name === name) { + _tmp$4 = ""; + _tmp$5 = true; + importPath = _tmp$4; + ok = _tmp$5; + return [importPath, ok]; + } + _tmp$6 = ""; + _tmp$7 = false; + importPath = _tmp$6; + ok = _tmp$7; + return [importPath, ok]; + }; + $ptrType(Package).prototype.Parser = function Parser() { + var p; + p = this; + return new comment.Parser.ptr(false, $methodVal(p, "lookupPackage"), $methodVal(p, "lookupSym")); + }; + $ptrType(Package).prototype.Printer = function Printer() { + var p; + p = this; + return new comment.Printer.ptr(0, $throwNilPointerError, $throwNilPointerError, "", "", "", 0); + }; + $ptrType(Package).prototype.HTML = function HTML(text) { + var {$24r, _r$3, _r$4, p, text, $s, $r, $c} = $restore(this, {text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r$3 = p.Parser().Parse(text); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = p.Printer().HTML(_r$3); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: HTML, $c: true, $r, $24r, _r$3, _r$4, p, text, $s};return $f; + }; + $ptrType(Package).prototype.Markdown = function Markdown(text) { + var {$24r, _r$3, _r$4, p, text, $s, $r, $c} = $restore(this, {text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r$3 = p.Parser().Parse(text); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = p.Printer().Markdown(_r$3); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Markdown, $c: true, $r, $24r, _r$3, _r$4, p, text, $s};return $f; + }; + $ptrType(Package).prototype.Text = function Text(text) { + var {$24r, _r$3, _r$4, p, text, $s, $r, $c} = $restore(this, {text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + p = this; + _r$3 = p.Parser().Parse(text); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = p.Printer().Text(_r$3); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Text, $c: true, $r, $24r, _r$3, _r$4, p, text, $s};return $f; + }; + ptrType$41.methods = [{prop: "Synopsis", name: "Synopsis", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Filter", name: "Filter", pkg: "", typ: $funcType([Filter], [], false)}, {prop: "collectValues", name: "collectValues", pkg: "go/doc", typ: $funcType([sliceType$1], [], false)}, {prop: "collectTypes", name: "collectTypes", pkg: "go/doc", typ: $funcType([sliceType$2], [], false)}, {prop: "collectFuncs", name: "collectFuncs", pkg: "go/doc", typ: $funcType([sliceType$3], [], false)}, {prop: "lookupSym", name: "lookupSym", pkg: "go/doc", typ: $funcType([$String, $String], [$Bool], false)}, {prop: "lookupPackage", name: "lookupPackage", pkg: "go/doc", typ: $funcType([$String], [$String, $Bool], false)}, {prop: "Parser", name: "Parser", pkg: "", typ: $funcType([], [ptrType$45], false)}, {prop: "Printer", name: "Printer", pkg: "", typ: $funcType([], [ptrType$46], false)}, {prop: "HTML", name: "HTML", pkg: "", typ: $funcType([$String], [sliceType$6], false)}, {prop: "Markdown", name: "Markdown", pkg: "", typ: $funcType([$String], [sliceType$6], false)}, {prop: "Text", name: "Text", pkg: "", typ: $funcType([$String], [sliceType$6], false)}]; + Filter.init([$String], [$Bool], false); + Example.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Suffix", name: "Suffix", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Doc", name: "Doc", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Code", name: "Code", embedded: false, exported: true, typ: ast.Node, tag: ""}, {prop: "Play", name: "Play", embedded: false, exported: true, typ: ptrType$28, tag: ""}, {prop: "Comments", name: "Comments", embedded: false, exported: true, typ: sliceType$13, tag: ""}, {prop: "Output", name: "Output", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Unordered", name: "Unordered", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "EmptyOutput", name: "EmptyOutput", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Order", name: "Order", embedded: false, exported: true, typ: $Int, tag: ""}]); + Package.init("go/doc", [{prop: "Doc", name: "Doc", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ImportPath", name: "ImportPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Imports", name: "Imports", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Filenames", name: "Filenames", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Notes", name: "Notes", embedded: false, exported: true, typ: mapType, tag: ""}, {prop: "Bugs", name: "Bugs", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Consts", name: "Consts", embedded: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "Types", name: "Types", embedded: false, exported: true, typ: sliceType$2, tag: ""}, {prop: "Vars", name: "Vars", embedded: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "Funcs", name: "Funcs", embedded: false, exported: true, typ: sliceType$3, tag: ""}, {prop: "Examples", name: "Examples", embedded: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "importByName", name: "importByName", embedded: false, exported: false, typ: mapType$2, tag: ""}, {prop: "syms", name: "syms", embedded: false, exported: false, typ: mapType$4, tag: ""}]); + Value.init("go/doc", [{prop: "Doc", name: "Doc", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Names", name: "Names", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Decl", name: "Decl", embedded: false, exported: true, typ: ptrType$16, tag: ""}, {prop: "order", name: "order", embedded: false, exported: false, typ: $Int, tag: ""}]); + Type.init("", [{prop: "Doc", name: "Doc", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Decl", name: "Decl", embedded: false, exported: true, typ: ptrType$16, tag: ""}, {prop: "Consts", name: "Consts", embedded: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "Vars", name: "Vars", embedded: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "Funcs", name: "Funcs", embedded: false, exported: true, typ: sliceType$3, tag: ""}, {prop: "Methods", name: "Methods", embedded: false, exported: true, typ: sliceType$3, tag: ""}, {prop: "Examples", name: "Examples", embedded: false, exported: true, typ: sliceType$4, tag: ""}]); + Func.init("", [{prop: "Doc", name: "Doc", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Decl", name: "Decl", embedded: false, exported: true, typ: ptrType$11, tag: ""}, {prop: "Recv", name: "Recv", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Orig", name: "Orig", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Level", name: "Level", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Examples", name: "Examples", embedded: false, exported: true, typ: sliceType$4, tag: ""}]); + Note.init("", [{prop: "Pos", name: "Pos", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "End", name: "End", embedded: false, exported: true, typ: token.Pos, tag: ""}, {prop: "UID", name: "UID", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Body", name: "Body", embedded: false, exported: true, typ: $String, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = comment.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = lazyregexp.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = path.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.IllegalPrefixes = new sliceType(["copyright", "all rights", "author"]); + noteMarker = "([A-Z][A-Z]+)\\(([^)]+)\\):?"; + _r = lazyregexp.New("^[ \\t]*" + noteMarker); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + noteMarkerRx = _r; + _r$1 = lazyregexp.New("^/[/*][ \\t]*" + noteMarker); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + noteCommentRx = _r$1; + underscore = ast.NewIdent("_"); + _r$2 = lazyregexp.New("(?i)^[[:space:]]*(unordered )?output:"); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + outputPrefix = _r$2; + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/goexperiment"] = (function() { + var $pkg = {}, $init, Flags; + Flags = $newType(0, $kindStruct, "goexperiment.Flags", true, "internal/goexperiment", true, function(FieldTrack_, PreemptibleLoops_, StaticLockRanking_, BoringCrypto_, Unified_, RegabiWrappers_, RegabiArgs_, HeapMinimum512KiB_, CoverageRedesign_, Arenas_, PageTrace_) { + this.$val = this; + if (arguments.length === 0) { + this.FieldTrack = false; + this.PreemptibleLoops = false; + this.StaticLockRanking = false; + this.BoringCrypto = false; + this.Unified = false; + this.RegabiWrappers = false; + this.RegabiArgs = false; + this.HeapMinimum512KiB = false; + this.CoverageRedesign = false; + this.Arenas = false; + this.PageTrace = false; + return; + } + this.FieldTrack = FieldTrack_; + this.PreemptibleLoops = PreemptibleLoops_; + this.StaticLockRanking = StaticLockRanking_; + this.BoringCrypto = BoringCrypto_; + this.Unified = Unified_; + this.RegabiWrappers = RegabiWrappers_; + this.RegabiArgs = RegabiArgs_; + this.HeapMinimum512KiB = HeapMinimum512KiB_; + this.CoverageRedesign = CoverageRedesign_; + this.Arenas = Arenas_; + this.PageTrace = PageTrace_; + }); + $pkg.Flags = Flags; + $pkg.$finishSetup = function() { + Flags.init("", [{prop: "FieldTrack", name: "FieldTrack", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "PreemptibleLoops", name: "PreemptibleLoops", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "StaticLockRanking", name: "StaticLockRanking", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "BoringCrypto", name: "BoringCrypto", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Unified", name: "Unified", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "RegabiWrappers", name: "RegabiWrappers", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "RegabiArgs", name: "RegabiArgs", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "HeapMinimum512KiB", name: "HeapMinimum512KiB", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "CoverageRedesign", name: "CoverageRedesign", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Arenas", name: "Arenas", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "PageTrace", name: "PageTrace", embedded: false, exported: true, typ: $Bool, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/buildcfg"] = (function() { + var $pkg = {}, $init, fmt, goexperiment, os, filepath, reflect, runtime, strings, ExperimentFlags, gowasmFeatures, ptrType, sliceType, sliceType$1, ptrType$1, ptrType$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _r$10, ParseGOEXPERIMENT, expList, envOr, goamd64, goarm, gomips, gomips64, goppc64, gowasm, toolTags, experimentTags, gogoarchTags; + fmt = $packages["fmt"]; + goexperiment = $packages["internal/goexperiment"]; + os = $packages["os"]; + filepath = $packages["path/filepath"]; + reflect = $packages["reflect"]; + runtime = $packages["runtime"]; + strings = $packages["strings"]; + ExperimentFlags = $newType(0, $kindStruct, "buildcfg.ExperimentFlags", true, "internal/buildcfg", true, function(Flags_, baseline_) { + this.$val = this; + if (arguments.length === 0) { + this.Flags = new goexperiment.Flags.ptr(false, false, false, false, false, false, false, false, false, false, false); + this.baseline = new goexperiment.Flags.ptr(false, false, false, false, false, false, false, false, false, false, false); + return; + } + this.Flags = Flags_; + this.baseline = baseline_; + }); + gowasmFeatures = $newType(0, $kindStruct, "buildcfg.gowasmFeatures", true, "internal/buildcfg", false, function(SatConv_, SignExt_) { + this.$val = this; + if (arguments.length === 0) { + this.SatConv = false; + this.SignExt = false; + return; + } + this.SatConv = SatConv_; + this.SignExt = SignExt_; + }); + $pkg.ExperimentFlags = ExperimentFlags; + $pkg.gowasmFeatures = gowasmFeatures; + $pkg.$finishSetup = function() { + ptrType = $ptrType(ExperimentFlags); + sliceType = $sliceType($emptyInterface); + sliceType$1 = $sliceType($String); + ptrType$1 = $ptrType(reflect.rtype); + ptrType$2 = $ptrType(goexperiment.Flags); + ParseGOEXPERIMENT = function ParseGOEXPERIMENT$1(goos, goarch, goexp) { + var {$24r, $24r$1, _1, _entry, _i, _key, _key$1, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, baseline, f, field, flags, goarch, goexp, goos, i, names, ok, regabiAlwaysOn, regabiSupported, rt, rv, set, val, $s, $r, $c} = $restore(this, {goos, goarch, goexp}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + flags = [flags]; + _tmp = false; + _tmp$1 = false; + regabiSupported = _tmp; + regabiAlwaysOn = _tmp$1; + _1 = goarch; + if (_1 === ("amd64") || _1 === ("arm64") || _1 === ("ppc64le") || _1 === ("ppc64") || _1 === ("riscv64")) { + regabiAlwaysOn = true; + regabiSupported = true; + } + baseline = new goexperiment.Flags.ptr(false, false, false, false, true, regabiSupported, regabiSupported, false, true, false, false); + flags[0] = new ExperimentFlags.ptr($clone(baseline, goexperiment.Flags), $clone(baseline, goexperiment.Flags)); + /* */ if (!(goexp === "")) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(goexp === "")) { */ case 1: + names = new $global.Map(); + _r$11 = reflect.ValueOf(flags[0].Flags); /* */ $s = 3; case 3: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$12 = $clone(_r$11, reflect.Value).Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + rv = _r$12; + rt = $clone(rv, reflect.Value).Type(); + i = 0; + /* while (true) { */ case 5: + _r$13 = rt.NumField(); /* */ $s = 7; case 7: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + /* if (!(i < _r$13)) { break; } */ if(!(i < _r$13)) { $s = 6; continue; } + _r$14 = $clone(rv, reflect.Value).Field(i); /* */ $s = 8; case 8: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + field = _r$14; + _r$15 = rt.Field(i); /* */ $s = 9; case 9: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _r$16 = strings.ToLower(_r$15.Name); /* */ $s = 10; case 10: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _key = _r$16; (names || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: $methodVal($clone(field, reflect.Value), "SetBool") }); + i = i + (1) >> 0; + $s = 5; continue; + case 6: + _key$1 = "regabi"; (names || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$1), { k: _key$1, v: (function(flags) { return function ParseGOEXPERIMENT·func1(v) { + var v; + flags[0].Flags.RegabiWrappers = v; + flags[0].Flags.RegabiArgs = v; + }; })(flags) }); + _ref = strings.Split(goexp, ","); + _i = 0; + /* while (true) { */ case 11: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 12; continue; } + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (f === "") { + _i++; + /* continue; */ $s = 11; continue; + } + if (f === "none") { + goexperiment.Flags.copy(flags[0].Flags, new goexperiment.Flags.ptr(false, false, false, false, false, false, false, false, false, false, false)); + _i++; + /* continue; */ $s = 11; continue; + } + val = true; + if (strings.HasPrefix(f, "no")) { + _tmp$2 = $substring(f, 2); + _tmp$3 = false; + f = _tmp$2; + val = _tmp$3; + } + _tuple = (_entry = $mapIndex(names,$String.keyFor(f)), _entry !== undefined ? [_entry.v, true] : [$throwNilPointerError, false]); + set = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!ok) { */ case 13: + _r$17 = fmt.Errorf("unknown GOEXPERIMENT %s", new sliceType([new $String(f)])); /* */ $s = 15; case 15: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + $24r = [ptrType.nil, _r$17]; + $s = 16; case 16: return $24r; + /* } */ case 14: + $r = set(val); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 11; continue; + case 12: + /* } */ case 2: + if (regabiAlwaysOn) { + flags[0].Flags.RegabiWrappers = true; + flags[0].Flags.RegabiArgs = true; + } + if (!regabiSupported) { + flags[0].Flags.RegabiWrappers = false; + flags[0].Flags.RegabiArgs = false; + } + /* */ if (flags[0].Flags.RegabiArgs && !flags[0].Flags.RegabiWrappers) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (flags[0].Flags.RegabiArgs && !flags[0].Flags.RegabiWrappers) { */ case 18: + _r$18 = fmt.Errorf("GOEXPERIMENT regabiargs requires regabiwrappers", sliceType.nil); /* */ $s = 20; case 20: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + $24r$1 = [ptrType.nil, _r$18]; + $s = 21; case 21: return $24r$1; + /* } */ case 19: + $s = -1; return [flags[0], $ifaceNil]; + /* */ } return; } var $f = {$blk: ParseGOEXPERIMENT$1, $c: true, $r, $24r, $24r$1, _1, _entry, _i, _key, _key$1, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, baseline, f, field, flags, goarch, goexp, goos, i, names, ok, regabiAlwaysOn, regabiSupported, rt, rv, set, val, $s};return $f; + }; + $pkg.ParseGOEXPERIMENT = ParseGOEXPERIMENT; + $ptrType(ExperimentFlags).prototype.String = function String() { + var {$24r, _r$11, _r$12, exp, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + exp = this; + _r$11 = expList(exp.Flags, exp.baseline, false); /* */ $s = 1; case 1: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$12 = strings.Join(_r$11, ","); /* */ $s = 2; case 2: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $24r = _r$12; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: String, $c: true, $r, $24r, _r$11, _r$12, exp, $s};return $f; + }; + expList = function expList$1(exp, base, all) { + var {_r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$20, _r$21, all, base, baseVal, exp, i, list, name, rBase, rt, rv, val, $s, $r, $c} = $restore(this, {exp, base, all}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + list = sliceType$1.nil; + _r$11 = reflect.ValueOf(exp); /* */ $s = 1; case 1: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$12 = $clone(_r$11, reflect.Value).Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + rv = _r$12; + rBase = new reflect.Value.ptr(ptrType$1.nil, 0, 0); + /* */ if (!(base === ptrType$2.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(base === ptrType$2.nil)) { */ case 3: + _r$13 = reflect.ValueOf(base); /* */ $s = 5; case 5: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$14 = $clone(_r$13, reflect.Value).Elem(); /* */ $s = 6; case 6: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + rBase = _r$14; + /* } */ case 4: + rt = $clone(rv, reflect.Value).Type(); + i = 0; + /* while (true) { */ case 7: + _r$15 = rt.NumField(); /* */ $s = 9; case 9: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + /* if (!(i < _r$15)) { break; } */ if(!(i < _r$15)) { $s = 8; continue; } + _r$16 = rt.Field(i); /* */ $s = 10; case 10: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _r$17 = strings.ToLower(_r$16.Name); /* */ $s = 11; case 11: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + name = _r$17; + _r$18 = $clone(rv, reflect.Value).Field(i); /* */ $s = 12; case 12: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _r$19 = $clone(_r$18, reflect.Value).Bool(); /* */ $s = 13; case 13: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + val = _r$19; + baseVal = false; + /* */ if (!(base === ptrType$2.nil)) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!(base === ptrType$2.nil)) { */ case 14: + _r$20 = $clone(rBase, reflect.Value).Field(i); /* */ $s = 16; case 16: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _r$21 = $clone(_r$20, reflect.Value).Bool(); /* */ $s = 17; case 17: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + baseVal = _r$21; + /* } */ case 15: + if (all || !(val === baseVal)) { + if (val) { + list = $append(list, name); + } else { + list = $append(list, "no" + name); + } + } + i = i + (1) >> 0; + $s = 7; continue; + case 8: + $s = -1; return list; + /* */ } return; } var $f = {$blk: expList$1, $c: true, $r, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$20, _r$21, all, base, baseVal, exp, i, list, name, rBase, rt, rv, val, $s};return $f; + }; + $ptrType(ExperimentFlags).prototype.Enabled = function Enabled() { + var {$24r, _r$11, exp, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + exp = this; + _r$11 = expList(exp.Flags, ptrType$2.nil, false); /* */ $s = 1; case 1: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $24r = _r$11; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Enabled, $c: true, $r, $24r, _r$11, exp, $s};return $f; + }; + $ptrType(ExperimentFlags).prototype.All = function All() { + var {$24r, _r$11, exp, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + exp = this; + _r$11 = expList(exp.Flags, ptrType$2.nil, true); /* */ $s = 1; case 1: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $24r = _r$11; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: All, $c: true, $r, $24r, _r$11, exp, $s};return $f; + }; + envOr = function envOr$1(key, value) { + var {_r$11, key, value, x, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$11 = os.Getenv(key); /* */ $s = 1; case 1: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + x = _r$11; + if (!(x === "")) { + $s = -1; return x; + } + $s = -1; return value; + /* */ } return; } var $f = {$blk: envOr$1, $c: true, $r, _r$11, key, value, x, $s};return $f; + }; + goamd64 = function goamd64$1() { + var {_1, _r$11, _r$12, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$11 = envOr("GOAMD64", "v1"); /* */ $s = 2; case 2: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + v = _r$11; + _1 = v; + if (_1 === ("v1")) { + $s = -1; return 1; + } else if (_1 === ("v2")) { + $s = -1; return 2; + } else if (_1 === ("v3")) { + $s = -1; return 3; + } else if (_1 === ("v4")) { + $s = -1; return 4; + } + case 1: + _r$12 = fmt.Errorf("invalid GOAMD64: must be v1, v2, v3, v4", sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $pkg.Error = _r$12; + $s = -1; return ((("v1".charCodeAt(1) - 48 << 24 >>> 24) >> 0)); + /* */ } return; } var $f = {$blk: goamd64$1, $c: true, $r, _1, _r$11, _r$12, v, $s};return $f; + }; + goarm = function goarm$1() { + var {_1, _r$11, _r$12, def, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + def = "5"; + if ($pkg.GOOS === "android" && $pkg.GOARCH === "arm") { + def = "7"; + } + _r$11 = envOr("GOARM", def); /* */ $s = 2; case 2: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + v = _r$11; + _1 = v; + if (_1 === ("5")) { + $s = -1; return 5; + } else if (_1 === ("6")) { + $s = -1; return 6; + } else if (_1 === ("7")) { + $s = -1; return 7; + } + case 1: + _r$12 = fmt.Errorf("invalid GOARM: must be 5, 6, 7", sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $pkg.Error = _r$12; + $s = -1; return (((def.charCodeAt(0) - 48 << 24 >>> 24) >> 0)); + /* */ } return; } var $f = {$blk: goarm$1, $c: true, $r, _1, _r$11, _r$12, def, v, $s};return $f; + }; + gomips = function gomips$1() { + var {_1, _r$11, _r$12, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$11 = envOr("GOMIPS", "hardfloat"); /* */ $s = 2; case 2: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + v = _r$11; + _1 = v; + if (_1 === ("hardfloat") || _1 === ("softfloat")) { + $s = -1; return v; + } + case 1: + _r$12 = fmt.Errorf("invalid GOMIPS: must be hardfloat, softfloat", sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $pkg.Error = _r$12; + $s = -1; return "hardfloat"; + /* */ } return; } var $f = {$blk: gomips$1, $c: true, $r, _1, _r$11, _r$12, v, $s};return $f; + }; + gomips64 = function gomips64$1() { + var {_1, _r$11, _r$12, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$11 = envOr("GOMIPS64", "hardfloat"); /* */ $s = 2; case 2: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + v = _r$11; + _1 = v; + if (_1 === ("hardfloat") || _1 === ("softfloat")) { + $s = -1; return v; + } + case 1: + _r$12 = fmt.Errorf("invalid GOMIPS64: must be hardfloat, softfloat", sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $pkg.Error = _r$12; + $s = -1; return "hardfloat"; + /* */ } return; } var $f = {$blk: gomips64$1, $c: true, $r, _1, _r$11, _r$12, v, $s};return $f; + }; + goppc64 = function goppc64$1() { + var {_1, _r$11, _r$12, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$11 = envOr("GOPPC64", "power8"); /* */ $s = 2; case 2: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + v = _r$11; + _1 = v; + if (_1 === ("power8")) { + $s = -1; return 8; + } else if (_1 === ("power9")) { + $s = -1; return 9; + } else if (_1 === ("power10")) { + $s = -1; return 10; + } + case 1: + _r$12 = fmt.Errorf("invalid GOPPC64: must be power8, power9, power10", sliceType.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $pkg.Error = _r$12; + $s = -1; return ((("power8".charCodeAt(5) - 48 << 24 >>> 24) >> 0)); + /* */ } return; } var $f = {$blk: goppc64$1, $c: true, $r, _1, _r$11, _r$12, v, $s};return $f; + }; + $ptrType(gowasmFeatures).prototype.String = function String$1() { + var f, flags; + f = this; + flags = sliceType$1.nil; + if (f.SatConv) { + flags = $append(flags, "satconv"); + } + if (f.SignExt) { + flags = $append(flags, "signext"); + } + return strings.Join(flags, ","); + }; + gowasmFeatures.prototype.String = function(...$args) { return this.$val.String(...$args); }; + gowasm = function gowasm$1() { + var {_1, _i, _r$11, _r$12, _r$13, _ref, f, opt, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = new gowasmFeatures.ptr(false, false); + _r$11 = envOr("GOWASM", ""); /* */ $s = 1; case 1: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$12 = strings.Split(_r$11, ","); /* */ $s = 2; case 2: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _ref = _r$12; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + opt = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _1 = opt; + /* */ if (_1 === ("satconv")) { $s = 6; continue; } + /* */ if (_1 === ("signext")) { $s = 7; continue; } + /* */ if (_1 === ("")) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === ("satconv")) { */ case 6: + f.SatConv = true; + $s = 10; continue; + /* } else if (_1 === ("signext")) { */ case 7: + f.SignExt = true; + $s = 10; continue; + /* } else if (_1 === ("")) { */ case 8: + $s = 10; continue; + /* } else { */ case 9: + _r$13 = fmt.Errorf("invalid GOWASM: no such feature %q", new sliceType([new $String(opt)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + $pkg.Error = _r$13; + /* } */ case 10: + case 5: + _i++; + $s = 3; continue; + case 4: + $s = -1; return f; + /* */ } return; } var $f = {$blk: gowasm$1, $c: true, $r, _1, _i, _r$11, _r$12, _r$13, _ref, f, opt, $s};return $f; + }; + toolTags = function toolTags$1() { + var {_arg, _arg$1, _r$11, _r$12, tags, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$11 = experimentTags(); /* */ $s = 1; case 1: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + tags = _r$11; + _arg = tags; + _r$12 = gogoarchTags(); /* */ $s = 2; case 2: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _arg$1 = _r$12; + tags = $appendSlice(_arg, _arg$1); + $s = -1; return tags; + /* */ } return; } var $f = {$blk: toolTags$1, $c: true, $r, _arg, _arg$1, _r$11, _r$12, tags, $s};return $f; + }; + experimentTags = function experimentTags$1() { + var {_i, _r$11, _ref, exp, list, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + list = sliceType$1.nil; + _r$11 = $pkg.Experiment.Enabled(); /* */ $s = 1; case 1: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _ref = _r$11; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + exp = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + list = $append(list, "goexperiment." + exp); + _i++; + $s = 2; continue; + case 3: + $s = -1; return list; + /* */ } return; } var $f = {$blk: experimentTags$1, $c: true, $r, _i, _r$11, _ref, exp, list, $s};return $f; + }; + gogoarchTags = function gogoarchTags$1() { + var {_1, _r$11, _r$12, _r$13, i, i$1, i$2, list, list$1, list$2, list$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _1 = $pkg.GOARCH; + /* */ if (_1 === ("386")) { $s = 2; continue; } + /* */ if (_1 === ("amd64")) { $s = 3; continue; } + /* */ if (_1 === ("arm")) { $s = 4; continue; } + /* */ if (_1 === ("mips") || _1 === ("mipsle")) { $s = 5; continue; } + /* */ if (_1 === ("mips64") || _1 === ("mips64le")) { $s = 6; continue; } + /* */ if (_1 === ("ppc64") || _1 === ("ppc64le")) { $s = 7; continue; } + /* */ if (_1 === ("wasm")) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === ("386")) { */ case 2: + $s = -1; return new sliceType$1([$pkg.GOARCH + "." + $pkg.GO386]); + /* } else if (_1 === ("amd64")) { */ case 3: + list = sliceType$1.nil; + i = 1; + /* while (true) { */ case 10: + /* if (!(i <= $pkg.GOAMD64)) { break; } */ if(!(i <= $pkg.GOAMD64)) { $s = 11; continue; } + _r$11 = fmt.Sprintf("%s.v%d", new sliceType([new $String($pkg.GOARCH), new $Int(i)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + list = $append(list, _r$11); + i = i + (1) >> 0; + $s = 10; continue; + case 11: + $s = -1; return list; + /* } else if (_1 === ("arm")) { */ case 4: + list$1 = sliceType$1.nil; + i$1 = 5; + /* while (true) { */ case 13: + /* if (!(i$1 <= $pkg.GOARM)) { break; } */ if(!(i$1 <= $pkg.GOARM)) { $s = 14; continue; } + _r$12 = fmt.Sprintf("%s.%d", new sliceType([new $String($pkg.GOARCH), new $Int(i$1)])); /* */ $s = 15; case 15: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + list$1 = $append(list$1, _r$12); + i$1 = i$1 + (1) >> 0; + $s = 13; continue; + case 14: + $s = -1; return list$1; + /* } else if (_1 === ("mips") || _1 === ("mipsle")) { */ case 5: + $s = -1; return new sliceType$1([$pkg.GOARCH + "." + $pkg.GOMIPS]); + /* } else if (_1 === ("mips64") || _1 === ("mips64le")) { */ case 6: + $s = -1; return new sliceType$1([$pkg.GOARCH + "." + $pkg.GOMIPS64]); + /* } else if (_1 === ("ppc64") || _1 === ("ppc64le")) { */ case 7: + list$2 = sliceType$1.nil; + i$2 = 8; + /* while (true) { */ case 16: + /* if (!(i$2 <= $pkg.GOPPC64)) { break; } */ if(!(i$2 <= $pkg.GOPPC64)) { $s = 17; continue; } + _r$13 = fmt.Sprintf("%s.power%d", new sliceType([new $String($pkg.GOARCH), new $Int(i$2)])); /* */ $s = 18; case 18: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + list$2 = $append(list$2, _r$13); + i$2 = i$2 + (1) >> 0; + $s = 16; continue; + case 17: + $s = -1; return list$2; + /* } else if (_1 === ("wasm")) { */ case 8: + list$3 = sliceType$1.nil; + if ($pkg.GOWASM.SatConv) { + list$3 = $append(list$3, $pkg.GOARCH + ".satconv"); + } + if ($pkg.GOWASM.SignExt) { + list$3 = $append(list$3, $pkg.GOARCH + ".signext"); + } + $s = -1; return list$3; + /* } */ case 9: + case 1: + $s = -1; return sliceType$1.nil; + /* */ } return; } var $f = {$blk: gogoarchTags$1, $c: true, $r, _1, _r$11, _r$12, _r$13, i, i$1, i$2, list, list$1, list$2, list$3, $s};return $f; + }; + ptrType.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Enabled", name: "Enabled", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "All", name: "All", pkg: "", typ: $funcType([], [sliceType$1], false)}]; + gowasmFeatures.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ExperimentFlags.init("internal/buildcfg", [{prop: "Flags", name: "Flags", embedded: true, exported: true, typ: goexperiment.Flags, tag: ""}, {prop: "baseline", name: "baseline", embedded: false, exported: false, typ: goexperiment.Flags, tag: ""}]); + gowasmFeatures.init("", [{prop: "SatConv", name: "SatConv", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "SignExt", name: "SignExt", embedded: false, exported: true, typ: $Bool, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = goexperiment.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = filepath.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.Error = $ifaceNil; + $pkg.GOROOT = runtime.GOROOT(); + _r = envOr("GOARCH", "ecmascript"); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $pkg.GOARCH = _r; + _r$1 = envOr("GOOS", "js"); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $pkg.GOOS = _r$1; + _r$2 = envOr("GO386", "sse2"); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $pkg.GO386 = _r$2; + _r$3 = (function func1() { + var {_arg, _arg$1, _arg$2, _r$3, _r$4, _tuple, err, flags, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = $pkg.GOOS; + _arg$1 = $pkg.GOARCH; + _r$3 = envOr("GOEXPERIMENT", ""); /* */ $s = 1; case 1: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$2 = _r$3; + _r$4 = ParseGOEXPERIMENT(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple = _r$4; + flags = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $pkg.Error = err; + $s = -1; return new ExperimentFlags.ptr(new goexperiment.Flags.ptr(false, false, false, false, false, false, false, false, false, false, false), new goexperiment.Flags.ptr(false, false, false, false, false, false, false, false, false, false, false)); + } + $s = -1; return flags; + /* */ } return; } var $f = {$blk: func1, $c: true, $r, _arg, _arg$1, _arg$2, _r$3, _r$4, _tuple, err, flags, $s};return $f; + })(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $pkg.Experiment = $clone(_r$3, ExperimentFlags); + _r$4 = goamd64(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $pkg.GOAMD64 = _r$4; + _r$5 = goarm(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $pkg.GOARM = _r$5; + _r$6 = gomips(); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $pkg.GOMIPS = _r$6; + _r$7 = gomips64(); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $pkg.GOMIPS64 = _r$7; + _r$8 = goppc64(); /* */ $s = 16; case 16: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $pkg.GOPPC64 = _r$8; + _r$9 = gowasm(); /* */ $s = 17; case 17: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $pkg.GOWASM = $clone(_r$9, gowasmFeatures); + _r$10 = toolTags(); /* */ $s = 18; case 18: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $pkg.ToolTags = _r$10; + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["context"] = (function() { + var $pkg = {}, $init, errors, reflectlite, sync, atomic, time, Context, deadlineExceededError, emptyCtx, CancelFunc, canceler, cancelCtx, stringer, timerCtx, valueCtx, ptrType, structType, ptrType$1, ptrType$2, ptrType$3, chanType, ptrType$4, ptrType$5, ptrType$6, chanType$1, mapType, goroutines, cancelCtxKey, cancelCtxKey$24ptr, x, background, todo, closedchan, Background, WithCancel, withCancel, Cause, newCancelCtx, propagateCancel, parentCancelCtx, removeChild, init, contextName, WithDeadline, WithTimeout, WithValue, stringify, value; + errors = $packages["errors"]; + reflectlite = $packages["internal/reflectlite"]; + sync = $packages["sync"]; + atomic = $packages["sync/atomic"]; + time = $packages["time"]; + Context = $newType(8, $kindInterface, "context.Context", true, "context", true, null); + deadlineExceededError = $newType(0, $kindStruct, "context.deadlineExceededError", true, "context", false, function() { this.$val = this; }); + emptyCtx = $newType(4, $kindInt, "context.emptyCtx", true, "context", false, null); + CancelFunc = $newType(4, $kindFunc, "context.CancelFunc", true, "context", true, null); + canceler = $newType(8, $kindInterface, "context.canceler", true, "context", false, null); + cancelCtx = $newType(0, $kindStruct, "context.cancelCtx", true, "context", false, function(Context_, mu_, done_, children_, err_, cause_) { + this.$val = this; + if (arguments.length === 0) { + this.Context = $ifaceNil; + this.mu = new sync.Mutex.ptr(0, 0); + this.done = new atomic.Value.ptr($ifaceNil); + this.children = false; + this.err = $ifaceNil; + this.cause = $ifaceNil; + return; + } + this.Context = Context_; + this.mu = mu_; + this.done = done_; + this.children = children_; + this.err = err_; + this.cause = cause_; + }); + stringer = $newType(8, $kindInterface, "context.stringer", true, "context", false, null); + timerCtx = $newType(0, $kindStruct, "context.timerCtx", true, "context", false, function(cancelCtx_, timer_, deadline_) { + this.$val = this; + if (arguments.length === 0) { + this.cancelCtx = ptrType$2.nil; + this.timer = ptrType$4.nil; + this.deadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil); + return; + } + this.cancelCtx = cancelCtx_; + this.timer = timer_; + this.deadline = deadline_; + }); + valueCtx = $newType(0, $kindStruct, "context.valueCtx", true, "context", false, function(Context_, key_, val_) { + this.$val = this; + if (arguments.length === 0) { + this.Context = $ifaceNil; + this.key = $ifaceNil; + this.val = $ifaceNil; + return; + } + this.Context = Context_; + this.key = key_; + this.val = val_; + }); + $pkg.Context = Context; + $pkg.deadlineExceededError = deadlineExceededError; + $pkg.emptyCtx = emptyCtx; + $pkg.CancelFunc = CancelFunc; + $pkg.canceler = canceler; + $pkg.cancelCtx = cancelCtx; + $pkg.stringer = stringer; + $pkg.timerCtx = timerCtx; + $pkg.valueCtx = valueCtx; + $pkg.$finishSetup = function() { + ptrType = $ptrType(emptyCtx); + structType = $structType("", []); + ptrType$1 = $ptrType(time.Location); + ptrType$2 = $ptrType(cancelCtx); + ptrType$3 = $ptrType($Int); + chanType = $chanType(structType, false, false); + ptrType$4 = $ptrType(time.Timer); + ptrType$5 = $ptrType(valueCtx); + ptrType$6 = $ptrType(timerCtx); + chanType$1 = $chanType(structType, false, true); + mapType = $mapType(canceler, structType); + $ptrType(deadlineExceededError).prototype.Error = function Error() { + return "context deadline exceeded"; + }; + deadlineExceededError.prototype.Error = function(...$args) { return this.$val.Error(...$args); }; + $ptrType(deadlineExceededError).prototype.Timeout = function Timeout() { + return true; + }; + deadlineExceededError.prototype.Timeout = function(...$args) { return this.$val.Timeout(...$args); }; + $ptrType(deadlineExceededError).prototype.Temporary = function Temporary() { + return true; + }; + deadlineExceededError.prototype.Temporary = function(...$args) { return this.$val.Temporary(...$args); }; + $ptrType(emptyCtx).prototype.Deadline = function Deadline() { + var deadline, ok; + deadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil); + ok = false; + return [deadline, ok]; + }; + $ptrType(emptyCtx).prototype.Done = function Done() { + return $chanNil; + }; + $ptrType(emptyCtx).prototype.Err = function Err() { + return $ifaceNil; + }; + $ptrType(emptyCtx).prototype.Value = function Value(key) { + var key; + return $ifaceNil; + }; + $ptrType(emptyCtx).prototype.String = function String() { + var _1, e; + e = this; + _1 = e; + if (_1 === (background)) { + return "context.Background"; + } else if (_1 === (todo)) { + return "context.TODO"; + } + return "unknown empty Context"; + }; + Background = function Background$1() { + return background; + }; + $pkg.Background = Background; + WithCancel = function WithCancel$1(parent) { + var {_r, _tmp, _tmp$1, c, cancel, ctx, parent, $s, $r, $c} = $restore(this, {parent}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = [c]; + ctx = $ifaceNil; + cancel = $throwNilPointerError; + _r = withCancel(parent); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + c[0] = _r; + _tmp = c[0]; + _tmp$1 = (function(c) { return function WithCancel·func1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = c[0].cancel(true, $pkg.Canceled, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: WithCancel·func1, $c: true, $r, $s};return $f; + }; })(c); + ctx = _tmp; + cancel = _tmp$1; + $s = -1; return [ctx, cancel]; + /* */ } return; } var $f = {$blk: WithCancel$1, $c: true, $r, _r, _tmp, _tmp$1, c, cancel, ctx, parent, $s};return $f; + }; + $pkg.WithCancel = WithCancel; + withCancel = function withCancel$1(parent) { + var {c, parent, $s, $r, $c} = $restore(this, {parent}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(parent, $ifaceNil)) { + $panic(new $String("cannot create context from nil parent")); + } + c = newCancelCtx(parent); + $r = propagateCancel(parent, c); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return c; + /* */ } return; } var $f = {$blk: withCancel$1, $c: true, $r, c, parent, $s};return $f; + }; + Cause = function Cause$1(c) { + var {$24r, $24r$1, _r, _tuple, c, cc, ok, $s, $deferred, $r, $c} = $restore(this, {c}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + _r = c.Value((cancelCtxKey$24ptr || (cancelCtxKey$24ptr = new ptrType$3(function() { return cancelCtxKey; }, function($v) { cancelCtxKey = $v; })))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$2, true); + cc = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok) { */ case 2: + $r = cc.mu.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(cc.mu, "Unlock"), []]); + $24r = cc.cause; + $s = 5; case 5: return $24r; + /* } */ case 3: + $24r$1 = $ifaceNil; + $s = 6; case 6: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Cause$1, $c: true, $r, $24r, $24r$1, _r, _tuple, c, cc, ok, $s, $deferred};return $f; } } + }; + $pkg.Cause = Cause; + newCancelCtx = function newCancelCtx$1(parent) { + var parent; + return new cancelCtx.ptr(parent, new sync.Mutex.ptr(0, 0), new atomic.Value.ptr($ifaceNil), false, $ifaceNil, $ifaceNil); + }; + propagateCancel = function propagateCancel$1(parent, child) { + var {_arg, _arg$1, _key, _r, _r$1, _r$2, _r$3, _selection, _tuple, child, done, ok, p, parent, $s, $r, $c} = $restore(this, {parent, child}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + child = [child]; + parent = [parent]; + _r = parent[0].Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + done = _r; + if (done === $chanNil) { + $s = -1; return; + } + _selection = $select([[done], []]); + /* */ if (_selection[0] === 0) { $s = 2; continue; } + /* */ if (_selection[0] === 1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_selection[0] === 0) { */ case 2: + _r$1 = parent[0].Err(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = _r$1; + _r$2 = Cause(parent[0]); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = _r$2; + $r = child[0].cancel(false, _arg, _arg$1); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } else if (_selection[0] === 1) { */ case 3: + /* } */ case 4: + _r$3 = parentCancelCtx(parent[0]); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + p = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (ok) { */ case 9: + $r = p.mu.Lock(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(p.err, $ifaceNil))) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!($interfaceIsEqual(p.err, $ifaceNil))) { */ case 13: + $r = child[0].cancel(false, p.err, p.cause); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 15; continue; + /* } else { */ case 14: + if (p.children === false) { + p.children = new $global.Map(); + } + _key = child[0]; (p.children || $throwRuntimeError("assignment to entry in nil map")).set(canceler.keyFor(_key), { k: _key, v: $clone(new structType.ptr(), structType) }); + /* } */ case 15: + $r = p.mu.Unlock(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 11; continue; + /* } else { */ case 10: + goroutines.Add(1); + $go((function(child, parent) { return function propagateCancel·func1() { + var {_arg$2, _arg$3, _r$4, _r$5, _r$6, _r$7, _r$8, _selection$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$4 = parent[0].Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = child[0].Done(); /* */ $s = 2; case 2: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = $select([[_r$4], [_r$5]]); /* */ $s = 3; case 3: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _selection$1 = _r$6; + /* */ if (_selection$1[0] === 0) { $s = 4; continue; } + /* */ if (_selection$1[0] === 1) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_selection$1[0] === 0) { */ case 4: + _r$7 = parent[0].Err(); /* */ $s = 7; case 7: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _arg$2 = _r$7; + _r$8 = Cause(parent[0]); /* */ $s = 8; case 8: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _arg$3 = _r$8; + $r = child[0].cancel(false, _arg$2, _arg$3); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 6; continue; + /* } else if (_selection$1[0] === 1) { */ case 5: + /* } */ case 6: + $s = -1; return; + /* */ } return; } var $f = {$blk: propagateCancel·func1, $c: true, $r, _arg$2, _arg$3, _r$4, _r$5, _r$6, _r$7, _r$8, _selection$1, $s};return $f; + }; })(child, parent), []); + /* } */ case 11: + $s = -1; return; + /* */ } return; } var $f = {$blk: propagateCancel$1, $c: true, $r, _arg, _arg$1, _key, _r, _r$1, _r$2, _r$3, _selection, _tuple, child, done, ok, p, parent, $s};return $f; + }; + parentCancelCtx = function parentCancelCtx$1(parent) { + var {_r, _r$1, _tuple, _tuple$1, done, ok, p, parent, pdone, $s, $r, $c} = $restore(this, {parent}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = parent.Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + done = _r; + if (done === closedchan || done === $chanNil) { + $s = -1; return [ptrType$2.nil, false]; + } + _r$1 = parent.Value((cancelCtxKey$24ptr || (cancelCtxKey$24ptr = new ptrType$3(function() { return cancelCtxKey; }, function($v) { cancelCtxKey = $v; })))); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$2, true); + p = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return [ptrType$2.nil, false]; + } + _tuple$1 = $assertType(p.done.Load(), chanType, true); + pdone = _tuple$1[0]; + if (!(pdone === done)) { + $s = -1; return [ptrType$2.nil, false]; + } + $s = -1; return [p, true]; + /* */ } return; } var $f = {$blk: parentCancelCtx$1, $c: true, $r, _r, _r$1, _tuple, _tuple$1, done, ok, p, parent, pdone, $s};return $f; + }; + removeChild = function removeChild$1(parent, child) { + var {_r, _tuple, child, ok, p, parent, $s, $r, $c} = $restore(this, {parent, child}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = parentCancelCtx(parent); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + p = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return; + } + $r = p.mu.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!(p.children === false)) { + $mapDelete(p.children, canceler.keyFor(child)); + } + $r = p.mu.Unlock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: removeChild$1, $c: true, $r, _r, _tuple, child, ok, p, parent, $s};return $f; + }; + init = function init$1() { + $close(closedchan); + }; + $ptrType(cancelCtx).prototype.Value = function Value$1(key) { + var {$24r, _r, c, key, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if ($interfaceIsEqual(key, (cancelCtxKey$24ptr || (cancelCtxKey$24ptr = new ptrType$3(function() { return cancelCtxKey; }, function($v) { cancelCtxKey = $v; }))))) { + $s = -1; return c; + } + _r = value(c.Context, key); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Value$1, $c: true, $r, $24r, _r, c, key, $s};return $f; + }; + $ptrType(cancelCtx).prototype.Done = function Done$1() { + var {$24r, c, d, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + c = this; + d = c.done.Load(); + if (!($interfaceIsEqual(d, $ifaceNil))) { + $s = -1; return $assertType(d, chanType); + } + $r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(c.mu, "Unlock"), []]); + d = c.done.Load(); + if ($interfaceIsEqual(d, $ifaceNil)) { + d = new chanType(new $Chan(structType, 0)); + c.done.Store(d); + } + $24r = $assertType(d, chanType); + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $chanNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Done$1, $c: true, $r, $24r, c, d, $s, $deferred};return $f; } } + }; + $ptrType(cancelCtx).prototype.Err = function Err$1() { + var {c, err, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + $r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + err = c.err; + $r = c.mu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return err; + /* */ } return; } var $f = {$blk: Err$1, $c: true, $r, c, err, $s};return $f; + }; + contextName = function contextName$1(c) { + var {$24r, $24r$1, _r, _r$1, _tuple, c, ok, s, $s, $r, $c} = $restore(this, {c}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = $assertType(c, stringer, true); + s = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + _r = s.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = reflectlite.TypeOf(c).String(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: contextName$1, $c: true, $r, $24r, $24r$1, _r, _r$1, _tuple, c, ok, s, $s};return $f; + }; + $ptrType(cancelCtx).prototype.String = function String$1() { + var {$24r, _r, c, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = contextName(c.Context); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r + ".WithCancel"; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String$1, $c: true, $r, $24r, _r, c, $s};return $f; + }; + $ptrType(cancelCtx).prototype.cancel = function cancel(removeFromParent, err, cause) { + var {_entry, _i, _key, _keys, _ref, _size, _tuple, c, cause, child, d, err, removeFromParent, $s, $r, $c} = $restore(this, {removeFromParent, err, cause}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if ($interfaceIsEqual(err, $ifaceNil)) { + $panic(new $String("context: internal error: missing cancel error")); + } + if ($interfaceIsEqual(cause, $ifaceNil)) { + cause = err; + } + $r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!($interfaceIsEqual(c.err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(c.err, $ifaceNil))) { */ case 2: + $r = c.mu.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 3: + c.err = err; + c.cause = cause; + _tuple = $assertType(c.done.Load(), chanType, true); + d = _tuple[0]; + if (d === $chanNil) { + c.done.Store(new chanType(closedchan)); + } else { + $close(d); + } + _ref = c.children; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 5: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 6; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 5; continue; + } + child = _entry.k; + $r = child.cancel(false, err, cause); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 5; continue; + case 6: + c.children = false; + $r = c.mu.Unlock(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (removeFromParent) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (removeFromParent) { */ case 9: + $r = removeChild(c.Context, c); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + $s = -1; return; + /* */ } return; } var $f = {$blk: cancel, $c: true, $r, _entry, _i, _key, _keys, _ref, _size, _tuple, c, cause, child, d, err, removeFromParent, $s};return $f; + }; + WithDeadline = function WithDeadline$1(parent, d) { + var {$24r, $24r$1, _r, _r$1, _r$2, _r$3, _tuple, c, cur, d, dur, ok, parent, $s, $deferred, $r, $c} = $restore(this, {parent, d}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + c = [c]; + if ($interfaceIsEqual(parent, $ifaceNil)) { + $panic(new $String("cannot create context from nil parent")); + } + _r = parent.Deadline(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + cur = $clone(_tuple[0], time.Time); + ok = _tuple[1]; + /* */ if (ok && $clone(cur, time.Time).Before($clone(d, time.Time))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok && $clone(cur, time.Time).Before($clone(d, time.Time))) { */ case 2: + _r$1 = WithCancel(parent); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 5; case 5: return $24r; + /* } */ case 3: + c[0] = new timerCtx.ptr(newCancelCtx(parent), ptrType$4.nil, $clone(d, time.Time)); + $r = propagateCancel(parent, c[0]); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = time.Until($clone(d, time.Time)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + dur = _r$2; + /* */ if ((dur.$high < 0 || (dur.$high === 0 && dur.$low <= 0))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ((dur.$high < 0 || (dur.$high === 0 && dur.$low <= 0))) { */ case 8: + $r = c[0].cancel(true, $pkg.DeadlineExceeded, $ifaceNil); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [c[0], (function(c) { return function WithDeadline·func1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = c[0].cancel(false, $pkg.Canceled, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: WithDeadline·func1, $c: true, $r, $s};return $f; + }; })(c)]; + /* } */ case 9: + $r = c[0].cancelCtx.mu.Lock(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(c[0].cancelCtx.mu, "Unlock"), []]); + /* */ if ($interfaceIsEqual(c[0].cancelCtx.err, $ifaceNil)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ($interfaceIsEqual(c[0].cancelCtx.err, $ifaceNil)) { */ case 12: + _r$3 = time.AfterFunc(dur, (function(c) { return function WithDeadline·func2() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = c[0].cancel(true, $pkg.DeadlineExceeded, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: WithDeadline·func2, $c: true, $r, $s};return $f; + }; })(c)); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + c[0].timer = _r$3; + /* } */ case 13: + $24r$1 = [c[0], (function(c) { return function WithDeadline·func3() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = c[0].cancel(true, $pkg.Canceled, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: WithDeadline·func3, $c: true, $r, $s};return $f; + }; })(c)]; + $s = 15; case 15: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; return [$ifaceNil, $throwNilPointerError]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: WithDeadline$1, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, _r$3, _tuple, c, cur, d, dur, ok, parent, $s, $deferred};return $f; } } + }; + $pkg.WithDeadline = WithDeadline; + $ptrType(timerCtx).prototype.Deadline = function Deadline$1() { + var _tmp, _tmp$1, c, deadline, ok; + deadline = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil); + ok = false; + c = this; + _tmp = $clone(c.deadline, time.Time); + _tmp$1 = true; + time.Time.copy(deadline, _tmp); + ok = _tmp$1; + return [deadline, ok]; + }; + $ptrType(timerCtx).prototype.String = function String$2() { + var {$24r, _r, _r$1, _r$2, _r$3, c, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = contextName(c.cancelCtx.Context); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = $clone(c.deadline, time.Time).String(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = time.Until($clone(c.deadline, time.Time)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r + ".WithDeadline(" + _r$1 + " [" + _r$3 + "])"; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: String$2, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, c, $s};return $f; + }; + $ptrType(timerCtx).prototype.cancel = function cancel$1(removeFromParent, err, cause) { + var {c, cause, err, removeFromParent, $s, $r, $c} = $restore(this, {removeFromParent, err, cause}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + $r = c.cancelCtx.cancel(false, err, cause); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (removeFromParent) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (removeFromParent) { */ case 2: + $r = removeChild(c.cancelCtx.Context, c); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $r = c.cancelCtx.mu.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (!(c.timer === ptrType$4.nil)) { + c.timer.Stop(); + c.timer = ptrType$4.nil; + } + $r = c.cancelCtx.mu.Unlock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: cancel$1, $c: true, $r, c, cause, err, removeFromParent, $s};return $f; + }; + WithTimeout = function WithTimeout$1(parent, timeout) { + var {$24r, _arg, _arg$1, _r, _r$1, _r$2, parent, timeout, $s, $r, $c} = $restore(this, {parent, timeout}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _arg = parent; + _r = time.Now(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = $clone(_r, time.Time).Add(timeout); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$1 = $clone(_r$1, time.Time); + _r$2 = WithDeadline(_arg, _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: WithTimeout$1, $c: true, $r, $24r, _arg, _arg$1, _r, _r$1, _r$2, parent, timeout, $s};return $f; + }; + $pkg.WithTimeout = WithTimeout; + WithValue = function WithValue$1(parent, key, val) { + var {_r, key, parent, val, $s, $r, $c} = $restore(this, {parent, key, val}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(parent, $ifaceNil)) { + $panic(new $String("cannot create context from nil parent")); + } + if ($interfaceIsEqual(key, $ifaceNil)) { + $panic(new $String("nil key")); + } + _r = reflectlite.TypeOf(key).Comparable(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r) { */ case 1: + $panic(new $String("key is not comparable")); + /* } */ case 2: + $s = -1; return new valueCtx.ptr(parent, key, val); + /* */ } return; } var $f = {$blk: WithValue$1, $c: true, $r, _r, key, parent, val, $s};return $f; + }; + $pkg.WithValue = WithValue; + stringify = function stringify$1(v) { + var {$24r, _r, _ref, s, s$1, v, $s, $r, $c} = $restore(this, {v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = v; + /* */ if ($assertType(_ref, stringer, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, $String, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, stringer, true)[1]) { */ case 1: + s = _ref; + _r = s.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 5; case 5: return $24r; + /* } else if ($assertType(_ref, $String, true)[1]) { */ case 2: + s$1 = _ref.$val; + $s = -1; return s$1; + /* } */ case 3: + $s = -1; return ""; + /* */ } return; } var $f = {$blk: stringify$1, $c: true, $r, $24r, _r, _ref, s, s$1, v, $s};return $f; + }; + $ptrType(valueCtx).prototype.String = function String$3() { + var {$24r, _r, _r$1, _r$2, c, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = contextName(c.Context); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = reflectlite.TypeOf(c.key).String(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = stringify(c.val); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r + ".WithValue(type " + _r$1 + ", val " + _r$2 + ")"; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: String$3, $c: true, $r, $24r, _r, _r$1, _r$2, c, $s};return $f; + }; + $ptrType(valueCtx).prototype.Value = function Value$2(key) { + var {$24r, _r, c, key, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if ($interfaceIsEqual(c.key, key)) { + $s = -1; return c.val; + } + _r = value(c.Context, key); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Value$2, $c: true, $r, $24r, _r, c, key, $s};return $f; + }; + value = function value$1(c, key) { + var {$24r, _r, _ref, c, ctx, ctx$1, ctx$2, ctx$3, ctx$4, key, $s, $r, $c} = $restore(this, {c, key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* while (true) { */ case 1: + _ref = c; + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$6, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ($assertType(_ref, ptrType$5, true)[1]) { */ case 3: + ctx = _ref.$val; + if ($interfaceIsEqual(key, ctx.key)) { + $s = -1; return ctx.val; + } + c = ctx.Context; + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 4: + ctx$1 = _ref.$val; + if ($interfaceIsEqual(key, (cancelCtxKey$24ptr || (cancelCtxKey$24ptr = new ptrType$3(function() { return cancelCtxKey; }, function($v) { cancelCtxKey = $v; }))))) { + $s = -1; return c; + } + c = ctx$1.Context; + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType$6, true)[1]) { */ case 5: + ctx$2 = _ref.$val; + if ($interfaceIsEqual(key, (cancelCtxKey$24ptr || (cancelCtxKey$24ptr = new ptrType$3(function() { return cancelCtxKey; }, function($v) { cancelCtxKey = $v; }))))) { + $s = -1; return ctx$2.cancelCtx; + } + c = ctx$2.cancelCtx.Context; + $s = 8; continue; + /* } else if ($assertType(_ref, ptrType, true)[1]) { */ case 6: + ctx$3 = _ref.$val; + $s = -1; return $ifaceNil; + /* } else { */ case 7: + ctx$4 = _ref; + _r = c.Value(key); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 10; case 10: return $24r; + /* } */ case 8: + $s = 1; continue; + case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: value$1, $c: true, $r, $24r, _r, _ref, c, ctx, ctx$1, ctx$2, ctx$3, ctx$4, key, $s};return $f; + }; + deadlineExceededError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType.methods = [{prop: "Deadline", name: "Deadline", pkg: "", typ: $funcType([], [time.Time, $Bool], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType$1], false)}, {prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$2.methods = [{prop: "Value", name: "Value", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType$1], false)}, {prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "cancel", name: "cancel", pkg: "context", typ: $funcType([$Bool, $error, $error], [], false)}]; + ptrType$6.methods = [{prop: "Deadline", name: "Deadline", pkg: "", typ: $funcType([], [time.Time, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "cancel", name: "cancel", pkg: "context", typ: $funcType([$Bool, $error, $error], [], false)}]; + ptrType$5.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}]; + Context.init([{prop: "Deadline", name: "Deadline", pkg: "", typ: $funcType([], [time.Time, $Bool], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType$1], false)}, {prop: "Err", name: "Err", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([$emptyInterface], [$emptyInterface], false)}]); + deadlineExceededError.init("", []); + CancelFunc.init([], [], false); + canceler.init([{prop: "Done", name: "Done", pkg: "", typ: $funcType([], [chanType$1], false)}, {prop: "cancel", name: "cancel", pkg: "context", typ: $funcType([$Bool, $error, $error], [], false)}]); + cancelCtx.init("context", [{prop: "Context", name: "Context", embedded: true, exported: true, typ: Context, tag: ""}, {prop: "mu", name: "mu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "done", name: "done", embedded: false, exported: false, typ: atomic.Value, tag: ""}, {prop: "children", name: "children", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "cause", name: "cause", embedded: false, exported: false, typ: $error, tag: ""}]); + stringer.init([{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]); + timerCtx.init("context", [{prop: "cancelCtx", name: "cancelCtx", embedded: true, exported: false, typ: ptrType$2, tag: ""}, {prop: "timer", name: "timer", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "deadline", name: "deadline", embedded: false, exported: false, typ: time.Time, tag: ""}]); + valueCtx.init("context", [{prop: "Context", name: "Context", embedded: true, exported: true, typ: Context, tag: ""}, {prop: "key", name: "key", embedded: false, exported: false, typ: $emptyInterface, tag: ""}, {prop: "val", name: "val", embedded: false, exported: false, typ: $emptyInterface, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflectlite.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + goroutines = new atomic.Int32.ptr(new atomic.noCopy.ptr(), 0); + cancelCtxKey = 0; + $pkg.Canceled = errors.New("context canceled"); + $pkg.DeadlineExceeded = (x = new deadlineExceededError.ptr(), new x.constructor.elem(x)); + background = $newDataPointer(0, ptrType); + todo = $newDataPointer(0, ptrType); + closedchan = new $Chan(structType, 0); + init(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["os/exec"] = (function() { + var $pkg = {}, $init, bytes, context, errors, godebug, execenv, io, fs, os, filepath, runtime, strconv, strings, syscall, time, Error, wrappedError, Cmd, ctxResult, ExitError, prefixSuffixSaver, goroutineStatus, ptrType, sliceType, ptrType$1, sliceType$1, ptrType$2, ptrType$3, ptrType$4, sliceType$2, funcType, sliceType$3, sliceType$4, ptrType$5, funcType$1, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, chanType, chanType$1, chanType$2, execwait, execerrdot, LookPath, skipStdinCopyError, Command, interfaceEqual, closeDescriptors, lookExtensions, minInt, dedupEnv, dedupEnvCase, addCriticalEnv; + bytes = $packages["bytes"]; + context = $packages["context"]; + errors = $packages["errors"]; + godebug = $packages["internal/godebug"]; + execenv = $packages["internal/syscall/execenv"]; + io = $packages["io"]; + fs = $packages["io/fs"]; + os = $packages["os"]; + filepath = $packages["path/filepath"]; + runtime = $packages["runtime"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + syscall = $packages["syscall"]; + time = $packages["time"]; + Error = $newType(0, $kindStruct, "exec.Error", true, "os/exec", true, function(Name_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.Err = $ifaceNil; + return; + } + this.Name = Name_; + this.Err = Err_; + }); + wrappedError = $newType(0, $kindStruct, "exec.wrappedError", true, "os/exec", false, function(prefix_, err_) { + this.$val = this; + if (arguments.length === 0) { + this.prefix = ""; + this.err = $ifaceNil; + return; + } + this.prefix = prefix_; + this.err = err_; + }); + Cmd = $newType(0, $kindStruct, "exec.Cmd", true, "os/exec", true, function(Path_, Args_, Env_, Dir_, Stdin_, Stdout_, Stderr_, ExtraFiles_, SysProcAttr_, Process_, ProcessState_, ctx_, Err_, Cancel_, WaitDelay_, childIOFiles_, parentIOPipes_, goroutine_, goroutineErr_, ctxResult_, createdByStack_, lookPathErr_) { + this.$val = this; + if (arguments.length === 0) { + this.Path = ""; + this.Args = sliceType.nil; + this.Env = sliceType.nil; + this.Dir = ""; + this.Stdin = $ifaceNil; + this.Stdout = $ifaceNil; + this.Stderr = $ifaceNil; + this.ExtraFiles = sliceType$1.nil; + this.SysProcAttr = ptrType$2.nil; + this.Process = ptrType$3.nil; + this.ProcessState = ptrType$4.nil; + this.ctx = $ifaceNil; + this.Err = $ifaceNil; + this.Cancel = $throwNilPointerError; + this.WaitDelay = new time.Duration(0, 0); + this.childIOFiles = sliceType$2.nil; + this.parentIOPipes = sliceType$2.nil; + this.goroutine = sliceType$3.nil; + this.goroutineErr = $chanNil; + this.ctxResult = $chanNil; + this.createdByStack = sliceType$4.nil; + this.lookPathErr = $ifaceNil; + return; + } + this.Path = Path_; + this.Args = Args_; + this.Env = Env_; + this.Dir = Dir_; + this.Stdin = Stdin_; + this.Stdout = Stdout_; + this.Stderr = Stderr_; + this.ExtraFiles = ExtraFiles_; + this.SysProcAttr = SysProcAttr_; + this.Process = Process_; + this.ProcessState = ProcessState_; + this.ctx = ctx_; + this.Err = Err_; + this.Cancel = Cancel_; + this.WaitDelay = WaitDelay_; + this.childIOFiles = childIOFiles_; + this.parentIOPipes = parentIOPipes_; + this.goroutine = goroutine_; + this.goroutineErr = goroutineErr_; + this.ctxResult = ctxResult_; + this.createdByStack = createdByStack_; + this.lookPathErr = lookPathErr_; + }); + ctxResult = $newType(0, $kindStruct, "exec.ctxResult", true, "os/exec", false, function(err_, timer_) { + this.$val = this; + if (arguments.length === 0) { + this.err = $ifaceNil; + this.timer = ptrType$7.nil; + return; + } + this.err = err_; + this.timer = timer_; + }); + ExitError = $newType(0, $kindStruct, "exec.ExitError", true, "os/exec", true, function(ProcessState_, Stderr_) { + this.$val = this; + if (arguments.length === 0) { + this.ProcessState = ptrType$4.nil; + this.Stderr = sliceType$4.nil; + return; + } + this.ProcessState = ProcessState_; + this.Stderr = Stderr_; + }); + prefixSuffixSaver = $newType(0, $kindStruct, "exec.prefixSuffixSaver", true, "os/exec", false, function(N_, prefix_, suffix_, suffixOff_, skipped_) { + this.$val = this; + if (arguments.length === 0) { + this.N = 0; + this.prefix = sliceType$4.nil; + this.suffix = sliceType$4.nil; + this.suffixOff = 0; + this.skipped = new $Int64(0, 0); + return; + } + this.N = N_; + this.prefix = prefix_; + this.suffix = suffix_; + this.suffixOff = suffixOff_; + this.skipped = skipped_; + }); + goroutineStatus = $newType(0, $kindStruct, "exec.goroutineStatus", true, "os/exec", false, function(running_, firstErr_) { + this.$val = this; + if (arguments.length === 0) { + this.running = 0; + this.firstErr = $ifaceNil; + return; + } + this.running = running_; + this.firstErr = firstErr_; + }); + $pkg.Error = Error; + $pkg.wrappedError = wrappedError; + $pkg.Cmd = Cmd; + $pkg.ctxResult = ctxResult; + $pkg.ExitError = ExitError; + $pkg.prefixSuffixSaver = prefixSuffixSaver; + $pkg.goroutineStatus = goroutineStatus; + $pkg.$finishSetup = function() { + ptrType = $ptrType(fs.PathError); + sliceType = $sliceType($String); + ptrType$1 = $ptrType(os.File); + sliceType$1 = $sliceType(ptrType$1); + ptrType$2 = $ptrType(syscall.SysProcAttr); + ptrType$3 = $ptrType(os.Process); + ptrType$4 = $ptrType(os.ProcessState); + sliceType$2 = $sliceType(io.Closer); + funcType = $funcType([], [$error], false); + sliceType$3 = $sliceType(funcType); + sliceType$4 = $sliceType($Uint8); + ptrType$5 = $ptrType(Cmd); + funcType$1 = $funcType([ptrType$5], [], false); + ptrType$6 = $ptrType(strings.Builder); + ptrType$7 = $ptrType(time.Timer); + ptrType$8 = $ptrType(ExitError); + ptrType$9 = $ptrType(prefixSuffixSaver); + ptrType$10 = $ptrType(sliceType$4); + ptrType$11 = $ptrType(Error); + chanType = $chanType(ctxResult, true, false); + chanType$1 = $chanType($error, false, true); + chanType$2 = $chanType(ctxResult, false, true); + LookPath = function LookPath$1(file) { + var file; + return ["", new Error.ptr(file, $pkg.ErrNotFound)]; + }; + $pkg.LookPath = LookPath; + skipStdinCopyError = function skipStdinCopyError$1(err) { + var _tuple, err, ok, pe; + _tuple = $assertType(err, ptrType, true); + pe = _tuple[0]; + ok = _tuple[1]; + return ok && pe.Op === "write" && pe.Path === "|1" && $interfaceIsEqual(pe.Err, new syscall.Errno(32)); + }; + $ptrType(Error).prototype.Error = function Error$1() { + var {$24r, _r, e, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = "exec: " + strconv.Quote(e.Name) + ": " + _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Error$1, $c: true, $r, $24r, _r, e, $s};return $f; + }; + $ptrType(Error).prototype.Unwrap = function Unwrap() { + var e; + e = this; + return e.Err; + }; + $ptrType(wrappedError).prototype.Error = function Error$2() { + var {$24r, _r, w, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = this; + _r = w.err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = w.prefix + ": " + _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Error$2, $c: true, $r, $24r, _r, w, $s};return $f; + }; + wrappedError.prototype.Error = function(...$args) { return this.$val.Error(...$args); }; + $ptrType(wrappedError).prototype.Unwrap = function Unwrap$1() { + var w; + w = this; + return w.err; + }; + wrappedError.prototype.Unwrap = function(...$args) { return this.$val.Unwrap(...$args); }; + Command = function Command$1(name, arg) { + var {_r, _tuple, arg, cmd, err, i, lp, n, name, stack, v, $s, $r, $c} = $restore(this, {name, arg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + cmd = new Cmd.ptr(name, $appendSlice(new sliceType([name]), arg), sliceType.nil, "", $ifaceNil, $ifaceNil, $ifaceNil, sliceType$1.nil, ptrType$2.nil, ptrType$3.nil, ptrType$4.nil, $ifaceNil, $ifaceNil, $throwNilPointerError, new time.Duration(0, 0), sliceType$2.nil, sliceType$2.nil, sliceType$3.nil, $chanNil, $chanNil, sliceType$4.nil, $ifaceNil); + _r = execwait.Value(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v = _r; + if (!(v === "")) { + if (v === "2") { + stack = $makeSlice(sliceType$4, 1024); + while (true) { + n = runtime.Stack(stack, false); + if (n < stack.$length) { + stack = $subslice(stack, 0, n); + break; + } + stack = $makeSlice(sliceType$4, ($imul(2, stack.$length))); + } + i = bytes.Index(stack, (new sliceType$4($stringToBytes("\nos/exec.Command(")))); + if (i >= 0) { + stack = $subslice(stack, (i + 1 >> 0)); + } + cmd.createdByStack = stack; + } + runtime.SetFinalizer(cmd, new funcType$1((function Command·func1(c) { + var {_r$1, _r$2, _r$3, c, debugHint, $s, $r, $c} = $restore(this, {c}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!(c.Process === ptrType$3.nil) && c.ProcessState === ptrType$4.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(c.Process === ptrType$3.nil) && c.ProcessState === ptrType$4.nil) { */ case 1: + debugHint = ""; + /* */ if (c.createdByStack === sliceType$4.nil) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (c.createdByStack === sliceType$4.nil) { */ case 3: + debugHint = " (set GODEBUG=execwait=2 to capture stacks for debugging)"; + $s = 5; continue; + /* } else { */ case 4: + _r$1 = os.Stderr.WriteString("GODEBUG=execwait=2 detected a leaked exec.Cmd created by:\n"); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _r$2 = os.Stderr.Write(c.createdByStack); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _r$3 = os.Stderr.WriteString("\n"); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + debugHint = ""; + /* } */ case 5: + $panic(new $String("exec: Cmd started a Process but leaked without a call to Wait" + debugHint)); + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Command·func1, $c: true, $r, _r$1, _r$2, _r$3, c, debugHint, $s};return $f; + }))); + } + if (filepath.Base(name) === name) { + _tuple = LookPath(name); + lp = _tuple[0]; + err = _tuple[1]; + if (!(lp === "")) { + cmd.Path = lp; + } + if (!($interfaceIsEqual(err, $ifaceNil))) { + cmd.Err = err; + } + } + $s = -1; return cmd; + /* */ } return; } var $f = {$blk: Command$1, $c: true, $r, _r, _tuple, arg, cmd, err, i, lp, n, name, stack, v, $s};return $f; + }; + $pkg.Command = Command; + $ptrType(Cmd).prototype.String = function String() { + var _i, _ref, a, b, c; + c = this; + if (!($interfaceIsEqual(c.Err, $ifaceNil)) || !($interfaceIsEqual(c.lookPathErr, $ifaceNil))) { + return strings.Join(c.Args, " "); + } + b = new strings.Builder.ptr(ptrType$6.nil, sliceType$4.nil); + b.WriteString(c.Path); + _ref = $subslice(c.Args, 1); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + a = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + b.WriteByte(32); + b.WriteString(a); + _i++; + } + return b.String(); + }; + interfaceEqual = function interfaceEqual$1(a, b) { + var a, b, $deferred; + /* */ var $err = null; try { $deferred = []; $curGoroutine.deferStack.push($deferred); + $deferred.push([(function interfaceEqual·func1() { + $recover(); + }), []]); + return $interfaceIsEqual(a, b); + /* */ } catch(err) { $err = err; return false; } finally { $callDeferred($deferred, $err); } + }; + $ptrType(Cmd).prototype.argv = function argv() { + var c; + c = this; + if (c.Args.$length > 0) { + return c.Args; + } + return new sliceType([c.Path]); + }; + $ptrType(Cmd).prototype.childStdin = function childStdin() { + var {_r, _r$1, _tuple, _tuple$1, _tuple$2, c, err, err$1, f, f$1, ok, pr, pw, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = [c]; + pw = [pw]; + c[0] = this; + /* */ if ($interfaceIsEqual(c[0].Stdin, $ifaceNil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($interfaceIsEqual(c[0].Stdin, $ifaceNil)) { */ case 1: + _r = os.Open("/dev/null"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err]; + } + c[0].childIOFiles = $append(c[0].childIOFiles, f); + $s = -1; return [f, $ifaceNil]; + /* } */ case 2: + _tuple$1 = $assertType(c[0].Stdin, ptrType$1, true); + f$1 = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok) { + $s = -1; return [f$1, $ifaceNil]; + } + _r$1 = os.Pipe(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$2 = _r$1; + pr = _tuple$2[0]; + pw[0] = _tuple$2[1]; + err$1 = _tuple$2[2]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$1]; + } + c[0].childIOFiles = $append(c[0].childIOFiles, pr); + c[0].parentIOPipes = $append(c[0].parentIOPipes, pw[0]); + c[0].goroutine = $append(c[0].goroutine, (function(c, pw) { return function Cmd·childStdin·func1() { + var {_r$2, _r$3, _tuple$3, err$2, err1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$2 = io.Copy(pw[0], c[0].Stdin); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$3 = _r$2; + err$2 = _tuple$3[1]; + if (skipStdinCopyError(err$2)) { + err$2 = $ifaceNil; + } + _r$3 = pw[0].Close(); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err1 = _r$3; + if ($interfaceIsEqual(err$2, $ifaceNil)) { + err$2 = err1; + } + $s = -1; return err$2; + /* */ } return; } var $f = {$blk: Cmd·childStdin·func1, $c: true, $r, _r$2, _r$3, _tuple$3, err$2, err1, $s};return $f; + }; })(c, pw)); + $s = -1; return [pr, $ifaceNil]; + /* */ } return; } var $f = {$blk: childStdin, $c: true, $r, _r, _r$1, _tuple, _tuple$1, _tuple$2, c, err, err$1, f, f$1, ok, pr, pw, $s};return $f; + }; + $ptrType(Cmd).prototype.childStdout = function childStdout() { + var {$24r, _r, c, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = c.writerDescriptor(c.Stdout); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: childStdout, $c: true, $r, $24r, _r, c, $s};return $f; + }; + $ptrType(Cmd).prototype.childStderr = function childStderr(childStdout$1) { + var {$24r, _r, c, childStdout$1, $s, $r, $c} = $restore(this, {childStdout$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if (!($interfaceIsEqual(c.Stderr, $ifaceNil)) && interfaceEqual(c.Stderr, c.Stdout)) { + $s = -1; return [childStdout$1, $ifaceNil]; + } + _r = c.writerDescriptor(c.Stderr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: childStderr, $c: true, $r, $24r, _r, c, childStdout$1, $s};return $f; + }; + $ptrType(Cmd).prototype.writerDescriptor = function writerDescriptor(w) { + var {_r, _r$1, _tuple, _tuple$1, _tuple$2, c, err, err$1, f, f$1, ok, pr, pw, w, $s, $r, $c} = $restore(this, {w}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pr = [pr]; + w = [w]; + c = this; + /* */ if ($interfaceIsEqual(w[0], $ifaceNil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($interfaceIsEqual(w[0], $ifaceNil)) { */ case 1: + _r = os.OpenFile("/dev/null", 1, 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err]; + } + c.childIOFiles = $append(c.childIOFiles, f); + $s = -1; return [f, $ifaceNil]; + /* } */ case 2: + _tuple$1 = $assertType(w[0], ptrType$1, true); + f$1 = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok) { + $s = -1; return [f$1, $ifaceNil]; + } + _r$1 = os.Pipe(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$2 = _r$1; + pr[0] = _tuple$2[0]; + pw = _tuple$2[1]; + err$1 = _tuple$2[2]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$1.nil, err$1]; + } + c.childIOFiles = $append(c.childIOFiles, pw); + c.parentIOPipes = $append(c.parentIOPipes, pr[0]); + c.goroutine = $append(c.goroutine, (function(pr, w) { return function Cmd·writerDescriptor·func1() { + var {_r$2, _r$3, _tuple$3, err$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$2 = io.Copy(w[0], pr[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$3 = _r$2; + err$2 = _tuple$3[1]; + _r$3 = pr[0].Close(); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + $s = -1; return err$2; + /* */ } return; } var $f = {$blk: Cmd·writerDescriptor·func1, $c: true, $r, _r$2, _r$3, _tuple$3, err$2, $s};return $f; + }; })(pr, w)); + $s = -1; return [pw, $ifaceNil]; + /* */ } return; } var $f = {$blk: writerDescriptor, $c: true, $r, _r, _r$1, _tuple, _tuple$1, _tuple$2, c, err, err$1, f, f$1, ok, pr, pw, w, $s};return $f; + }; + closeDescriptors = function closeDescriptors$1(closers) { + var {_i, _r, _ref, closers, fd, $s, $r, $c} = $restore(this, {closers}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = closers; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + fd = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r = fd.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: closeDescriptors$1, $c: true, $r, _i, _r, _ref, closers, fd, $s};return $f; + }; + $ptrType(Cmd).prototype.Run = function Run() { + var {$24r, _r, _r$1, c, err, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = c.Start(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$1 = c.Wait(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Run, $c: true, $r, $24r, _r, _r$1, c, err, $s};return $f; + }; + lookExtensions = function lookExtensions$1(path, dir) { + var _tuple, dir, dirandpath, err, ext, lp, path; + if (filepath.Base(path) === path) { + path = "./" + path; + } + if (dir === "") { + return LookPath(path); + } + if (!(filepath.VolumeName(path) === "")) { + return LookPath(path); + } + if (path.length > 1 && os.IsPathSeparator(path.charCodeAt(0))) { + return LookPath(path); + } + dirandpath = filepath.Join(new sliceType([dir, path])); + _tuple = LookPath(dirandpath); + lp = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return ["", err]; + } + ext = strings.TrimPrefix(lp, dirandpath); + return [path + ext, $ifaceNil]; + }; + $ptrType(Cmd).prototype.Start = function Start() { + var {$24r, $24r$1, $24r$10, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, $24r$9, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _selection, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _v, c, childFiles, env, err, err$1, fn, goroutineErr, lp, resultc, started, statusc, stderr, stdin, stdout, x, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + c = [c]; + goroutineErr = [goroutineErr]; + started = [started]; + statusc = [statusc]; + c[0] = this; + if (!(c[0].Process === ptrType$3.nil)) { + $s = -1; return errors.New("exec: already started"); + } + started[0] = false; + $deferred.push([(function(c, goroutineErr, started, statusc) { return function Cmd·Start·func1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = closeDescriptors(c[0].childIOFiles); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + c[0].childIOFiles = sliceType$2.nil; + /* */ if (!started[0]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!started[0]) { */ case 2: + $r = closeDescriptors(c[0].parentIOPipes); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + c[0].parentIOPipes = sliceType$2.nil; + /* } */ case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: Cmd·Start·func1, $c: true, $r, $s};return $f; + }; })(c, goroutineErr, started, statusc), []]); + if (c[0].Path === "" && $interfaceIsEqual(c[0].Err, $ifaceNil) && $interfaceIsEqual(c[0].lookPathErr, $ifaceNil)) { + c[0].Err = errors.New("exec: no command"); + } + /* */ if (!($interfaceIsEqual(c[0].Err, $ifaceNil)) || !($interfaceIsEqual(c[0].lookPathErr, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(c[0].Err, $ifaceNil)) || !($interfaceIsEqual(c[0].lookPathErr, $ifaceNil))) { */ case 1: + /* */ if (!($interfaceIsEqual(c[0].lookPathErr, $ifaceNil))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!($interfaceIsEqual(c[0].lookPathErr, $ifaceNil))) { */ case 3: + $24r = c[0].lookPathErr; + $s = 5; case 5: return $24r; + /* } */ case 4: + $24r$1 = c[0].Err; + $s = 6; case 6: return $24r$1; + /* } */ case 2: + /* */ if (false) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (false) { */ case 7: + _tuple = lookExtensions(c[0].Path, c[0].Dir); + lp = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 9: + $24r$2 = err; + $s = 11; case 11: return $24r$2; + /* } */ case 10: + c[0].Path = lp; + /* } */ case 8: + /* */ if (!(c[0].Cancel === $throwNilPointerError) && $interfaceIsEqual(c[0].ctx, $ifaceNil)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!(c[0].Cancel === $throwNilPointerError) && $interfaceIsEqual(c[0].ctx, $ifaceNil)) { */ case 12: + $24r$3 = errors.New("exec: command with a non-nil Cancel was not created with CommandContext"); + $s = 14; case 14: return $24r$3; + /* } */ case 13: + /* */ if (!($interfaceIsEqual(c[0].ctx, $ifaceNil))) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!($interfaceIsEqual(c[0].ctx, $ifaceNil))) { */ case 15: + _r = c[0].ctx.Done(); /* */ $s = 17; case 17: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _selection = $select([[_r], []]); + /* */ if (_selection[0] === 0) { $s = 18; continue; } + /* */ if (_selection[0] === 1) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (_selection[0] === 0) { */ case 18: + _r$1 = c[0].ctx.Err(); /* */ $s = 21; case 21: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$4 = _r$1; + $s = 22; case 22: return $24r$4; + /* } else if (_selection[0] === 1) { */ case 19: + /* } */ case 20: + /* } */ case 16: + childFiles = $makeSlice(sliceType$1, 0, (3 + c[0].ExtraFiles.$length >> 0)); + _r$2 = c[0].childStdin(); /* */ $s = 23; case 23: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + stdin = _tuple$1[0]; + err$1 = _tuple$1[1]; + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 24: + $24r$5 = err$1; + $s = 26; case 26: return $24r$5; + /* } */ case 25: + childFiles = $append(childFiles, stdin); + _r$3 = c[0].childStdout(); /* */ $s = 27; case 27: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$2 = _r$3; + stdout = _tuple$2[0]; + err$1 = _tuple$2[1]; + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 28: + $24r$6 = err$1; + $s = 30; case 30: return $24r$6; + /* } */ case 29: + childFiles = $append(childFiles, stdout); + _r$4 = c[0].childStderr(stdout); /* */ $s = 31; case 31: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$3 = _r$4; + stderr = _tuple$3[0]; + err$1 = _tuple$3[1]; + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 32: + $24r$7 = err$1; + $s = 34; case 34: return $24r$7; + /* } */ case 33: + childFiles = $append(childFiles, stderr); + childFiles = $appendSlice(childFiles, c[0].ExtraFiles); + _r$5 = c[0].environ(); /* */ $s = 35; case 35: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$4 = _r$5; + env = _tuple$4[0]; + err$1 = _tuple$4[1]; + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 36: + $24r$8 = err$1; + $s = 38; case 38: return $24r$8; + /* } */ case 37: + _r$6 = os.StartProcess(c[0].Path, c[0].argv(), new os.ProcAttr.ptr(c[0].Dir, env, childFiles, c[0].SysProcAttr)); /* */ $s = 39; case 39: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$5 = _r$6; + c[0].Process = _tuple$5[0]; + err$1 = _tuple$5[1]; + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 40; continue; } + /* */ $s = 41; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 40: + $24r$9 = err$1; + $s = 42; case 42: return $24r$9; + /* } */ case 41: + started[0] = true; + /* */ if (c[0].goroutine.$length > 0) { $s = 43; continue; } + /* */ $s = 44; continue; + /* if (c[0].goroutine.$length > 0) { */ case 43: + goroutineErr[0] = new $Chan($error, 1); + c[0].goroutineErr = goroutineErr[0]; + statusc[0] = new $Chan(goroutineStatus, 1); + $r = $send(statusc[0], $clone($clone(new goroutineStatus.ptr(c[0].goroutine.$length, $ifaceNil), goroutineStatus), goroutineStatus)); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = c[0].goroutine; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + fn = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $go((function(c, goroutineErr, started, statusc) { return function Cmd·Start·func2(fn$1) { + var {_r$7, _r$8, err$2, fn$1, status, $s, $r, $c} = $restore(this, {fn$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$7 = fn$1(); /* */ $s = 1; case 1: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + err$2 = _r$7; + _r$8 = $recv(statusc[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + status = $clone(_r$8[0], goroutineStatus); + if ($interfaceIsEqual(status.firstErr, $ifaceNil)) { + status.firstErr = err$2; + } + status.running = status.running - (1) >> 0; + /* */ if (status.running === 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (status.running === 0) { */ case 3: + $r = $send(goroutineErr[0], status.firstErr); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 5; continue; + /* } else { */ case 4: + $r = $send(statusc[0], $clone($clone(status, goroutineStatus), goroutineStatus)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: Cmd·Start·func2, $c: true, $r, _r$7, _r$8, err$2, fn$1, status, $s};return $f; + }; })(c, goroutineErr, started, statusc), [fn]); + _i++; + } + c[0].goroutine = sliceType$3.nil; + /* } */ case 44: + if (!((!(c[0].Cancel === $throwNilPointerError) || !((x = c[0].WaitDelay, (x.$high === 0 && x.$low === 0)))) && !($interfaceIsEqual(c[0].ctx, $ifaceNil)))) { _v = false; $s = 48; continue s; } + _r$7 = c[0].ctx.Done(); /* */ $s = 49; case 49: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _v = !(_r$7 === $chanNil); case 48: + /* */ if (_v) { $s = 46; continue; } + /* */ $s = 47; continue; + /* if (_v) { */ case 46: + resultc = new $Chan(ctxResult, 0); + c[0].ctxResult = resultc; + $go($methodVal(c[0], "watchCtx"), [resultc]); + /* } */ case 47: + $24r$10 = $ifaceNil; + $s = 50; case 50: return $24r$10; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Start, $c: true, $r, $24r, $24r$1, $24r$10, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, $24r$9, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _selection, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _v, c, childFiles, env, err, err$1, fn, goroutineErr, lp, resultc, started, statusc, stderr, stdin, stdout, x, $s, $deferred};return $f; } } + }; + $ptrType(Cmd).prototype.watchCtx = function watchCtx(resultc) { + var {_r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _selection$1, _selection$2, c, err, goroutineErr, interruptErr, killErr, killed, resultc, timer, x, x$1, x$2, $s, $r, $c} = $restore(this, {resultc}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = c.ctx.Done(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = $select([[resultc, $clone(new ctxResult.ptr($ifaceNil, ptrType$7.nil), ctxResult)], [_r]]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _selection = _r$1; + /* */ if (_selection[0] === 0) { $s = 3; continue; } + /* */ if (_selection[0] === 1) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_selection[0] === 0) { */ case 3: + $s = -1; return; + /* } else if (_selection[0] === 1) { */ case 4: + /* } */ case 5: + err = $ifaceNil; + /* */ if (!(c.Cancel === $throwNilPointerError)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(c.Cancel === $throwNilPointerError)) { */ case 6: + _r$2 = c.Cancel(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + interruptErr = _r$2; + /* */ if ($interfaceIsEqual(interruptErr, $ifaceNil)) { $s = 9; continue; } + _r$3 = errors.Is(interruptErr, os.ErrProcessDone); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ($interfaceIsEqual(interruptErr, $ifaceNil)) { */ case 9: + _r$4 = c.ctx.Err(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + err = _r$4; + $s = 12; continue; + /* } else if (_r$3) { */ case 10: + $s = 12; continue; + /* } else { */ case 11: + err = (x = new wrappedError.ptr("exec: canceling Cmd", interruptErr), new x.constructor.elem(x)); + /* } */ case 12: + /* } */ case 7: + /* */ if ((x$1 = c.WaitDelay, (x$1.$high === 0 && x$1.$low === 0))) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if ((x$1 = c.WaitDelay, (x$1.$high === 0 && x$1.$low === 0))) { */ case 15: + $r = $send(resultc, $clone($clone(new ctxResult.ptr(err, ptrType$7.nil), ctxResult), ctxResult)); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } */ case 16: + _r$5 = time.NewTimer(c.WaitDelay); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + timer = _r$5; + _r$6 = $select([[resultc, $clone(new ctxResult.ptr(err, timer), ctxResult)], [timer.C]]); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _selection$1 = _r$6; + if (_selection$1[0] === 0) { + $s = -1; return; + } else if (_selection$1[0] === 1) { + } + killed = false; + _r$7 = c.Process.Kill(); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + killErr = _r$7; + /* */ if ($interfaceIsEqual(killErr, $ifaceNil)) { $s = 21; continue; } + _r$8 = errors.Is(killErr, os.ErrProcessDone); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (!_r$8) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if ($interfaceIsEqual(killErr, $ifaceNil)) { */ case 21: + killed = true; + $s = 23; continue; + /* } else if (!_r$8) { */ case 22: + err = (x$2 = new wrappedError.ptr("exec: killing Cmd", killErr), new x$2.constructor.elem(x$2)); + /* } */ case 23: + /* */ if (!(c.goroutineErr === $chanNil)) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (!(c.goroutineErr === $chanNil)) { */ case 25: + _selection$2 = $select([[c.goroutineErr], []]); + /* */ if (_selection$2[0] === 0) { $s = 27; continue; } + /* */ if (_selection$2[0] === 1) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (_selection$2[0] === 0) { */ case 27: + goroutineErr = _selection$2[1][0]; + if ($interfaceIsEqual(err, $ifaceNil) && !killed) { + err = goroutineErr; + } + $s = 29; continue; + /* } else if (_selection$2[0] === 1) { */ case 28: + $r = closeDescriptors(c.parentIOPipes); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$9 = $recv(c.goroutineErr); /* */ $s = 31; case 31: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $unused(_r$9[0]); + if ($interfaceIsEqual(err, $ifaceNil)) { + err = $pkg.ErrWaitDelay; + } + /* } */ case 29: + c.goroutineErr = $chanNil; + /* } */ case 26: + $r = $send(resultc, $clone($clone(new ctxResult.ptr(err, ptrType$7.nil), ctxResult), ctxResult)); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: watchCtx, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _selection, _selection$1, _selection$2, c, err, goroutineErr, interruptErr, killErr, killed, resultc, timer, x, x$1, x$2, $s};return $f; + }; + $ptrType(ExitError).prototype.Error = function Error$3() { + var e; + e = this; + return e.ProcessState.String(); + }; + $ptrType(Cmd).prototype.Wait = function Wait() { + var {_r, _r$1, _r$2, _tuple, c, err, goroutineErr, state, timer, watch, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if (c.Process === ptrType$3.nil) { + $s = -1; return errors.New("exec: not started"); + } + if (!(c.ProcessState === ptrType$4.nil)) { + $s = -1; return errors.New("exec: Wait was already called"); + } + _r = c.Process.Wait(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + state = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil) && !state.Success()) { + err = new ExitError.ptr(state, sliceType$4.nil); + } + c.ProcessState = state; + timer = ptrType$7.nil; + /* */ if (!(c.ctxResult === $chanNil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(c.ctxResult === $chanNil)) { */ case 2: + _r$1 = $recv(c.ctxResult); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + watch = $clone(_r$1[0], ctxResult); + timer = watch.timer; + if ($interfaceIsEqual(err, $ifaceNil) && !($interfaceIsEqual(watch.err, $ifaceNil))) { + err = watch.err; + } + /* } */ case 3: + _r$2 = c.awaitGoroutines(timer); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + goroutineErr = _r$2; + if ($interfaceIsEqual(err, $ifaceNil)) { + err = goroutineErr; + } + $r = closeDescriptors(c.parentIOPipes); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + c.parentIOPipes = sliceType$2.nil; + $s = -1; return err; + /* */ } return; } var $f = {$blk: Wait, $c: true, $r, _r, _r$1, _r$2, _tuple, c, err, goroutineErr, state, timer, watch, $s};return $f; + }; + $ptrType(Cmd).prototype.awaitGoroutines = function awaitGoroutines(timer) { + var {$24r, _r, _r$1, _r$2, _r$3, _selection, _selection$1, c, err, err$1, timer, x, $s, $deferred, $r, $c} = $restore(this, {timer}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + c = [c]; + timer = [timer]; + c[0] = this; + $deferred.push([(function(c, timer) { return function Cmd·awaitGoroutines·func1() { + if (!(timer[0] === ptrType$7.nil)) { + timer[0].Stop(); + } + c[0].goroutineErr = $chanNil; + }; })(c, timer), []]); + if (c[0].goroutineErr === $chanNil) { + $s = -1; return $ifaceNil; + } + /* */ if (timer[0] === ptrType$7.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (timer[0] === ptrType$7.nil) { */ case 1: + /* */ if ((x = c[0].WaitDelay, (x.$high === 0 && x.$low === 0))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((x = c[0].WaitDelay, (x.$high === 0 && x.$low === 0))) { */ case 3: + _r = $recv(c[0].goroutineErr); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r[0]; + $s = 6; case 6: return $24r; + /* } */ case 4: + _selection = $select([[c[0].goroutineErr], []]); + if (_selection[0] === 0) { + err = _selection[1][0]; + $s = -1; return err; + } else if (_selection[0] === 1) { + } + _r$1 = time.NewTimer(c[0].WaitDelay); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + timer[0] = _r$1; + /* } */ case 2: + _r$2 = $select([[timer[0].C], [c[0].goroutineErr]]); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _selection$1 = _r$2; + /* */ if (_selection$1[0] === 0) { $s = 9; continue; } + /* */ if (_selection$1[0] === 1) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_selection$1[0] === 0) { */ case 9: + $r = closeDescriptors(c[0].parentIOPipes); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = $recv(c[0].goroutineErr); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $unused(_r$3[0]); + $s = -1; return $pkg.ErrWaitDelay; + /* } else if (_selection$1[0] === 1) { */ case 10: + err$1 = _selection$1[1][0]; + $s = -1; return err$1; + /* } */ case 11: + $s = -1; return $ifaceNil; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: awaitGoroutines, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _selection, _selection$1, c, err, err$1, timer, x, $s, $deferred};return $f; } } + }; + $ptrType(Cmd).prototype.Output = function Output() { + var {_r, _tuple, c, captureErr, ee, err, ok, stdout, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + stdout = [stdout]; + c = this; + if (!($interfaceIsEqual(c.Stdout, $ifaceNil))) { + $s = -1; return [sliceType$4.nil, errors.New("exec: Stdout already set")]; + } + stdout[0] = new bytes.Buffer.ptr(sliceType$4.nil, 0, 0); + c.Stdout = stdout[0]; + captureErr = $interfaceIsEqual(c.Stderr, $ifaceNil); + if (captureErr) { + c.Stderr = new prefixSuffixSaver.ptr(32768, sliceType$4.nil, sliceType$4.nil, 0, new $Int64(0, 0)); + } + _r = c.Run(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil)) && captureErr) { + _tuple = $assertType(err, ptrType$8, true); + ee = _tuple[0]; + ok = _tuple[1]; + if (ok) { + ee.Stderr = $assertType(c.Stderr, ptrType$9).Bytes(); + } + } + $s = -1; return [stdout[0].Bytes(), err]; + /* */ } return; } var $f = {$blk: Output, $c: true, $r, _r, _tuple, c, captureErr, ee, err, ok, stdout, $s};return $f; + }; + $ptrType(Cmd).prototype.CombinedOutput = function CombinedOutput() { + var {_r, b, c, err, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = [b]; + c = this; + if (!($interfaceIsEqual(c.Stdout, $ifaceNil))) { + $s = -1; return [sliceType$4.nil, errors.New("exec: Stdout already set")]; + } + if (!($interfaceIsEqual(c.Stderr, $ifaceNil))) { + $s = -1; return [sliceType$4.nil, errors.New("exec: Stderr already set")]; + } + b[0] = new bytes.Buffer.ptr(sliceType$4.nil, 0, 0); + c.Stdout = b[0]; + c.Stderr = b[0]; + _r = c.Run(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + $s = -1; return [b[0].Bytes(), err]; + /* */ } return; } var $f = {$blk: CombinedOutput, $c: true, $r, _r, b, c, err, $s};return $f; + }; + $ptrType(Cmd).prototype.StdinPipe = function StdinPipe() { + var {_r, _tuple, c, err, pr, pw, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if (!($interfaceIsEqual(c.Stdin, $ifaceNil))) { + $s = -1; return [$ifaceNil, errors.New("exec: Stdin already set")]; + } + if (!(c.Process === ptrType$3.nil)) { + $s = -1; return [$ifaceNil, errors.New("exec: StdinPipe after process started")]; + } + _r = os.Pipe(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + pr = _tuple[0]; + pw = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, err]; + } + c.Stdin = pr; + c.childIOFiles = $append(c.childIOFiles, pr); + c.parentIOPipes = $append(c.parentIOPipes, pw); + $s = -1; return [pw, $ifaceNil]; + /* */ } return; } var $f = {$blk: StdinPipe, $c: true, $r, _r, _tuple, c, err, pr, pw, $s};return $f; + }; + $ptrType(Cmd).prototype.StdoutPipe = function StdoutPipe() { + var {_r, _tuple, c, err, pr, pw, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if (!($interfaceIsEqual(c.Stdout, $ifaceNil))) { + $s = -1; return [$ifaceNil, errors.New("exec: Stdout already set")]; + } + if (!(c.Process === ptrType$3.nil)) { + $s = -1; return [$ifaceNil, errors.New("exec: StdoutPipe after process started")]; + } + _r = os.Pipe(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + pr = _tuple[0]; + pw = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, err]; + } + c.Stdout = pw; + c.childIOFiles = $append(c.childIOFiles, pw); + c.parentIOPipes = $append(c.parentIOPipes, pr); + $s = -1; return [pr, $ifaceNil]; + /* */ } return; } var $f = {$blk: StdoutPipe, $c: true, $r, _r, _tuple, c, err, pr, pw, $s};return $f; + }; + $ptrType(Cmd).prototype.StderrPipe = function StderrPipe() { + var {_r, _tuple, c, err, pr, pw, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if (!($interfaceIsEqual(c.Stderr, $ifaceNil))) { + $s = -1; return [$ifaceNil, errors.New("exec: Stderr already set")]; + } + if (!(c.Process === ptrType$3.nil)) { + $s = -1; return [$ifaceNil, errors.New("exec: StderrPipe after process started")]; + } + _r = os.Pipe(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + pr = _tuple[0]; + pw = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, err]; + } + c.Stderr = pw; + c.childIOFiles = $append(c.childIOFiles, pw); + c.parentIOPipes = $append(c.parentIOPipes, pr); + $s = -1; return [pr, $ifaceNil]; + /* */ } return; } var $f = {$blk: StderrPipe, $c: true, $r, _r, _tuple, c, err, pr, pw, $s};return $f; + }; + $ptrType(prefixSuffixSaver).prototype.Write = function Write(p) { + var _tmp, _tmp$1, err, lenp, n, n$1, overage, p, w, x, x$1, x$2, x$3; + n = 0; + err = $ifaceNil; + w = this; + lenp = p.$length; + p = w.fill((w.$ptr_prefix || (w.$ptr_prefix = new ptrType$10(function() { return this.$target.prefix; }, function($v) { this.$target.prefix = $v; }, w))), p); + overage = p.$length - w.N >> 0; + if (overage > 0) { + p = $subslice(p, overage); + w.skipped = (x = w.skipped, x$1 = (new $Int64(0, overage)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)); + } + p = w.fill((w.$ptr_suffix || (w.$ptr_suffix = new ptrType$10(function() { return this.$target.suffix; }, function($v) { this.$target.suffix = $v; }, w))), p); + while (true) { + if (!(p.$length > 0)) { break; } + n$1 = $copySlice($subslice(w.suffix, w.suffixOff), p); + p = $subslice(p, n$1); + w.skipped = (x$2 = w.skipped, x$3 = (new $Int64(0, n$1)), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)); + w.suffixOff = w.suffixOff + (n$1) >> 0; + if (w.suffixOff === w.N) { + w.suffixOff = 0; + } + } + _tmp = lenp; + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + return [n, err]; + }; + $ptrType(prefixSuffixSaver).prototype.fill = function fill(dst, p) { + var add, dst, p, pRemain, remain, w; + pRemain = sliceType$4.nil; + w = this; + remain = w.N - dst.$get().$length >> 0; + if (remain > 0) { + add = minInt(p.$length, remain); + dst.$set($appendSlice(dst.$get(), $subslice(p, 0, add))); + p = $subslice(p, add); + } + pRemain = p; + return pRemain; + }; + $ptrType(prefixSuffixSaver).prototype.Bytes = function Bytes() { + var buf, w, x; + w = this; + if (w.suffix === sliceType$4.nil) { + return w.prefix; + } + if ((x = w.skipped, (x.$high === 0 && x.$low === 0))) { + return $appendSlice(w.prefix, w.suffix); + } + buf = new bytes.Buffer.ptr(sliceType$4.nil, 0, 0); + buf.Grow((w.prefix.$length + w.suffix.$length >> 0) + 50 >> 0); + buf.Write(w.prefix); + buf.WriteString("\n... omitting "); + buf.WriteString(strconv.FormatInt(w.skipped, 10)); + buf.WriteString(" bytes ...\n"); + buf.Write($subslice(w.suffix, w.suffixOff)); + buf.Write($subslice(w.suffix, 0, w.suffixOff)); + return buf.Bytes(); + }; + minInt = function minInt$1(a, b) { + var a, b; + if (a < b) { + return a; + } + return b; + }; + $ptrType(Cmd).prototype.environ = function environ() { + var {$24r, _1, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, absErr, c, dedupErr, env, err, pwd, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + err = $ifaceNil; + env = c.Env; + /* */ if (env === sliceType.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (env === sliceType.nil) { */ case 1: + _r = execenv.Default(c.SysProcAttr); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + env = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4: + _r$1 = os.Environ(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + env = _r$1; + /* } */ case 5: + /* */ if (!(c.Dir === "")) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(c.Dir === "")) { */ case 7: + _1 = "js"; + /* */ if (_1 === ("windows") || _1 === ("plan9")) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_1 === ("windows") || _1 === ("plan9")) { */ case 10: + $s = 12; continue; + /* } else { */ case 11: + _r$2 = filepath.Abs(c.Dir); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + pwd = _tuple$1[0]; + absErr = _tuple$1[1]; + if ($interfaceIsEqual(absErr, $ifaceNil)) { + env = $append(env, "PWD=" + pwd); + } else if ($interfaceIsEqual(err, $ifaceNil)) { + err = absErr; + } + /* } */ case 12: + case 9: + /* } */ case 8: + /* } */ case 2: + _r$3 = dedupEnv(env); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$2 = _r$3; + env = _tuple$2[0]; + dedupErr = _tuple$2[1]; + if ($interfaceIsEqual(err, $ifaceNil)) { + err = dedupErr; + } + _r$4 = addCriticalEnv(env); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = [_r$4, err]; + $s = 16; case 16: return $24r; + /* */ } return; } var $f = {$blk: environ, $c: true, $r, $24r, _1, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, absErr, c, dedupErr, env, err, pwd, $s};return $f; + }; + $ptrType(Cmd).prototype.Environ = function Environ() { + var {_r, _tuple, c, env, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = c.environ(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + env = _tuple[0]; + $s = -1; return env; + /* */ } return; } var $f = {$blk: Environ, $c: true, $r, _r, _tuple, c, env, $s};return $f; + }; + dedupEnv = function dedupEnv$1(env) { + var {$24r, _r, env, $s, $r, $c} = $restore(this, {env}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = dedupEnvCase(false, false, env); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: dedupEnv$1, $c: true, $r, $24r, _r, env, $s};return $f; + }; + dedupEnvCase = function dedupEnvCase$1(caseInsensitive, nulOK, env) { + var {_entry, _key, _q, _r, _tmp, _tmp$1, caseInsensitive, env, err, i, i$1, j, k, kv, n, nulOK, out, saw, x, x$1, $s, $r, $c} = $restore(this, {caseInsensitive, nulOK, env}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = $ifaceNil; + out = $makeSlice(sliceType, 0, env.$length); + saw = (x = env.$length, ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : new $global.Map())); + n = env.$length; + /* while (true) { */ case 1: + /* if (!(n > 0)) { break; } */ if(!(n > 0)) { $s = 2; continue; } + kv = (x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= env.$length) ? ($throwRuntimeError("index out of range"), undefined) : env.$array[env.$offset + x$1])); + if (!nulOK && !((strings.IndexByte(kv, 0) === -1))) { + err = errors.New("exec: environment variable contains NUL"); + n = n - (1) >> 0; + /* continue; */ $s = 1; continue; + } + i = strings.Index(kv, "="); + if (i === 0) { + i = strings.Index($substring(kv, 1), "=") + 1 >> 0; + } + if (i < 0) { + if (!(kv === "")) { + out = $append(out, kv); + } + n = n - (1) >> 0; + /* continue; */ $s = 1; continue; + } + k = $substring(kv, 0, i); + /* */ if (caseInsensitive) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (caseInsensitive) { */ case 3: + _r = strings.ToLower(k); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + k = _r; + /* } */ case 4: + if ((_entry = $mapIndex(saw,$String.keyFor(k)), _entry !== undefined ? _entry.v : false)) { + n = n - (1) >> 0; + /* continue; */ $s = 1; continue; + } + _key = k; (saw || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: true }); + out = $append(out, kv); + n = n - (1) >> 0; + $s = 1; continue; + case 2: + i$1 = 0; + while (true) { + if (!(i$1 < (_q = out.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")))) { break; } + j = (out.$length - i$1 >> 0) - 1 >> 0; + _tmp = ((j < 0 || j >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + j]); + _tmp$1 = ((i$1 < 0 || i$1 >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i$1]); + ((i$1 < 0 || i$1 >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i$1] = _tmp); + ((j < 0 || j >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + j] = _tmp$1); + i$1 = i$1 + (1) >> 0; + } + $s = -1; return [out, err]; + /* */ } return; } var $f = {$blk: dedupEnvCase$1, $c: true, $r, _entry, _key, _q, _r, _tmp, _tmp$1, caseInsensitive, env, err, i, i$1, j, k, kv, n, nulOK, out, saw, x, x$1, $s};return $f; + }; + addCriticalEnv = function addCriticalEnv$1(env) { + var {$24r, _i, _r, _ref, _tuple, env, k, kv, ok, $s, $r, $c} = $restore(this, {env}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (true) { + $s = -1; return env; + } + _ref = env; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + kv = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _tuple = strings.Cut(kv, "="); + k = _tuple[0]; + ok = _tuple[2]; + if (!ok) { + _i++; + continue; + } + if (strings.EqualFold(k, "SYSTEMROOT")) { + $s = -1; return env; + } + _i++; + } + _r = os.Getenv("SYSTEMROOT"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = $append(env, "SYSTEMROOT=" + _r); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: addCriticalEnv$1, $c: true, $r, $24r, _i, _r, _ref, _tuple, env, k, kv, ok, $s};return $f; + }; + ptrType$11.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [$error], false)}]; + wrappedError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [$error], false)}]; + ptrType$5.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "argv", name: "argv", pkg: "os/exec", typ: $funcType([], [sliceType], false)}, {prop: "childStdin", name: "childStdin", pkg: "os/exec", typ: $funcType([], [ptrType$1, $error], false)}, {prop: "childStdout", name: "childStdout", pkg: "os/exec", typ: $funcType([], [ptrType$1, $error], false)}, {prop: "childStderr", name: "childStderr", pkg: "os/exec", typ: $funcType([ptrType$1], [ptrType$1, $error], false)}, {prop: "writerDescriptor", name: "writerDescriptor", pkg: "os/exec", typ: $funcType([io.Writer], [ptrType$1, $error], false)}, {prop: "Run", name: "Run", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Start", name: "Start", pkg: "", typ: $funcType([], [$error], false)}, {prop: "watchCtx", name: "watchCtx", pkg: "os/exec", typ: $funcType([chanType], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [$error], false)}, {prop: "awaitGoroutines", name: "awaitGoroutines", pkg: "os/exec", typ: $funcType([ptrType$7], [$error], false)}, {prop: "Output", name: "Output", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}, {prop: "CombinedOutput", name: "CombinedOutput", pkg: "", typ: $funcType([], [sliceType$4, $error], false)}, {prop: "StdinPipe", name: "StdinPipe", pkg: "", typ: $funcType([], [io.WriteCloser, $error], false)}, {prop: "StdoutPipe", name: "StdoutPipe", pkg: "", typ: $funcType([], [io.ReadCloser, $error], false)}, {prop: "StderrPipe", name: "StderrPipe", pkg: "", typ: $funcType([], [io.ReadCloser, $error], false)}, {prop: "environ", name: "environ", pkg: "os/exec", typ: $funcType([], [sliceType, $error], false)}, {prop: "Environ", name: "Environ", pkg: "", typ: $funcType([], [sliceType], false)}]; + ptrType$8.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$9.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "fill", name: "fill", pkg: "os/exec", typ: $funcType([ptrType$10, sliceType$4], [sliceType$4], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType$4], false)}]; + Error.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + wrappedError.init("os/exec", [{prop: "prefix", name: "prefix", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}]); + Cmd.init("os/exec", [{prop: "Path", name: "Path", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Args", name: "Args", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Env", name: "Env", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Dir", name: "Dir", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Stdin", name: "Stdin", embedded: false, exported: true, typ: io.Reader, tag: ""}, {prop: "Stdout", name: "Stdout", embedded: false, exported: true, typ: io.Writer, tag: ""}, {prop: "Stderr", name: "Stderr", embedded: false, exported: true, typ: io.Writer, tag: ""}, {prop: "ExtraFiles", name: "ExtraFiles", embedded: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "SysProcAttr", name: "SysProcAttr", embedded: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "Process", name: "Process", embedded: false, exported: true, typ: ptrType$3, tag: ""}, {prop: "ProcessState", name: "ProcessState", embedded: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "ctx", name: "ctx", embedded: false, exported: false, typ: context.Context, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}, {prop: "Cancel", name: "Cancel", embedded: false, exported: true, typ: funcType, tag: ""}, {prop: "WaitDelay", name: "WaitDelay", embedded: false, exported: true, typ: time.Duration, tag: ""}, {prop: "childIOFiles", name: "childIOFiles", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "parentIOPipes", name: "parentIOPipes", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "goroutine", name: "goroutine", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "goroutineErr", name: "goroutineErr", embedded: false, exported: false, typ: chanType$1, tag: ""}, {prop: "ctxResult", name: "ctxResult", embedded: false, exported: false, typ: chanType$2, tag: ""}, {prop: "createdByStack", name: "createdByStack", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "lookPathErr", name: "lookPathErr", embedded: false, exported: false, typ: $error, tag: ""}]); + ctxResult.init("os/exec", [{prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "timer", name: "timer", embedded: false, exported: false, typ: ptrType$7, tag: ""}]); + ExitError.init("", [{prop: "ProcessState", name: "ProcessState", embedded: true, exported: true, typ: ptrType$4, tag: ""}, {prop: "Stderr", name: "Stderr", embedded: false, exported: true, typ: sliceType$4, tag: ""}]); + prefixSuffixSaver.init("os/exec", [{prop: "N", name: "N", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "prefix", name: "prefix", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "suffix", name: "suffix", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "suffixOff", name: "suffixOff", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "skipped", name: "skipped", embedded: false, exported: false, typ: $Int64, tag: ""}]); + goroutineStatus.init("os/exec", [{prop: "running", name: "running", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "firstErr", name: "firstErr", embedded: false, exported: false, typ: $error, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = context.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = godebug.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = execenv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fs.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = filepath.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syscall.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.ErrNotFound = errors.New("executable file not found in $PATH"); + $pkg.ErrWaitDelay = errors.New("exec: WaitDelay expired before I/O complete"); + execwait = godebug.New("execwait"); + execerrdot = godebug.New("execerrdot"); + $pkg.ErrDot = errors.New("cannot run executable found relative to current directory"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/goroot"] = (function() { + var $pkg = {}, $init, bytes, fmt, os, exec, filepath, strings, sync, gccgoDirs, sliceType, ptrType, gccgoSearch, IsStandardPackage; + bytes = $packages["bytes"]; + fmt = $packages["fmt"]; + os = $packages["os"]; + exec = $packages["os/exec"]; + filepath = $packages["path/filepath"]; + strings = $packages["strings"]; + sync = $packages["sync"]; + gccgoDirs = $newType(0, $kindStruct, "goroot.gccgoDirs", true, "internal/goroot", false, function(once_, dirs_) { + this.$val = this; + if (arguments.length === 0) { + this.once = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)); + this.dirs = sliceType.nil; + return; + } + this.once = once_; + this.dirs = dirs_; + }); + $pkg.gccgoDirs = gccgoDirs; + $pkg.$finishSetup = function() { + sliceType = $sliceType($String); + ptrType = $ptrType(gccgoDirs); + IsStandardPackage = function IsStandardPackage$1(goroot, compiler, path) { + var {$24r, _1, _r, _r$1, _tuple, compiler, dir, err, goroot, path, $s, $r, $c} = $restore(this, {goroot, compiler, path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _1 = compiler; + /* */ if (_1 === ("gc")) { $s = 2; continue; } + /* */ if (_1 === ("gccgo")) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_1 === ("gc")) { */ case 2: + dir = filepath.Join(new sliceType([goroot, "src", path])); + _r = os.Stat(dir); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + err = _tuple[1]; + $s = -1; return $interfaceIsEqual(err, $ifaceNil); + /* } else if (_1 === ("gccgo")) { */ case 3: + _r$1 = gccgoSearch.isStandard(path); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 8; case 8: return $24r; + /* } else { */ case 4: + $panic(new $String("unknown compiler " + compiler)); + /* } */ case 5: + case 1: + $s = -1; return false; + /* */ } return; } var $f = {$blk: IsStandardPackage$1, $c: true, $r, $24r, _1, _r, _r$1, _tuple, compiler, dir, err, goroot, path, $s};return $f; + }; + $pkg.IsStandardPackage = IsStandardPackage; + $ptrType(gccgoDirs).prototype.init = function init() { + var {_i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _v, _v$1, _v$2, allDirs, bin, dir, dirEntry, dirs, dirsEntries, err, err$1, err$2, fi, fi$1, gccgo, gd, goDir, lastDirs, machine, machineB, version, versionB, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gd = this; + _r = os.Getenv("GCCGO"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + gccgo = _r; + if (gccgo === "") { + gccgo = "gccgo"; + } + _tuple = exec.LookPath(gccgo); + bin = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return; + } + _r$1 = exec.Command(bin, new sliceType(["-print-search-dirs"])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Output(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + allDirs = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return; + } + _r$3 = exec.Command(bin, new sliceType(["-dumpversion"])); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = _r$3.Output(); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$2 = _r$4; + versionB = _tuple$2[0]; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return; + } + _r$5 = strings.TrimSpace(($bytesToString(versionB))); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + version = _r$5; + _r$6 = exec.Command(bin, new sliceType(["-dumpmachine"])); /* */ $s = 7; case 7: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = _r$6.Output(); /* */ $s = 8; case 8: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$3 = _r$7; + machineB = _tuple$3[0]; + err = _tuple$3[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return; + } + _r$8 = strings.TrimSpace(($bytesToString(machineB))); /* */ $s = 9; case 9: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + machine = _r$8; + dirsEntries = strings.Split(($bytesToString(allDirs)), "\n"); + dirs = sliceType.nil; + _ref = dirsEntries; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + dirEntry = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (strings.HasPrefix(dirEntry, "libraries: =")) { + dirs = filepath.SplitList(strings.TrimPrefix(dirEntry, "libraries: =")); + break; + } + _i++; + } + if (dirs.$length === 0) { + $s = -1; return; + } + lastDirs = sliceType.nil; + _ref$1 = dirs; + _i$1 = 0; + /* while (true) { */ case 10: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 11; continue; } + dir = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + goDir = filepath.Join(new sliceType([dir, "go", version])); + _r$9 = os.Stat(goDir); /* */ $s = 12; case 12: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple$4 = _r$9; + fi = _tuple$4[0]; + err$1 = _tuple$4[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { _v = false; $s = 15; continue s; } + _r$10 = fi.IsDir(); /* */ $s = 16; case 16: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _v = _r$10; case 15: + /* */ if (_v) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_v) { */ case 13: + gd.dirs = $append(gd.dirs, goDir); + goDir = filepath.Join(new sliceType([goDir, machine])); + _r$11 = os.Stat(goDir); /* */ $s = 17; case 17: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$5 = _r$11; + fi = _tuple$5[0]; + err$1 = _tuple$5[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { _v$1 = false; $s = 20; continue s; } + _r$12 = fi.IsDir(); /* */ $s = 21; case 21: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _v$1 = _r$12; case 20: + /* */ if (_v$1) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (_v$1) { */ case 18: + gd.dirs = $append(gd.dirs, goDir); + /* } */ case 19: + /* } */ case 14: + _r$13 = os.Stat(dir); /* */ $s = 22; case 22: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _tuple$6 = _r$13; + fi$1 = _tuple$6[0]; + err$2 = _tuple$6[1]; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { _v$2 = false; $s = 25; continue s; } + _r$14 = fi$1.IsDir(); /* */ $s = 26; case 26: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _v$2 = _r$14; case 25: + /* */ if (_v$2) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (_v$2) { */ case 23: + lastDirs = $append(lastDirs, dir); + /* } */ case 24: + _i$1++; + $s = 10; continue; + case 11: + gd.dirs = $appendSlice(gd.dirs, lastDirs); + $s = -1; return; + /* */ } return; } var $f = {$blk: init, $c: true, $r, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _v, _v$1, _v$2, allDirs, bin, dir, dirEntry, dirs, dirsEntries, err, err$1, err$2, fi, fi$1, gccgo, gd, goDir, lastDirs, machine, machineB, version, versionB, $s};return $f; + }; + $ptrType(gccgoDirs).prototype.isStandard = function isStandard(path) { + var {_i, _r, _r$1, _ref, _tuple, _v, dir, err, fi, full, gd, i, path, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gd = this; + i = strings.Index(path, "/"); + if (i < 0) { + i = path.length; + } + if (strings.Contains($substring(path, 0, i), ".")) { + $s = -1; return false; + } + if (path === "unsafe") { + $s = -1; return true; + } + $r = gd.once.Do($methodVal(gd, "init")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (gd.dirs === sliceType.nil) { + $s = -1; return true; + } + _ref = gd.dirs; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + dir = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + full = filepath.Join(new sliceType([dir, path])) + ".gox"; + _r = os.Stat(full); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + fi = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { _v = false; $s = 7; continue s; } + _r$1 = fi.IsDir(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = !_r$1; case 7: + /* */ if (_v) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_v) { */ case 5: + $s = -1; return true; + /* } */ case 6: + _i++; + $s = 2; continue; + case 3: + $s = -1; return false; + /* */ } return; } var $f = {$blk: isStandard, $c: true, $r, _i, _r, _r$1, _ref, _tuple, _v, dir, err, fi, full, gd, i, path, $s};return $f; + }; + ptrType.methods = [{prop: "init", name: "init", pkg: "internal/goroot", typ: $funcType([], [], false)}, {prop: "isStandard", name: "isStandard", pkg: "internal/goroot", typ: $funcType([$String], [$Bool], false)}]; + gccgoDirs.init("internal/goroot", [{prop: "once", name: "once", embedded: false, exported: false, typ: sync.Once, tag: ""}, {prop: "dirs", name: "dirs", embedded: false, exported: false, typ: sliceType, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = exec.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = filepath.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + gccgoSearch = new gccgoDirs.ptr(new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)), sliceType.nil); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["internal/goversion"] = (function() { + var $pkg = {}, $init; + $pkg.$finishSetup = function() { + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["go/build"] = (function() { + var $pkg = {}, $init, bufio, bytes, errors, fmt, ast, constraint, doc, parser, scanner, token, buildcfg, godebug, goroot, goversion, io, fs, os, exec, path, filepath, runtime, sort, strconv, strings, unicode, utf8, importReader, Context, ImportMode, Package, NoGoError, MultiplePackageError, fileInfo, fileImport, fileEmbed, sliceType, sliceType$1, ptrType, ptrType$1, ptrType$2, ptrType$3, sliceType$2, sliceType$3, ptrType$4, sliceType$4, sliceType$5, structType, ptrType$5, ptrType$6, ptrType$7, ptrType$8, sliceType$6, ptrType$9, sliceType$7, ptrType$10, ptrType$11, mapType, ptrType$12, funcType, funcType$1, funcType$2, funcType$3, sliceType$8, funcType$4, funcType$5, mapType$1, ptrType$13, ptrType$14, defaultToolTags, defaultReleaseTags, dummyPkg, dummyPkg$24ptr, cgoEnabled, knownOS, unixOS, knownArch, bom, errSyntax, errNUL, goEmbed, _r, installgoroot, errNoModules, slashSlash, slashStar, starSlash, newline, plusBuild, goBuildComment, errMultipleGoBuild, binaryOnlyComment, newImportReader, isIdent, readComments, readGoInfo, isValidImport, parseGoEmbed, getToolDir, hasSubdir, defaultGOPATH, defaultContext, envOr, nameExt, fileListForExt, equal, hasGoFiles, findImportComment, skipSpaceOrComment, parseWord, cleanDecls, isGoBuildComment, parseFileHeader, expandSrcDir, safeCgoName, splitQuoted, IsLocalImport; + bufio = $packages["bufio"]; + bytes = $packages["bytes"]; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + ast = $packages["go/ast"]; + constraint = $packages["go/build/constraint"]; + doc = $packages["go/doc"]; + parser = $packages["go/parser"]; + scanner = $packages["go/scanner"]; + token = $packages["go/token"]; + buildcfg = $packages["internal/buildcfg"]; + godebug = $packages["internal/godebug"]; + goroot = $packages["internal/goroot"]; + goversion = $packages["internal/goversion"]; + io = $packages["io"]; + fs = $packages["io/fs"]; + os = $packages["os"]; + exec = $packages["os/exec"]; + path = $packages["path"]; + filepath = $packages["path/filepath"]; + runtime = $packages["runtime"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + unicode = $packages["unicode"]; + utf8 = $packages["unicode/utf8"]; + importReader = $newType(0, $kindStruct, "build.importReader", true, "go/build", false, function(b_, buf_, peek_, err_, eof_, nerr_, pos_) { + this.$val = this; + if (arguments.length === 0) { + this.b = ptrType.nil; + this.buf = sliceType$1.nil; + this.peek = 0; + this.err = $ifaceNil; + this.eof = false; + this.nerr = 0; + this.pos = new token.Position.ptr("", 0, 0, 0); + return; + } + this.b = b_; + this.buf = buf_; + this.peek = peek_; + this.err = err_; + this.eof = eof_; + this.nerr = nerr_; + this.pos = pos_; + }); + Context = $newType(0, $kindStruct, "build.Context", true, "go/build", true, function(GOARCH_, GOOS_, GOROOT_, GOPATH_, Dir_, CgoEnabled_, UseAllFiles_, Compiler_, BuildTags_, ToolTags_, ReleaseTags_, InstallSuffix_, JoinPath_, SplitPathList_, IsAbsPath_, IsDir_, HasSubdir_, ReadDir_, OpenFile_) { + this.$val = this; + if (arguments.length === 0) { + this.GOARCH = ""; + this.GOOS = ""; + this.GOROOT = ""; + this.GOPATH = ""; + this.Dir = ""; + this.CgoEnabled = false; + this.UseAllFiles = false; + this.Compiler = ""; + this.BuildTags = sliceType.nil; + this.ToolTags = sliceType.nil; + this.ReleaseTags = sliceType.nil; + this.InstallSuffix = ""; + this.JoinPath = $throwNilPointerError; + this.SplitPathList = $throwNilPointerError; + this.IsAbsPath = $throwNilPointerError; + this.IsDir = $throwNilPointerError; + this.HasSubdir = $throwNilPointerError; + this.ReadDir = $throwNilPointerError; + this.OpenFile = $throwNilPointerError; + return; + } + this.GOARCH = GOARCH_; + this.GOOS = GOOS_; + this.GOROOT = GOROOT_; + this.GOPATH = GOPATH_; + this.Dir = Dir_; + this.CgoEnabled = CgoEnabled_; + this.UseAllFiles = UseAllFiles_; + this.Compiler = Compiler_; + this.BuildTags = BuildTags_; + this.ToolTags = ToolTags_; + this.ReleaseTags = ReleaseTags_; + this.InstallSuffix = InstallSuffix_; + this.JoinPath = JoinPath_; + this.SplitPathList = SplitPathList_; + this.IsAbsPath = IsAbsPath_; + this.IsDir = IsDir_; + this.HasSubdir = HasSubdir_; + this.ReadDir = ReadDir_; + this.OpenFile = OpenFile_; + }); + ImportMode = $newType(4, $kindUint, "build.ImportMode", true, "go/build", true, null); + Package = $newType(0, $kindStruct, "build.Package", true, "go/build", true, function(Dir_, Name_, ImportComment_, Doc_, ImportPath_, Root_, SrcRoot_, PkgRoot_, PkgTargetRoot_, BinDir_, Goroot_, PkgObj_, AllTags_, ConflictDir_, BinaryOnly_, GoFiles_, CgoFiles_, IgnoredGoFiles_, InvalidGoFiles_, IgnoredOtherFiles_, CFiles_, CXXFiles_, MFiles_, HFiles_, FFiles_, SFiles_, SwigFiles_, SwigCXXFiles_, SysoFiles_, CgoCFLAGS_, CgoCPPFLAGS_, CgoCXXFLAGS_, CgoFFLAGS_, CgoLDFLAGS_, CgoPkgConfig_, TestGoFiles_, XTestGoFiles_, Imports_, ImportPos_, TestImports_, TestImportPos_, XTestImports_, XTestImportPos_, EmbedPatterns_, EmbedPatternPos_, TestEmbedPatterns_, TestEmbedPatternPos_, XTestEmbedPatterns_, XTestEmbedPatternPos_) { + this.$val = this; + if (arguments.length === 0) { + this.Dir = ""; + this.Name = ""; + this.ImportComment = ""; + this.Doc = ""; + this.ImportPath = ""; + this.Root = ""; + this.SrcRoot = ""; + this.PkgRoot = ""; + this.PkgTargetRoot = ""; + this.BinDir = ""; + this.Goroot = false; + this.PkgObj = ""; + this.AllTags = sliceType.nil; + this.ConflictDir = ""; + this.BinaryOnly = false; + this.GoFiles = sliceType.nil; + this.CgoFiles = sliceType.nil; + this.IgnoredGoFiles = sliceType.nil; + this.InvalidGoFiles = sliceType.nil; + this.IgnoredOtherFiles = sliceType.nil; + this.CFiles = sliceType.nil; + this.CXXFiles = sliceType.nil; + this.MFiles = sliceType.nil; + this.HFiles = sliceType.nil; + this.FFiles = sliceType.nil; + this.SFiles = sliceType.nil; + this.SwigFiles = sliceType.nil; + this.SwigCXXFiles = sliceType.nil; + this.SysoFiles = sliceType.nil; + this.CgoCFLAGS = sliceType.nil; + this.CgoCPPFLAGS = sliceType.nil; + this.CgoCXXFLAGS = sliceType.nil; + this.CgoFFLAGS = sliceType.nil; + this.CgoLDFLAGS = sliceType.nil; + this.CgoPkgConfig = sliceType.nil; + this.TestGoFiles = sliceType.nil; + this.XTestGoFiles = sliceType.nil; + this.Imports = sliceType.nil; + this.ImportPos = false; + this.TestImports = sliceType.nil; + this.TestImportPos = false; + this.XTestImports = sliceType.nil; + this.XTestImportPos = false; + this.EmbedPatterns = sliceType.nil; + this.EmbedPatternPos = false; + this.TestEmbedPatterns = sliceType.nil; + this.TestEmbedPatternPos = false; + this.XTestEmbedPatterns = sliceType.nil; + this.XTestEmbedPatternPos = false; + return; + } + this.Dir = Dir_; + this.Name = Name_; + this.ImportComment = ImportComment_; + this.Doc = Doc_; + this.ImportPath = ImportPath_; + this.Root = Root_; + this.SrcRoot = SrcRoot_; + this.PkgRoot = PkgRoot_; + this.PkgTargetRoot = PkgTargetRoot_; + this.BinDir = BinDir_; + this.Goroot = Goroot_; + this.PkgObj = PkgObj_; + this.AllTags = AllTags_; + this.ConflictDir = ConflictDir_; + this.BinaryOnly = BinaryOnly_; + this.GoFiles = GoFiles_; + this.CgoFiles = CgoFiles_; + this.IgnoredGoFiles = IgnoredGoFiles_; + this.InvalidGoFiles = InvalidGoFiles_; + this.IgnoredOtherFiles = IgnoredOtherFiles_; + this.CFiles = CFiles_; + this.CXXFiles = CXXFiles_; + this.MFiles = MFiles_; + this.HFiles = HFiles_; + this.FFiles = FFiles_; + this.SFiles = SFiles_; + this.SwigFiles = SwigFiles_; + this.SwigCXXFiles = SwigCXXFiles_; + this.SysoFiles = SysoFiles_; + this.CgoCFLAGS = CgoCFLAGS_; + this.CgoCPPFLAGS = CgoCPPFLAGS_; + this.CgoCXXFLAGS = CgoCXXFLAGS_; + this.CgoFFLAGS = CgoFFLAGS_; + this.CgoLDFLAGS = CgoLDFLAGS_; + this.CgoPkgConfig = CgoPkgConfig_; + this.TestGoFiles = TestGoFiles_; + this.XTestGoFiles = XTestGoFiles_; + this.Imports = Imports_; + this.ImportPos = ImportPos_; + this.TestImports = TestImports_; + this.TestImportPos = TestImportPos_; + this.XTestImports = XTestImports_; + this.XTestImportPos = XTestImportPos_; + this.EmbedPatterns = EmbedPatterns_; + this.EmbedPatternPos = EmbedPatternPos_; + this.TestEmbedPatterns = TestEmbedPatterns_; + this.TestEmbedPatternPos = TestEmbedPatternPos_; + this.XTestEmbedPatterns = XTestEmbedPatterns_; + this.XTestEmbedPatternPos = XTestEmbedPatternPos_; + }); + NoGoError = $newType(0, $kindStruct, "build.NoGoError", true, "go/build", true, function(Dir_) { + this.$val = this; + if (arguments.length === 0) { + this.Dir = ""; + return; + } + this.Dir = Dir_; + }); + MultiplePackageError = $newType(0, $kindStruct, "build.MultiplePackageError", true, "go/build", true, function(Dir_, Packages_, Files_) { + this.$val = this; + if (arguments.length === 0) { + this.Dir = ""; + this.Packages = sliceType.nil; + this.Files = sliceType.nil; + return; + } + this.Dir = Dir_; + this.Packages = Packages_; + this.Files = Files_; + }); + fileInfo = $newType(0, $kindStruct, "build.fileInfo", true, "go/build", false, function(name_, header_, fset_, parsed_, parseErr_, imports_, embeds_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.header = sliceType$1.nil; + this.fset = ptrType$1.nil; + this.parsed = ptrType$8.nil; + this.parseErr = $ifaceNil; + this.imports = sliceType$3.nil; + this.embeds = sliceType$4.nil; + return; + } + this.name = name_; + this.header = header_; + this.fset = fset_; + this.parsed = parsed_; + this.parseErr = parseErr_; + this.imports = imports_; + this.embeds = embeds_; + }); + fileImport = $newType(0, $kindStruct, "build.fileImport", true, "go/build", false, function(path_, pos_, doc_) { + this.$val = this; + if (arguments.length === 0) { + this.path = ""; + this.pos = 0; + this.doc = ptrType$4.nil; + return; + } + this.path = path_; + this.pos = pos_; + this.doc = doc_; + }); + fileEmbed = $newType(0, $kindStruct, "build.fileEmbed", true, "go/build", false, function(pattern_, pos_) { + this.$val = this; + if (arguments.length === 0) { + this.pattern = ""; + this.pos = new token.Position.ptr("", 0, 0, 0); + return; + } + this.pattern = pattern_; + this.pos = pos_; + }); + $pkg.importReader = importReader; + $pkg.Context = Context; + $pkg.ImportMode = ImportMode; + $pkg.Package = Package; + $pkg.NoGoError = NoGoError; + $pkg.MultiplePackageError = MultiplePackageError; + $pkg.fileInfo = fileInfo; + $pkg.fileImport = fileImport; + $pkg.fileEmbed = fileEmbed; + $pkg.$finishSetup = function() { + sliceType = $sliceType($String); + sliceType$1 = $sliceType($Uint8); + ptrType = $ptrType(bufio.Reader); + ptrType$1 = $ptrType(token.FileSet); + ptrType$2 = $ptrType(ast.GenDecl); + ptrType$3 = $ptrType(ast.ImportSpec); + sliceType$2 = $sliceType($emptyInterface); + sliceType$3 = $sliceType(fileImport); + ptrType$4 = $ptrType(ast.CommentGroup); + sliceType$4 = $sliceType(fileEmbed); + sliceType$5 = $sliceType(fs.DirEntry); + structType = $structType("go/build", [{prop: "vendor", name: "vendor", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "goroot", name: "goroot", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "gopath", name: "gopath", embedded: false, exported: false, typ: sliceType, tag: ""}]); + ptrType$5 = $ptrType($Bool); + ptrType$6 = $ptrType(fileInfo); + ptrType$7 = $ptrType(sliceType); + ptrType$8 = $ptrType(ast.File); + sliceType$6 = $sliceType(token.Position); + ptrType$9 = $ptrType(strings.Builder); + sliceType$7 = $sliceType($Int32); + ptrType$10 = $ptrType(importReader); + ptrType$11 = $ptrType(Package); + mapType = $mapType($String, $Bool); + ptrType$12 = $ptrType(Context); + funcType = $funcType([sliceType], [$String], true); + funcType$1 = $funcType([$String], [sliceType], false); + funcType$2 = $funcType([$String], [$Bool], false); + funcType$3 = $funcType([$String, $String], [$String, $Bool], false); + sliceType$8 = $sliceType(fs.FileInfo); + funcType$4 = $funcType([$String], [sliceType$8, $error], false); + funcType$5 = $funcType([$String], [io.ReadCloser, $error], false); + mapType$1 = $mapType($String, sliceType$6); + ptrType$13 = $ptrType(NoGoError); + ptrType$14 = $ptrType(MultiplePackageError); + newImportReader = function newImportReader$1(name, r) { + var {_r$1, _r$2, _tuple, b, err, leadingBytes, name, r, $s, $r, $c} = $restore(this, {name, r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + b = bufio.NewReader(r); + _r$1 = b.Peek(3); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + leadingBytes = _tuple[0]; + err = _tuple[1]; + /* */ if ($interfaceIsEqual(err, $ifaceNil) && bytes.Equal(leadingBytes, bom)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($interfaceIsEqual(err, $ifaceNil) && bytes.Equal(leadingBytes, bom)) { */ case 2: + _r$2 = b.Discard(3); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* } */ case 3: + $s = -1; return new importReader.ptr(b, sliceType$1.nil, 0, $ifaceNil, false, 0, $clone(new token.Position.ptr(name, 0, 1, 1), token.Position)); + /* */ } return; } var $f = {$blk: newImportReader$1, $c: true, $r, _r$1, _r$2, _tuple, b, err, leadingBytes, name, r, $s};return $f; + }; + isIdent = function isIdent$1(c) { + var c; + return 65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57 || (c === 95) || c >= 128; + }; + $ptrType(importReader).prototype.syntaxError = function syntaxError() { + var r; + r = this; + if ($interfaceIsEqual(r.err, $ifaceNil)) { + r.err = errSyntax; + } + }; + $ptrType(importReader).prototype.readByte = function readByte() { + var {_r$1, _tuple, c, err, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r$1 = r.b.ReadByte(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + c = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil)) { + r.buf = $append(r.buf, c); + if (c === 0) { + err = errNUL; + } + } + if (!($interfaceIsEqual(err, $ifaceNil))) { + if ($interfaceIsEqual(err, io.EOF)) { + r.eof = true; + } else if ($interfaceIsEqual(r.err, $ifaceNil)) { + r.err = err; + } + c = 0; + } + $s = -1; return c; + /* */ } return; } var $f = {$blk: readByte, $c: true, $r, _r$1, _tuple, c, err, r, $s};return $f; + }; + $ptrType(importReader).prototype.readByteNoBuf = function readByteNoBuf() { + var {_r$1, _tuple, c, err, r, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + c = 0; + err = $ifaceNil; + /* */ if (r.buf.$length > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (r.buf.$length > 0) { */ case 1: + c = (x = r.buf, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])); + r.buf = $subslice(r.buf, 1); + $s = 3; continue; + /* } else { */ case 2: + _r$1 = r.b.ReadByte(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + c = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil) && (c === 0)) { + err = errNUL; + } + /* } */ case 3: + if (!($interfaceIsEqual(err, $ifaceNil))) { + if ($interfaceIsEqual(err, io.EOF)) { + r.eof = true; + } else if ($interfaceIsEqual(r.err, $ifaceNil)) { + r.err = err; + } + $s = -1; return 0; + } + r.pos.Offset = r.pos.Offset + (1) >> 0; + if (c === 10) { + r.pos.Line = r.pos.Line + (1) >> 0; + r.pos.Column = 1; + } else { + r.pos.Column = r.pos.Column + (1) >> 0; + } + $s = -1; return c; + /* */ } return; } var $f = {$blk: readByteNoBuf, $c: true, $r, _r$1, _tuple, c, err, r, x, $s};return $f; + }; + $ptrType(importReader).prototype.peekByte = function peekByte(skipSpace) { + var {_1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, c, c1, r, skipSpace, $s, $r, $c} = $restore(this, {skipSpace}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if (!($interfaceIsEqual(r.err, $ifaceNil))) { + r.nerr = r.nerr + (1) >> 0; + if (r.nerr > 10000) { + $panic(new $String("go/build: import reader looping")); + } + $s = -1; return 0; + } + c = r.peek; + /* */ if (c === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (c === 0) { */ case 1: + _r$1 = r.readByte(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + c = _r$1; + /* } */ case 2: + /* while (true) { */ case 4: + /* if (!($interfaceIsEqual(r.err, $ifaceNil) && !r.eof)) { break; } */ if(!($interfaceIsEqual(r.err, $ifaceNil) && !r.eof)) { $s = 5; continue; } + /* */ if (skipSpace) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (skipSpace) { */ case 6: + _1 = c; + /* */ if ((_1 === (32)) || (_1 === (12)) || (_1 === (9)) || (_1 === (13)) || (_1 === (10)) || (_1 === (59))) { $s = 9; continue; } + /* */ if (_1 === (47)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ((_1 === (32)) || (_1 === (12)) || (_1 === (9)) || (_1 === (13)) || (_1 === (10)) || (_1 === (59))) { */ case 9: + _r$2 = r.readByte(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + c = _r$2; + /* continue; */ $s = 4; continue; + $s = 11; continue; + /* } else if (_1 === (47)) { */ case 10: + _r$3 = r.readByte(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + c = _r$3; + /* */ if (c === 47) { $s = 14; continue; } + /* */ if (c === 42) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (c === 47) { */ case 14: + /* while (true) { */ case 18: + /* if (!(!((c === 10)) && $interfaceIsEqual(r.err, $ifaceNil) && !r.eof)) { break; } */ if(!(!((c === 10)) && $interfaceIsEqual(r.err, $ifaceNil) && !r.eof)) { $s = 19; continue; } + _r$4 = r.readByte(); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + c = _r$4; + $s = 18; continue; + case 19: + $s = 17; continue; + /* } else if (c === 42) { */ case 15: + c1 = 0; + /* while (true) { */ case 21: + /* if (!((!((c === 42)) || !((c1 === 47))) && $interfaceIsEqual(r.err, $ifaceNil))) { break; } */ if(!((!((c === 42)) || !((c1 === 47))) && $interfaceIsEqual(r.err, $ifaceNil))) { $s = 22; continue; } + if (r.eof) { + r.syntaxError(); + } + _tmp = c1; + _r$5 = r.readByte(); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tmp$1 = _r$5; + c = _tmp; + c1 = _tmp$1; + $s = 21; continue; + case 22: + $s = 17; continue; + /* } else { */ case 16: + r.syntaxError(); + /* } */ case 17: + _r$6 = r.readByte(); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + c = _r$6; + /* continue; */ $s = 4; continue; + /* } */ case 11: + case 8: + /* } */ case 7: + /* break; */ $s = 5; continue; + case 5: + r.peek = c; + $s = -1; return r.peek; + /* */ } return; } var $f = {$blk: peekByte, $c: true, $r, _1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, c, c1, r, skipSpace, $s};return $f; + }; + $ptrType(importReader).prototype.nextByte = function nextByte(skipSpace) { + var {_r$1, c, r, skipSpace, $s, $r, $c} = $restore(this, {skipSpace}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r$1 = r.peekByte(skipSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + c = _r$1; + r.peek = 0; + $s = -1; return c; + /* */ } return; } var $f = {$blk: nextByte, $c: true, $r, _r$1, c, r, skipSpace, $s};return $f; + }; + $ptrType(importReader).prototype.findEmbed = function findEmbed(first) { + var {_1, _2, _i, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, c, c1, first, i, r, startLine, $s, $r, $c} = $restore(this, {first}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + startLine = !first; + c = 0; + /* while (true) { */ case 1: + /* if (!($interfaceIsEqual(r.err, $ifaceNil) && !r.eof)) { break; } */ if(!($interfaceIsEqual(r.err, $ifaceNil) && !r.eof)) { $s = 2; continue; } + _r$1 = r.readByteNoBuf(); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + c = _r$1; + /* Reswitch: */ case 4: + _1 = c; + /* */ if (_1 === (10)) { $s = 6; continue; } + /* */ if ((_1 === (32)) || (_1 === (9))) { $s = 7; continue; } + /* */ if (_1 === (34)) { $s = 8; continue; } + /* */ if (_1 === (96)) { $s = 9; continue; } + /* */ if (_1 === (39)) { $s = 10; continue; } + /* */ if (_1 === (47)) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_1 === (10)) { */ case 6: + startLine = true; + $s = 13; continue; + /* } else if ((_1 === (32)) || (_1 === (9))) { */ case 7: + $s = 13; continue; + /* } else if (_1 === (34)) { */ case 8: + startLine = false; + /* while (true) { */ case 14: + /* if (!($interfaceIsEqual(r.err, $ifaceNil))) { break; } */ if(!($interfaceIsEqual(r.err, $ifaceNil))) { $s = 15; continue; } + if (r.eof) { + r.syntaxError(); + } + _r$2 = r.readByteNoBuf(); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + c = _r$2; + /* */ if (c === 92) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (c === 92) { */ case 17: + _r$3 = r.readByteNoBuf(); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + if (!($interfaceIsEqual(r.err, $ifaceNil))) { + r.syntaxError(); + $s = -1; return false; + } + /* continue; */ $s = 14; continue; + /* } */ case 18: + /* */ if (c === 34) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (c === 34) { */ case 20: + _r$4 = r.readByteNoBuf(); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + c = _r$4; + /* goto Reswitch */ $s = 4; continue; + /* } */ case 21: + $s = 14; continue; + case 15: + /* goto Reswitch */ $s = 4; continue; + $s = 13; continue; + /* } else if (_1 === (96)) { */ case 9: + startLine = false; + /* while (true) { */ case 23: + /* if (!($interfaceIsEqual(r.err, $ifaceNil))) { break; } */ if(!($interfaceIsEqual(r.err, $ifaceNil))) { $s = 24; continue; } + if (r.eof) { + r.syntaxError(); + } + _r$5 = r.readByteNoBuf(); /* */ $s = 25; case 25: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + c = _r$5; + /* */ if (c === 96) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (c === 96) { */ case 26: + _r$6 = r.readByteNoBuf(); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + c = _r$6; + /* goto Reswitch */ $s = 4; continue; + /* } */ case 27: + $s = 23; continue; + case 24: + $s = 13; continue; + /* } else if (_1 === (39)) { */ case 10: + startLine = false; + /* while (true) { */ case 29: + /* if (!($interfaceIsEqual(r.err, $ifaceNil))) { break; } */ if(!($interfaceIsEqual(r.err, $ifaceNil))) { $s = 30; continue; } + if (r.eof) { + r.syntaxError(); + } + _r$7 = r.readByteNoBuf(); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + c = _r$7; + /* */ if (c === 92) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (c === 92) { */ case 32: + _r$8 = r.readByteNoBuf(); /* */ $s = 34; case 34: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$8; + if (!($interfaceIsEqual(r.err, $ifaceNil))) { + r.syntaxError(); + $s = -1; return false; + } + /* continue; */ $s = 29; continue; + /* } */ case 33: + /* */ if (c === 39) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if (c === 39) { */ case 35: + _r$9 = r.readByteNoBuf(); /* */ $s = 37; case 37: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + c = _r$9; + /* goto Reswitch */ $s = 4; continue; + /* } */ case 36: + $s = 29; continue; + case 30: + $s = 13; continue; + /* } else if (_1 === (47)) { */ case 11: + _r$10 = r.readByteNoBuf(); /* */ $s = 38; case 38: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + c = _r$10; + _2 = c; + /* */ if (_2 === (42)) { $s = 40; continue; } + /* */ if (_2 === (47)) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if (_2 === (42)) { */ case 40: + c1 = 0; + /* while (true) { */ case 44: + /* if (!((!((c === 42)) || !((c1 === 47))) && $interfaceIsEqual(r.err, $ifaceNil))) { break; } */ if(!((!((c === 42)) || !((c1 === 47))) && $interfaceIsEqual(r.err, $ifaceNil))) { $s = 45; continue; } + if (r.eof) { + r.syntaxError(); + } + _tmp = c1; + _r$11 = r.readByteNoBuf(); /* */ $s = 46; case 46: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tmp$1 = _r$11; + c = _tmp; + c1 = _tmp$1; + $s = 44; continue; + case 45: + startLine = false; + $s = 43; continue; + /* } else if (_2 === (47)) { */ case 41: + /* */ if (startLine) { $s = 47; continue; } + /* */ $s = 48; continue; + /* if (startLine) { */ case 47: + _ref = goEmbed; + _i = 0; + /* while (true) { */ case 49: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 50; continue; } + i = _i; + _r$12 = r.readByteNoBuf(); /* */ $s = 51; case 51: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + c = _r$12; + /* */ if (!((c === ((i < 0 || i >= goEmbed.$length) ? ($throwRuntimeError("index out of range"), undefined) : goEmbed.$array[goEmbed.$offset + i])))) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if (!((c === ((i < 0 || i >= goEmbed.$length) ? ($throwRuntimeError("index out of range"), undefined) : goEmbed.$array[goEmbed.$offset + i])))) { */ case 52: + /* goto SkipSlashSlash */ $s = 54; continue; + /* } */ case 53: + _i++; + $s = 49; continue; + case 50: + _r$13 = r.readByteNoBuf(); /* */ $s = 55; case 55: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + c = _r$13; + if ((c === 32) || (c === 9)) { + $s = -1; return true; + } + /* } */ case 48: + /* SkipSlashSlash: */ case 54: + /* while (true) { */ case 56: + /* if (!(!((c === 10)) && $interfaceIsEqual(r.err, $ifaceNil) && !r.eof)) { break; } */ if(!(!((c === 10)) && $interfaceIsEqual(r.err, $ifaceNil) && !r.eof)) { $s = 57; continue; } + _r$14 = r.readByteNoBuf(); /* */ $s = 58; case 58: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + c = _r$14; + $s = 56; continue; + case 57: + startLine = true; + $s = 43; continue; + /* } else { */ case 42: + startLine = false; + /* goto Reswitch */ $s = 4; continue; + /* } */ case 43: + case 39: + $s = 13; continue; + /* } else { */ case 12: + startLine = false; + /* } */ case 13: + case 5: + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: findEmbed, $c: true, $r, _1, _2, _i, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, c, c1, first, i, r, startLine, $s};return $f; + }; + $ptrType(importReader).prototype.readKeyword = function readKeyword(kw) { + var {_r$1, _r$2, _r$3, _r$4, i, kw, r, $s, $r, $c} = $restore(this, {kw}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r$1 = r.peekByte(true); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + i = 0; + /* while (true) { */ case 2: + /* if (!(i < kw.length)) { break; } */ if(!(i < kw.length)) { $s = 3; continue; } + _r$2 = r.nextByte(false); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (!((_r$2 === kw.charCodeAt(i)))) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!((_r$2 === kw.charCodeAt(i)))) { */ case 4: + r.syntaxError(); + $s = -1; return; + /* } */ case 5: + i = i + (1) >> 0; + $s = 2; continue; + case 3: + _r$3 = r.peekByte(false); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = isIdent(_r$3); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_r$4) { */ case 7: + r.syntaxError(); + /* } */ case 8: + $s = -1; return; + /* */ } return; } var $f = {$blk: readKeyword, $c: true, $r, _r$1, _r$2, _r$3, _r$4, i, kw, r, $s};return $f; + }; + $ptrType(importReader).prototype.readIdent = function readIdent() { + var {_r$1, _r$2, _r$3, c, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r$1 = r.peekByte(true); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + c = _r$1; + if (!isIdent(c)) { + r.syntaxError(); + $s = -1; return; + } + /* while (true) { */ case 2: + _r$2 = r.peekByte(false); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = isIdent(_r$2); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* if (!(_r$3)) { break; } */ if(!(_r$3)) { $s = 3; continue; } + r.peek = 0; + $s = 2; continue; + case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: readIdent, $c: true, $r, _r$1, _r$2, _r$3, c, r, $s};return $f; + }; + $ptrType(importReader).prototype.readString = function readString() { + var {_1, _r$1, _r$2, _r$3, _r$4, c, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r$1 = r.nextByte(true); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _1 = _r$1; + /* */ if (_1 === (96)) { $s = 3; continue; } + /* */ if (_1 === (34)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (96)) { */ case 3: + /* while (true) { */ case 7: + /* if (!($interfaceIsEqual(r.err, $ifaceNil))) { break; } */ if(!($interfaceIsEqual(r.err, $ifaceNil))) { $s = 8; continue; } + _r$2 = r.nextByte(false); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2 === 96) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_r$2 === 96) { */ case 9: + /* break; */ $s = 8; continue; + /* } */ case 10: + if (r.eof) { + r.syntaxError(); + } + $s = 7; continue; + case 8: + $s = 6; continue; + /* } else if (_1 === (34)) { */ case 4: + /* while (true) { */ case 12: + /* if (!($interfaceIsEqual(r.err, $ifaceNil))) { break; } */ if(!($interfaceIsEqual(r.err, $ifaceNil))) { $s = 13; continue; } + _r$3 = r.nextByte(false); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + c = _r$3; + if (c === 34) { + /* break; */ $s = 13; continue; + } + if (r.eof || (c === 10)) { + r.syntaxError(); + } + /* */ if (c === 92) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (c === 92) { */ case 15: + _r$4 = r.nextByte(false); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + /* } */ case 16: + $s = 12; continue; + case 13: + $s = 6; continue; + /* } else { */ case 5: + r.syntaxError(); + /* } */ case 6: + case 1: + $s = -1; return; + /* */ } return; } var $f = {$blk: readString, $c: true, $r, _1, _r$1, _r$2, _r$3, _r$4, c, r, $s};return $f; + }; + $ptrType(importReader).prototype.readImport = function readImport() { + var {_r$1, c, r, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r$1 = r.peekByte(true); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + c = _r$1; + /* */ if (c === 46) { $s = 2; continue; } + /* */ if (isIdent(c)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (c === 46) { */ case 2: + r.peek = 0; + $s = 4; continue; + /* } else if (isIdent(c)) { */ case 3: + $r = r.readIdent(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 4: + $r = r.readString(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: readImport, $c: true, $r, _r$1, c, r, $s};return $f; + }; + readComments = function readComments$1(f) { + var {_r$1, _r$2, f, r, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = newImportReader("", f); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + r = _r$1; + _r$2 = r.peekByte(true); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + if ($interfaceIsEqual(r.err, $ifaceNil) && !r.eof) { + r.buf = $subslice(r.buf, 0, (r.buf.$length - 1 >> 0)); + } + $s = -1; return [r.buf, r.err]; + /* */ } return; } var $f = {$blk: readComments$1, $c: true, $r, _r$1, _r$2, f, r, $s};return $f; + }; + readGoInfo = function readGoInfo$1(f, info) { + var {$24r, _i, _i$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, c, d, decl, doc$1, dspec, embs, err, err$1, f, first, hasEmbed, info, line, ok, ok$1, path$1, pos, quoted, r, spec, x, $s, $r, $c} = $restore(this, {f, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = newImportReader(info.name, f); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + r = _r$1; + $r = r.readKeyword("package"); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = r.readIdent(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* while (true) { */ case 4: + _r$2 = r.peekByte(true); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* if (!(_r$2 === 105)) { break; } */ if(!(_r$2 === 105)) { $s = 5; continue; } + $r = r.readKeyword("import"); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$3 = r.peekByte(true); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (_r$3 === 40) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_r$3 === 40) { */ case 8: + _r$4 = r.nextByte(false); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + /* while (true) { */ case 13: + _r$5 = r.peekByte(true); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* if (!(!((_r$5 === 41)) && $interfaceIsEqual(r.err, $ifaceNil))) { break; } */ if(!(!((_r$5 === 41)) && $interfaceIsEqual(r.err, $ifaceNil))) { $s = 14; continue; } + $r = r.readImport(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 13; continue; + case 14: + _r$6 = r.nextByte(false); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$6; + $s = 10; continue; + /* } else { */ case 9: + $r = r.readImport(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + $s = 4; continue; + case 5: + info.header = r.buf; + if ($interfaceIsEqual(r.err, $ifaceNil) && !r.eof) { + info.header = $subslice(r.buf, 0, (r.buf.$length - 1 >> 0)); + } + /* */ if ($interfaceIsEqual(r.err, errSyntax)) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if ($interfaceIsEqual(r.err, errSyntax)) { */ case 19: + r.err = $ifaceNil; + /* while (true) { */ case 21: + /* if (!($interfaceIsEqual(r.err, $ifaceNil) && !r.eof)) { break; } */ if(!($interfaceIsEqual(r.err, $ifaceNil) && !r.eof)) { $s = 22; continue; } + _r$7 = r.readByte(); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$7; + $s = 21; continue; + case 22: + info.header = r.buf; + /* } */ case 20: + if (!($interfaceIsEqual(r.err, $ifaceNil))) { + $s = -1; return r.err; + } + if (info.fset === ptrType$1.nil) { + $s = -1; return $ifaceNil; + } + _r$8 = parser.ParseFile(info.fset, info.name, info.header, 6); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tuple = _r$8; + info.parsed = _tuple[0]; + info.parseErr = _tuple[1]; + if (!($interfaceIsEqual(info.parseErr, $ifaceNil))) { + $s = -1; return $ifaceNil; + } + hasEmbed = false; + _ref = info.parsed.Decls; + _i = 0; + /* while (true) { */ case 25: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 26; continue; } + decl = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _tuple$1 = $assertType(decl, ptrType$2, true); + d = _tuple$1[0]; + ok = _tuple$1[1]; + if (!ok) { + _i++; + /* continue; */ $s = 25; continue; + } + _ref$1 = d.Specs; + _i$1 = 0; + /* while (true) { */ case 27: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 28; continue; } + dspec = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _tuple$2 = $assertType(dspec, ptrType$3, true); + spec = _tuple$2[0]; + ok$1 = _tuple$2[1]; + if (!ok$1) { + _i$1++; + /* continue; */ $s = 27; continue; + } + quoted = spec.Path.Value; + _tuple$3 = strconv.Unquote(quoted); + path$1 = _tuple$3[0]; + err = _tuple$3[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 29: + _r$9 = fmt.Errorf("parser returned invalid quoted string: <%s>", new sliceType$2([new $String(quoted)])); /* */ $s = 31; case 31: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $24r = _r$9; + $s = 32; case 32: return $24r; + /* } */ case 30: + /* */ if (!isValidImport(path$1)) { $s = 33; continue; } + /* */ $s = 34; continue; + /* if (!isValidImport(path$1)) { */ case 33: + _r$10 = info.fset.Position(spec.Pos()); /* */ $s = 35; case 35: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + info.parseErr = (x = new scanner.Error.ptr($clone(_r$10, token.Position), "invalid import path: " + path$1), new x.constructor.elem(x)); + info.imports = sliceType$3.nil; + $s = -1; return $ifaceNil; + /* } */ case 34: + if (path$1 === "embed") { + hasEmbed = true; + } + doc$1 = spec.Doc; + if (doc$1 === ptrType$4.nil && (d.Specs.$length === 1)) { + doc$1 = d.Doc; + } + info.imports = $append(info.imports, new fileImport.ptr(path$1, spec.Pos(), doc$1)); + _i$1++; + $s = 27; continue; + case 28: + _i++; + $s = 25; continue; + case 26: + /* */ if (hasEmbed) { $s = 36; continue; } + /* */ $s = 37; continue; + /* if (hasEmbed) { */ case 36: + line = sliceType$1.nil; + first = true; + /* while (true) { */ case 38: + _r$11 = r.findEmbed(first); /* */ $s = 40; case 40: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + /* if (!(_r$11)) { break; } */ if(!(_r$11)) { $s = 39; continue; } + line = $subslice(line, 0, 0); + pos = $clone(r.pos, token.Position); + /* while (true) { */ case 41: + _r$12 = r.readByteNoBuf(); /* */ $s = 43; case 43: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + c = _r$12; + if ((c === 10) || !($interfaceIsEqual(r.err, $ifaceNil)) || r.eof) { + /* break; */ $s = 42; continue; + } + line = $append(line, c); + $s = 41; continue; + case 42: + _r$13 = parseGoEmbed(($bytesToString(line)), $clone(pos, token.Position)); /* */ $s = 44; case 44: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _tuple$4 = _r$13; + embs = _tuple$4[0]; + err$1 = _tuple$4[1]; + if ($interfaceIsEqual(err$1, $ifaceNil)) { + info.embeds = $appendSlice(info.embeds, embs); + } + first = false; + $s = 38; continue; + case 39: + /* } */ case 37: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: readGoInfo$1, $c: true, $r, $24r, _i, _i$1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, c, d, decl, doc$1, dspec, embs, err, err$1, f, first, hasEmbed, info, line, ok, ok$1, path$1, pos, quoted, r, spec, x, $s};return $f; + }; + isValidImport = function isValidImport$1(s) { + var _i, _ref, _rune, r, s; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + r = _rune[0]; + if (!unicode.IsGraphic(r) || unicode.IsSpace(r) || strings.ContainsRune("!\"#$%&'()*,:;<=>?[\\]^{|}`\xEF\xBF\xBD", r)) { + return false; + } + _i += _rune[1]; + } + return !(s === ""); + }; + parseGoEmbed = function parseGoEmbed$1(args, pos) { + var {$24r, $24r$1, $24r$2, $24r$3, _1, _i, _r$1, _r$2, _r$3, _r$4, _ref, _rune, _tuple, _tuple$1, _tuple$2, args, c, err, i, i$1, j, list, ok, path$1, pathPos, pos, q, r, trimBytes, trimSpace, $s, $r, $c} = $restore(this, {args, pos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + args = [args]; + pos = [pos]; + trimBytes = [trimBytes]; + trimBytes[0] = (function(args, pos, trimBytes) { return function parseGoEmbed·func1(n) { + var n; + pos[0].Offset = pos[0].Offset + (n) >> 0; + pos[0].Column = pos[0].Column + (utf8.RuneCountInString($substring(args[0], 0, n))) >> 0; + args[0] = $substring(args[0], n); + }; })(args, pos, trimBytes); + trimSpace = (function(args, pos, trimBytes) { return function parseGoEmbed·func2() { + var {_r$1, trim, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = strings.TrimLeftFunc(args[0], unicode.IsSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + trim = _r$1; + $r = trimBytes[0](args[0].length - trim.length >> 0); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: parseGoEmbed·func2, $c: true, $r, _r$1, trim, $s};return $f; + }; })(args, pos, trimBytes); + list = sliceType$4.nil; + $r = trimSpace(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* while (true) { */ case 2: + /* if (!(!(args[0] === ""))) { break; } */ if(!(!(args[0] === ""))) { $s = 3; continue; } + path$1 = ""; + pathPos = $clone(pos[0], token.Position); + _1 = args[0].charCodeAt(0); + /* */ if (_1 === (96)) { $s = 5; continue; } + /* */ if (_1 === (34)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_1 === (96)) { */ case 5: + ok = false; + _tuple = strings.Cut($substring(args[0], 1), "`"); + path$1 = _tuple[0]; + ok = _tuple[2]; + /* */ if (!ok) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!ok) { */ case 9: + _r$1 = fmt.Errorf("invalid quoted string in //go:embed: %s", new sliceType$2([new $String(args[0])])); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = [sliceType$4.nil, _r$1]; + $s = 12; case 12: return $24r; + /* } */ case 10: + $r = trimBytes[0]((1 + path$1.length >> 0) + 1 >> 0); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 8; continue; + /* } else if (_1 === (34)) { */ case 6: + i = 1; + /* while (true) { */ case 14: + /* if (!(i < args[0].length)) { break; } */ if(!(i < args[0].length)) { $s = 15; continue; } + if (args[0].charCodeAt(i) === 92) { + i = i + (1) >> 0; + i = i + (1) >> 0; + /* continue; */ $s = 14; continue; + } + /* */ if (args[0].charCodeAt(i) === 34) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (args[0].charCodeAt(i) === 34) { */ case 16: + _tuple$1 = strconv.Unquote($substring(args[0], 0, (i + 1 >> 0))); + q = _tuple$1[0]; + err = _tuple$1[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 18: + _r$2 = fmt.Errorf("invalid quoted string in //go:embed: %s", new sliceType$2([new $String($substring(args[0], 0, (i + 1 >> 0)))])); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = [sliceType$4.nil, _r$2]; + $s = 21; case 21: return $24r$1; + /* } */ case 19: + path$1 = q; + $r = trimBytes[0](i + 1 >> 0); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break Switch; */ $s = 4; continue s; + /* } */ case 17: + i = i + (1) >> 0; + $s = 14; continue; + case 15: + /* */ if (i >= args[0].length) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (i >= args[0].length) { */ case 23: + _r$3 = fmt.Errorf("invalid quoted string in //go:embed: %s", new sliceType$2([new $String(args[0])])); /* */ $s = 25; case 25: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$2 = [sliceType$4.nil, _r$3]; + $s = 26; case 26: return $24r$2; + /* } */ case 24: + $s = 8; continue; + /* } else { */ case 7: + i$1 = args[0].length; + _ref = args[0]; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + j = _i; + c = _rune[0]; + if (unicode.IsSpace(c)) { + i$1 = j; + break; + } + _i += _rune[1]; + } + path$1 = $substring(args[0], 0, i$1); + $r = trimBytes[0](i$1); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + case 4: + /* */ if (!(args[0] === "")) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (!(args[0] === "")) { */ case 28: + _tuple$2 = utf8.DecodeRuneInString(args[0]); + r = _tuple$2[0]; + /* */ if (!unicode.IsSpace(r)) { $s = 30; continue; } + /* */ $s = 31; continue; + /* if (!unicode.IsSpace(r)) { */ case 30: + _r$4 = fmt.Errorf("invalid quoted string in //go:embed: %s", new sliceType$2([new $String(args[0])])); /* */ $s = 32; case 32: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$3 = [sliceType$4.nil, _r$4]; + $s = 33; case 33: return $24r$3; + /* } */ case 31: + /* } */ case 29: + list = $append(list, new fileEmbed.ptr(path$1, $clone(pathPos, token.Position))); + $r = trimSpace(); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 2; continue; + case 3: + $s = -1; return [list, $ifaceNil]; + /* */ } return; } var $f = {$blk: parseGoEmbed$1, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _1, _i, _r$1, _r$2, _r$3, _r$4, _ref, _rune, _tuple, _tuple$1, _tuple$2, args, c, err, i, i$1, j, list, ok, path$1, pathPos, pos, q, r, trimBytes, trimSpace, $s};return $f; + }; + getToolDir = function getToolDir$1() { + return filepath.Join(new sliceType([runtime.GOROOT(), "pkg/tool/js_ecmascript"])); + }; + $ptrType(Context).prototype.joinPath = function joinPath(elem) { + var {$24r, _r$1, ctxt, elem, f, $s, $r, $c} = $restore(this, {elem}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + f = ctxt.JoinPath; + /* */ if (!(f === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(f === $throwNilPointerError)) { */ case 1: + _r$1 = f(elem); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return filepath.Join(elem); + /* */ } return; } var $f = {$blk: joinPath, $c: true, $r, $24r, _r$1, ctxt, elem, f, $s};return $f; + }; + $ptrType(Context).prototype.splitPathList = function splitPathList(s) { + var {$24r, _r$1, ctxt, f, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + f = ctxt.SplitPathList; + /* */ if (!(f === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(f === $throwNilPointerError)) { */ case 1: + _r$1 = f(s); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return filepath.SplitList(s); + /* */ } return; } var $f = {$blk: splitPathList, $c: true, $r, $24r, _r$1, ctxt, f, s, $s};return $f; + }; + $ptrType(Context).prototype.isAbsPath = function isAbsPath(path$1) { + var {$24r, _r$1, ctxt, f, path$1, $s, $r, $c} = $restore(this, {path$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + f = ctxt.IsAbsPath; + /* */ if (!(f === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(f === $throwNilPointerError)) { */ case 1: + _r$1 = f(path$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + $s = -1; return filepath.IsAbs(path$1); + /* */ } return; } var $f = {$blk: isAbsPath, $c: true, $r, $24r, _r$1, ctxt, f, path$1, $s};return $f; + }; + $ptrType(Context).prototype.isDir = function isDir(path$1) { + var {$24r, $24r$1, _r$1, _r$2, _r$3, _tuple, _v, ctxt, err, f, fi, path$1, $s, $r, $c} = $restore(this, {path$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + f = ctxt.IsDir; + /* */ if (!(f === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(f === $throwNilPointerError)) { */ case 1: + _r$1 = f(path$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$2 = os.Stat(path$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + fi = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { _v = false; $s = 6; continue s; } + _r$3 = fi.IsDir(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _v = _r$3; case 6: + $24r$1 = _v; + $s = 8; case 8: return $24r$1; + /* */ } return; } var $f = {$blk: isDir, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, _tuple, _v, ctxt, err, f, fi, path$1, $s};return $f; + }; + $ptrType(Context).prototype.hasSubdir = function hasSubdir$1(root, dir) { + var {$24r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, ctxt, dir, dirSym, f, ok, rel, root, rootSym, $s, $r, $c} = $restore(this, {root, dir}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rel = ""; + ok = false; + ctxt = this; + f = ctxt.HasSubdir; + /* */ if (!(f === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(f === $throwNilPointerError)) { */ case 1: + _r$1 = f(root, dir); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + rel = _tuple[0]; + ok = _tuple[1]; + $24r = [rel, ok]; + $s = 4; case 4: return $24r; + /* } */ case 2: + _tuple$1 = hasSubdir(root, dir); + rel = _tuple$1[0]; + ok = _tuple$1[1]; + if (ok) { + $s = -1; return [rel, ok]; + } + _r$2 = filepath.EvalSymlinks(root); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$2 = _r$2; + rootSym = _tuple$2[0]; + _r$3 = filepath.EvalSymlinks(dir); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$3 = _r$3; + dirSym = _tuple$3[0]; + _tuple$4 = hasSubdir(rootSym, dir); + rel = _tuple$4[0]; + ok = _tuple$4[1]; + if (ok) { + $s = -1; return [rel, ok]; + } + _tuple$5 = hasSubdir(root, dirSym); + rel = _tuple$5[0]; + ok = _tuple$5[1]; + if (ok) { + $s = -1; return [rel, ok]; + } + _tuple$6 = hasSubdir(rootSym, dirSym); + rel = _tuple$6[0]; + ok = _tuple$6[1]; + $s = -1; return [rel, ok]; + /* */ } return; } var $f = {$blk: hasSubdir$1, $c: true, $r, $24r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, ctxt, dir, dirSym, f, ok, rel, root, rootSym, $s};return $f; + }; + hasSubdir = function hasSubdir$2(root, dir) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, after, dir, found, ok, rel, root; + rel = ""; + ok = false; + root = filepath.Clean(root); + if (!strings.HasSuffix(root, "/")) { + root = root + ("/"); + } + dir = filepath.Clean(dir); + _tuple = strings.CutPrefix(dir, root); + after = _tuple[0]; + found = _tuple[1]; + if (!found) { + _tmp = ""; + _tmp$1 = false; + rel = _tmp; + ok = _tmp$1; + return [rel, ok]; + } + _tmp$2 = filepath.ToSlash(after); + _tmp$3 = true; + rel = _tmp$2; + ok = _tmp$3; + return [rel, ok]; + }; + $ptrType(Context).prototype.readDir = function readDir(path$1) { + var {$24r, _i, _r$1, _r$2, _ref, _tuple, ctxt, des, err, f, fi, fis, i, path$1, $s, $r, $c} = $restore(this, {path$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + f = ctxt.ReadDir; + /* */ if (!(f === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(f === $throwNilPointerError)) { */ case 1: + _r$1 = f(path$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + fis = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType$5.nil, err]; + } + des = $makeSlice(sliceType$5, fis.$length); + _ref = fis; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + fi = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ((i < 0 || i >= des.$length) ? ($throwRuntimeError("index out of range"), undefined) : des.$array[des.$offset + i] = fs.FileInfoToDirEntry(fi)); + _i++; + } + $s = -1; return [des, $ifaceNil]; + /* } */ case 2: + _r$2 = os.ReadDir(path$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: readDir, $c: true, $r, $24r, _i, _r$1, _r$2, _ref, _tuple, ctxt, des, err, f, fi, fis, i, path$1, $s};return $f; + }; + $ptrType(Context).prototype.openFile = function openFile(path$1) { + var {$24r, _r$1, _r$2, _tuple, ctxt, err, f, fn, path$1, $s, $r, $c} = $restore(this, {path$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + fn = ctxt.OpenFile; + /* */ if (!(fn === $throwNilPointerError)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(fn === $throwNilPointerError)) { */ case 1: + _r$1 = fn(path$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$2 = os.Open(path$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [$ifaceNil, err]; + } + $s = -1; return [f, $ifaceNil]; + /* */ } return; } var $f = {$blk: openFile, $c: true, $r, $24r, _r$1, _r$2, _tuple, ctxt, err, f, fn, path$1, $s};return $f; + }; + $ptrType(Context).prototype.isFile = function isFile(path$1) { + var {_r$1, _r$2, _tuple, ctxt, err, f, path$1, $s, $r, $c} = $restore(this, {path$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + _r$1 = ctxt.openFile(path$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return false; + } + _r$2 = f.Close(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = -1; return true; + /* */ } return; } var $f = {$blk: isFile, $c: true, $r, _r$1, _r$2, _tuple, ctxt, err, f, path$1, $s};return $f; + }; + $ptrType(Context).prototype.gopath = function gopath() { + var {_i, _r$1, _ref, all, ctxt, p, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + all = sliceType.nil; + _r$1 = ctxt.splitPathList(ctxt.GOPATH); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _ref = _r$1; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (p === "" || p === ctxt.GOROOT) { + _i++; + /* continue; */ $s = 2; continue; + } + if (strings.HasPrefix(p, "~")) { + _i++; + /* continue; */ $s = 2; continue; + } + all = $append(all, p); + _i++; + $s = 2; continue; + case 3: + $s = -1; return all; + /* */ } return; } var $f = {$blk: gopath, $c: true, $r, _i, _r$1, _ref, all, ctxt, p, $s};return $f; + }; + $ptrType(Context).prototype.SrcDirs = function SrcDirs() { + var {_i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, all, ctxt, dir, dir$1, p, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + all = sliceType.nil; + /* */ if (!(ctxt.GOROOT === "") && !(ctxt.Compiler === "gccgo")) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(ctxt.GOROOT === "") && !(ctxt.Compiler === "gccgo")) { */ case 1: + _r$1 = ctxt.joinPath(new sliceType([ctxt.GOROOT, "src"])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + dir = _r$1; + _r$2 = ctxt.isDir(dir); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_r$2) { */ case 4: + all = $append(all, dir); + /* } */ case 5: + /* } */ case 2: + _r$3 = ctxt.gopath(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _ref = _r$3; + _i = 0; + /* while (true) { */ case 8: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 9; continue; } + p = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$4 = ctxt.joinPath(new sliceType([p, "src"])); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + dir$1 = _r$4; + _r$5 = ctxt.isDir(dir$1); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + /* */ if (_r$5) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (_r$5) { */ case 11: + all = $append(all, dir$1); + /* } */ case 12: + _i++; + $s = 8; continue; + case 9: + $s = -1; return all; + /* */ } return; } var $f = {$blk: SrcDirs, $c: true, $r, _i, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, all, ctxt, dir, dir$1, p, $s};return $f; + }; + defaultGOPATH = function defaultGOPATH$1() { + var {_r$1, def, env, home, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + env = "HOME"; + if (false) { + env = "USERPROFILE"; + } else if (false) { + env = "home"; + } + _r$1 = os.Getenv(env); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + home = _r$1; + if (!(home === "")) { + def = filepath.Join(new sliceType([home, "go"])); + if (filepath.Clean(def) === filepath.Clean(runtime.GOROOT())) { + $s = -1; return ""; + } + $s = -1; return def; + } + $s = -1; return ""; + /* */ } return; } var $f = {$blk: defaultGOPATH$1, $c: true, $r, _r$1, def, env, home, $s};return $f; + }; + defaultContext = function defaultContext$1() { + var {_1, _arg, _entry, _r$1, _r$2, _r$3, c, env, goroot$1, i, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = new Context.ptr("", "", "", "", "", false, false, "", sliceType.nil, sliceType.nil, sliceType.nil, "", $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError); + c.GOARCH = buildcfg.GOARCH; + c.GOOS = buildcfg.GOOS; + goroot$1 = runtime.GOROOT(); + if (!(goroot$1 === "")) { + c.GOROOT = filepath.Clean(goroot$1); + } + _r$1 = defaultGOPATH(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg = _r$1; + _r$2 = envOr("GOPATH", _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + c.GOPATH = _r$2; + c.Compiler = "gopherjs"; + c.ToolTags = $appendSlice(c.ToolTags, buildcfg.ToolTags); + defaultToolTags = $appendSlice(new sliceType([]), c.ToolTags); + i = 1; + while (true) { + if (!(i <= 20)) { break; } + c.ReleaseTags = $append(c.ReleaseTags, "go1." + strconv.Itoa(i)); + i = i + (1) >> 0; + } + defaultReleaseTags = $appendSlice(new sliceType([]), c.ReleaseTags); + _r$3 = os.Getenv("CGO_ENABLED"); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + env = _r$3; + if (env === "") { + env = ""; + } + switch (0) { default: + _1 = env; + if (_1 === ("1")) { + c.CgoEnabled = true; + } else if (_1 === ("0")) { + c.CgoEnabled = false; + } else { + if ("ecmascript" === c.GOARCH && "js" === c.GOOS) { + c.CgoEnabled = (_entry = $mapIndex(cgoEnabled,$String.keyFor(c.GOOS + "/" + c.GOARCH)), _entry !== undefined ? _entry.v : false); + break; + } + c.CgoEnabled = false; + } + } + $s = -1; return c; + /* */ } return; } var $f = {$blk: defaultContext$1, $c: true, $r, _1, _arg, _entry, _r$1, _r$2, _r$3, c, env, goroot$1, i, $s};return $f; + }; + envOr = function envOr$1(name, def) { + var {_r$1, def, name, s, $s, $r, $c} = $restore(this, {name, def}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = os.Getenv(name); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + s = _r$1; + if (s === "") { + $s = -1; return def; + } + $s = -1; return s; + /* */ } return; } var $f = {$blk: envOr$1, $c: true, $r, _r$1, def, name, s, $s};return $f; + }; + $ptrType(Package).prototype.IsCommand = function IsCommand() { + var p; + p = this; + return p.Name === "main"; + }; + $ptrType(Context).prototype.ImportDir = function ImportDir$1(dir, mode) { + var {$24r, _r$1, ctxt, dir, mode, $s, $r, $c} = $restore(this, {dir, mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + _r$1 = ctxt.Import(".", dir, mode); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: ImportDir$1, $c: true, $r, $24r, _r$1, ctxt, dir, mode, $s};return $f; + }; + $ptrType(NoGoError).prototype.Error = function Error() { + var e; + e = this; + return "no buildable Go source files in " + e.Dir; + }; + $ptrType(MultiplePackageError).prototype.Error = function Error$1() { + var {$24r, _r$1, e, x, x$1, x$2, x$3, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _r$1 = fmt.Sprintf("found packages %s (%s) and %s (%s) in %s", new sliceType$2([new $String((x = e.Packages, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0]))), new $String((x$1 = e.Files, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]))), new $String((x$2 = e.Packages, (1 >= x$2.$length ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + 1]))), new $String((x$3 = e.Files, (1 >= x$3.$length ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + 1]))), new $String(e.Dir)])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Error$1, $c: true, $r, $24r, _r$1, e, x, x$1, x$2, x$3, $s};return $f; + }; + nameExt = function nameExt$1(name) { + var i, name; + i = strings.LastIndex(name, "."); + if (i < 0) { + return ""; + } + return $substring(name, i); + }; + $ptrType(Context).prototype.Import = function Import$1(path$1, srcDir, mode) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, Sfiles, _1, _3, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _entry, _entry$1, _entry$2, _i, _i$1, _i$10, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _key, _key$1, _key$2, _key$3, _keys, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _r$5, _r$50, _r$51, _r$52, _r$53, _r$54, _r$55, _r$56, _r$57, _r$58, _r$59, _r$6, _r$60, _r$61, _r$62, _r$63, _r$64, _r$65, _r$66, _r$67, _r$68, _r$69, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$10, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _size, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, _v$7, _v$8, all, allTags, badGoError, badGoFile, badGoFiles, binaryOnly, com, ctxt, d, data, dir, dir$1, dir$2, dir$3, dir$4, dir$5, dir$6, dirs, earlyRoot, emb, embedMap, embedPos, err, err$1, err$2, err$3, err$4, ext, fileList, filename, firstCommentFile, firstFile, format, fset, gopath$1, gorootFirst, i, imp, imp$1, importMap, importPos, inTestdata, info, isCgo, isDir$1, isDir$2, isDir$3, isTest, isXTest, line, list, mode, name, ok, ok$1, p, path$1, paths, pkg, pkga, pkgerr, pkgtargetroot, qcom, root, root$1, root$2, root$3, rootsrc, searchVendor, setPkga, srcDir, sub, sub$1, suffix, tag, testEmbedPos, testImportPos, tried, xTestEmbedPos, xTestImportPos, $s, $r, $c} = $restore(this, {path$1, srcDir, mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + badGoError = [badGoError]; + badGoFiles = [badGoFiles]; + ctxt = [ctxt]; + p = [p]; + path$1 = [path$1]; + pkga = [pkga]; + pkgtargetroot = [pkgtargetroot]; + setPkga = [setPkga]; + srcDir = [srcDir]; + tried = [tried]; + ctxt[0] = this; + p[0] = new Package.ptr("", "", "", "", path$1[0], "", "", "", "", "", false, "", sliceType.nil, "", false, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, false, sliceType.nil, false, sliceType.nil, false, sliceType.nil, false, sliceType.nil, false, sliceType.nil, false); + /* */ if (path$1[0] === "") { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (path$1[0] === "") { */ case 1: + _r$1 = fmt.Errorf("import %q: invalid import path", new sliceType$2([new $String(path$1[0])])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = [p[0], _r$1]; + $s = 4; case 4: return $24r; + /* } */ case 2: + pkgtargetroot[0] = ""; + pkga[0] = ""; + pkgerr = $ifaceNil; + suffix = ""; + if (!(ctxt[0].InstallSuffix === "")) { + suffix = "_" + ctxt[0].InstallSuffix; + } + _1 = ctxt[0].Compiler; + /* */ if (_1 === ("gccgo")) { $s = 6; continue; } + /* */ if (_1 === ("gc")) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_1 === ("gccgo")) { */ case 6: + pkgtargetroot[0] = "pkg/gccgo_" + ctxt[0].GOOS + "_" + ctxt[0].GOARCH + suffix; + $s = 9; continue; + /* } else if (_1 === ("gc")) { */ case 7: + pkgtargetroot[0] = "pkg/" + ctxt[0].GOOS + "_" + ctxt[0].GOARCH + suffix; + $s = 9; continue; + /* } else { */ case 8: + _r$2 = fmt.Errorf("import %q: unknown compiler %q", new sliceType$2([new $String(path$1[0]), new $String(ctxt[0].Compiler)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + pkgerr = _r$2; + /* } */ case 9: + case 5: + setPkga[0] = (function(badGoError, badGoFiles, ctxt, p, path$1, pkga, pkgtargetroot, setPkga, srcDir, tried) { return function Context·Import·func1() { + var _2, _tuple, dir, elem; + _2 = ctxt[0].Compiler; + if (_2 === ("gccgo")) { + _tuple = path.Split(p[0].ImportPath); + dir = _tuple[0]; + elem = _tuple[1]; + pkga[0] = pkgtargetroot[0] + "/" + dir + "lib" + elem + ".a"; + } else if (_2 === ("gc")) { + pkga[0] = pkgtargetroot[0] + "/" + p[0].ImportPath + ".a"; + } + }; })(badGoError, badGoFiles, ctxt, p, path$1, pkga, pkgtargetroot, setPkga, srcDir, tried); + $r = setPkga[0](); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + binaryOnly = false; + /* */ if (IsLocalImport(path$1[0])) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (IsLocalImport(path$1[0])) { */ case 12: + pkga[0] = ""; + /* */ if (srcDir[0] === "") { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (srcDir[0] === "") { */ case 15: + _r$3 = fmt.Errorf("import %q: import relative to unknown directory", new sliceType$2([new $String(path$1[0])])); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = [p[0], _r$3]; + $s = 18; case 18: return $24r$1; + /* } */ case 16: + _r$4 = ctxt[0].isAbsPath(path$1[0]); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (!_r$4) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (!_r$4) { */ case 19: + _r$5 = ctxt[0].joinPath(new sliceType([srcDir[0], path$1[0]])); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + p[0].Dir = _r$5; + /* } */ case 20: + inTestdata = (function(badGoError, badGoFiles, ctxt, p, path$1, pkga, pkgtargetroot, setPkga, srcDir, tried) { return function Context·Import·func2(sub) { + var sub; + return strings.Contains(sub, "/testdata/") || strings.HasSuffix(sub, "/testdata") || strings.HasPrefix(sub, "testdata/") || sub === "testdata"; + }; })(badGoError, badGoFiles, ctxt, p, path$1, pkga, pkgtargetroot, setPkga, srcDir, tried); + /* */ if (!(ctxt[0].GOROOT === "")) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (!(ctxt[0].GOROOT === "")) { */ case 23: + _r$6 = ctxt[0].joinPath(new sliceType([ctxt[0].GOROOT, "src"])); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + root = _r$6; + _r$7 = ctxt[0].hasSubdir(root, p[0].Dir); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple = _r$7; + sub = _tuple[0]; + ok = _tuple[1]; + if (!(ok)) { _v = false; $s = 29; continue s; } + _r$8 = inTestdata(sub); /* */ $s = 30; case 30: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _v = !_r$8; case 29: + /* */ if (_v) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (_v) { */ case 27: + p[0].Goroot = true; + p[0].ImportPath = sub; + p[0].Root = ctxt[0].GOROOT; + $r = setPkga[0](); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Found */ $s = 32; continue; + /* } */ case 28: + /* } */ case 24: + _r$9 = ctxt[0].gopath(); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + all = _r$9; + _ref = all; + _i = 0; + /* while (true) { */ case 34: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 35; continue; } + i = _i; + root$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$10 = ctxt[0].joinPath(new sliceType([root$1, "src"])); /* */ $s = 36; case 36: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + rootsrc = _r$10; + _r$11 = ctxt[0].hasSubdir(rootsrc, p[0].Dir); /* */ $s = 37; case 37: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$1 = _r$11; + sub$1 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (!(ok$1)) { _v$1 = false; $s = 40; continue s; } + _r$12 = inTestdata(sub$1); /* */ $s = 41; case 41: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _v$1 = !_r$12; case 40: + /* */ if (_v$1) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (_v$1) { */ case 38: + /* */ if (!(ctxt[0].GOROOT === "") && !(ctxt[0].Compiler === "gccgo")) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (!(ctxt[0].GOROOT === "") && !(ctxt[0].Compiler === "gccgo")) { */ case 42: + _r$13 = ctxt[0].joinPath(new sliceType([ctxt[0].GOROOT, "src", sub$1])); /* */ $s = 44; case 44: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + dir = _r$13; + _r$14 = ctxt[0].isDir(dir); /* */ $s = 47; case 47: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + /* */ if (_r$14) { $s = 45; continue; } + /* */ $s = 46; continue; + /* if (_r$14) { */ case 45: + p[0].ConflictDir = dir; + /* goto Found */ $s = 32; continue; + /* } */ case 46: + /* } */ case 43: + _ref$1 = $subslice(all, 0, i); + _i$1 = 0; + /* while (true) { */ case 48: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 49; continue; } + earlyRoot = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r$15 = ctxt[0].joinPath(new sliceType([earlyRoot, "src", sub$1])); /* */ $s = 50; case 50: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + dir$1 = _r$15; + _r$16 = ctxt[0].isDir(dir$1); /* */ $s = 53; case 53: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + /* */ if (_r$16) { $s = 51; continue; } + /* */ $s = 52; continue; + /* if (_r$16) { */ case 51: + p[0].ConflictDir = dir$1; + /* goto Found */ $s = 32; continue; + /* } */ case 52: + _i$1++; + $s = 48; continue; + case 49: + p[0].ImportPath = sub$1; + p[0].Root = root$1; + $r = setPkga[0](); /* */ $s = 54; case 54: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* goto Found */ $s = 32; continue; + /* } */ case 39: + _i++; + $s = 34; continue; + case 35: + $s = 14; continue; + /* } else { */ case 13: + /* */ if (strings.HasPrefix(path$1[0], "/")) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if (strings.HasPrefix(path$1[0], "/")) { */ case 55: + _r$17 = fmt.Errorf("import %q: cannot import absolute path", new sliceType$2([new $String(path$1[0])])); /* */ $s = 57; case 57: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + $24r$2 = [p[0], _r$17]; + $s = 58; case 58: return $24r$2; + /* } */ case 56: + _r$18 = ctxt[0].importGo(p[0], path$1[0], srcDir[0], mode); /* */ $s = 59; case 59: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + err = _r$18; + /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 60; continue; } + /* */ if (!($interfaceIsEqual(err, errNoModules))) { $s = 61; continue; } + /* */ $s = 62; continue; + /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 60: + /* goto Found */ $s = 32; continue; + $s = 62; continue; + /* } else if (!($interfaceIsEqual(err, errNoModules))) { */ case 61: + $s = -1; return [p[0], err]; + /* } */ case 62: + _r$19 = ctxt[0].gopath(); /* */ $s = 63; case 63: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + gopath$1 = _r$19; + tried[0] = new structType.ptr(sliceType.nil, "", sliceType.nil); + /* */ if ((((mode & 8) >>> 0) === 0) && !(srcDir[0] === "")) { $s = 64; continue; } + /* */ $s = 65; continue; + /* if ((((mode & 8) >>> 0) === 0) && !(srcDir[0] === "")) { */ case 64: + searchVendor = (function(badGoError, badGoFiles, ctxt, p, path$1, pkga, pkgtargetroot, setPkga, srcDir, tried) { return function Context·Import·func3(root$2, isGoroot) { + var {_r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _tuple$2, _v$2, dir$2, i$1, isGoroot, ok$2, root$2, sub$2, vendor, $s, $r, $c} = $restore(this, {root$2, isGoroot}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$20 = ctxt[0].hasSubdir(root$2, srcDir[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _tuple$2 = _r$20; + sub$2 = _tuple$2[0]; + ok$2 = _tuple$2[1]; + if (!ok$2 || !strings.HasPrefix(sub$2, "src/") || strings.Contains(sub$2, "/testdata/")) { + $s = -1; return false; + } + /* while (true) { */ case 2: + _r$21 = ctxt[0].joinPath(new sliceType([root$2, sub$2, "vendor"])); /* */ $s = 4; case 4: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + vendor = _r$21; + _r$22 = ctxt[0].isDir(vendor); /* */ $s = 7; case 7: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + /* */ if (_r$22) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_r$22) { */ case 5: + _r$23 = ctxt[0].joinPath(new sliceType([vendor, path$1[0]])); /* */ $s = 8; case 8: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + dir$2 = _r$23; + _r$24 = ctxt[0].isDir(dir$2); /* */ $s = 12; case 12: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + if (!(_r$24)) { _v$2 = false; $s = 11; continue s; } + _r$25 = hasGoFiles(ctxt[0], dir$2); /* */ $s = 13; case 13: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _v$2 = _r$25; case 11: + /* */ if (_v$2) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (_v$2) { */ case 9: + p[0].Dir = dir$2; + p[0].ImportPath = strings.TrimPrefix(path.Join(new sliceType([sub$2, "vendor", path$1[0]])), "src/"); + p[0].Goroot = isGoroot; + p[0].Root = root$2; + $r = setPkga[0](); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return true; + /* } */ case 10: + tried[0].vendor = $append(tried[0].vendor, dir$2); + /* } */ case 6: + i$1 = strings.LastIndex(sub$2, "/"); + if (i$1 < 0) { + /* break; */ $s = 3; continue; + } + sub$2 = $substring(sub$2, 0, i$1); + $s = 2; continue; + case 3: + $s = -1; return false; + /* */ } return; } var $f = {$blk: Context·Import·func3, $c: true, $r, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _tuple$2, _v$2, dir$2, i$1, isGoroot, ok$2, root$2, sub$2, vendor, $s};return $f; + }; })(badGoError, badGoFiles, ctxt, p, path$1, pkga, pkgtargetroot, setPkga, srcDir, tried); + if (!(!(ctxt[0].Compiler === "gccgo") && !(ctxt[0].GOROOT === ""))) { _v$2 = false; $s = 68; continue s; } + _r$20 = searchVendor(ctxt[0].GOROOT, true); /* */ $s = 69; case 69: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + _v$2 = _r$20; case 68: + /* */ if (_v$2) { $s = 66; continue; } + /* */ $s = 67; continue; + /* if (_v$2) { */ case 66: + /* goto Found */ $s = 32; continue; + /* } */ case 67: + _ref$2 = gopath$1; + _i$2 = 0; + /* while (true) { */ case 70: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 71; continue; } + root$2 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + _r$21 = searchVendor(root$2, false); /* */ $s = 74; case 74: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + /* */ if (_r$21) { $s = 72; continue; } + /* */ $s = 73; continue; + /* if (_r$21) { */ case 72: + /* goto Found */ $s = 32; continue; + /* } */ case 73: + _i$2++; + $s = 70; continue; + case 71: + /* } */ case 65: + /* */ if (!(ctxt[0].GOROOT === "")) { $s = 75; continue; } + /* */ $s = 76; continue; + /* if (!(ctxt[0].GOROOT === "")) { */ case 75: + gorootFirst = srcDir[0] === "" || !strings.HasPrefix(path$1[0], "vendor/"); + /* */ if (!gorootFirst) { $s = 77; continue; } + /* */ $s = 78; continue; + /* if (!gorootFirst) { */ case 77: + _r$22 = ctxt[0].hasSubdir(ctxt[0].GOROOT, srcDir[0]); /* */ $s = 79; case 79: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + _tuple$2 = _r$22; + gorootFirst = _tuple$2[1]; + /* } */ case 78: + /* */ if (gorootFirst) { $s = 80; continue; } + /* */ $s = 81; continue; + /* if (gorootFirst) { */ case 80: + _r$23 = ctxt[0].joinPath(new sliceType([ctxt[0].GOROOT, "src", path$1[0]])); /* */ $s = 82; case 82: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + dir$2 = _r$23; + /* */ if (!(ctxt[0].Compiler === "gccgo")) { $s = 83; continue; } + /* */ $s = 84; continue; + /* if (!(ctxt[0].Compiler === "gccgo")) { */ case 83: + _r$24 = ctxt[0].isDir(dir$2); /* */ $s = 85; case 85: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + isDir$1 = _r$24; + if (!(!isDir$1 && !((((mode & 2) >>> 0) === 0)) && !(pkga[0] === ""))) { _v$3 = false; $s = 86; continue s; } + _r$25 = ctxt[0].joinPath(new sliceType([ctxt[0].GOROOT, pkga[0]])); /* */ $s = 87; case 87: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$26 = ctxt[0].isFile(_r$25); /* */ $s = 88; case 88: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + _v$3 = _r$26; case 86: + binaryOnly = _v$3; + /* */ if (isDir$1 || binaryOnly) { $s = 89; continue; } + /* */ $s = 90; continue; + /* if (isDir$1 || binaryOnly) { */ case 89: + p[0].Dir = dir$2; + p[0].Goroot = true; + p[0].Root = ctxt[0].GOROOT; + /* goto Found */ $s = 32; continue; + /* } */ case 90: + /* } */ case 84: + tried[0].goroot = dir$2; + /* } */ case 81: + if (!(ctxt[0].Compiler === "gccgo")) { _v$4 = false; $s = 93; continue s; } + _r$27 = goroot.IsStandardPackage(ctxt[0].GOROOT, ctxt[0].Compiler, path$1[0]); /* */ $s = 94; case 94: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + _v$4 = _r$27; case 93: + /* */ if (_v$4) { $s = 91; continue; } + /* */ $s = 92; continue; + /* if (_v$4) { */ case 91: + _r$28 = ctxt[0].joinPath(new sliceType([ctxt[0].GOROOT, "src", path$1[0]])); /* */ $s = 95; case 95: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + p[0].Dir = _r$28; + p[0].Goroot = true; + p[0].Root = ctxt[0].GOROOT; + /* goto Found */ $s = 32; continue; + /* } */ case 92: + /* } */ case 76: + _ref$3 = gopath$1; + _i$3 = 0; + /* while (true) { */ case 96: + /* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 97; continue; } + root$3 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]); + _r$29 = ctxt[0].joinPath(new sliceType([root$3, "src", path$1[0]])); /* */ $s = 98; case 98: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + dir$3 = _r$29; + _r$30 = ctxt[0].isDir(dir$3); /* */ $s = 99; case 99: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + isDir$2 = _r$30; + if (!(!isDir$2 && !((((mode & 2) >>> 0) === 0)) && !(pkga[0] === ""))) { _v$5 = false; $s = 100; continue s; } + _r$31 = ctxt[0].joinPath(new sliceType([root$3, pkga[0]])); /* */ $s = 101; case 101: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + _r$32 = ctxt[0].isFile(_r$31); /* */ $s = 102; case 102: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + _v$5 = _r$32; case 100: + binaryOnly = _v$5; + /* */ if (isDir$2 || binaryOnly) { $s = 103; continue; } + /* */ $s = 104; continue; + /* if (isDir$2 || binaryOnly) { */ case 103: + p[0].Dir = dir$3; + p[0].Root = root$3; + /* goto Found */ $s = 32; continue; + /* } */ case 104: + tried[0].gopath = $append(tried[0].gopath, dir$3); + _i$3++; + $s = 96; continue; + case 97: + /* */ if (!(ctxt[0].GOROOT === "") && tried[0].goroot === "") { $s = 105; continue; } + /* */ $s = 106; continue; + /* if (!(ctxt[0].GOROOT === "") && tried[0].goroot === "") { */ case 105: + _r$33 = ctxt[0].joinPath(new sliceType([ctxt[0].GOROOT, "src", path$1[0]])); /* */ $s = 107; case 107: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + dir$4 = _r$33; + /* */ if (!(ctxt[0].Compiler === "gccgo")) { $s = 108; continue; } + /* */ $s = 109; continue; + /* if (!(ctxt[0].Compiler === "gccgo")) { */ case 108: + _r$34 = ctxt[0].isDir(dir$4); /* */ $s = 110; case 110: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + isDir$3 = _r$34; + if (!(!isDir$3 && !((((mode & 2) >>> 0) === 0)) && !(pkga[0] === ""))) { _v$6 = false; $s = 111; continue s; } + _r$35 = ctxt[0].joinPath(new sliceType([ctxt[0].GOROOT, pkga[0]])); /* */ $s = 112; case 112: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; } + _r$36 = ctxt[0].isFile(_r$35); /* */ $s = 113; case 113: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; } + _v$6 = _r$36; case 111: + binaryOnly = _v$6; + /* */ if (isDir$3 || binaryOnly) { $s = 114; continue; } + /* */ $s = 115; continue; + /* if (isDir$3 || binaryOnly) { */ case 114: + p[0].Dir = dir$4; + p[0].Goroot = true; + p[0].Root = ctxt[0].GOROOT; + /* goto Found */ $s = 32; continue; + /* } */ case 115: + /* } */ case 109: + tried[0].goroot = dir$4; + /* } */ case 106: + paths = sliceType.nil; + format = "\t%s (vendor tree)"; + _ref$4 = tried[0].vendor; + _i$4 = 0; + /* while (true) { */ case 116: + /* if (!(_i$4 < _ref$4.$length)) { break; } */ if(!(_i$4 < _ref$4.$length)) { $s = 117; continue; } + dir$5 = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$4]); + _r$37 = fmt.Sprintf(format, new sliceType$2([new $String(dir$5)])); /* */ $s = 118; case 118: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; } + paths = $append(paths, _r$37); + format = "\t%s"; + _i$4++; + $s = 116; continue; + case 117: + /* */ if (!(tried[0].goroot === "")) { $s = 119; continue; } + /* */ $s = 120; continue; + /* if (!(tried[0].goroot === "")) { */ case 119: + _r$38 = fmt.Sprintf("\t%s (from $GOROOT)", new sliceType$2([new $String(tried[0].goroot)])); /* */ $s = 122; case 122: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; } + paths = $append(paths, _r$38); + $s = 121; continue; + /* } else { */ case 120: + paths = $append(paths, "\t($GOROOT not set)"); + /* } */ case 121: + format = "\t%s (from $GOPATH)"; + _ref$5 = tried[0].gopath; + _i$5 = 0; + /* while (true) { */ case 123: + /* if (!(_i$5 < _ref$5.$length)) { break; } */ if(!(_i$5 < _ref$5.$length)) { $s = 124; continue; } + dir$6 = ((_i$5 < 0 || _i$5 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$5]); + _r$39 = fmt.Sprintf(format, new sliceType$2([new $String(dir$6)])); /* */ $s = 125; case 125: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; } + paths = $append(paths, _r$39); + format = "\t%s"; + _i$5++; + $s = 123; continue; + case 124: + if (tried[0].gopath.$length === 0) { + paths = $append(paths, "\t($GOPATH not set. For more details see: 'go help gopath')"); + } + _r$40 = fmt.Errorf("cannot find package %q in any of:\n%s", new sliceType$2([new $String(path$1[0]), new $String(strings.Join(paths, "\n"))])); /* */ $s = 126; case 126: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; } + $24r$3 = [p[0], _r$40]; + $s = 127; case 127: return $24r$3; + /* } */ case 14: + /* Found: */ case 32: + /* */ if (!(p[0].Root === "")) { $s = 128; continue; } + /* */ $s = 129; continue; + /* if (!(p[0].Root === "")) { */ case 128: + _r$41 = ctxt[0].joinPath(new sliceType([p[0].Root, "src"])); /* */ $s = 130; case 130: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; } + p[0].SrcRoot = _r$41; + _r$42 = ctxt[0].joinPath(new sliceType([p[0].Root, "pkg"])); /* */ $s = 131; case 131: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; } + p[0].PkgRoot = _r$42; + _r$43 = ctxt[0].joinPath(new sliceType([p[0].Root, "bin"])); /* */ $s = 132; case 132: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; } + p[0].BinDir = _r$43; + /* */ if (!(pkga[0] === "")) { $s = 133; continue; } + /* */ $s = 134; continue; + /* if (!(pkga[0] === "")) { */ case 133: + _r$44 = ctxt[0].joinPath(new sliceType([p[0].Root, pkgtargetroot[0]])); /* */ $s = 135; case 135: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; } + p[0].PkgTargetRoot = _r$44; + if (!p[0].Goroot) { _v$7 = true; $s = 138; continue s; } + _r$45 = installgoroot.Value(); /* */ $s = 139; case 139: if($c) { $c = false; _r$45 = _r$45.$blk(); } if (_r$45 && _r$45.$blk !== undefined) { break s; } + _v$7 = _r$45 === "all" && !(p[0].ImportPath === "unsafe") && !(p[0].ImportPath === "builtin"); case 138: + /* */ if (_v$7) { $s = 136; continue; } + /* */ $s = 137; continue; + /* if (_v$7) { */ case 136: + _r$46 = ctxt[0].joinPath(new sliceType([p[0].Root, pkga[0]])); /* */ $s = 140; case 140: if($c) { $c = false; _r$46 = _r$46.$blk(); } if (_r$46 && _r$46.$blk !== undefined) { break s; } + p[0].PkgObj = _r$46; + /* } */ case 137: + /* } */ case 134: + /* } */ case 129: + if (!(IsLocalImport(path$1[0]))) { _v$8 = false; $s = 143; continue s; } + _r$47 = ctxt[0].isDir(p[0].Dir); /* */ $s = 144; case 144: if($c) { $c = false; _r$47 = _r$47.$blk(); } if (_r$47 && _r$47.$blk !== undefined) { break s; } + _v$8 = !_r$47; case 143: + /* */ if (_v$8) { $s = 141; continue; } + /* */ $s = 142; continue; + /* if (_v$8) { */ case 141: + if (ctxt[0].Compiler === "gccgo" && p[0].Goroot) { + $s = -1; return [p[0], $ifaceNil]; + } + _r$48 = fmt.Errorf("cannot find package %q in:\n\t%s", new sliceType$2([new $String(p[0].ImportPath), new $String(p[0].Dir)])); /* */ $s = 145; case 145: if($c) { $c = false; _r$48 = _r$48.$blk(); } if (_r$48 && _r$48.$blk !== undefined) { break s; } + $24r$4 = [p[0], _r$48]; + $s = 146; case 146: return $24r$4; + /* } */ case 142: + if (!((((mode & 1) >>> 0) === 0))) { + $s = -1; return [p[0], pkgerr]; + } + if (binaryOnly && !(((((mode & 2) >>> 0)) === 0))) { + $s = -1; return [p[0], pkgerr]; + } + if (ctxt[0].Compiler === "gccgo" && p[0].Goroot) { + $s = -1; return [p[0], $ifaceNil]; + } + _r$49 = ctxt[0].readDir(p[0].Dir); /* */ $s = 147; case 147: if($c) { $c = false; _r$49 = _r$49.$blk(); } if (_r$49 && _r$49.$blk !== undefined) { break s; } + _tuple$3 = _r$49; + dirs = _tuple$3[0]; + err$1 = _tuple$3[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [p[0], err$1]; + } + badGoError[0] = $ifaceNil; + badGoFiles[0] = new $global.Map(); + badGoFile = (function(badGoError, badGoFiles, ctxt, p, path$1, pkga, pkgtargetroot, setPkga, srcDir, tried) { return function Context·Import·func4(name, err$2) { + var _entry, _key, err$2, name; + if ($interfaceIsEqual(badGoError[0], $ifaceNil)) { + badGoError[0] = err$2; + } + if (!(_entry = $mapIndex(badGoFiles[0],$String.keyFor(name)), _entry !== undefined ? _entry.v : false)) { + p[0].InvalidGoFiles = $append(p[0].InvalidGoFiles, name); + _key = name; (badGoFiles[0] || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: true }); + } + }; })(badGoError, badGoFiles, ctxt, p, path$1, pkga, pkgtargetroot, setPkga, srcDir, tried); + Sfiles = sliceType.nil; + _tmp = ""; + _tmp$1 = ""; + firstFile = _tmp; + firstCommentFile = _tmp$1; + embedPos = new $global.Map(); + testEmbedPos = new $global.Map(); + xTestEmbedPos = new $global.Map(); + importPos = new $global.Map(); + testImportPos = new $global.Map(); + xTestImportPos = new $global.Map(); + allTags = new $global.Map(); + fset = token.NewFileSet(); + _ref$6 = dirs; + _i$6 = 0; + /* while (true) { */ case 148: + /* if (!(_i$6 < _ref$6.$length)) { break; } */ if(!(_i$6 < _ref$6.$length)) { $s = 149; continue; } + d = ((_i$6 < 0 || _i$6 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$6]); + _r$50 = d.IsDir(); /* */ $s = 152; case 152: if($c) { $c = false; _r$50 = _r$50.$blk(); } if (_r$50 && _r$50.$blk !== undefined) { break s; } + /* */ if (_r$50) { $s = 150; continue; } + /* */ $s = 151; continue; + /* if (_r$50) { */ case 150: + _i$6++; + /* continue; */ $s = 148; continue; + /* } */ case 151: + _r$51 = d.Type(); /* */ $s = 155; case 155: if($c) { $c = false; _r$51 = _r$51.$blk(); } if (_r$51 && _r$51.$blk !== undefined) { break s; } + /* */ if (_r$51 === 134217728) { $s = 153; continue; } + /* */ $s = 154; continue; + /* if (_r$51 === 134217728) { */ case 153: + _arg = p[0].Dir; + _r$52 = d.Name(); /* */ $s = 158; case 158: if($c) { $c = false; _r$52 = _r$52.$blk(); } if (_r$52 && _r$52.$blk !== undefined) { break s; } + _arg$1 = _r$52; + _r$53 = ctxt[0].joinPath(new sliceType([_arg, _arg$1])); /* */ $s = 159; case 159: if($c) { $c = false; _r$53 = _r$53.$blk(); } if (_r$53 && _r$53.$blk !== undefined) { break s; } + _r$54 = ctxt[0].isDir(_r$53); /* */ $s = 160; case 160: if($c) { $c = false; _r$54 = _r$54.$blk(); } if (_r$54 && _r$54.$blk !== undefined) { break s; } + /* */ if (_r$54) { $s = 156; continue; } + /* */ $s = 157; continue; + /* if (_r$54) { */ case 156: + _i$6++; + /* continue; */ $s = 148; continue; + /* } */ case 157: + /* } */ case 154: + _r$55 = d.Name(); /* */ $s = 161; case 161: if($c) { $c = false; _r$55 = _r$55.$blk(); } if (_r$55 && _r$55.$blk !== undefined) { break s; } + name = _r$55; + ext = nameExt(name); + _r$56 = ctxt[0].matchFile(p[0].Dir, name, allTags, (p[0].$ptr_BinaryOnly || (p[0].$ptr_BinaryOnly = new ptrType$5(function() { return this.$target.BinaryOnly; }, function($v) { this.$target.BinaryOnly = $v; }, p[0]))), fset); /* */ $s = 162; case 162: if($c) { $c = false; _r$56 = _r$56.$blk(); } if (_r$56 && _r$56.$blk !== undefined) { break s; } + _tuple$4 = _r$56; + info = _tuple$4[0]; + err$2 = _tuple$4[1]; + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil)) && strings.HasSuffix(name, ".go")) { $s = 163; continue; } + /* */ $s = 164; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil)) && strings.HasSuffix(name, ".go")) { */ case 163: + $r = badGoFile(name, err$2); /* */ $s = 165; case 165: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$6++; + /* continue; */ $s = 148; continue; + /* } */ case 164: + if (info === ptrType$6.nil) { + if (strings.HasPrefix(name, "_") || strings.HasPrefix(name, ".")) { + } else if (ext === ".go") { + p[0].IgnoredGoFiles = $append(p[0].IgnoredGoFiles, name); + } else if (!(fileListForExt(p[0], ext) === ptrType$7.nil)) { + p[0].IgnoredOtherFiles = $append(p[0].IgnoredOtherFiles, name); + } + _i$6++; + /* continue; */ $s = 148; continue; + } + _3 = ext; + if (_3 === (".go")) { + } else if (_3 === (".S") || _3 === (".sx")) { + Sfiles = $append(Sfiles, name); + _i$6++; + /* continue; */ $s = 148; continue; + } else { + list = fileListForExt(p[0], ext); + if (!(list === ptrType$7.nil)) { + list.$set($append(list.$get(), name)); + } + _i$6++; + /* continue; */ $s = 148; continue; + } + _tmp$2 = info.header; + _tmp$3 = info.name; + data = _tmp$2; + filename = _tmp$3; + /* */ if (!($interfaceIsEqual(info.parseErr, $ifaceNil))) { $s = 166; continue; } + /* */ $s = 167; continue; + /* if (!($interfaceIsEqual(info.parseErr, $ifaceNil))) { */ case 166: + $r = badGoFile(name, info.parseErr); /* */ $s = 168; case 168: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 167: + pkg = ""; + if (!(info.parsed === ptrType$8.nil)) { + pkg = info.parsed.Name.Name; + if (pkg === "documentation") { + p[0].IgnoredGoFiles = $append(p[0].IgnoredGoFiles, name); + _i$6++; + /* continue; */ $s = 148; continue; + } + } + isTest = strings.HasSuffix(name, "_test.go"); + isXTest = false; + if (isTest && strings.HasSuffix(pkg, "_test") && !(p[0].Name === pkg)) { + isXTest = true; + pkg = $substring(pkg, 0, (pkg.length - 5 >> 0)); + } + /* */ if (p[0].Name === "") { $s = 169; continue; } + /* */ if (!(pkg === p[0].Name)) { $s = 170; continue; } + /* */ $s = 171; continue; + /* if (p[0].Name === "") { */ case 169: + p[0].Name = pkg; + firstFile = name; + $s = 171; continue; + /* } else if (!(pkg === p[0].Name)) { */ case 170: + $r = badGoFile(name, new MultiplePackageError.ptr(p[0].Dir, new sliceType([p[0].Name, pkg]), new sliceType([firstFile, name]))); /* */ $s = 172; case 172: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 171: + /* */ if (!(info.parsed === ptrType$8.nil) && !(info.parsed.Doc === ptrType$4.nil) && p[0].Doc === "" && !isTest && !isXTest) { $s = 173; continue; } + /* */ $s = 174; continue; + /* if (!(info.parsed === ptrType$8.nil) && !(info.parsed.Doc === ptrType$4.nil) && p[0].Doc === "" && !isTest && !isXTest) { */ case 173: + _r$57 = doc.Synopsis(info.parsed.Doc.Text()); /* */ $s = 175; case 175: if($c) { $c = false; _r$57 = _r$57.$blk(); } if (_r$57 && _r$57.$blk !== undefined) { break s; } + p[0].Doc = _r$57; + /* } */ case 174: + /* */ if (!((((mode & 4) >>> 0) === 0))) { $s = 176; continue; } + /* */ $s = 177; continue; + /* if (!((((mode & 4) >>> 0) === 0))) { */ case 176: + _r$58 = findImportComment(data); /* */ $s = 178; case 178: if($c) { $c = false; _r$58 = _r$58.$blk(); } if (_r$58 && _r$58.$blk !== undefined) { break s; } + _tuple$5 = _r$58; + qcom = _tuple$5[0]; + line = _tuple$5[1]; + /* */ if (!((line === 0))) { $s = 179; continue; } + /* */ $s = 180; continue; + /* if (!((line === 0))) { */ case 179: + _tuple$6 = strconv.Unquote(qcom); + com = _tuple$6[0]; + err$3 = _tuple$6[1]; + /* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 181; continue; } + /* */ if (p[0].ImportComment === "") { $s = 182; continue; } + /* */ if (!(p[0].ImportComment === com)) { $s = 183; continue; } + /* */ $s = 184; continue; + /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 181: + _arg$2 = name; + _r$59 = fmt.Errorf("%s:%d: cannot parse import comment", new sliceType$2([new $String(filename), new $Int(line)])); /* */ $s = 185; case 185: if($c) { $c = false; _r$59 = _r$59.$blk(); } if (_r$59 && _r$59.$blk !== undefined) { break s; } + _arg$3 = _r$59; + $r = badGoFile(_arg$2, _arg$3); /* */ $s = 186; case 186: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 184; continue; + /* } else if (p[0].ImportComment === "") { */ case 182: + p[0].ImportComment = com; + firstCommentFile = name; + $s = 184; continue; + /* } else if (!(p[0].ImportComment === com)) { */ case 183: + _arg$4 = name; + _r$60 = fmt.Errorf("found import comments %q (%s) and %q (%s) in %s", new sliceType$2([new $String(p[0].ImportComment), new $String(firstCommentFile), new $String(com), new $String(name), new $String(p[0].Dir)])); /* */ $s = 187; case 187: if($c) { $c = false; _r$60 = _r$60.$blk(); } if (_r$60 && _r$60.$blk !== undefined) { break s; } + _arg$5 = _r$60; + $r = badGoFile(_arg$4, _arg$5); /* */ $s = 188; case 188: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 184: + /* } */ case 180: + /* } */ case 177: + isCgo = false; + _ref$7 = info.imports; + _i$7 = 0; + /* while (true) { */ case 189: + /* if (!(_i$7 < _ref$7.$length)) { break; } */ if(!(_i$7 < _ref$7.$length)) { $s = 190; continue; } + imp = $clone(((_i$7 < 0 || _i$7 >= _ref$7.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$7.$array[_ref$7.$offset + _i$7]), fileImport); + /* */ if (imp.path === "C") { $s = 191; continue; } + /* */ $s = 192; continue; + /* if (imp.path === "C") { */ case 191: + /* */ if (isTest) { $s = 193; continue; } + /* */ $s = 194; continue; + /* if (isTest) { */ case 193: + _arg$6 = name; + _r$61 = fmt.Errorf("use of cgo in test %s not supported", new sliceType$2([new $String(filename)])); /* */ $s = 195; case 195: if($c) { $c = false; _r$61 = _r$61.$blk(); } if (_r$61 && _r$61.$blk !== undefined) { break s; } + _arg$7 = _r$61; + $r = badGoFile(_arg$6, _arg$7); /* */ $s = 196; case 196: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$7++; + /* continue; */ $s = 189; continue; + /* } */ case 194: + isCgo = true; + /* */ if (!(imp.doc === ptrType$4.nil)) { $s = 197; continue; } + /* */ $s = 198; continue; + /* if (!(imp.doc === ptrType$4.nil)) { */ case 197: + _r$62 = ctxt[0].saveCgo(filename, p[0], imp.doc); /* */ $s = 199; case 199: if($c) { $c = false; _r$62 = _r$62.$blk(); } if (_r$62 && _r$62.$blk !== undefined) { break s; } + err$4 = _r$62; + /* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 200; continue; } + /* */ $s = 201; continue; + /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 200: + $r = badGoFile(name, err$4); /* */ $s = 202; case 202: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 201: + /* } */ case 198: + /* } */ case 192: + _i$7++; + $s = 189; continue; + case 190: + fileList = ptrType$7.nil; + _tmp$4 = false; + _tmp$5 = false; + importMap = _tmp$4; + embedMap = _tmp$5; + if (isCgo) { + _key = "cgo"; (allTags || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: true }); + if (ctxt[0].CgoEnabled) { + fileList = (p[0].$ptr_CgoFiles || (p[0].$ptr_CgoFiles = new ptrType$7(function() { return this.$target.CgoFiles; }, function($v) { this.$target.CgoFiles = $v; }, p[0]))); + importMap = importPos; + embedMap = embedPos; + } else { + fileList = (p[0].$ptr_IgnoredGoFiles || (p[0].$ptr_IgnoredGoFiles = new ptrType$7(function() { return this.$target.IgnoredGoFiles; }, function($v) { this.$target.IgnoredGoFiles = $v; }, p[0]))); + } + } else if (isXTest) { + fileList = (p[0].$ptr_XTestGoFiles || (p[0].$ptr_XTestGoFiles = new ptrType$7(function() { return this.$target.XTestGoFiles; }, function($v) { this.$target.XTestGoFiles = $v; }, p[0]))); + importMap = xTestImportPos; + embedMap = xTestEmbedPos; + } else if (isTest) { + fileList = (p[0].$ptr_TestGoFiles || (p[0].$ptr_TestGoFiles = new ptrType$7(function() { return this.$target.TestGoFiles; }, function($v) { this.$target.TestGoFiles = $v; }, p[0]))); + importMap = testImportPos; + embedMap = testEmbedPos; + } else { + fileList = (p[0].$ptr_GoFiles || (p[0].$ptr_GoFiles = new ptrType$7(function() { return this.$target.GoFiles; }, function($v) { this.$target.GoFiles = $v; }, p[0]))); + importMap = importPos; + embedMap = embedPos; + } + fileList.$set($append(fileList.$get(), name)); + /* */ if (!(importMap === false)) { $s = 203; continue; } + /* */ $s = 204; continue; + /* if (!(importMap === false)) { */ case 203: + _ref$8 = info.imports; + _i$8 = 0; + /* while (true) { */ case 205: + /* if (!(_i$8 < _ref$8.$length)) { break; } */ if(!(_i$8 < _ref$8.$length)) { $s = 206; continue; } + imp$1 = $clone(((_i$8 < 0 || _i$8 >= _ref$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$8.$array[_ref$8.$offset + _i$8]), fileImport); + _r$63 = fset.Position(imp$1.pos); /* */ $s = 207; case 207: if($c) { $c = false; _r$63 = _r$63.$blk(); } if (_r$63 && _r$63.$blk !== undefined) { break s; } + _key$1 = imp$1.path; (importMap || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$1), { k: _key$1, v: $append((_entry = $mapIndex(importMap,$String.keyFor(imp$1.path)), _entry !== undefined ? _entry.v : sliceType$6.nil), _r$63) }); + _i$8++; + $s = 205; continue; + case 206: + /* } */ case 204: + if (!(embedMap === false)) { + _ref$9 = info.embeds; + _i$9 = 0; + while (true) { + if (!(_i$9 < _ref$9.$length)) { break; } + emb = $clone(((_i$9 < 0 || _i$9 >= _ref$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$9.$array[_ref$9.$offset + _i$9]), fileEmbed); + _key$2 = emb.pattern; (embedMap || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$2), { k: _key$2, v: $append((_entry$1 = $mapIndex(embedMap,$String.keyFor(emb.pattern)), _entry$1 !== undefined ? _entry$1.v : sliceType$6.nil), emb.pos) }); + _i$9++; + } + } + _i$6++; + $s = 148; continue; + case 149: + _ref$10 = allTags; + _i$10 = 0; + _keys = _ref$10 ? _ref$10.keys() : undefined; + _size = _ref$10 ? _ref$10.size : 0; + while (true) { + if (!(_i$10 < _size)) { break; } + _key$3 = _keys.next().value; + _entry$2 = _ref$10.get(_key$3); + if (_entry$2 === undefined) { + _i$10++; + continue; + } + tag = _entry$2.k; + p[0].AllTags = $append(p[0].AllTags, tag); + _i$10++; + } + $r = sort.Strings(p[0].AllTags); /* */ $s = 208; case 208: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$64 = cleanDecls(embedPos); /* */ $s = 209; case 209: if($c) { $c = false; _r$64 = _r$64.$blk(); } if (_r$64 && _r$64.$blk !== undefined) { break s; } + _tuple$7 = _r$64; + p[0].EmbedPatterns = _tuple$7[0]; + p[0].EmbedPatternPos = _tuple$7[1]; + _r$65 = cleanDecls(testEmbedPos); /* */ $s = 210; case 210: if($c) { $c = false; _r$65 = _r$65.$blk(); } if (_r$65 && _r$65.$blk !== undefined) { break s; } + _tuple$8 = _r$65; + p[0].TestEmbedPatterns = _tuple$8[0]; + p[0].TestEmbedPatternPos = _tuple$8[1]; + _r$66 = cleanDecls(xTestEmbedPos); /* */ $s = 211; case 211: if($c) { $c = false; _r$66 = _r$66.$blk(); } if (_r$66 && _r$66.$blk !== undefined) { break s; } + _tuple$9 = _r$66; + p[0].XTestEmbedPatterns = _tuple$9[0]; + p[0].XTestEmbedPatternPos = _tuple$9[1]; + _r$67 = cleanDecls(importPos); /* */ $s = 212; case 212: if($c) { $c = false; _r$67 = _r$67.$blk(); } if (_r$67 && _r$67.$blk !== undefined) { break s; } + _tuple$10 = _r$67; + p[0].Imports = _tuple$10[0]; + p[0].ImportPos = _tuple$10[1]; + _r$68 = cleanDecls(testImportPos); /* */ $s = 213; case 213: if($c) { $c = false; _r$68 = _r$68.$blk(); } if (_r$68 && _r$68.$blk !== undefined) { break s; } + _tuple$11 = _r$68; + p[0].TestImports = _tuple$11[0]; + p[0].TestImportPos = _tuple$11[1]; + _r$69 = cleanDecls(xTestImportPos); /* */ $s = 214; case 214: if($c) { $c = false; _r$69 = _r$69.$blk(); } if (_r$69 && _r$69.$blk !== undefined) { break s; } + _tuple$12 = _r$69; + p[0].XTestImports = _tuple$12[0]; + p[0].XTestImportPos = _tuple$12[1]; + /* */ if (p[0].CgoFiles.$length > 0) { $s = 215; continue; } + /* */ $s = 216; continue; + /* if (p[0].CgoFiles.$length > 0) { */ case 215: + p[0].SFiles = $appendSlice(p[0].SFiles, Sfiles); + $r = sort.Strings(p[0].SFiles); /* */ $s = 218; case 218: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 217; continue; + /* } else { */ case 216: + p[0].IgnoredOtherFiles = $appendSlice(p[0].IgnoredOtherFiles, Sfiles); + $r = sort.Strings(p[0].IgnoredOtherFiles); /* */ $s = 219; case 219: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 217: + if (!($interfaceIsEqual(badGoError[0], $ifaceNil))) { + $s = -1; return [p[0], badGoError[0]]; + } + if ((((p[0].GoFiles.$length + p[0].CgoFiles.$length >> 0) + p[0].TestGoFiles.$length >> 0) + p[0].XTestGoFiles.$length >> 0) === 0) { + $s = -1; return [p[0], new NoGoError.ptr(p[0].Dir)]; + } + $s = -1; return [p[0], pkgerr]; + /* */ } return; } var $f = {$blk: Import$1, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, Sfiles, _1, _3, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _entry, _entry$1, _entry$2, _i, _i$1, _i$10, _i$2, _i$3, _i$4, _i$5, _i$6, _i$7, _i$8, _i$9, _key, _key$1, _key$2, _key$3, _keys, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _r$5, _r$50, _r$51, _r$52, _r$53, _r$54, _r$55, _r$56, _r$57, _r$58, _r$59, _r$6, _r$60, _r$61, _r$62, _r$63, _r$64, _r$65, _r$66, _r$67, _r$68, _r$69, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$10, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _size, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, _v$7, _v$8, all, allTags, badGoError, badGoFile, badGoFiles, binaryOnly, com, ctxt, d, data, dir, dir$1, dir$2, dir$3, dir$4, dir$5, dir$6, dirs, earlyRoot, emb, embedMap, embedPos, err, err$1, err$2, err$3, err$4, ext, fileList, filename, firstCommentFile, firstFile, format, fset, gopath$1, gorootFirst, i, imp, imp$1, importMap, importPos, inTestdata, info, isCgo, isDir$1, isDir$2, isDir$3, isTest, isXTest, line, list, mode, name, ok, ok$1, p, path$1, paths, pkg, pkga, pkgerr, pkgtargetroot, qcom, root, root$1, root$2, root$3, rootsrc, searchVendor, setPkga, srcDir, sub, sub$1, suffix, tag, testEmbedPos, testImportPos, tried, xTestEmbedPos, xTestImportPos, $s};return $f; + }; + fileListForExt = function fileListForExt$1(p, ext) { + var _1, ext, p; + _1 = ext; + if (_1 === (".c")) { + return (p.$ptr_CFiles || (p.$ptr_CFiles = new ptrType$7(function() { return this.$target.CFiles; }, function($v) { this.$target.CFiles = $v; }, p))); + } else if (_1 === (".cc") || _1 === (".cpp") || _1 === (".cxx")) { + return (p.$ptr_CXXFiles || (p.$ptr_CXXFiles = new ptrType$7(function() { return this.$target.CXXFiles; }, function($v) { this.$target.CXXFiles = $v; }, p))); + } else if (_1 === (".m")) { + return (p.$ptr_MFiles || (p.$ptr_MFiles = new ptrType$7(function() { return this.$target.MFiles; }, function($v) { this.$target.MFiles = $v; }, p))); + } else if (_1 === (".h") || _1 === (".hh") || _1 === (".hpp") || _1 === (".hxx")) { + return (p.$ptr_HFiles || (p.$ptr_HFiles = new ptrType$7(function() { return this.$target.HFiles; }, function($v) { this.$target.HFiles = $v; }, p))); + } else if (_1 === (".f") || _1 === (".F") || _1 === (".for") || _1 === (".f90")) { + return (p.$ptr_FFiles || (p.$ptr_FFiles = new ptrType$7(function() { return this.$target.FFiles; }, function($v) { this.$target.FFiles = $v; }, p))); + } else if (_1 === (".s") || _1 === (".S") || _1 === (".sx")) { + return (p.$ptr_SFiles || (p.$ptr_SFiles = new ptrType$7(function() { return this.$target.SFiles; }, function($v) { this.$target.SFiles = $v; }, p))); + } else if (_1 === (".swig")) { + return (p.$ptr_SwigFiles || (p.$ptr_SwigFiles = new ptrType$7(function() { return this.$target.SwigFiles; }, function($v) { this.$target.SwigFiles = $v; }, p))); + } else if (_1 === (".swigcxx")) { + return (p.$ptr_SwigCXXFiles || (p.$ptr_SwigCXXFiles = new ptrType$7(function() { return this.$target.SwigCXXFiles; }, function($v) { this.$target.SwigCXXFiles = $v; }, p))); + } else if (_1 === (".syso")) { + return (p.$ptr_SysoFiles || (p.$ptr_SysoFiles = new ptrType$7(function() { return this.$target.SysoFiles; }, function($v) { this.$target.SysoFiles = $v; }, p))); + } + return ptrType$7.nil; + }; + $ptrType(Context).prototype.importGo = function importGo(p, path$1, srcDir, mode) { + var {$24r, $24r$1, $24r$2, _1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, absSrcDir, buf, cgo, cmd, ctxt, d, dir, dir$1, err, err$1, err$2, err$3, err$4, errStr, f, f$1, go111Module, goCmd, mode, ok, p, parent, path$1, srcDir, stderr, stdout, $s, $r, $c} = $restore(this, {p, path$1, srcDir, mode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + stderr = [stderr]; + stdout = [stdout]; + ctxt = this; + if (!((((mode & 2) >>> 0) === 0)) || !((((mode & 8) >>> 0) === 0)) || !(ctxt.JoinPath === $throwNilPointerError) || !(ctxt.SplitPathList === $throwNilPointerError) || !(ctxt.IsAbsPath === $throwNilPointerError) || !(ctxt.IsDir === $throwNilPointerError) || !(ctxt.HasSubdir === $throwNilPointerError) || !(ctxt.ReadDir === $throwNilPointerError) || !(ctxt.OpenFile === $throwNilPointerError) || !equal(ctxt.ToolTags, defaultToolTags) || !equal(ctxt.ReleaseTags, defaultReleaseTags)) { + $s = -1; return errNoModules; + } + if (ctxt.GOROOT === "") { + $s = -1; return errNoModules; + } + _r$1 = os.Getenv("GO111MODULE"); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + go111Module = _r$1; + _1 = go111Module; + if (_1 === ("off")) { + $s = -1; return errNoModules; + } + /* */ if (!(srcDir === "")) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(srcDir === "")) { */ case 2: + absSrcDir = ""; + /* */ if (filepath.IsAbs(srcDir)) { $s = 4; continue; } + /* */ if (!(ctxt.Dir === "")) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (filepath.IsAbs(srcDir)) { */ case 4: + absSrcDir = srcDir; + $s = 7; continue; + /* } else if (!(ctxt.Dir === "")) { */ case 5: + _r$2 = fmt.Errorf("go/build: Dir is non-empty, so relative srcDir is not allowed: %v", new sliceType$2([new $String(srcDir)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 9; case 9: return $24r; + /* } else { */ case 6: + err = $ifaceNil; + _r$3 = filepath.Abs(srcDir); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + absSrcDir = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return errNoModules; + } + /* } */ case 7: + _r$4 = ctxt.hasSubdir(filepath.Join(new sliceType([ctxt.GOROOT, "src"])), absSrcDir); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + ok = _tuple$1[1]; + if (ok) { + $s = -1; return errNoModules; + } + /* } */ case 3: + _r$5 = ctxt.joinPath(new sliceType([ctxt.GOROOT, "src", path$1])); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + dir = _r$5; + _r$6 = ctxt.isDir(dir); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (_r$6) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_r$6) { */ case 13: + $s = -1; return errNoModules; + /* } */ case 14: + /* */ if (go111Module === "auto") { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (go111Module === "auto") { */ case 16: + parent = ""; + err$1 = $ifaceNil; + /* */ if (ctxt.Dir === "") { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (ctxt.Dir === "") { */ case 18: + _r$7 = os.Getwd(); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$2 = _r$7; + parent = _tuple$2[0]; + err$1 = _tuple$2[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return errNoModules; + } + $s = 20; continue; + /* } else { */ case 19: + _r$8 = filepath.Abs(ctxt.Dir); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tuple$3 = _r$8; + parent = _tuple$3[0]; + err$1 = _tuple$3[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + /* } */ case 20: + /* while (true) { */ case 23: + _r$9 = ctxt.joinPath(new sliceType([parent, "go.mod"])); /* */ $s = 25; case 25: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$10 = ctxt.openFile(_r$9); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _tuple$4 = _r$10; + f = _tuple$4[0]; + err$2 = _tuple$4[1]; + /* */ if ($interfaceIsEqual(err$2, $ifaceNil)) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if ($interfaceIsEqual(err$2, $ifaceNil)) { */ case 27: + buf = $makeSlice(sliceType$1, 100); + _r$11 = f.Read(buf); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple$5 = _r$11; + err$3 = _tuple$5[1]; + _r$12 = f.Close(); /* */ $s = 30; case 30: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + _r$12; + if ($interfaceIsEqual(err$3, $ifaceNil) || $interfaceIsEqual(err$3, io.EOF)) { + /* break; */ $s = 24; continue; + } + /* } */ case 28: + d = filepath.Dir(parent); + if (d.length >= parent.length) { + $s = -1; return errNoModules; + } + parent = d; + $s = 23; continue; + case 24: + /* } */ case 17: + goCmd = filepath.Join(new sliceType([ctxt.GOROOT, "bin", "go"])); + _r$13 = exec.Command(goCmd, new sliceType(["list", "-e", "-compiler=" + ctxt.Compiler, "-tags=" + strings.Join(ctxt.BuildTags, ","), "-installsuffix=" + ctxt.InstallSuffix, "-f={{.Dir}}\n{{.ImportPath}}\n{{.Root}}\n{{.Goroot}}\n{{if .Error}}{{.Error}}{{end}}\n", "--", path$1])); /* */ $s = 31; case 31: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + cmd = _r$13; + if (!(ctxt.Dir === "")) { + cmd.Dir = ctxt.Dir; + } + _tmp = new strings.Builder.ptr(ptrType$9.nil, sliceType$1.nil); + _tmp$1 = new strings.Builder.ptr(ptrType$9.nil, sliceType$1.nil); + stdout[0] = $clone(_tmp, strings.Builder); + stderr[0] = $clone(_tmp$1, strings.Builder); + cmd.Stdout = stdout[0]; + cmd.Stderr = stderr[0]; + cgo = "0"; + if (ctxt.CgoEnabled) { + cgo = "1"; + } + _r$14 = cmd.Environ(); /* */ $s = 32; case 32: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + cmd.Env = $append(_r$14, "GOOS=" + ctxt.GOOS, "GOARCH=" + ctxt.GOARCH, "GOROOT=" + ctxt.GOROOT, "GOPATH=" + ctxt.GOPATH, "CGO_ENABLED=" + cgo); + _r$15 = cmd.Run(); /* */ $s = 33; case 33: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + err$4 = _r$15; + /* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 34: + _r$16 = fmt.Errorf("go/build: go list %s: %v\n%s\n", new sliceType$2([new $String(path$1), err$4, new $String(stderr[0].String())])); /* */ $s = 36; case 36: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + $24r$1 = _r$16; + $s = 37; case 37: return $24r$1; + /* } */ case 35: + f$1 = strings.SplitN(stdout[0].String(), "\n", 5); + /* */ if (!((f$1.$length === 5))) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (!((f$1.$length === 5))) { */ case 38: + _r$17 = fmt.Errorf("go/build: importGo %s: unexpected output:\n%s\n", new sliceType$2([new $String(path$1), new $String(stdout[0].String())])); /* */ $s = 40; case 40: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + $24r$2 = _r$17; + $s = 41; case 41: return $24r$2; + /* } */ case 39: + dir$1 = (0 >= f$1.$length ? ($throwRuntimeError("index out of range"), undefined) : f$1.$array[f$1.$offset + 0]); + _r$18 = strings.TrimSpace((4 >= f$1.$length ? ($throwRuntimeError("index out of range"), undefined) : f$1.$array[f$1.$offset + 4])); /* */ $s = 42; case 42: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + errStr = _r$18; + if (!(errStr === "") && dir$1 === "") { + $s = -1; return errors.New(errStr); + } + p.Dir = dir$1; + p.ImportPath = (1 >= f$1.$length ? ($throwRuntimeError("index out of range"), undefined) : f$1.$array[f$1.$offset + 1]); + p.Root = (2 >= f$1.$length ? ($throwRuntimeError("index out of range"), undefined) : f$1.$array[f$1.$offset + 2]); + p.Goroot = (3 >= f$1.$length ? ($throwRuntimeError("index out of range"), undefined) : f$1.$array[f$1.$offset + 3]) === "true"; + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: importGo, $c: true, $r, $24r, $24r$1, $24r$2, _1, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, absSrcDir, buf, cgo, cmd, ctxt, d, dir, dir$1, err, err$1, err$2, err$3, err$4, errStr, f, f$1, go111Module, goCmd, mode, ok, p, parent, path$1, srcDir, stderr, stdout, $s};return $f; + }; + equal = function equal$1(x, y) { + var _i, _ref, i, x, xi, y; + if (!((x.$length === y.$length))) { + return false; + } + _ref = x; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + xi = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(xi === ((i < 0 || i >= y.$length) ? ($throwRuntimeError("index out of range"), undefined) : y.$array[y.$offset + i]))) { + return false; + } + _i++; + } + return true; + }; + hasGoFiles = function hasGoFiles$1(ctxt, dir) { + var {_i, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, _v, ctxt, dir, ent, ents, $s, $r, $c} = $restore(this, {ctxt, dir}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = ctxt.readDir(dir); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + ents = _tuple[0]; + _ref = ents; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + ent = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$2 = ent.IsDir(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + if (!(!_r$2)) { _v = false; $s = 6; continue s; } + _r$3 = ent.Name(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = strings.HasSuffix(_r$3, ".go"); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _v = _r$4; case 6: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + $s = -1; return true; + /* } */ case 5: + _i++; + $s = 2; continue; + case 3: + $s = -1; return false; + /* */ } return; } var $f = {$blk: hasGoFiles$1, $c: true, $r, _i, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, _v, ctxt, dir, ent, ents, $s};return $f; + }; + findImportComment = function findImportComment$1(data) { + var {$24r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, arg, comment, data, line, ok, s, word, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = ""; + line = 0; + _tuple = parseWord(data); + word = _tuple[0]; + data = _tuple[1]; + if (!(($bytesToString(word)) === "package")) { + _tmp = ""; + _tmp$1 = 0; + s = _tmp; + line = _tmp$1; + $s = -1; return [s, line]; + } + _tuple$1 = parseWord(data); + data = _tuple$1[1]; + while (true) { + if (!(data.$length > 0 && (((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 32) || ((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 9) || ((0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]) === 13)))) { break; } + data = $subslice(data, 1); + } + comment = sliceType$1.nil; + if (bytes.HasPrefix(data, slashSlash)) { + _tuple$2 = bytes.Cut($subslice(data, 2), newline); + comment = _tuple$2[0]; + } else if (bytes.HasPrefix(data, slashStar)) { + ok = false; + _tuple$3 = bytes.Cut($subslice(data, 2), starSlash); + comment = _tuple$3[0]; + ok = _tuple$3[2]; + if (!ok) { + _tmp$2 = ""; + _tmp$3 = 0; + s = _tmp$2; + line = _tmp$3; + $s = -1; return [s, line]; + } + if (bytes.Contains(comment, newline)) { + _tmp$4 = ""; + _tmp$5 = 0; + s = _tmp$4; + line = _tmp$5; + $s = -1; return [s, line]; + } + } + _r$1 = bytes.TrimSpace(comment); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + comment = _r$1; + _tuple$4 = parseWord(comment); + word = _tuple$4[0]; + arg = _tuple$4[1]; + if (!(($bytesToString(word)) === "import")) { + _tmp$6 = ""; + _tmp$7 = 0; + s = _tmp$6; + line = _tmp$7; + $s = -1; return [s, line]; + } + line = 1 + bytes.Count($subslice(data, 0, (data.$capacity - arg.$capacity >> 0)), newline) >> 0; + _r$2 = strings.TrimSpace(($bytesToString(arg))); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tmp$8 = _r$2; + _tmp$9 = line; + s = _tmp$8; + line = _tmp$9; + $24r = [s, line]; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: findImportComment$1, $c: true, $r, $24r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, arg, comment, data, line, ok, s, word, $s};return $f; + }; + skipSpaceOrComment = function skipSpaceOrComment$1(data) { + var _1, data, i, i$1; + while (true) { + if (!(data.$length > 0)) { break; } + _1 = (0 >= data.$length ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + 0]); + if ((_1 === (32)) || (_1 === (9)) || (_1 === (13)) || (_1 === (10))) { + data = $subslice(data, 1); + continue; + } else if (_1 === (47)) { + if (bytes.HasPrefix(data, slashSlash)) { + i = bytes.Index(data, newline); + if (i < 0) { + return sliceType$1.nil; + } + data = $subslice(data, (i + 1 >> 0)); + continue; + } + if (bytes.HasPrefix(data, slashStar)) { + data = $subslice(data, 2); + i$1 = bytes.Index(data, starSlash); + if (i$1 < 0) { + return sliceType$1.nil; + } + data = $subslice(data, (i$1 + 2 >> 0)); + continue; + } + } + break; + } + return data; + }; + parseWord = function parseWord$1(data) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, data, r, rest, size, word; + word = sliceType$1.nil; + rest = sliceType$1.nil; + data = skipSpaceOrComment(data); + rest = data; + while (true) { + _tuple = utf8.DecodeRune(rest); + r = _tuple[0]; + size = _tuple[1]; + if (unicode.IsLetter(r) || 48 <= r && r <= 57 || (r === 95)) { + rest = $subslice(rest, size); + continue; + } + break; + } + word = $subslice(data, 0, (data.$length - rest.$length >> 0)); + if (word.$length === 0) { + _tmp = sliceType$1.nil; + _tmp$1 = sliceType$1.nil; + word = _tmp; + rest = _tmp$1; + return [word, rest]; + } + _tmp$2 = word; + _tmp$3 = rest; + word = _tmp$2; + rest = _tmp$3; + return [word, rest]; + }; + $ptrType(Context).prototype.MatchFile = function MatchFile(dir, name) { + var {_r$1, _tmp, _tmp$1, _tuple, ctxt, dir, err, info, match, name, $s, $r, $c} = $restore(this, {dir, name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + match = false; + err = $ifaceNil; + ctxt = this; + _r$1 = ctxt.matchFile(dir, name, false, ptrType$5.nil, ptrType$1.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + info = _tuple[0]; + err = _tuple[1]; + _tmp = !(info === ptrType$6.nil); + _tmp$1 = err; + match = _tmp; + err = _tmp$1; + $s = -1; return [match, err]; + /* */ } return; } var $f = {$blk: MatchFile, $c: true, $r, _r$1, _tmp, _tmp$1, _tuple, ctxt, dir, err, info, match, name, $s};return $f; + }; + $ptrType(Context).prototype.matchFile = function matchFile(dir, name, allTags, binaryOnly, fset) { + var {$24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, allTags, binaryOnly, ctxt, dir, err, ext, f, fset, i, info, name, ok, sawBinaryOnly, $s, $r, $c} = $restore(this, {dir, name, allTags, binaryOnly, fset}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + if (strings.HasPrefix(name, "_") || strings.HasPrefix(name, ".")) { + $s = -1; return [ptrType$6.nil, $ifaceNil]; + } + i = strings.LastIndex(name, "."); + if (i < 0) { + i = name.length; + } + ext = $substring(name, i); + if (!(ext === ".go") && fileListForExt(dummyPkg, ext) === ptrType$7.nil) { + $s = -1; return [ptrType$6.nil, $ifaceNil]; + } + if (!ctxt.goodOSArchFile(name, allTags) && !ctxt.UseAllFiles) { + $s = -1; return [ptrType$6.nil, $ifaceNil]; + } + _r$1 = ctxt.joinPath(new sliceType([dir, name])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + info = new fileInfo.ptr(_r$1, sliceType$1.nil, fset, ptrType$8.nil, $ifaceNil, sliceType$3.nil, sliceType$4.nil); + if (ext === ".syso") { + $s = -1; return [info, $ifaceNil]; + } + _r$2 = ctxt.openFile(info.name); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + f = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$6.nil, err]; + } + /* */ if (strings.HasSuffix(name, ".go")) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (strings.HasSuffix(name, ".go")) { */ case 3: + _r$3 = readGoInfo(f, info); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err = _r$3; + if (strings.HasSuffix(name, "_test.go")) { + binaryOnly = ptrType$5.nil; + } + $s = 5; continue; + /* } else { */ case 4: + binaryOnly = ptrType$5.nil; + _r$4 = readComments(f); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + info.header = _tuple$1[0]; + err = _tuple$1[1]; + /* } */ case 5: + _r$5 = f.Close(); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$5; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 9: + _r$6 = fmt.Errorf("read %s: %v", new sliceType$2([new $String(info.name), err])); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r = [info, _r$6]; + $s = 12; case 12: return $24r; + /* } */ case 10: + _r$7 = ctxt.shouldBuild(info.header, allTags); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$2 = _r$7; + ok = _tuple$2[0]; + sawBinaryOnly = _tuple$2[1]; + err = _tuple$2[2]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14: + _r$8 = fmt.Errorf("%s: %v", new sliceType$2([new $String(name), err])); /* */ $s = 16; case 16: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $24r$1 = [ptrType$6.nil, _r$8]; + $s = 17; case 17: return $24r$1; + /* } */ case 15: + if (!ok && !ctxt.UseAllFiles) { + $s = -1; return [ptrType$6.nil, $ifaceNil]; + } + if (!(binaryOnly === ptrType$5.nil) && sawBinaryOnly) { + binaryOnly.$set(true); + } + $s = -1; return [info, $ifaceNil]; + /* */ } return; } var $f = {$blk: matchFile, $c: true, $r, $24r, $24r$1, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, allTags, binaryOnly, ctxt, dir, err, ext, f, fset, i, info, name, ok, sawBinaryOnly, $s};return $f; + }; + cleanDecls = function cleanDecls$1(m) { + var {_entry, _i, _key, _keys, _ref, _size, all, m, path$1, $s, $r, $c} = $restore(this, {m}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + all = $makeSlice(sliceType, 0, (m ? m.size : 0)); + _ref = m; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + path$1 = _entry.k; + all = $append(all, path$1); + _i++; + } + $r = sort.Strings(all); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return [all, m]; + /* */ } return; } var $f = {$blk: cleanDecls$1, $c: true, $r, _entry, _i, _key, _keys, _ref, _size, all, m, path$1, $s};return $f; + }; + isGoBuildComment = function isGoBuildComment$1(line) { + var {$24r, _r$1, _r$2, _v, line, rest, $s, $r, $c} = $restore(this, {line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!bytes.HasPrefix(line, goBuildComment)) { + $s = -1; return false; + } + _r$1 = bytes.TrimSpace(line); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + line = _r$1; + rest = $subslice(line, goBuildComment.$length); + if (rest.$length === 0) { _v = true; $s = 2; continue s; } + _r$2 = bytes.TrimSpace(rest); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2.$length < rest.$length; case 2: + $24r = _v; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: isGoBuildComment$1, $c: true, $r, $24r, _r$1, _r$2, _v, line, rest, $s};return $f; + }; + $ptrType(Context).prototype.shouldBuild = function shouldBuild(content, allTags) { + var {$24r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, allTags, binaryOnly, content, ctxt, err, err$1, err$2, goBuild, i, line, p, sawBinaryOnly, shouldBuild$1, text, x, x$1, $s, $r, $c} = $restore(this, {content, allTags}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + shouldBuild$1 = false; + binaryOnly = false; + err = $ifaceNil; + ctxt = this; + _r$1 = parseFileHeader(content); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + content = _tuple[0]; + goBuild = _tuple[1]; + sawBinaryOnly = _tuple[2]; + err = _tuple[3]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = false; + _tmp$1 = false; + _tmp$2 = err; + shouldBuild$1 = _tmp; + binaryOnly = _tmp$1; + err = _tmp$2; + $s = -1; return [shouldBuild$1, binaryOnly, err]; + } + /* */ if (!(goBuild === sliceType$1.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(goBuild === sliceType$1.nil)) { */ case 3: + _r$2 = constraint.Parse(($bytesToString(goBuild))); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + x = _tuple$1[0]; + err$1 = _tuple$1[1]; + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 7: + _tmp$3 = false; + _tmp$4 = false; + _r$3 = fmt.Errorf("parsing //go:build line: %v", new sliceType$2([err$1])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tmp$5 = _r$3; + shouldBuild$1 = _tmp$3; + binaryOnly = _tmp$4; + err = _tmp$5; + $24r = [shouldBuild$1, binaryOnly, err]; + $s = 10; case 10: return $24r; + /* } */ case 8: + _r$4 = ctxt.eval$(x, allTags); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + shouldBuild$1 = _r$4; + $s = 5; continue; + /* } else { */ case 4: + shouldBuild$1 = true; + p = content; + /* while (true) { */ case 12: + /* if (!(p.$length > 0)) { break; } */ if(!(p.$length > 0)) { $s = 13; continue; } + line = p; + i = bytes.IndexByte(line, 10); + if (i >= 0) { + _tmp$6 = $subslice(line, 0, i); + _tmp$7 = $subslice(p, (i + 1 >> 0)); + line = _tmp$6; + p = _tmp$7; + } else { + p = $subslice(p, p.$length); + } + _r$5 = bytes.TrimSpace(line); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + line = _r$5; + if (!bytes.HasPrefix(line, slashSlash) || !bytes.Contains(line, plusBuild)) { + /* continue; */ $s = 12; continue; + } + text = ($bytesToString(line)); + _r$6 = constraint.IsPlusBuild(text); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + /* */ if (!_r$6) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (!_r$6) { */ case 15: + /* continue; */ $s = 12; continue; + /* } */ case 16: + _r$7 = constraint.Parse(text); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$2 = _r$7; + x$1 = _tuple$2[0]; + err$2 = _tuple$2[1]; + /* */ if ($interfaceIsEqual(err$2, $ifaceNil)) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if ($interfaceIsEqual(err$2, $ifaceNil)) { */ case 19: + _r$8 = ctxt.eval$(x$1, allTags); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* */ if (!_r$8) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!_r$8) { */ case 21: + shouldBuild$1 = false; + /* } */ case 22: + /* } */ case 20: + $s = 12; continue; + case 13: + /* } */ case 5: + case 2: + _tmp$8 = shouldBuild$1; + _tmp$9 = sawBinaryOnly; + _tmp$10 = $ifaceNil; + shouldBuild$1 = _tmp$8; + binaryOnly = _tmp$9; + err = _tmp$10; + $s = -1; return [shouldBuild$1, binaryOnly, err]; + /* */ } return; } var $f = {$blk: shouldBuild, $c: true, $r, $24r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, allTags, binaryOnly, content, ctxt, err, err$1, err$2, goBuild, i, line, p, sawBinaryOnly, shouldBuild$1, text, x, x$1, $s};return $f; + }; + parseFileHeader = function parseFileHeader$1(content) { + var {_r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _v, content, end, ended, err, goBuild, i, i$1, inSlashStar, line, p, sawBinaryOnly, trimmed, $s, $r, $c} = $restore(this, {content}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + trimmed = sliceType$1.nil; + goBuild = sliceType$1.nil; + sawBinaryOnly = false; + err = $ifaceNil; + end = 0; + p = content; + ended = false; + inSlashStar = false; + /* while (true) { */ case 1: + /* if (!(p.$length > 0)) { break; } */ if(!(p.$length > 0)) { $s = 2; continue; } + line = p; + i = bytes.IndexByte(line, 10); + if (i >= 0) { + _tmp = $subslice(line, 0, i); + _tmp$1 = $subslice(p, (i + 1 >> 0)); + line = _tmp; + p = _tmp$1; + } else { + p = $subslice(p, p.$length); + } + _r$1 = bytes.TrimSpace(line); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + line = _r$1; + if ((line.$length === 0) && !ended) { + end = content.$length - p.$length >> 0; + /* continue Lines; */ $s = 1; continue s; + } + if (!bytes.HasPrefix(line, slashSlash)) { + ended = true; + } + if (!(!inSlashStar)) { _v = false; $s = 6; continue s; } + _r$2 = isGoBuildComment(line); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2; case 6: + /* */ if (_v) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_v) { */ case 4: + if (!(goBuild === sliceType$1.nil)) { + _tmp$2 = sliceType$1.nil; + _tmp$3 = sliceType$1.nil; + _tmp$4 = false; + _tmp$5 = errMultipleGoBuild; + trimmed = _tmp$2; + goBuild = _tmp$3; + sawBinaryOnly = _tmp$4; + err = _tmp$5; + $s = -1; return [trimmed, goBuild, sawBinaryOnly, err]; + } + goBuild = line; + /* } */ case 5: + if (!inSlashStar && bytes.Equal(line, binaryOnlyComment)) { + sawBinaryOnly = true; + } + /* while (true) { */ case 8: + /* if (!(line.$length > 0)) { break; } */ if(!(line.$length > 0)) { $s = 9; continue; } + /* */ if (inSlashStar) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (inSlashStar) { */ case 10: + i$1 = bytes.Index(line, starSlash); + /* */ if (i$1 >= 0) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (i$1 >= 0) { */ case 12: + inSlashStar = false; + _r$3 = bytes.TrimSpace($subslice(line, (i$1 + starSlash.$length >> 0))); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + line = _r$3; + /* continue Comments; */ $s = 8; continue s; + /* } */ case 13: + /* continue Lines; */ $s = 1; continue s; + /* } */ case 11: + if (bytes.HasPrefix(line, slashSlash)) { + /* continue Lines; */ $s = 1; continue s; + } + /* */ if (bytes.HasPrefix(line, slashStar)) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (bytes.HasPrefix(line, slashStar)) { */ case 15: + inSlashStar = true; + _r$4 = bytes.TrimSpace($subslice(line, slashStar.$length)); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + line = _r$4; + /* continue Comments; */ $s = 8; continue s; + /* } */ case 16: + /* break Lines; */ $s = 2; continue s; + case 9: + $s = 1; continue; + case 2: + _tmp$6 = $subslice(content, 0, end); + _tmp$7 = goBuild; + _tmp$8 = sawBinaryOnly; + _tmp$9 = $ifaceNil; + trimmed = _tmp$6; + goBuild = _tmp$7; + sawBinaryOnly = _tmp$8; + err = _tmp$9; + $s = -1; return [trimmed, goBuild, sawBinaryOnly, err]; + /* */ } return; } var $f = {$blk: parseFileHeader$1, $c: true, $r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _v, content, end, ended, err, goBuild, i, i$1, inSlashStar, line, p, sawBinaryOnly, trimmed, $s};return $f; + }; + $ptrType(Context).prototype.saveCgo = function saveCgo(filename, di, cg) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, _1, _2, _i, _i$1, _i$2, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, arg, args, argstr, c, cg, cond, ctxt, di, err, f, filename, i, line, line$1, ok, ok$1, orig, text, verb, x, $s, $r, $c} = $restore(this, {filename, di, cg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + text = cg.Text(); + _ref = strings.Split(text, "\n"); + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + line = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + orig = line; + _r$1 = strings.TrimSpace(line); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + line = _r$1; + if (line.length < 5 || !($substring(line, 0, 4) === "#cgo") || (!((line.charCodeAt(4) === 32)) && !((line.charCodeAt(4) === 9)))) { + _i++; + /* continue; */ $s = 1; continue; + } + _r$2 = strings.TrimSpace($substring(line, 4)); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = strings.Cut(_r$2, ":"); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + line$1 = _tuple[0]; + argstr = _tuple[1]; + ok = _tuple[2]; + /* */ if (!ok) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!ok) { */ case 6: + _r$4 = fmt.Errorf("%s: invalid #cgo line: %s", new sliceType$2([new $String(filename), new $String(orig)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 9; case 9: return $24r; + /* } */ case 7: + _r$5 = strings.Fields(line$1); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + f = _r$5; + /* */ if (f.$length < 1) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (f.$length < 1) { */ case 11: + _r$6 = fmt.Errorf("%s: invalid #cgo line: %s", new sliceType$2([new $String(filename), new $String(orig)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$1 = _r$6; + $s = 14; case 14: return $24r$1; + /* } */ case 12: + _tmp = $subslice(f, 0, (f.$length - 1 >> 0)); + _tmp$1 = (x = f.$length - 1 >> 0, ((x < 0 || x >= f.$length) ? ($throwRuntimeError("index out of range"), undefined) : f.$array[f.$offset + x])); + cond = _tmp; + verb = _tmp$1; + /* */ if (cond.$length > 0) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (cond.$length > 0) { */ case 15: + ok$1 = false; + _ref$1 = cond; + _i$1 = 0; + /* while (true) { */ case 17: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 18; continue; } + c = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r$7 = ctxt.matchAuto(c, false); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + /* */ if (_r$7) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (_r$7) { */ case 19: + ok$1 = true; + /* break; */ $s = 18; continue; + /* } */ case 20: + _i$1++; + $s = 17; continue; + case 18: + if (!ok$1) { + _i++; + /* continue; */ $s = 1; continue; + } + /* } */ case 16: + _tuple$1 = splitQuoted(argstr); + args = _tuple$1[0]; + err = _tuple$1[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 22; continue; } + /* */ $s = 23; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 22: + _r$8 = fmt.Errorf("%s: invalid #cgo line: %s", new sliceType$2([new $String(filename), new $String(orig)])); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $24r$2 = _r$8; + $s = 25; case 25: return $24r$2; + /* } */ case 23: + _ref$2 = args; + _i$2 = 0; + /* while (true) { */ case 26: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 27; continue; } + i = _i$2; + arg = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + _tuple$2 = expandSrcDir(arg, di.Dir); + arg = _tuple$2[0]; + ok = _tuple$2[1]; + /* */ if (!ok) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (!ok) { */ case 28: + _r$9 = fmt.Errorf("%s: malformed #cgo argument: %s", new sliceType$2([new $String(filename), new $String(arg)])); /* */ $s = 30; case 30: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $24r$3 = _r$9; + $s = 31; case 31: return $24r$3; + /* } */ case 29: + ((i < 0 || i >= args.$length) ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + i] = arg); + _i$2++; + $s = 26; continue; + case 27: + _1 = verb; + if (_1 === ("CFLAGS") || _1 === ("CPPFLAGS") || _1 === ("CXXFLAGS") || _1 === ("FFLAGS") || _1 === ("LDFLAGS")) { + ctxt.makePathsAbsolute(args, di.Dir); + } + _2 = verb; + /* */ if (_2 === ("CFLAGS")) { $s = 33; continue; } + /* */ if (_2 === ("CPPFLAGS")) { $s = 34; continue; } + /* */ if (_2 === ("CXXFLAGS")) { $s = 35; continue; } + /* */ if (_2 === ("FFLAGS")) { $s = 36; continue; } + /* */ if (_2 === ("LDFLAGS")) { $s = 37; continue; } + /* */ if (_2 === ("pkg-config")) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (_2 === ("CFLAGS")) { */ case 33: + di.CgoCFLAGS = $appendSlice(di.CgoCFLAGS, args); + $s = 40; continue; + /* } else if (_2 === ("CPPFLAGS")) { */ case 34: + di.CgoCPPFLAGS = $appendSlice(di.CgoCPPFLAGS, args); + $s = 40; continue; + /* } else if (_2 === ("CXXFLAGS")) { */ case 35: + di.CgoCXXFLAGS = $appendSlice(di.CgoCXXFLAGS, args); + $s = 40; continue; + /* } else if (_2 === ("FFLAGS")) { */ case 36: + di.CgoFFLAGS = $appendSlice(di.CgoFFLAGS, args); + $s = 40; continue; + /* } else if (_2 === ("LDFLAGS")) { */ case 37: + di.CgoLDFLAGS = $appendSlice(di.CgoLDFLAGS, args); + $s = 40; continue; + /* } else if (_2 === ("pkg-config")) { */ case 38: + di.CgoPkgConfig = $appendSlice(di.CgoPkgConfig, args); + $s = 40; continue; + /* } else { */ case 39: + _r$10 = fmt.Errorf("%s: invalid #cgo verb: %s", new sliceType$2([new $String(filename), new $String(orig)])); /* */ $s = 41; case 41: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $24r$4 = _r$10; + $s = 42; case 42: return $24r$4; + /* } */ case 40: + case 32: + _i++; + $s = 1; continue; + case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: saveCgo, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, _1, _2, _i, _i$1, _i$2, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, arg, args, argstr, c, cg, cond, ctxt, di, err, f, filename, i, line, line$1, ok, ok$1, orig, text, verb, x, $s};return $f; + }; + expandSrcDir = function expandSrcDir$1(str, srcdir) { + var _i, _ref, chunk, chunks, ok, res, srcdir, str; + srcdir = filepath.ToSlash(srcdir); + chunks = strings.Split(str, "${SRCDIR}"); + if (chunks.$length < 2) { + return [str, safeCgoName(str)]; + } + ok = true; + _ref = chunks; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + chunk = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ok = ok && (chunk === "" || safeCgoName(chunk)); + _i++; + } + ok = ok && (srcdir === "" || safeCgoName(srcdir)); + res = strings.Join(chunks, srcdir); + return [res, ok && !(res === "")]; + }; + $ptrType(Context).prototype.makePathsAbsolute = function makePathsAbsolute(args, srcDir) { + var _i, _ref, arg, args, ctxt, i, nextPath, srcDir; + ctxt = this; + nextPath = false; + _ref = args; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + arg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (nextPath) { + if (!filepath.IsAbs(arg)) { + ((i < 0 || i >= args.$length) ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + i] = filepath.Join(new sliceType([srcDir, arg]))); + } + nextPath = false; + } else if (strings.HasPrefix(arg, "-I") || strings.HasPrefix(arg, "-L")) { + if (arg.length === 2) { + nextPath = true; + } else { + if (!filepath.IsAbs($substring(arg, 2))) { + ((i < 0 || i >= args.$length) ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + i] = $substring(arg, 0, 2) + filepath.Join(new sliceType([srcDir, $substring(arg, 2)]))); + } + } + } + _i++; + } + }; + safeCgoName = function safeCgoName$1(s) { + var c, i, s; + if (s === "") { + return false; + } + i = 0; + while (true) { + if (!(i < s.length)) { break; } + c = s.charCodeAt(i); + if (c < 128 && strings.IndexByte("+-.,/0123456789=ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz:$@%! ~^", c) < 0) { + return false; + } + i = i + (1) >> 0; + } + return true; + }; + splitQuoted = function splitQuoted$1(s) { + var _i, _ref, _rune, _tmp, _tmp$1, arg, args, err, escaped, i, quote, quoted, r, rune, s; + r = sliceType.nil; + err = $ifaceNil; + args = sliceType.nil; + arg = $makeSlice(sliceType$7, s.length); + escaped = false; + quoted = false; + quote = 0; + i = 0; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + rune = _rune[0]; + if (escaped) { + escaped = false; + } else if ((rune === 92)) { + escaped = true; + _i += _rune[1]; + continue; + } else if (!((quote === 0))) { + if (rune === quote) { + quote = 0; + _i += _rune[1]; + continue; + } + } else if ((rune === 34) || (rune === 39)) { + quoted = true; + quote = rune; + _i += _rune[1]; + continue; + } else if (unicode.IsSpace(rune)) { + if (quoted || i > 0) { + quoted = false; + args = $append(args, ($runesToString($subslice(arg, 0, i)))); + i = 0; + } + _i += _rune[1]; + continue; + } + ((i < 0 || i >= arg.$length) ? ($throwRuntimeError("index out of range"), undefined) : arg.$array[arg.$offset + i] = rune); + i = i + (1) >> 0; + _i += _rune[1]; + } + if (quoted || i > 0) { + args = $append(args, ($runesToString($subslice(arg, 0, i)))); + } + if (!((quote === 0))) { + err = errors.New("unclosed quote"); + } else if (escaped) { + err = errors.New("unfinished escaping"); + } + _tmp = args; + _tmp$1 = err; + r = _tmp; + err = _tmp$1; + return [r, err]; + }; + $ptrType(Context).prototype.matchAuto = function matchAuto(text, allTags) { + var {$24r, _r$1, _r$2, _tuple, allTags, ctxt, err, text, x, $s, $r, $c} = $restore(this, {text, allTags}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ctxt = this; + if (strings.ContainsAny(text, "&|()")) { + text = "//go:build " + text; + } else { + text = "// +build " + text; + } + _r$1 = constraint.Parse(text); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + x = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return false; + } + _r$2 = ctxt.eval$(x, allTags); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: matchAuto, $c: true, $r, $24r, _r$1, _r$2, _tuple, allTags, ctxt, err, text, x, $s};return $f; + }; + $ptrType(Context).prototype.eval$ = function eval$1(x, allTags) { + var {$24r, _r$1, allTags, ctxt, x, $s, $r, $c} = $restore(this, {x, allTags}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + allTags = [allTags]; + ctxt = [ctxt]; + ctxt[0] = this; + _r$1 = x.Eval((function(allTags, ctxt) { return function Context·eval·func1(tag) { + var tag; + return ctxt[0].matchTag(tag, allTags[0]); + }; })(allTags, ctxt)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: eval$1, $c: true, $r, $24r, _r$1, allTags, ctxt, x, $s};return $f; + }; + $ptrType(Context).prototype.matchTag = function matchTag(name, allTags) { + var _entry, _i, _i$1, _i$2, _key, _ref, _ref$1, _ref$2, allTags, ctxt, name, tag, tag$1, tag$2; + ctxt = this; + if (!(allTags === false)) { + _key = name; (allTags || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: true }); + } + if (ctxt.CgoEnabled && name === "cgo") { + return true; + } + if (name === ctxt.GOOS || name === ctxt.GOARCH || name === ctxt.Compiler) { + return true; + } + if (ctxt.GOOS === "android" && name === "linux") { + return true; + } + if (ctxt.GOOS === "illumos" && name === "solaris") { + return true; + } + if (ctxt.GOOS === "ios" && name === "darwin") { + return true; + } + if (name === "unix" && (_entry = $mapIndex(unixOS,$String.keyFor(ctxt.GOOS)), _entry !== undefined ? _entry.v : false)) { + return true; + } + if (name === "boringcrypto") { + name = "goexperiment.boringcrypto"; + } + _ref = ctxt.BuildTags; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + tag = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (tag === name) { + return true; + } + _i++; + } + _ref$1 = ctxt.ToolTags; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + tag$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (tag$1 === name) { + return true; + } + _i$1++; + } + _ref$2 = ctxt.ReleaseTags; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + tag$2 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + if (tag$2 === name) { + return true; + } + _i$2++; + } + return false; + }; + $ptrType(Context).prototype.goodOSArchFile = function goodOSArchFile(name, allTags) { + var _entry, _entry$1, _entry$2, _entry$3, _key, _tuple, allTags, ctxt, i, l, n, n$1, name, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8; + ctxt = this; + _tuple = strings.Cut(name, "."); + name = _tuple[0]; + i = strings.Index(name, "_"); + if (i < 0) { + return true; + } + name = $substring(name, i); + l = strings.Split(name, "_"); + n = l.$length; + if (n > 0 && (x = n - 1 >> 0, ((x < 0 || x >= l.$length) ? ($throwRuntimeError("index out of range"), undefined) : l.$array[l.$offset + x])) === "test") { + l = $subslice(l, 0, (n - 1 >> 0)); + } + n$1 = l.$length; + if (n$1 >= 2 && (_entry = $mapIndex(knownOS,$String.keyFor((x$1 = n$1 - 2 >> 0, ((x$1 < 0 || x$1 >= l.$length) ? ($throwRuntimeError("index out of range"), undefined) : l.$array[l.$offset + x$1])))), _entry !== undefined ? _entry.v : false) && (_entry$1 = $mapIndex(knownArch,$String.keyFor((x$2 = n$1 - 1 >> 0, ((x$2 < 0 || x$2 >= l.$length) ? ($throwRuntimeError("index out of range"), undefined) : l.$array[l.$offset + x$2])))), _entry$1 !== undefined ? _entry$1.v : false)) { + if (!(allTags === false)) { + _key = (x$3 = n$1 - 2 >> 0, ((x$3 < 0 || x$3 >= l.$length) ? ($throwRuntimeError("index out of range"), undefined) : l.$array[l.$offset + x$3])); (allTags || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: true }); + } + return ctxt.matchTag((x$4 = n$1 - 1 >> 0, ((x$4 < 0 || x$4 >= l.$length) ? ($throwRuntimeError("index out of range"), undefined) : l.$array[l.$offset + x$4])), allTags) && ctxt.matchTag((x$5 = n$1 - 2 >> 0, ((x$5 < 0 || x$5 >= l.$length) ? ($throwRuntimeError("index out of range"), undefined) : l.$array[l.$offset + x$5])), allTags); + } + if (n$1 >= 1 && ((_entry$2 = $mapIndex(knownOS,$String.keyFor((x$6 = n$1 - 1 >> 0, ((x$6 < 0 || x$6 >= l.$length) ? ($throwRuntimeError("index out of range"), undefined) : l.$array[l.$offset + x$6])))), _entry$2 !== undefined ? _entry$2.v : false) || (_entry$3 = $mapIndex(knownArch,$String.keyFor((x$7 = n$1 - 1 >> 0, ((x$7 < 0 || x$7 >= l.$length) ? ($throwRuntimeError("index out of range"), undefined) : l.$array[l.$offset + x$7])))), _entry$3 !== undefined ? _entry$3.v : false))) { + return ctxt.matchTag((x$8 = n$1 - 1 >> 0, ((x$8 < 0 || x$8 >= l.$length) ? ($throwRuntimeError("index out of range"), undefined) : l.$array[l.$offset + x$8])), allTags); + } + return true; + }; + IsLocalImport = function IsLocalImport$1(path$1) { + var path$1; + return path$1 === "." || path$1 === ".." || strings.HasPrefix(path$1, "./") || strings.HasPrefix(path$1, "../"); + }; + $pkg.IsLocalImport = IsLocalImport; + ptrType$10.methods = [{prop: "syntaxError", name: "syntaxError", pkg: "go/build", typ: $funcType([], [], false)}, {prop: "readByte", name: "readByte", pkg: "go/build", typ: $funcType([], [$Uint8], false)}, {prop: "readByteNoBuf", name: "readByteNoBuf", pkg: "go/build", typ: $funcType([], [$Uint8], false)}, {prop: "peekByte", name: "peekByte", pkg: "go/build", typ: $funcType([$Bool], [$Uint8], false)}, {prop: "nextByte", name: "nextByte", pkg: "go/build", typ: $funcType([$Bool], [$Uint8], false)}, {prop: "findEmbed", name: "findEmbed", pkg: "go/build", typ: $funcType([$Bool], [$Bool], false)}, {prop: "readKeyword", name: "readKeyword", pkg: "go/build", typ: $funcType([$String], [], false)}, {prop: "readIdent", name: "readIdent", pkg: "go/build", typ: $funcType([], [], false)}, {prop: "readString", name: "readString", pkg: "go/build", typ: $funcType([], [], false)}, {prop: "readImport", name: "readImport", pkg: "go/build", typ: $funcType([], [], false)}]; + ptrType$12.methods = [{prop: "joinPath", name: "joinPath", pkg: "go/build", typ: $funcType([sliceType], [$String], true)}, {prop: "splitPathList", name: "splitPathList", pkg: "go/build", typ: $funcType([$String], [sliceType], false)}, {prop: "isAbsPath", name: "isAbsPath", pkg: "go/build", typ: $funcType([$String], [$Bool], false)}, {prop: "isDir", name: "isDir", pkg: "go/build", typ: $funcType([$String], [$Bool], false)}, {prop: "hasSubdir", name: "hasSubdir", pkg: "go/build", typ: $funcType([$String, $String], [$String, $Bool], false)}, {prop: "readDir", name: "readDir", pkg: "go/build", typ: $funcType([$String], [sliceType$5, $error], false)}, {prop: "openFile", name: "openFile", pkg: "go/build", typ: $funcType([$String], [io.ReadCloser, $error], false)}, {prop: "isFile", name: "isFile", pkg: "go/build", typ: $funcType([$String], [$Bool], false)}, {prop: "gopath", name: "gopath", pkg: "go/build", typ: $funcType([], [sliceType], false)}, {prop: "SrcDirs", name: "SrcDirs", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "ImportDir", name: "ImportDir", pkg: "", typ: $funcType([$String, ImportMode], [ptrType$11, $error], false)}, {prop: "Import", name: "Import", pkg: "", typ: $funcType([$String, $String, ImportMode], [ptrType$11, $error], false)}, {prop: "importGo", name: "importGo", pkg: "go/build", typ: $funcType([ptrType$11, $String, $String, ImportMode], [$error], false)}, {prop: "MatchFile", name: "MatchFile", pkg: "", typ: $funcType([$String, $String], [$Bool, $error], false)}, {prop: "matchFile", name: "matchFile", pkg: "go/build", typ: $funcType([$String, $String, mapType, ptrType$5, ptrType$1], [ptrType$6, $error], false)}, {prop: "shouldBuild", name: "shouldBuild", pkg: "go/build", typ: $funcType([sliceType$1, mapType], [$Bool, $Bool, $error], false)}, {prop: "saveCgo", name: "saveCgo", pkg: "go/build", typ: $funcType([$String, ptrType$11, ptrType$4], [$error], false)}, {prop: "makePathsAbsolute", name: "makePathsAbsolute", pkg: "go/build", typ: $funcType([sliceType, $String], [], false)}, {prop: "matchAuto", name: "matchAuto", pkg: "go/build", typ: $funcType([$String, mapType], [$Bool], false)}, {prop: "eval$", name: "eval", pkg: "go/build", typ: $funcType([constraint.Expr, mapType], [$Bool], false)}, {prop: "matchTag", name: "matchTag", pkg: "go/build", typ: $funcType([$String, mapType], [$Bool], false)}, {prop: "goodOSArchFile", name: "goodOSArchFile", pkg: "go/build", typ: $funcType([$String, mapType], [$Bool], false)}]; + ptrType$11.methods = [{prop: "IsCommand", name: "IsCommand", pkg: "", typ: $funcType([], [$Bool], false)}]; + ptrType$13.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$14.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + importReader.init("go/build", [{prop: "b", name: "b", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "peek", name: "peek", embedded: false, exported: false, typ: $Uint8, tag: ""}, {prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "eof", name: "eof", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "nerr", name: "nerr", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Position, tag: ""}]); + Context.init("", [{prop: "GOARCH", name: "GOARCH", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "GOOS", name: "GOOS", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "GOROOT", name: "GOROOT", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "GOPATH", name: "GOPATH", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Dir", name: "Dir", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "CgoEnabled", name: "CgoEnabled", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "UseAllFiles", name: "UseAllFiles", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Compiler", name: "Compiler", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "BuildTags", name: "BuildTags", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "ToolTags", name: "ToolTags", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "ReleaseTags", name: "ReleaseTags", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "InstallSuffix", name: "InstallSuffix", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "JoinPath", name: "JoinPath", embedded: false, exported: true, typ: funcType, tag: ""}, {prop: "SplitPathList", name: "SplitPathList", embedded: false, exported: true, typ: funcType$1, tag: ""}, {prop: "IsAbsPath", name: "IsAbsPath", embedded: false, exported: true, typ: funcType$2, tag: ""}, {prop: "IsDir", name: "IsDir", embedded: false, exported: true, typ: funcType$2, tag: ""}, {prop: "HasSubdir", name: "HasSubdir", embedded: false, exported: true, typ: funcType$3, tag: ""}, {prop: "ReadDir", name: "ReadDir", embedded: false, exported: true, typ: funcType$4, tag: ""}, {prop: "OpenFile", name: "OpenFile", embedded: false, exported: true, typ: funcType$5, tag: ""}]); + Package.init("", [{prop: "Dir", name: "Dir", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ImportComment", name: "ImportComment", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Doc", name: "Doc", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ImportPath", name: "ImportPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Root", name: "Root", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "SrcRoot", name: "SrcRoot", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "PkgRoot", name: "PkgRoot", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "PkgTargetRoot", name: "PkgTargetRoot", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "BinDir", name: "BinDir", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Goroot", name: "Goroot", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "PkgObj", name: "PkgObj", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "AllTags", name: "AllTags", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "ConflictDir", name: "ConflictDir", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "BinaryOnly", name: "BinaryOnly", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "GoFiles", name: "GoFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "CgoFiles", name: "CgoFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "IgnoredGoFiles", name: "IgnoredGoFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "InvalidGoFiles", name: "InvalidGoFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "IgnoredOtherFiles", name: "IgnoredOtherFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "CFiles", name: "CFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "CXXFiles", name: "CXXFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "MFiles", name: "MFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "HFiles", name: "HFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "FFiles", name: "FFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "SFiles", name: "SFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "SwigFiles", name: "SwigFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "SwigCXXFiles", name: "SwigCXXFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "SysoFiles", name: "SysoFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "CgoCFLAGS", name: "CgoCFLAGS", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "CgoCPPFLAGS", name: "CgoCPPFLAGS", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "CgoCXXFLAGS", name: "CgoCXXFLAGS", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "CgoFFLAGS", name: "CgoFFLAGS", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "CgoLDFLAGS", name: "CgoLDFLAGS", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "CgoPkgConfig", name: "CgoPkgConfig", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "TestGoFiles", name: "TestGoFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "XTestGoFiles", name: "XTestGoFiles", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Imports", name: "Imports", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "ImportPos", name: "ImportPos", embedded: false, exported: true, typ: mapType$1, tag: ""}, {prop: "TestImports", name: "TestImports", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "TestImportPos", name: "TestImportPos", embedded: false, exported: true, typ: mapType$1, tag: ""}, {prop: "XTestImports", name: "XTestImports", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "XTestImportPos", name: "XTestImportPos", embedded: false, exported: true, typ: mapType$1, tag: ""}, {prop: "EmbedPatterns", name: "EmbedPatterns", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "EmbedPatternPos", name: "EmbedPatternPos", embedded: false, exported: true, typ: mapType$1, tag: ""}, {prop: "TestEmbedPatterns", name: "TestEmbedPatterns", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "TestEmbedPatternPos", name: "TestEmbedPatternPos", embedded: false, exported: true, typ: mapType$1, tag: ""}, {prop: "XTestEmbedPatterns", name: "XTestEmbedPatterns", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "XTestEmbedPatternPos", name: "XTestEmbedPatternPos", embedded: false, exported: true, typ: mapType$1, tag: ""}]); + NoGoError.init("", [{prop: "Dir", name: "Dir", embedded: false, exported: true, typ: $String, tag: ""}]); + MultiplePackageError.init("", [{prop: "Dir", name: "Dir", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Packages", name: "Packages", embedded: false, exported: true, typ: sliceType, tag: ""}, {prop: "Files", name: "Files", embedded: false, exported: true, typ: sliceType, tag: ""}]); + fileInfo.init("go/build", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "header", name: "header", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "fset", name: "fset", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "parsed", name: "parsed", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "parseErr", name: "parseErr", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "imports", name: "imports", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "embeds", name: "embeds", embedded: false, exported: false, typ: sliceType$4, tag: ""}]); + fileImport.init("go/build", [{prop: "path", name: "path", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Pos, tag: ""}, {prop: "doc", name: "doc", embedded: false, exported: false, typ: ptrType$4, tag: ""}]); + fileEmbed.init("go/build", [{prop: "pattern", name: "pattern", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "pos", name: "pos", embedded: false, exported: false, typ: token.Position, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = constraint.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = doc.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = parser.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = scanner.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = buildcfg.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = godebug.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = goroot.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = goversion.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fs.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = exec.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = path.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = filepath.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = unicode.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + defaultToolTags = sliceType.nil; + defaultReleaseTags = sliceType.nil; + dummyPkg = new Package.ptr("", "", "", "", "", "", "", "", "", "", false, "", sliceType.nil, "", false, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, sliceType.nil, false, sliceType.nil, false, sliceType.nil, false, sliceType.nil, false, sliceType.nil, false, sliceType.nil, false); + cgoEnabled = $makeMap($String.keyFor, [{ k: "aix/ppc64", v: true }, { k: "android/386", v: true }, { k: "android/amd64", v: true }, { k: "android/arm", v: true }, { k: "android/arm64", v: true }, { k: "darwin/amd64", v: true }, { k: "darwin/arm64", v: true }, { k: "dragonfly/amd64", v: true }, { k: "freebsd/386", v: true }, { k: "freebsd/amd64", v: true }, { k: "freebsd/arm", v: true }, { k: "freebsd/arm64", v: true }, { k: "freebsd/riscv64", v: true }, { k: "illumos/amd64", v: true }, { k: "ios/amd64", v: true }, { k: "ios/arm64", v: true }, { k: "linux/386", v: true }, { k: "linux/amd64", v: true }, { k: "linux/arm", v: true }, { k: "linux/arm64", v: true }, { k: "linux/loong64", v: true }, { k: "linux/mips", v: true }, { k: "linux/mips64", v: true }, { k: "linux/mips64le", v: true }, { k: "linux/mipsle", v: true }, { k: "linux/ppc64le", v: true }, { k: "linux/riscv64", v: true }, { k: "linux/s390x", v: true }, { k: "linux/sparc64", v: true }, { k: "netbsd/386", v: true }, { k: "netbsd/amd64", v: true }, { k: "netbsd/arm", v: true }, { k: "netbsd/arm64", v: true }, { k: "openbsd/386", v: true }, { k: "openbsd/amd64", v: true }, { k: "openbsd/arm", v: true }, { k: "openbsd/arm64", v: true }, { k: "openbsd/mips64", v: true }, { k: "solaris/amd64", v: true }, { k: "windows/386", v: true }, { k: "windows/amd64", v: true }, { k: "windows/arm64", v: true }]); + knownOS = $makeMap($String.keyFor, [{ k: "aix", v: true }, { k: "android", v: true }, { k: "darwin", v: true }, { k: "dragonfly", v: true }, { k: "freebsd", v: true }, { k: "hurd", v: true }, { k: "illumos", v: true }, { k: "ios", v: true }, { k: "js", v: true }, { k: "linux", v: true }, { k: "nacl", v: true }, { k: "netbsd", v: true }, { k: "openbsd", v: true }, { k: "plan9", v: true }, { k: "solaris", v: true }, { k: "windows", v: true }, { k: "zos", v: true }]); + unixOS = $makeMap($String.keyFor, [{ k: "aix", v: true }, { k: "android", v: true }, { k: "darwin", v: true }, { k: "dragonfly", v: true }, { k: "freebsd", v: true }, { k: "hurd", v: true }, { k: "illumos", v: true }, { k: "ios", v: true }, { k: "linux", v: true }, { k: "netbsd", v: true }, { k: "openbsd", v: true }, { k: "solaris", v: true }]); + knownArch = $makeMap($String.keyFor, [{ k: "386", v: true }, { k: "amd64", v: true }, { k: "amd64p32", v: true }, { k: "arm", v: true }, { k: "armbe", v: true }, { k: "arm64", v: true }, { k: "arm64be", v: true }, { k: "loong64", v: true }, { k: "mips", v: true }, { k: "mipsle", v: true }, { k: "mips64", v: true }, { k: "mips64le", v: true }, { k: "mips64p32", v: true }, { k: "mips64p32le", v: true }, { k: "ppc", v: true }, { k: "ppc64", v: true }, { k: "ppc64le", v: true }, { k: "riscv", v: true }, { k: "riscv64", v: true }, { k: "s390", v: true }, { k: "s390x", v: true }, { k: "sparc", v: true }, { k: "sparc64", v: true }, { k: "wasm", v: true }]); + bom = new sliceType$1([239, 187, 191]); + errSyntax = errors.New("syntax error"); + errNUL = errors.New("unexpected NUL in input"); + goEmbed = (new sliceType$1($stringToBytes("go:embed"))); + _r = defaultContext(); /* */ $s = 27; case 27: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $pkg.Default = $clone(_r, Context); + installgoroot = godebug.New("installgoroot"); + errNoModules = errors.New("not using modules"); + slashSlash = (new sliceType$1($stringToBytes("//"))); + slashStar = (new sliceType$1($stringToBytes("/*"))); + starSlash = (new sliceType$1($stringToBytes("*/"))); + newline = (new sliceType$1($stringToBytes("\n"))); + plusBuild = (new sliceType$1($stringToBytes("+build"))); + goBuildComment = (new sliceType$1($stringToBytes("//go:build"))); + errMultipleGoBuild = errors.New("multiple //go:build comments"); + binaryOnlyComment = (new sliceType$1($stringToBytes("//go:binary-only-package"))); + $pkg.ToolDir = getToolDir(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["io/ioutil"] = (function() { + var $pkg = {}, $init, io, fs, os, sort; + io = $packages["io"]; + fs = $packages["io/fs"]; + os = $packages["os"]; + sort = $packages["sort"]; + $pkg.$finishSetup = function() { + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fs.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["golang.org/x/tools/go/buildutil"] = (function() { + var $pkg = {}, $init, bufio, bytes, fmt, ast, build, parser, token, io, ioutil, os, path, filepath, sort, strconv, strings, sync, time, ioLimit; + bufio = $packages["bufio"]; + bytes = $packages["bytes"]; + fmt = $packages["fmt"]; + ast = $packages["go/ast"]; + build = $packages["go/build"]; + parser = $packages["go/parser"]; + token = $packages["go/token"]; + io = $packages["io"]; + ioutil = $packages["io/ioutil"]; + os = $packages["os"]; + path = $packages["path"]; + filepath = $packages["path/filepath"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + sync = $packages["sync"]; + time = $packages["time"]; + $pkg.$finishSetup = function() { + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = build.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = parser.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ioutil.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = path.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = filepath.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + ioLimit = new $Chan($Bool, 20); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/incjs"] = (function() { + var $pkg = {}, $init, fmt, build, buildutil, io, os, strings, time, File, ptrType$1, sliceType$3; + fmt = $packages["fmt"]; + build = $packages["go/build"]; + buildutil = $packages["golang.org/x/tools/go/buildutil"]; + io = $packages["io"]; + os = $packages["os"]; + strings = $packages["strings"]; + time = $packages["time"]; + File = $newType(0, $kindStruct, "incjs.File", true, "github.com/gopherjs/gopherjs/compiler/incjs", true, function(Path_, ModTime_, Content_) { + this.$val = this; + if (arguments.length === 0) { + this.Path = ""; + this.ModTime = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$1.nil); + this.Content = sliceType$3.nil; + return; + } + this.Path = Path_; + this.ModTime = ModTime_; + this.Content = Content_; + }); + $pkg.File = File; + $pkg.$finishSetup = function() { + ptrType$1 = $ptrType(time.Location); + sliceType$3 = $sliceType($Uint8); + File.init("", [{prop: "Path", name: "Path", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ModTime", name: "ModTime", embedded: false, exported: true, typ: time.Time, tag: ""}, {prop: "Content", name: "Content", embedded: false, exported: true, typ: sliceType$3, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = build.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = buildutil.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/internal/symbol"] = (function() { + var $pkg = {}, $init, types, strings, Name, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, New; + types = $packages["go/types"]; + strings = $packages["strings"]; + Name = $newType(0, $kindStruct, "symbol.Name", true, "github.com/gopherjs/gopherjs/compiler/internal/symbol", true, function(PkgPath_, Name_) { + this.$val = this; + if (arguments.length === 0) { + this.PkgPath = ""; + this.Name = ""; + return; + } + this.PkgPath = PkgPath_; + this.Name = Name_; + }); + $pkg.Name = Name; + $pkg.$finishSetup = function() { + ptrType = $ptrType(types.Package); + ptrType$1 = $ptrType(types.Func); + ptrType$2 = $ptrType(types.Signature); + ptrType$3 = $ptrType(types.Var); + ptrType$4 = $ptrType(types.Pointer); + ptrType$5 = $ptrType(types.Named); + New = function New$1(o) { + var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, fun, o, ok, ok$1, pkg, pkgPath, ptr, recv, sig, typ, $s, $r, $c} = $restore(this, {o}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pkgPath = "_"; + _r = o.Pkg(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + pkg = _r; + if (!(pkg === ptrType.nil)) { + pkgPath = pkg.Path(); + } + _tuple = $assertType(o, ptrType$1, true); + fun = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok) { */ case 2: + sig = $assertType(fun.object.Type(), ptrType$2); + recv = sig.Recv(); + /* */ if (!(recv === ptrType$3.nil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(recv === ptrType$3.nil)) { */ case 4: + typ = recv.object.Type(); + _tuple$1 = $assertType(typ, ptrType$4, true); + ptr = _tuple$1[0]; + ok$1 = _tuple$1[1]; + /* */ if (ok$1) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (ok$1) { */ case 6: + _r$1 = o.Name(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = new Name.ptr(pkgPath, "(*" + $assertType(ptr.Elem(), ptrType$5).Obj().object.Name() + ")." + _r$1); + $s = 9; case 9: return $24r; + /* } */ case 7: + _r$2 = o.Name(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = new Name.ptr(pkgPath, $assertType(typ, ptrType$5).Obj().object.Name() + "." + _r$2); + $s = 11; case 11: return $24r$1; + /* } */ case 5: + /* } */ case 3: + _r$3 = o.Name(); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$2 = new Name.ptr(pkgPath, _r$3); + $s = 13; case 13: return $24r$2; + /* */ } return; } var $f = {$blk: New$1, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, fun, o, ok, ok$1, pkg, pkgPath, ptr, recv, sig, typ, $s};return $f; + }; + $pkg.New = New; + $ptrType(Name).prototype.String = function String() { + var n; + n = this; + return n.PkgPath + "." + n.Name; + }; + Name.prototype.String = function(...$args) { return this.$val.String(...$args); }; + $ptrType(Name).prototype.IsMethod = function IsMethod() { + var _tmp, _tmp$1, _tmp$2, method, n, ok, pos, recv, size; + recv = ""; + method = ""; + ok = false; + n = this; + pos = strings.IndexByte(n.Name, 46); + if (pos === -1) { + return [recv, method, ok]; + } + _tmp = $substring(n.Name, 0, pos); + _tmp$1 = $substring(n.Name, (pos + 1 >> 0)); + _tmp$2 = true; + recv = _tmp; + method = _tmp$1; + ok = _tmp$2; + size = recv.length; + if (size > 2 && (recv.charCodeAt(0) === 40) && (recv.charCodeAt((size - 1 >> 0)) === 41)) { + recv = $substring(recv, 1, (size - 1 >> 0)); + } + return [recv, method, ok]; + }; + Name.prototype.IsMethod = function(...$args) { return this.$val.IsMethod(...$args); }; + Name.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsMethod", name: "IsMethod", pkg: "", typ: $funcType([], [$String, $String, $Bool], false)}]; + Name.init("", [{prop: "PkgPath", name: "PkgPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = types.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["golang.org/x/tools/internal/typeparams"] = (function() { + var $pkg = {}, $init, bytes, errors, fmt, ast, token, types, os, strings, term, termlist, termSet, ptrType, sliceType, sliceType$1, sliceType$2, ptrType$4, sliceType$3, sliceType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, allTermlist, ForSignature, NamedTypeArgs, NewTerm, InterfaceTermSet, UnionTermSet, computeTermSet, indentf, computeTermSetInternal, under; + bytes = $packages["bytes"]; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + ast = $packages["go/ast"]; + token = $packages["go/token"]; + types = $packages["go/types"]; + os = $packages["os"]; + strings = $packages["strings"]; + term = $newType(0, $kindStruct, "typeparams.term", true, "golang.org/x/tools/internal/typeparams", false, function(tilde_, typ_) { + this.$val = this; + if (arguments.length === 0) { + this.tilde = false; + this.typ = $ifaceNil; + return; + } + this.tilde = tilde_; + this.typ = typ_; + }); + termlist = $newType(12, $kindSlice, "typeparams.termlist", true, "golang.org/x/tools/internal/typeparams", false, null); + termSet = $newType(0, $kindStruct, "typeparams.termSet", true, "golang.org/x/tools/internal/typeparams", false, function(complete_, terms_) { + this.$val = this; + if (arguments.length === 0) { + this.complete = false; + this.terms = termlist.nil; + return; + } + this.complete = complete_; + this.terms = terms_; + }); + $pkg.term = term; + $pkg.termlist = termlist; + $pkg.termSet = termSet; + $pkg.$finishSetup = function() { + ptrType = $ptrType(term); + sliceType = $sliceType($Uint8); + sliceType$1 = $sliceType($Bool); + sliceType$2 = $sliceType(ptrType); + ptrType$4 = $ptrType(types.Term); + sliceType$3 = $sliceType(ptrType$4); + sliceType$4 = $sliceType($emptyInterface); + ptrType$5 = $ptrType(types.Interface); + ptrType$6 = $ptrType(termSet); + ptrType$7 = $ptrType(types.Union); + ptrType$8 = $ptrType(types.TypeParam); + $ptrType(term).prototype.String = function String() { + var {$24r, $24r$1, _r, _r$1, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + /* */ if (x === ptrType.nil) { $s = 2; continue; } + /* */ if ($interfaceIsEqual(x.typ, $ifaceNil)) { $s = 3; continue; } + /* */ if (x.tilde) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (x === ptrType.nil) { */ case 2: + $s = -1; return "\xE2\x88\x85"; + /* } else if ($interfaceIsEqual(x.typ, $ifaceNil)) { */ case 3: + $s = -1; return "\xF0\x9D\x93\xA4"; + /* } else if (x.tilde) { */ case 4: + _r = x.typ.String(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = "~" + _r; + $s = 8; case 8: return $24r; + /* } else { */ case 5: + _r$1 = x.typ.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 10; case 10: return $24r$1; + /* } */ case 6: + case 1: + $s = -1; return ""; + /* */ } return; } var $f = {$blk: String, $c: true, $r, $24r, $24r$1, _r, _r$1, x, $s};return $f; + }; + $ptrType(term).prototype.union = function union(y) { + var {_, _$1, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, x, y, $s, $r, $c} = $restore(this, {y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ = ptrType.nil; + _$1 = ptrType.nil; + x = this; + if (x === ptrType.nil && y === ptrType.nil) { + _tmp = ptrType.nil; + _tmp$1 = ptrType.nil; + _ = _tmp; + _$1 = _tmp$1; + $s = -1; return [_, _$1]; + } else if (x === ptrType.nil) { + _tmp$2 = y; + _tmp$3 = ptrType.nil; + _ = _tmp$2; + _$1 = _tmp$3; + $s = -1; return [_, _$1]; + } else if (y === ptrType.nil) { + _tmp$4 = x; + _tmp$5 = ptrType.nil; + _ = _tmp$4; + _$1 = _tmp$5; + $s = -1; return [_, _$1]; + } else if ($interfaceIsEqual(x.typ, $ifaceNil)) { + _tmp$6 = x; + _tmp$7 = ptrType.nil; + _ = _tmp$6; + _$1 = _tmp$7; + $s = -1; return [_, _$1]; + } else if ($interfaceIsEqual(y.typ, $ifaceNil)) { + _tmp$8 = y; + _tmp$9 = ptrType.nil; + _ = _tmp$8; + _$1 = _tmp$9; + $s = -1; return [_, _$1]; + } + _r = x.disjoint(y); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + _tmp$10 = x; + _tmp$11 = y; + _ = _tmp$10; + _$1 = _tmp$11; + $s = -1; return [_, _$1]; + /* } */ case 2: + if (x.tilde || !y.tilde) { + _tmp$12 = x; + _tmp$13 = ptrType.nil; + _ = _tmp$12; + _$1 = _tmp$13; + $s = -1; return [_, _$1]; + } + _tmp$14 = y; + _tmp$15 = ptrType.nil; + _ = _tmp$14; + _$1 = _tmp$15; + $s = -1; return [_, _$1]; + /* */ } return; } var $f = {$blk: union, $c: true, $r, _, _$1, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, x, y, $s};return $f; + }; + $ptrType(term).prototype.intersect = function intersect(y) { + var {_r, x, y, $s, $r, $c} = $restore(this, {y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (x === ptrType.nil || y === ptrType.nil) { + $s = -1; return ptrType.nil; + } else if ($interfaceIsEqual(x.typ, $ifaceNil)) { + $s = -1; return y; + } else if ($interfaceIsEqual(y.typ, $ifaceNil)) { + $s = -1; return x; + } + _r = x.disjoint(y); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + $s = -1; return ptrType.nil; + /* } */ case 2: + if (!x.tilde || y.tilde) { + $s = -1; return x; + } + $s = -1; return y; + /* */ } return; } var $f = {$blk: intersect, $c: true, $r, _r, x, y, $s};return $f; + }; + $ptrType(term).prototype.disjoint = function disjoint(y) { + var {$24r, _r, _r$1, _r$2, ux, uy, x, y, $s, $r, $c} = $restore(this, {y}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + x = this; + if (false && ($interfaceIsEqual(x.typ, $ifaceNil) || $interfaceIsEqual(y.typ, $ifaceNil))) { + $panic(new $String("invalid argument(s)")); + } + ux = x.typ; + /* */ if (y.tilde) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (y.tilde) { */ case 1: + _r = under(ux); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ux = _r; + /* } */ case 2: + uy = y.typ; + /* */ if (x.tilde) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (x.tilde) { */ case 4: + _r$1 = under(uy); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + uy = _r$1; + /* } */ case 5: + _r$2 = types.Identical(ux, uy); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = !_r$2; + $s = 8; case 8: return $24r; + /* */ } return; } var $f = {$blk: disjoint, $c: true, $r, $24r, _r, _r$1, _r$2, ux, uy, x, y, $s};return $f; + }; + ForSignature = function ForSignature$1(sig) { + var sig; + return sig.TypeParams(); + }; + $pkg.ForSignature = ForSignature; + NamedTypeArgs = function NamedTypeArgs$1(named) { + var named; + return named.TypeArgs(); + }; + $pkg.NamedTypeArgs = NamedTypeArgs; + NewTerm = function NewTerm$1(tilde, typ) { + var tilde, typ; + return types.NewTerm(tilde, typ); + }; + $pkg.NewTerm = NewTerm; + termlist.prototype.String = function String$1() { + var {_i, _r, _r$1, _ref, buf, i, x, xl, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + if (xl.$length === 0) { + $s = -1; return "\xE2\x88\x85"; + } + buf = new bytes.Buffer.ptr(sliceType.nil, 0, 0); + _ref = xl; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + buf.WriteString(" | "); + } + _r = x.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = buf.WriteString(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _i++; + $s = 1; continue; + case 2: + $s = -1; return buf.String(); + /* */ } return; } var $f = {$blk: String$1, $c: true, $r, _i, _r, _r$1, _ref, buf, i, x, xl, $s};return $f; + }; + $ptrType(termlist).prototype.String = function(...$args) { return this.$get().String(...$args); }; + termlist.prototype.isEmpty = function isEmpty() { + var _i, _ref, x, xl; + xl = this; + _ref = xl; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(x === ptrType.nil)) { + return false; + } + _i++; + } + return true; + }; + $ptrType(termlist).prototype.isEmpty = function(...$args) { return this.$get().isEmpty(...$args); }; + termlist.prototype.isAll = function isAll() { + var _i, _ref, x, xl; + xl = this; + _ref = xl; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(x === ptrType.nil) && $interfaceIsEqual(x.typ, $ifaceNil)) { + return true; + } + _i++; + } + return false; + }; + $ptrType(termlist).prototype.isAll = function(...$args) { return this.$get().isAll(...$args); }; + termlist.prototype.norm = function norm() { + var {_i, _r, _ref, _tuple, i, j, rl, u1, u2, used, xi, xj, xl, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + used = $makeSlice(sliceType$1, xl.$length); + rl = termlist.nil; + _ref = xl; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + xi = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (xi === ptrType.nil || ((i < 0 || i >= used.$length) ? ($throwRuntimeError("index out of range"), undefined) : used.$array[used.$offset + i])) { + _i++; + /* continue; */ $s = 1; continue; + } + j = i + 1 >> 0; + /* while (true) { */ case 3: + /* if (!(j < xl.$length)) { break; } */ if(!(j < xl.$length)) { $s = 4; continue; } + xj = ((j < 0 || j >= xl.$length) ? ($throwRuntimeError("index out of range"), undefined) : xl.$array[xl.$offset + j]); + if (xj === ptrType.nil || ((j < 0 || j >= used.$length) ? ($throwRuntimeError("index out of range"), undefined) : used.$array[used.$offset + j])) { + j = j + (1) >> 0; + /* continue; */ $s = 3; continue; + } + _r = xi.union(xj); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + u1 = _tuple[0]; + u2 = _tuple[1]; + if (u2 === ptrType.nil) { + if ($interfaceIsEqual(u1.typ, $ifaceNil)) { + $s = -1; return allTermlist; + } + xi = u1; + ((j < 0 || j >= used.$length) ? ($throwRuntimeError("index out of range"), undefined) : used.$array[used.$offset + j] = true); + } + j = j + (1) >> 0; + $s = 3; continue; + case 4: + rl = $append(rl, xi); + _i++; + $s = 1; continue; + case 2: + $s = -1; return rl; + /* */ } return; } var $f = {$blk: norm, $c: true, $r, _i, _r, _ref, _tuple, i, j, rl, u1, u2, used, xi, xj, xl, $s};return $f; + }; + $ptrType(termlist).prototype.norm = function(...$args) { return this.$get().norm(...$args); }; + termlist.prototype.union = function union$1(yl) { + var {$24r, _r, xl, yl, $s, $r, $c} = $restore(this, {yl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + _r = $appendSlice(xl, $convertSliceType(yl, sliceType$2)).norm(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: union$1, $c: true, $r, $24r, _r, xl, yl, $s};return $f; + }; + $ptrType(termlist).prototype.union = function(...$args) { return this.$get().union(...$args); }; + termlist.prototype.intersect = function intersect$1(yl) { + var {$24r, _i, _i$1, _r, _r$1, _ref, _ref$1, r, rl, x, xl, y, yl, $s, $r, $c} = $restore(this, {yl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + xl = this; + if (xl.isEmpty() || yl.isEmpty()) { + $s = -1; return termlist.nil; + } + rl = termlist.nil; + _ref = xl; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = yl; + _i$1 = 0; + /* while (true) { */ case 3: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 4; continue; } + y = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r = x.intersect(y); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if (!(r === ptrType.nil)) { + rl = $append(rl, r); + } + _i$1++; + $s = 3; continue; + case 4: + _i++; + $s = 1; continue; + case 2: + _r$1 = rl.norm(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 7; case 7: return $24r; + /* */ } return; } var $f = {$blk: intersect$1, $c: true, $r, $24r, _i, _i$1, _r, _r$1, _ref, _ref$1, r, rl, x, xl, y, yl, $s};return $f; + }; + $ptrType(termlist).prototype.intersect = function(...$args) { return this.$get().intersect(...$args); }; + InterfaceTermSet = function InterfaceTermSet$1(iface) { + var {$24r, _r, iface, $s, $r, $c} = $restore(this, {iface}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = computeTermSet(iface); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: InterfaceTermSet$1, $c: true, $r, $24r, _r, iface, $s};return $f; + }; + $pkg.InterfaceTermSet = InterfaceTermSet; + UnionTermSet = function UnionTermSet$1(union$2) { + var {$24r, _r, union$2, $s, $r, $c} = $restore(this, {union$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = computeTermSet(union$2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: UnionTermSet$1, $c: true, $r, $24r, _r, union$2, $s};return $f; + }; + $pkg.UnionTermSet = UnionTermSet; + computeTermSet = function computeTermSet$1(typ) { + var {_i, _r, _ref, _tuple, err, term$1, terms, tset, typ, $s, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = computeTermSetInternal(typ, new $global.Map(), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + tset = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType$3.nil, err]; + } + if (tset.terms.isEmpty()) { + $s = -1; return [sliceType$3.nil, $pkg.ErrEmptyTypeSet]; + } + if (tset.terms.isAll()) { + $s = -1; return [sliceType$3.nil, $ifaceNil]; + } + terms = sliceType$3.nil; + _ref = tset.terms; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + term$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + terms = $append(terms, NewTerm(term$1.tilde, term$1.typ)); + _i++; + } + $s = -1; return [terms, $ifaceNil]; + /* */ } return; } var $f = {$blk: computeTermSet$1, $c: true, $r, _i, _r, _ref, _tuple, err, term$1, terms, tset, typ, $s};return $f; + }; + indentf = function indentf$1(depth, format, args) { + var {_r, args, depth, format, $s, $r, $c} = $restore(this, {depth, format, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fmt.Fprintf(os.Stderr, strings.Repeat(".", depth) + format + "\n", args); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + $s = -1; return; + /* */ } return; } var $f = {$blk: indentf$1, $c: true, $r, _r, args, depth, format, $s};return $f; + }; + computeTermSetInternal = function computeTermSetInternal$1(t, seen, depth) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, _arg, _arg$1, _entry, _key, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, depth, embedded, err, err$1, err$2, i, i$1, ok, ok$1, res, seen, t, t$1, terms, tset, tset$1, tset2, tset2$1, u, u$1, u$2, u$3, x, x$1, $s, $deferred, $r, $c} = $restore(this, {t, seen, depth}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + depth = [depth]; + err = [err]; + res = [res]; + tset = [tset]; + res[0] = ptrType$6.nil; + err[0] = $ifaceNil; + if ($interfaceIsEqual(t, $ifaceNil)) { + $panic(new $String("nil type")); + } + /* */ if (false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (false) { */ case 1: + _arg = depth[0]; + _r = t.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = new $String(_r); + $r = indentf(_arg, "%s", new sliceType$4([_arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([(function(depth, err, res, tset) { return function computeTermSetInternal·func1() { + var {_arg$2, _arg$3, _r$1, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!($interfaceIsEqual(err[0], $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 1: + $r = indentf(depth[0], "=> %s", new sliceType$4([err[0]])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 3; continue; + /* } else { */ case 2: + _arg$2 = depth[0]; + _r$1 = res[0].terms.String(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$3 = new $String(_r$1); + $r = indentf(_arg$2, "=> %s", new sliceType$4([_arg$3])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 3: + $s = -1; return; + /* */ } return; } var $f = {$blk: computeTermSetInternal·func1, $c: true, $r, _arg$2, _arg$3, _r$1, $s};return $f; + }; })(depth, err, res, tset), []]); + /* } */ case 2: + _tuple = (_entry = $mapIndex(seen,types.Type.keyFor(t)), _entry !== undefined ? [_entry.v, true] : [ptrType$6.nil, false]); + tset$1 = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (ok) { */ case 5: + /* */ if (!tset$1.complete) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!tset$1.complete) { */ case 7: + _tmp = ptrType$6.nil; + _r$1 = fmt.Errorf("cycle detected in the declaration of %s", new sliceType$4([t])); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tmp$1 = _r$1; + res[0] = _tmp; + err[0] = _tmp$1; + $24r = [res[0], err[0]]; + $s = 10; case 10: return $24r; + /* } */ case 8: + _tmp$2 = tset$1; + _tmp$3 = $ifaceNil; + res[0] = _tmp$2; + err[0] = _tmp$3; + $24r$1 = [res[0], err[0]]; + $s = 11; case 11: return $24r$1; + /* } */ case 6: + tset[0] = new termSet.ptr(false, termlist.nil); + $deferred.push([(function(depth, err, res, tset) { return function computeTermSetInternal·func2() { + tset[0].complete = true; + }; })(depth, err, res, tset), []]); + _key = t; (seen || $throwRuntimeError("assignment to entry in nil map")).set(types.Type.keyFor(_key), { k: _key, v: tset[0] }); + _r$2 = t.Underlying(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _ref = _r$2; + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if ($assertType(_ref, ptrType$5, true)[1]) { */ case 13: + u = _ref.$val; + tset[0].terms = allTermlist; + i = 0; + /* while (true) { */ case 18: + /* if (!(i < u.NumEmbeddeds())) { break; } */ if(!(i < u.NumEmbeddeds())) { $s = 19; continue; } + embedded = u.EmbeddedType(i); + _r$3 = embedded.Underlying(); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$3, ptrType$8, true); + ok$1 = _tuple$1[1]; + /* */ if (ok$1) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (ok$1) { */ case 21: + _tmp$4 = ptrType$6.nil; + _r$4 = fmt.Errorf("invalid embedded type %T", new sliceType$4([embedded])); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tmp$5 = _r$4; + res[0] = _tmp$4; + err[0] = _tmp$5; + $24r$2 = [res[0], err[0]]; + $s = 24; case 24: return $24r$2; + /* } */ case 22: + _r$5 = computeTermSetInternal(embedded, seen, depth[0] + 1 >> 0); /* */ $s = 25; case 25: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$2 = _r$5; + tset2 = _tuple$2[0]; + err$1 = _tuple$2[1]; + /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 26: + _tmp$6 = ptrType$6.nil; + _tmp$7 = err$1; + res[0] = _tmp$6; + err[0] = _tmp$7; + $24r$3 = [res[0], err[0]]; + $s = 28; case 28: return $24r$3; + /* } */ case 27: + _r$6 = tset[0].terms.intersect(tset2.terms); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + tset[0].terms = _r$6; + i = i + (1) >> 0; + $s = 18; continue; + case 19: + $s = 17; continue; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 14: + u$1 = _ref.$val; + tset[0].terms = termlist.nil; + i$1 = 0; + /* while (true) { */ case 30: + /* if (!(i$1 < u$1.Len())) { break; } */ if(!(i$1 < u$1.Len())) { $s = 31; continue; } + t$1 = u$1.Term(i$1); + terms = termlist.nil; + _r$7 = t$1.Type().Underlying(); /* */ $s = 32; case 32: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _ref$1 = _r$7; + /* */ if ($assertType(_ref$1, ptrType$5, true)[1]) { $s = 33; continue; } + /* */ if ($assertType(_ref$1, ptrType$8, true)[1] || $assertType(_ref$1, ptrType$7, true)[1]) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if ($assertType(_ref$1, ptrType$5, true)[1]) { */ case 33: + _r$8 = computeTermSetInternal(t$1.Type(), seen, depth[0] + 1 >> 0); /* */ $s = 37; case 37: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tuple$3 = _r$8; + tset2$1 = _tuple$3[0]; + err$2 = _tuple$3[1]; + /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 38: + _tmp$8 = ptrType$6.nil; + _tmp$9 = err$2; + res[0] = _tmp$8; + err[0] = _tmp$9; + $24r$4 = [res[0], err[0]]; + $s = 40; case 40: return $24r$4; + /* } */ case 39: + terms = tset2$1.terms; + $s = 36; continue; + /* } else if ($assertType(_ref$1, ptrType$8, true)[1] || $assertType(_ref$1, ptrType$7, true)[1]) { */ case 34: + _tmp$10 = ptrType$6.nil; + _r$9 = fmt.Errorf("invalid union term %T", new sliceType$4([t$1])); /* */ $s = 41; case 41: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tmp$11 = _r$9; + res[0] = _tmp$10; + err[0] = _tmp$11; + $24r$5 = [res[0], err[0]]; + $s = 42; case 42: return $24r$5; + /* } else { */ case 35: + if ($interfaceIsEqual(t$1.Type(), (x = types.Typ, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])))) { + i$1 = i$1 + (1) >> 0; + /* continue; */ $s = 30; continue; + } + terms = new termlist([new term.ptr(t$1.Tilde(), t$1.Type())]); + /* } */ case 36: + _r$10 = tset[0].terms.union(terms); /* */ $s = 43; case 43: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + tset[0].terms = _r$10; + /* */ if (tset[0].terms.$length > 100) { $s = 44; continue; } + /* */ $s = 45; continue; + /* if (tset[0].terms.$length > 100) { */ case 44: + _tmp$12 = ptrType$6.nil; + _r$11 = fmt.Errorf("exceeded max term count %d", new sliceType$4([new $Int(100)])); /* */ $s = 46; case 46: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tmp$13 = _r$11; + res[0] = _tmp$12; + err[0] = _tmp$13; + $24r$6 = [res[0], err[0]]; + $s = 47; case 47: return $24r$6; + /* } */ case 45: + i$1 = i$1 + (1) >> 0; + $s = 30; continue; + case 31: + $s = 17; continue; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 15: + u$2 = _ref.$val; + $panic(new $String("unreachable")); + $s = 17; continue; + /* } else { */ case 16: + u$3 = _ref; + if (!($interfaceIsEqual(u$3, (x$1 = types.Typ, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0]))))) { + tset[0].terms = new termlist([new term.ptr(false, t)]); + } + /* } */ case 17: + _tmp$14 = tset[0]; + _tmp$15 = $ifaceNil; + res[0] = _tmp$14; + err[0] = _tmp$15; + $24r$7 = [res[0], err[0]]; + $s = 48; case 48: return $24r$7; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [res[0], err[0]]; } if($curGoroutine.asleep) { var $f = {$blk: computeTermSetInternal$1, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, _arg, _arg$1, _entry, _key, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, depth, embedded, err, err$1, err$2, i, i$1, ok, ok$1, res, seen, t, t$1, terms, tset, tset$1, tset2, tset2$1, u, u$1, u$2, u$3, x, x$1, $s, $deferred};return $f; } } + }; + under = function under$1(t) { + var {$24r, _r, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = t.Underlying(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: under$1, $c: true, $r, $24r, _r, t, $s};return $f; + }; + ptrType.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "equal", name: "equal", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([ptrType], [$Bool], false)}, {prop: "union", name: "union", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([ptrType], [ptrType, ptrType], false)}, {prop: "intersect", name: "intersect", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([ptrType], [ptrType], false)}, {prop: "includes", name: "includes", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([types.Type], [$Bool], false)}, {prop: "subsetOf", name: "subsetOf", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([ptrType], [$Bool], false)}, {prop: "disjoint", name: "disjoint", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([ptrType], [$Bool], false)}]; + termlist.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "isEmpty", name: "isEmpty", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([], [$Bool], false)}, {prop: "isAll", name: "isAll", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([], [$Bool], false)}, {prop: "norm", name: "norm", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([], [termlist], false)}, {prop: "union", name: "union", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([termlist], [termlist], false)}, {prop: "intersect", name: "intersect", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([termlist], [termlist], false)}, {prop: "equal", name: "equal", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([termlist], [$Bool], false)}, {prop: "includes", name: "includes", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([types.Type], [$Bool], false)}, {prop: "supersetOf", name: "supersetOf", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([ptrType], [$Bool], false)}, {prop: "subsetOf", name: "subsetOf", pkg: "golang.org/x/tools/internal/typeparams", typ: $funcType([termlist], [$Bool], false)}]; + term.init("golang.org/x/tools/internal/typeparams", [{prop: "tilde", name: "tilde", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: types.Type, tag: ""}]); + termlist.init(ptrType); + termSet.init("golang.org/x/tools/internal/typeparams", [{prop: "complete", name: "complete", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "terms", name: "terms", embedded: false, exported: false, typ: termlist, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = types.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + allTermlist = new termlist([new term.ptr(false, $ifaceNil)]); + $pkg.ErrEmptyTypeSet = errors.New("empty type set"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["golang.org/x/tools/go/ast/astutil"] = (function() { + var $pkg = {}, $init, fmt, ast, token, typeparams, reflect, sort, strconv, strings, ptrType, abort; + fmt = $packages["fmt"]; + ast = $packages["go/ast"]; + token = $packages["go/token"]; + typeparams = $packages["golang.org/x/tools/internal/typeparams"]; + reflect = $packages["reflect"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + $pkg.$finishSetup = function() { + ptrType = $ptrType($Int); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typeparams.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + abort = $newDataPointer(0, ptrType); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["golang.org/x/tools/go/types/typeutil"] = (function() { + var $pkg = {}, $init, bytes, fmt, ast, types, astutil, typeparams, reflect, sync, Map, entry, Hasher, ptrType, ptrType$3, ptrType$5, sliceType$1, ptrType$6, sliceType$2, sliceType$3, sliceType$4, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, ptrType$16, ptrType$17, ptrType$18, funcType, mapType$2, ptrType$27, sliceType$6, mapType$3, mapType$4, MakeHasher, hashString; + bytes = $packages["bytes"]; + fmt = $packages["fmt"]; + ast = $packages["go/ast"]; + types = $packages["go/types"]; + astutil = $packages["golang.org/x/tools/go/ast/astutil"]; + typeparams = $packages["golang.org/x/tools/internal/typeparams"]; + reflect = $packages["reflect"]; + sync = $packages["sync"]; + Map = $newType(0, $kindStruct, "typeutil.Map", true, "golang.org/x/tools/go/types/typeutil", true, function(hasher_, table_, length_) { + this.$val = this; + if (arguments.length === 0) { + this.hasher = new Hasher.ptr(false, false, ptrType$7.nil); + this.table = false; + this.length = 0; + return; + } + this.hasher = hasher_; + this.table = table_; + this.length = length_; + }); + entry = $newType(0, $kindStruct, "typeutil.entry", true, "golang.org/x/tools/go/types/typeutil", false, function(key_, value_) { + this.$val = this; + if (arguments.length === 0) { + this.key = $ifaceNil; + this.value = $ifaceNil; + return; + } + this.key = key_; + this.value = value_; + }); + Hasher = $newType(0, $kindStruct, "typeutil.Hasher", true, "golang.org/x/tools/go/types/typeutil", true, function(memo_, ptrMap_, sigTParams_) { + this.$val = this; + if (arguments.length === 0) { + this.memo = false; + this.ptrMap = false; + this.sigTParams = ptrType$7.nil; + return; + } + this.memo = memo_; + this.ptrMap = ptrMap_; + this.sigTParams = sigTParams_; + }); + $pkg.Map = Map; + $pkg.entry = entry; + $pkg.Hasher = Hasher; + $pkg.$finishSetup = function() { + ptrType = $ptrType(types.Pointer); + ptrType$3 = $ptrType(types.Named); + ptrType$5 = $ptrType(Map); + sliceType$1 = $sliceType(entry); + ptrType$6 = $ptrType(entry); + sliceType$2 = $sliceType(types.Type); + sliceType$3 = $sliceType($Uint8); + sliceType$4 = $sliceType($emptyInterface); + ptrType$7 = $ptrType(types.TypeParamList); + ptrType$8 = $ptrType(types.Basic); + ptrType$9 = $ptrType(types.Array); + ptrType$10 = $ptrType(types.Slice); + ptrType$11 = $ptrType(types.Struct); + ptrType$12 = $ptrType(types.Signature); + ptrType$13 = $ptrType(types.Union); + ptrType$14 = $ptrType(types.Interface); + ptrType$15 = $ptrType(types.Map); + ptrType$16 = $ptrType(types.Chan); + ptrType$17 = $ptrType(types.TypeParam); + ptrType$18 = $ptrType(types.Tuple); + funcType = $funcType([types.Type, $emptyInterface], [], false); + mapType$2 = $mapType($Uint32, sliceType$1); + ptrType$27 = $ptrType(types.Term); + sliceType$6 = $sliceType(ptrType$27); + mapType$3 = $mapType(types.Type, $Uint32); + mapType$4 = $mapType($emptyInterface, $Uint32); + $ptrType(Map).prototype.SetHasher = function SetHasher(hasher) { + var hasher, m; + m = this; + Hasher.copy(m.hasher, hasher); + }; + $ptrType(Map).prototype.Delete = function Delete(key) { + var {_entry, _i, _r, _r$1, _ref, _v, bucket, e, hash, i, key, m, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + /* */ if (!(m === ptrType$5.nil) && !(m.table === false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(m === ptrType$5.nil) && !(m.table === false)) { */ case 1: + _r = $clone(m.hasher, Hasher).Hash(key); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + hash = _r; + bucket = (_entry = $mapIndex(m.table,$Uint32.keyFor(hash)), _entry !== undefined ? _entry.v : sliceType$1.nil); + _ref = bucket; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + i = _i; + e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), entry); + if (!(!($interfaceIsEqual(e.key, $ifaceNil)))) { _v = false; $s = 8; continue s; } + _r$1 = types.Identical(key, e.key); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 8: + /* */ if (_v) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_v) { */ case 6: + entry.copy(((i < 0 || i >= bucket.$length) ? ($throwRuntimeError("index out of range"), undefined) : bucket.$array[bucket.$offset + i]), new entry.ptr($ifaceNil, $ifaceNil)); + m.length = m.length - (1) >> 0; + $s = -1; return true; + /* } */ case 7: + _i++; + $s = 4; continue; + case 5: + /* } */ case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: Delete, $c: true, $r, _entry, _i, _r, _r$1, _ref, _v, bucket, e, hash, i, key, m, $s};return $f; + }; + $ptrType(Map).prototype.At = function At(key) { + var {_entry, _i, _r, _r$1, _ref, _v, e, key, m, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + /* */ if (!(m === ptrType$5.nil) && !(m.table === false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(m === ptrType$5.nil) && !(m.table === false)) { */ case 1: + _r = $clone(m.hasher, Hasher).Hash(key); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _ref = (_entry = $mapIndex(m.table,$Uint32.keyFor(_r)), _entry !== undefined ? _entry.v : sliceType$1.nil); + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), entry); + if (!(!($interfaceIsEqual(e.key, $ifaceNil)))) { _v = false; $s = 8; continue s; } + _r$1 = types.Identical(key, e.key); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 8: + /* */ if (_v) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_v) { */ case 6: + $s = -1; return e.value; + /* } */ case 7: + _i++; + $s = 4; continue; + case 5: + /* } */ case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: At, $c: true, $r, _entry, _i, _r, _r$1, _ref, _v, e, key, m, $s};return $f; + }; + $ptrType(Map).prototype.Set = function Set(key, value) { + var {_entry, _i, _key, _r, _r$1, _r$2, _ref, bucket, e, hash, hash$1, hole, i, key, m, prev, value, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + prev = $ifaceNil; + m = this; + /* */ if (!(m.table === false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(m.table === false)) { */ case 1: + _r = $clone(m.hasher, Hasher).Hash(key); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + hash = _r; + bucket = (_entry = $mapIndex(m.table,$Uint32.keyFor(hash)), _entry !== undefined ? _entry.v : sliceType$1.nil); + hole = ptrType$6.nil; + _ref = bucket; + _i = 0; + /* while (true) { */ case 5: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; } + i = _i; + e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), entry); + /* */ if ($interfaceIsEqual(e.key, $ifaceNil)) { $s = 7; continue; } + _r$1 = types.Identical(key, e.key); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if ($interfaceIsEqual(e.key, $ifaceNil)) { */ case 7: + hole = ((i < 0 || i >= bucket.$length) ? ($throwRuntimeError("index out of range"), undefined) : bucket.$array[bucket.$offset + i]); + $s = 9; continue; + /* } else if (_r$1) { */ case 8: + prev = e.value; + ((i < 0 || i >= bucket.$length) ? ($throwRuntimeError("index out of range"), undefined) : bucket.$array[bucket.$offset + i]).value = value; + $s = -1; return prev; + /* } */ case 9: + _i++; + $s = 5; continue; + case 6: + if (!(hole === ptrType$6.nil)) { + entry.copy(hole, new entry.ptr(key, value)); + } else { + _key = hash; (m.table || $throwRuntimeError("assignment to entry in nil map")).set($Uint32.keyFor(_key), { k: _key, v: $append(bucket, new entry.ptr(key, value)) }); + } + $s = 3; continue; + /* } else { */ case 2: + if (m.hasher.memo === false) { + Hasher.copy(m.hasher, MakeHasher()); + } + _r$2 = $clone(m.hasher, Hasher).Hash(key); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + hash$1 = _r$2; + m.table = $makeMap($Uint32.keyFor, [{ k: hash$1, v: new sliceType$1([$clone(new entry.ptr(key, value), entry)]) }]); + /* } */ case 3: + m.length = m.length + (1) >> 0; + $s = -1; return prev; + /* */ } return; } var $f = {$blk: Set, $c: true, $r, _entry, _i, _key, _r, _r$1, _r$2, _ref, bucket, e, hash, hash$1, hole, i, key, m, prev, value, $s};return $f; + }; + $ptrType(Map).prototype.Len = function Len() { + var m; + m = this; + if (!(m === ptrType$5.nil)) { + return m.length; + } + return 0; + }; + $ptrType(Map).prototype.Iterate = function Iterate(f) { + var {_entry, _i, _i$1, _key, _keys, _ref, _ref$1, _size, bucket, e, f, m, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + /* */ if (!(m === ptrType$5.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(m === ptrType$5.nil)) { */ case 1: + _ref = m.table; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 3: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 4; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 3; continue; + } + bucket = _entry.v; + _ref$1 = bucket; + _i$1 = 0; + /* while (true) { */ case 5: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 6; continue; } + e = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), entry); + /* */ if (!($interfaceIsEqual(e.key, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(e.key, $ifaceNil))) { */ case 7: + $r = f(e.key, e.value); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 8: + _i$1++; + $s = 5; continue; + case 6: + _i++; + $s = 3; continue; + case 4: + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Iterate, $c: true, $r, _entry, _i, _i$1, _key, _keys, _ref, _ref$1, _size, bucket, e, f, m, $s};return $f; + }; + $ptrType(Map).prototype.Keys = function Keys() { + var {keys, m, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + keys = [keys]; + m = this; + keys[0] = $makeSlice(sliceType$2, 0, m.Len()); + $r = m.Iterate((function(keys) { return function Map·Keys·func1(key, param) { + var key, param; + keys[0] = $append(keys[0], key); + }; })(keys)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return keys[0]; + /* */ } return; } var $f = {$blk: Keys, $c: true, $r, keys, m, $s};return $f; + }; + $ptrType(Map).prototype.toString = function toString(values) { + var {_r, _r$1, buf, m, sep, values, $s, $r, $c} = $restore(this, {values}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + buf = [buf]; + sep = [sep]; + values = [values]; + m = this; + if (m === ptrType$5.nil) { + $s = -1; return "{}"; + } + buf[0] = new bytes.Buffer.ptr(sliceType$3.nil, 0, 0); + _r = fmt.Fprint(buf[0], new sliceType$4([new $String("{")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + sep[0] = ""; + $r = m.Iterate((function(buf, sep, values) { return function Map·toString·func1(key, value) { + var {_r$1, _r$2, _r$3, key, value, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$1 = fmt.Fprint(buf[0], new sliceType$4([new $String(sep[0])])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + sep[0] = ", "; + _r$2 = fmt.Fprint(buf[0], new sliceType$4([key])); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + /* */ if (values[0]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (values[0]) { */ case 3: + _r$3 = fmt.Fprintf(buf[0], ": %q", new sliceType$4([value])); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + /* } */ case 4: + $s = -1; return; + /* */ } return; } var $f = {$blk: Map·toString·func1, $c: true, $r, _r$1, _r$2, _r$3, key, value, $s};return $f; + }; })(buf, sep, values)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$1 = fmt.Fprint(buf[0], new sliceType$4([new $String("}")])); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = -1; return buf[0].String(); + /* */ } return; } var $f = {$blk: toString, $c: true, $r, _r, _r$1, buf, m, sep, values, $s};return $f; + }; + $ptrType(Map).prototype.String = function String() { + var {$24r, _r, m, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + _r = m.toString(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: String, $c: true, $r, $24r, _r, m, $s};return $f; + }; + $ptrType(Map).prototype.KeysString = function KeysString() { + var {$24r, _r, m, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = this; + _r = m.toString(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: KeysString, $c: true, $r, $24r, _r, m, $s};return $f; + }; + MakeHasher = function MakeHasher$1() { + return new Hasher.ptr(new $global.Map(), new $global.Map(), ptrType$7.nil); + }; + $pkg.MakeHasher = MakeHasher; + $ptrType(Hasher).prototype.Hash = function Hash(t) { + var {_entry, _key, _r, _tuple, h, hash, ok, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + h = this; + _tuple = (_entry = $mapIndex(h.memo,types.Type.keyFor(t)), _entry !== undefined ? [_entry.v, true] : [0, false]); + hash = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!ok) { */ case 1: + _r = $clone(h, Hasher).hashFor(t); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + hash = _r; + _key = t; (h.memo || $throwRuntimeError("assignment to entry in nil map")).set(types.Type.keyFor(_key), { k: _key, v: hash }); + /* } */ case 2: + $s = -1; return hash; + /* */ } return; } var $f = {$blk: Hash, $c: true, $r, _entry, _key, _r, _tuple, h, hash, ok, t, $s};return $f; + }; + Hasher.prototype.Hash = function(...$args) { return this.$val.Hash(...$args); }; + hashString = function hashString$1(s) { + var h, i, s; + h = 0; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + h = (h ^ (((s.charCodeAt(i) >>> 0)))) >>> 0; + h = $imul(h, (16777619)) >>> 0; + i = i + (1) >> 0; + } + return h; + }; + $ptrType(Hasher).prototype.hashFor = function hashFor(t) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, f, h, hash, hash$1, hash$2, hash$3, i, i$1, i$2, i$3, m, n, n$1, t, t$1, t$10, t$11, t$12, t$13, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, targ, targs, terms, tparam, tparams, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + h = this; + _ref = t; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$17, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$18, true)[1]) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 1: + t$1 = _ref.$val; + $s = -1; return ((t$1.Kind() >>> 0)); + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 2: + t$2 = _ref.$val; + _r = $clone(h, Hasher).Hash(t$2.Elem()); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = (9043 + ($imul(2, ((t$2.Len().$low >>> 0))) >>> 0) >>> 0) + ($imul(3, _r) >>> 0) >>> 0; + $s = 16; case 16: return $24r; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 3: + t$3 = _ref.$val; + _r$1 = $clone(h, Hasher).Hash(t$3.Elem()); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = 9049 + ($imul(2, _r$1) >>> 0) >>> 0; + $s = 18; case 18: return $24r$1; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 4: + t$4 = _ref.$val; + hash = 9059; + _tmp = 0; + _tmp$1 = t$4.NumFields(); + i = _tmp; + n = _tmp$1; + /* while (true) { */ case 19: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 20; continue; } + f = t$4.Field(i); + if (f.Anonymous()) { + hash = hash + (8861) >>> 0; + } + hash = hash + (hashString(t$4.Tag(i))) >>> 0; + hash = hash + (hashString(f.object.Name())) >>> 0; + _r$2 = $clone(h, Hasher).Hash(f.object.Type()); /* */ $s = 21; case 21: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + hash = hash + (_r$2) >>> 0; + i = i + (1) >> 0; + $s = 19; continue; + case 20: + $s = -1; return hash; + /* } else if ($assertType(_ref, ptrType, true)[1]) { */ case 5: + t$5 = _ref.$val; + _r$3 = $clone(h, Hasher).Hash(t$5.Elem()); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$2 = 9067 + ($imul(2, _r$3) >>> 0) >>> 0; + $s = 23; case 23: return $24r$2; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 6: + t$6 = _ref.$val; + hash$1 = 9091; + if (t$6.Variadic()) { + hash$1 = $imul(hash$1, (8863)) >>> 0; + } + tparams = typeparams.ForSignature(t$6); + if (h.sigTParams === ptrType$7.nil && !((tparams.Len() === 0))) { + Hasher.copy(h, new Hasher.ptr(new $global.Map(), h.ptrMap, tparams)); + } + i$1 = 0; + /* while (true) { */ case 24: + /* if (!(i$1 < tparams.Len())) { break; } */ if(!(i$1 < tparams.Len())) { $s = 25; continue; } + tparam = tparams.At(i$1); + _r$4 = $clone(h, Hasher).Hash(tparam.Constraint()); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + hash$1 = hash$1 + (($imul(7, _r$4) >>> 0)) >>> 0; + i$1 = i$1 + (1) >> 0; + $s = 24; continue; + case 25: + _r$5 = $clone(h, Hasher).hashTuple(t$6.Params()); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = $clone(h, Hasher).hashTuple(t$6.Results()); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$3 = (hash$1 + ($imul(3, _r$5) >>> 0) >>> 0) + ($imul(5, _r$6) >>> 0) >>> 0; + $s = 29; case 29: return $24r$3; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 7: + t$7 = _ref.$val; + _r$7 = $clone(h, Hasher).hashUnion(t$7); /* */ $s = 30; case 30: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $24r$4 = _r$7; + $s = 31; case 31: return $24r$4; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 8: + t$8 = _ref.$val; + hash$2 = 9103; + _tmp$2 = 0; + _r$8 = t$8.NumMethods(); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _tmp$3 = _r$8; + i$2 = _tmp$2; + n$1 = _tmp$3; + /* while (true) { */ case 33: + /* if (!(i$2 < n$1)) { break; } */ if(!(i$2 < n$1)) { $s = 34; continue; } + _r$9 = t$8.Method(i$2); /* */ $s = 35; case 35: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + m = _r$9; + _r$10 = $clone(h, Hasher).shallowHash(m.object.Type()); /* */ $s = 36; case 36: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + hash$2 = hash$2 + ((($imul(3, hashString(m.object.Name())) >>> 0) + ($imul(5, _r$10) >>> 0) >>> 0)) >>> 0; + i$2 = i$2 + (1) >> 0; + $s = 33; continue; + case 34: + _r$11 = typeparams.InterfaceTermSet(t$8); /* */ $s = 37; case 37: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _tuple = _r$11; + terms = _tuple[0]; + err = _tuple[1]; + /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 38; continue; } + /* */ $s = 39; continue; + /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 38: + _r$12 = $clone(h, Hasher).hashTermSet(terms); /* */ $s = 40; case 40: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + hash$2 = hash$2 + (_r$12) >>> 0; + /* } */ case 39: + $s = -1; return hash$2; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 9: + t$9 = _ref.$val; + _r$13 = $clone(h, Hasher).Hash(t$9.Key()); /* */ $s = 41; case 41: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$14 = $clone(h, Hasher).Hash(t$9.Elem()); /* */ $s = 42; case 42: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + $24r$5 = (9109 + ($imul(2, _r$13) >>> 0) >>> 0) + ($imul(3, _r$14) >>> 0) >>> 0; + $s = 43; case 43: return $24r$5; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 10: + t$10 = _ref.$val; + _r$15 = $clone(h, Hasher).Hash(t$10.Elem()); /* */ $s = 44; case 44: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + $24r$6 = (9127 + ($imul(2, ((t$10.Dir() >>> 0))) >>> 0) >>> 0) + ($imul(3, _r$15) >>> 0) >>> 0; + $s = 45; case 45: return $24r$6; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 11: + t$11 = _ref.$val; + _r$16 = $clone(h, Hasher).hashPtr(t$11.Obj()); /* */ $s = 46; case 46: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + hash$3 = _r$16; + targs = typeparams.NamedTypeArgs(t$11); + i$3 = 0; + /* while (true) { */ case 47: + /* if (!(i$3 < targs.Len())) { break; } */ if(!(i$3 < targs.Len())) { $s = 48; continue; } + targ = targs.At(i$3); + _r$17 = $clone(h, Hasher).Hash(targ); /* */ $s = 49; case 49: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + hash$3 = hash$3 + (($imul(2, _r$17) >>> 0)) >>> 0; + i$3 = i$3 + (1) >> 0; + $s = 47; continue; + case 48: + $s = -1; return hash$3; + /* } else if ($assertType(_ref, ptrType$17, true)[1]) { */ case 12: + t$12 = _ref.$val; + _r$18 = $clone(h, Hasher).hashTypeParam(t$12); /* */ $s = 50; case 50: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + $24r$7 = _r$18; + $s = 51; case 51: return $24r$7; + /* } else if ($assertType(_ref, ptrType$18, true)[1]) { */ case 13: + t$13 = _ref.$val; + _r$19 = $clone(h, Hasher).hashTuple(t$13); /* */ $s = 52; case 52: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + $24r$8 = _r$19; + $s = 53; case 53: return $24r$8; + /* } */ case 14: + _r$20 = fmt.Sprintf("%T: %v", new sliceType$4([t, t])); /* */ $s = 54; case 54: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + $panic(new $String(_r$20)); + $s = -1; return 0; + /* */ } return; } var $f = {$blk: hashFor, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, err, f, h, hash, hash$1, hash$2, hash$3, i, i$1, i$2, i$3, m, n, n$1, t, t$1, t$10, t$11, t$12, t$13, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, targ, targs, terms, tparam, tparams, $s};return $f; + }; + Hasher.prototype.hashFor = function(...$args) { return this.$val.hashFor(...$args); }; + $ptrType(Hasher).prototype.hashTuple = function hashTuple(tuple) { + var {_r, h, hash, i, n, tuple, $s, $r, $c} = $restore(this, {tuple}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + h = this; + n = tuple.Len(); + hash = 9137 + ($imul(2, ((n >>> 0))) >>> 0) >>> 0; + i = 0; + /* while (true) { */ case 1: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } + _r = $clone(h, Hasher).Hash(tuple.At(i).object.Type()); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + hash = hash + (($imul(3, _r) >>> 0)) >>> 0; + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return hash; + /* */ } return; } var $f = {$blk: hashTuple, $c: true, $r, _r, h, hash, i, n, tuple, $s};return $f; + }; + Hasher.prototype.hashTuple = function(...$args) { return this.$val.hashTuple(...$args); }; + $ptrType(Hasher).prototype.hashUnion = function hashUnion(t) { + var {$24r, _r, _r$1, _tuple, err, h, t, terms, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + h = this; + _r = typeparams.UnionTermSet(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + terms = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return 9151; + } + _r$1 = $clone(h, Hasher).hashTermSet(terms); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: hashUnion, $c: true, $r, $24r, _r, _r$1, _tuple, err, h, t, terms, $s};return $f; + }; + Hasher.prototype.hashUnion = function(...$args) { return this.$val.hashUnion(...$args); }; + $ptrType(Hasher).prototype.hashTermSet = function hashTermSet(terms) { + var {_i, _r, _ref, h, hash, term, termHash, terms, $s, $r, $c} = $restore(this, {terms}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + h = this; + hash = 9157 + ($imul(2, ((terms.$length >>> 0))) >>> 0) >>> 0; + _ref = terms; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + term = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r = $clone(h, Hasher).Hash(term.Type()); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + termHash = _r; + if (term.Tilde()) { + termHash = $imul(termHash, (9161)) >>> 0; + } + hash = hash + (($imul(3, termHash) >>> 0)) >>> 0; + _i++; + $s = 1; continue; + case 2: + $s = -1; return hash; + /* */ } return; } var $f = {$blk: hashTermSet, $c: true, $r, _i, _r, _ref, h, hash, term, termHash, terms, $s};return $f; + }; + Hasher.prototype.hashTermSet = function(...$args) { return this.$val.hashTermSet(...$args); }; + $ptrType(Hasher).prototype.hashTypeParam = function hashTypeParam(t) { + var {$24r, _r, h, i, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + h = this; + if (!(h.sigTParams === ptrType$7.nil)) { + i = t.Index(); + if (i >= 0 && i < h.sigTParams.Len() && t === h.sigTParams.At(i)) { + $s = -1; return 9173 + ($imul(3, ((i >>> 0))) >>> 0) >>> 0; + } + } + _r = $clone(h, Hasher).hashPtr(t.Obj()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: hashTypeParam, $c: true, $r, $24r, _r, h, i, t, $s};return $f; + }; + Hasher.prototype.hashTypeParam = function(...$args) { return this.$val.hashTypeParam(...$args); }; + $ptrType(Hasher).prototype.hashPtr = function hashPtr(ptr) { + var {_entry, _key, _r, _r$1, _tuple, h, hash, hash$1, ok, ptr, $s, $r, $c} = $restore(this, {ptr}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + h = this; + _tuple = (_entry = $mapIndex(h.ptrMap,$emptyInterface.keyFor(ptr)), _entry !== undefined ? [_entry.v, true] : [0, false]); + hash = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return hash; + } + _r = reflect.ValueOf(ptr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = $clone(_r, reflect.Value).Pointer(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + hash$1 = ((_r$1 >>> 0)); + _key = ptr; (h.ptrMap || $throwRuntimeError("assignment to entry in nil map")).set($emptyInterface.keyFor(_key), { k: _key, v: hash$1 }); + $s = -1; return hash$1; + /* */ } return; } var $f = {$blk: hashPtr, $c: true, $r, _entry, _key, _r, _r$1, _tuple, h, hash, hash$1, ok, ptr, $s};return $f; + }; + Hasher.prototype.hashPtr = function(...$args) { return this.$val.hashPtr(...$args); }; + $ptrType(Hasher).prototype.shallowHash = function shallowHash(t) { + var {$24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, h, hash, hash$1, i, n, t, t$1, t$10, t$11, t$12, t$13, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + h = this; + _ref = t; + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$18, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$17, true)[1]) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if ($assertType(_ref, ptrType$12, true)[1]) { */ case 1: + t$1 = _ref.$val; + hash = 604171; + if (t$1.Variadic()) { + hash = $imul(hash, (971767)) >>> 0; + } + _r = $clone(h, Hasher).shallowHash(t$1.Params()); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = $clone(h, Hasher).shallowHash(t$1.Results()); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = (hash + ($imul(1062599, _r) >>> 0) >>> 0) + ($imul(1282529, _r$1) >>> 0) >>> 0; + $s = 17; case 17: return $24r; + /* } else if ($assertType(_ref, ptrType$18, true)[1]) { */ case 2: + t$2 = _ref.$val; + n = t$2.Len(); + hash$1 = 9137 + ($imul(2, ((n >>> 0))) >>> 0) >>> 0; + i = 0; + /* while (true) { */ case 18: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 19; continue; } + _r$2 = $clone(h, Hasher).shallowHash(t$2.At(i).object.Type()); /* */ $s = 20; case 20: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + hash$1 = hash$1 + (($imul(53471161, _r$2) >>> 0)) >>> 0; + i = i + (1) >> 0; + $s = 18; continue; + case 19: + $s = -1; return hash$1; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 3: + t$3 = _ref.$val; + $s = -1; return $imul(45212177, ((t$3.Kind() >>> 0))) >>> 0; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 4: + t$4 = _ref.$val; + $s = -1; return 1524181 + ($imul(2, ((t$4.Len().$low >>> 0))) >>> 0) >>> 0; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 5: + t$5 = _ref.$val; + $s = -1; return 2690201; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 6: + t$6 = _ref.$val; + $s = -1; return 3326489; + /* } else if ($assertType(_ref, ptrType, true)[1]) { */ case 7: + t$7 = _ref.$val; + $s = -1; return 4393139; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 8: + t$8 = _ref.$val; + $s = -1; return 562448657; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 9: + t$9 = _ref.$val; + $s = -1; return 2124679; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 10: + t$10 = _ref.$val; + $s = -1; return 9109; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 11: + t$11 = _ref.$val; + $s = -1; return 9127; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 12: + t$12 = _ref.$val; + _r$3 = $clone(h, Hasher).hashPtr(t$12.Obj()); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = _r$3; + $s = 22; case 22: return $24r$1; + /* } else if ($assertType(_ref, ptrType$17, true)[1]) { */ case 13: + t$13 = _ref.$val; + _r$4 = $clone(h, Hasher).hashPtr(t$13.Obj()); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$2 = _r$4; + $s = 24; case 24: return $24r$2; + /* } */ case 14: + _r$5 = fmt.Sprintf("shallowHash: %T: %v", new sliceType$4([t, t])); /* */ $s = 25; case 25: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $panic(new $String(_r$5)); + $s = -1; return 0; + /* */ } return; } var $f = {$blk: shallowHash, $c: true, $r, $24r, $24r$1, $24r$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, h, hash, hash$1, i, n, t, t$1, t$10, t$11, t$12, t$13, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, $s};return $f; + }; + Hasher.prototype.shallowHash = function(...$args) { return this.$val.shallowHash(...$args); }; + ptrType$5.methods = [{prop: "SetHasher", name: "SetHasher", pkg: "", typ: $funcType([Hasher], [], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([types.Type], [$Bool], false)}, {prop: "At", name: "At", pkg: "", typ: $funcType([types.Type], [$emptyInterface], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([types.Type, $emptyInterface], [$emptyInterface], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Iterate", name: "Iterate", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "Keys", name: "Keys", pkg: "", typ: $funcType([], [sliceType$2], false)}, {prop: "toString", name: "toString", pkg: "golang.org/x/tools/go/types/typeutil", typ: $funcType([$Bool], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "KeysString", name: "KeysString", pkg: "", typ: $funcType([], [$String], false)}]; + Hasher.methods = [{prop: "Hash", name: "Hash", pkg: "", typ: $funcType([types.Type], [$Uint32], false)}, {prop: "hashFor", name: "hashFor", pkg: "golang.org/x/tools/go/types/typeutil", typ: $funcType([types.Type], [$Uint32], false)}, {prop: "hashTuple", name: "hashTuple", pkg: "golang.org/x/tools/go/types/typeutil", typ: $funcType([ptrType$18], [$Uint32], false)}, {prop: "hashUnion", name: "hashUnion", pkg: "golang.org/x/tools/go/types/typeutil", typ: $funcType([ptrType$13], [$Uint32], false)}, {prop: "hashTermSet", name: "hashTermSet", pkg: "golang.org/x/tools/go/types/typeutil", typ: $funcType([sliceType$6], [$Uint32], false)}, {prop: "hashTypeParam", name: "hashTypeParam", pkg: "golang.org/x/tools/go/types/typeutil", typ: $funcType([ptrType$17], [$Uint32], false)}, {prop: "hashPtr", name: "hashPtr", pkg: "golang.org/x/tools/go/types/typeutil", typ: $funcType([$emptyInterface], [$Uint32], false)}, {prop: "shallowHash", name: "shallowHash", pkg: "golang.org/x/tools/go/types/typeutil", typ: $funcType([types.Type], [$Uint32], false)}]; + Map.init("golang.org/x/tools/go/types/typeutil", [{prop: "hasher", name: "hasher", embedded: false, exported: false, typ: Hasher, tag: ""}, {prop: "table", name: "table", embedded: false, exported: false, typ: mapType$2, tag: ""}, {prop: "length", name: "length", embedded: false, exported: false, typ: $Int, tag: ""}]); + entry.init("golang.org/x/tools/go/types/typeutil", [{prop: "key", name: "key", embedded: false, exported: false, typ: types.Type, tag: ""}, {prop: "value", name: "value", embedded: false, exported: false, typ: $emptyInterface, tag: ""}]); + Hasher.init("golang.org/x/tools/go/types/typeutil", [{prop: "memo", name: "memo", embedded: false, exported: false, typ: mapType$3, tag: ""}, {prop: "ptrMap", name: "ptrMap", embedded: false, exported: false, typ: mapType$4, tag: ""}, {prop: "sigTParams", name: "sigTParams", embedded: false, exported: false, typ: ptrType$7, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = types.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = astutil.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typeparams.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = reflect.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/typesutil"] = (function() { + var $pkg = {}, $init, fmt, types, typeutil, strings, Selection, selectionImpl, TypeNames, TypeList, Signature, ptrType, ptrType$1, ptrType$2, ptrType$3, sliceType, ptrType$4, sliceType$1, sliceType$2, sliceType$3, ptrType$5, ptrType$6, ptrType$7, ptrType$8, structType, ptrType$9, sliceType$4, ptrType$10, ptrType$11, sliceType$5, ptrType$12, mapType, IsJsPackage, IsJsObject, RecvType, RecvAsFirstArg, NewSelection, fieldsOf, OffsetOf, IsMethod; + fmt = $packages["fmt"]; + types = $packages["go/types"]; + typeutil = $packages["golang.org/x/tools/go/types/typeutil"]; + strings = $packages["strings"]; + Selection = $newType(8, $kindInterface, "typesutil.Selection", true, "github.com/gopherjs/gopherjs/compiler/typesutil", true, null); + selectionImpl = $newType(0, $kindStruct, "typesutil.selectionImpl", true, "github.com/gopherjs/gopherjs/compiler/typesutil", false, function(kind_, recv_, index_, obj_, typ_) { + this.$val = this; + if (arguments.length === 0) { + this.kind = 0; + this.recv = $ifaceNil; + this.index = sliceType$2.nil; + this.obj = $ifaceNil; + this.typ = $ifaceNil; + return; + } + this.kind = kind_; + this.recv = recv_; + this.index = index_; + this.obj = obj_; + this.typ = typ_; + }); + TypeNames = $newType(0, $kindStruct, "typesutil.TypeNames", true, "github.com/gopherjs/gopherjs/compiler/typesutil", true, function(known_, order_) { + this.$val = this; + if (arguments.length === 0) { + this.known = false; + this.order = sliceType$5.nil; + return; + } + this.known = known_; + this.order = order_; + }); + TypeList = $newType(12, $kindSlice, "typesutil.TypeList", true, "github.com/gopherjs/gopherjs/compiler/typesutil", true, null); + Signature = $newType(0, $kindStruct, "typesutil.Signature", true, "github.com/gopherjs/gopherjs/compiler/typesutil", true, function(Sig_) { + this.$val = this; + if (arguments.length === 0) { + this.Sig = ptrType$7.nil; + return; + } + this.Sig = Sig_; + }); + $pkg.Selection = Selection; + $pkg.selectionImpl = selectionImpl; + $pkg.TypeNames = TypeNames; + $pkg.TypeList = TypeList; + $pkg.Signature = Signature; + $pkg.$finishSetup = function() { + ptrType = $ptrType(types.Package); + ptrType$1 = $ptrType(types.Pointer); + ptrType$2 = $ptrType(types.Named); + ptrType$3 = $ptrType(types.Var); + sliceType = $sliceType(ptrType$3); + ptrType$4 = $ptrType(types.TypeParam); + sliceType$1 = $sliceType(ptrType$4); + sliceType$2 = $sliceType($Int); + sliceType$3 = $sliceType($emptyInterface); + ptrType$5 = $ptrType(types.Struct); + ptrType$6 = $ptrType(types.Func); + ptrType$7 = $ptrType(types.Signature); + ptrType$8 = $ptrType(types.TypeName); + structType = $structType("", []); + ptrType$9 = $ptrType(strings.Builder); + sliceType$4 = $sliceType($Uint8); + ptrType$10 = $ptrType(types.Slice); + ptrType$11 = $ptrType(selectionImpl); + sliceType$5 = $sliceType(ptrType$8); + ptrType$12 = $ptrType(TypeNames); + mapType = $mapType(ptrType$8, structType); + IsJsPackage = function IsJsPackage$1(pkg) { + var pkg; + return !(pkg === ptrType.nil) && pkg.Path() === "github.com/gopherjs/gopherjs/js"; + }; + $pkg.IsJsPackage = IsJsPackage; + IsJsObject = function IsJsObject$1(t) { + var _tuple, _tuple$1, isNamed, isPtr, named, ptr, t; + _tuple = $assertType(t, ptrType$1, true); + ptr = _tuple[0]; + isPtr = _tuple[1]; + if (!isPtr) { + return false; + } + _tuple$1 = $assertType(ptr.Elem(), ptrType$2, true); + named = _tuple$1[0]; + isNamed = _tuple$1[1]; + return isNamed && IsJsPackage(named.Obj().object.Pkg()) && named.Obj().object.Name() === "Object"; + }; + $pkg.IsJsObject = IsJsObject; + RecvType = function RecvType$1(sig) { + var _tuple, ok, ptrType$4, recv, sig, typ; + recv = sig.Recv(); + if (recv === ptrType$3.nil) { + return ptrType$2.nil; + } + typ = recv.object.Type(); + _tuple = $assertType(typ, ptrType$1, true); + ptrType$4 = _tuple[0]; + ok = _tuple[1]; + if (ok) { + typ = ptrType$4.Elem(); + } + return $assertType(typ, ptrType$2); + }; + $pkg.RecvType = RecvType; + RecvAsFirstArg = function RecvAsFirstArg$1(sig) { + var {$24r, _r, i, params, sig, $s, $r, $c} = $restore(this, {sig}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + params = $makeSlice(sliceType, 0, (1 + sig.Params().Len() >> 0)); + params = $append(params, sig.Recv()); + i = 0; + while (true) { + if (!(i < sig.Params().Len())) { break; } + params = $append(params, sig.Params().At(i)); + i = i + (1) >> 0; + } + _r = types.NewSignatureType(ptrType$3.nil, sliceType$1.nil, sliceType$1.nil, types.NewTuple(params), sig.Results(), sig.Variadic()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: RecvAsFirstArg$1, $c: true, $r, $24r, _r, i, params, sig, $s};return $f; + }; + $pkg.RecvAsFirstArg = RecvAsFirstArg; + NewSelection = function NewSelection$1(kind, recv, index, obj, typ) { + var index, kind, obj, recv, typ; + return new selectionImpl.ptr(kind, recv, index, obj, typ); + }; + $pkg.NewSelection = NewSelection; + $ptrType(selectionImpl).prototype.Kind = function Kind() { + var sel; + sel = this; + return sel.kind; + }; + $ptrType(selectionImpl).prototype.Recv = function Recv() { + var sel; + sel = this; + return sel.recv; + }; + $ptrType(selectionImpl).prototype.Index = function Index() { + var sel; + sel = this; + return sel.index; + }; + $ptrType(selectionImpl).prototype.Obj = function Obj() { + var sel; + sel = this; + return sel.obj; + }; + $ptrType(selectionImpl).prototype.Type = function Type() { + var sel; + sel = this; + return sel.typ; + }; + fieldsOf = function fieldsOf$1(s) { + var fields, i, s; + fields = $makeSlice(sliceType, s.NumFields()); + i = 0; + while (true) { + if (!(i < s.NumFields())) { break; } + ((i < 0 || i >= fields.$length) ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + i] = s.Field(i)); + i = i + (1) >> 0; + } + return fields; + }; + OffsetOf = function OffsetOf$1(sizes, sel) { + var {_i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, idx, o, s, sel, sizes, typ, x, x$1, $s, $r, $c} = $restore(this, {sizes, sel}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = sel.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 0))) { */ case 1: + _r$1 = fmt.Errorf("byte offsets are only defined for struct fields", sliceType$3.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(_r$1); + /* } */ case 2: + _r$2 = sel.Recv(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + typ = _r$2; + o = new $Int64(0, 0); + _r$3 = sel.Index(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _ref = _r$3; + _i = 0; + /* while (true) { */ case 7: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 8; continue; } + idx = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$4 = typ.Underlying(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + s = $assertType(_r$4, ptrType$5); + _r$5 = sizes.Offsetsof(fieldsOf(s)); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + o = (x = (x$1 = _r$5, ((idx < 0 || idx >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + idx])), new $Int64(o.$high + x.$high, o.$low + x.$low)); + typ = s.Field(idx).object.Type(); + _i++; + $s = 7; continue; + case 8: + $s = -1; return o; + /* */ } return; } var $f = {$blk: OffsetOf$1, $c: true, $r, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, idx, o, s, sel, sizes, typ, x, x$1, $s};return $f; + }; + $pkg.OffsetOf = OffsetOf; + IsMethod = function IsMethod$1(o) { + var _tuple, f, o, ok; + _tuple = $assertType(o, ptrType$6, true); + f = _tuple[0]; + ok = _tuple[1]; + return ok && !($assertType(f.object.Type(), ptrType$7).Recv() === ptrType$3.nil); + }; + $pkg.IsMethod = IsMethod; + $ptrType(TypeNames).prototype.Add = function Add(name) { + var _entry, _key, _tuple, name, ok, tn; + tn = this; + _tuple = (_entry = $mapIndex(tn.known,ptrType$8.keyFor(name)), _entry !== undefined ? [_entry.v, true] : [new structType.ptr(), false]); + ok = _tuple[1]; + if (ok) { + return; + } + if (tn.known === false) { + tn.known = $makeMap(ptrType$8.keyFor, []); + } + tn.order = $append(tn.order, name); + _key = name; (tn.known || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$8.keyFor(_key), { k: _key, v: $clone(new structType.ptr(), structType) }); + }; + $ptrType(TypeNames).prototype.Slice = function Slice() { + var tn; + tn = this; + return tn.order; + }; + TypeList.prototype.String = function String() { + var {_i, _r, _r$1, _ref, buf, i, tl, typ, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + tl = this; + buf = new strings.Builder.ptr(ptrType$9.nil, sliceType$4.nil); + _ref = tl; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + typ = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((i === 0))) { + buf.WriteString(", "); + } + _r = types.TypeString(typ, $throwNilPointerError); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = buf.WriteString(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _i++; + $s = 1; continue; + case 2: + $s = -1; return buf.String(); + /* */ } return; } var $f = {$blk: String, $c: true, $r, _i, _r, _r$1, _ref, buf, i, tl, typ, $s};return $f; + }; + $ptrType(TypeList).prototype.String = function(...$args) { return this.$get().String(...$args); }; + TypeList.prototype.Equal = function Equal(other) { + var {_i, _r, _ref, i, other, tl, $s, $r, $c} = $restore(this, {other}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + tl = this; + if (!((tl.$length === other.$length))) { + $s = -1; return false; + } + _ref = tl; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + _r = types.Identical(((i < 0 || i >= tl.$length) ? ($throwRuntimeError("index out of range"), undefined) : tl.$array[tl.$offset + i]), ((i < 0 || i >= other.$length) ? ($throwRuntimeError("index out of range"), undefined) : other.$array[other.$offset + i])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r) { */ case 3: + $s = -1; return false; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return true; + /* */ } return; } var $f = {$blk: Equal, $c: true, $r, _i, _r, _ref, i, other, tl, $s};return $f; + }; + $ptrType(TypeList).prototype.Equal = function(...$args) { return this.$get().Equal(...$args); }; + $ptrType(Signature).prototype.RequiredParams = function RequiredParams() { + var l, st; + st = this; + l = st.Sig.Params().Len(); + if (st.Sig.Variadic()) { + return l - 1 >> 0; + } + return l; + }; + Signature.prototype.RequiredParams = function(...$args) { return this.$val.RequiredParams(...$args); }; + $ptrType(Signature).prototype.VariadicType = function VariadicType() { + var st; + st = this; + if (!st.Sig.Variadic()) { + return $ifaceNil; + } + return st.Sig.Params().At(st.Sig.Params().Len() - 1 >> 0).object.Type(); + }; + Signature.prototype.VariadicType = function(...$args) { return this.$val.VariadicType(...$args); }; + $ptrType(Signature).prototype.Param = function Param(i, ellipsis) { + var {_r, ellipsis, i, st, $s, $r, $c} = $restore(this, {i, ellipsis}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + st = this; + if (i < $clone(st, Signature).RequiredParams()) { + $s = -1; return st.Sig.Params().At(i).object.Type(); + } + /* */ if (!st.Sig.Variadic()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!st.Sig.Variadic()) { */ case 1: + _r = fmt.Errorf("tried to access parameter %d of a non-variadic signature %s", new sliceType$3([new $Int(i), st.Sig])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(_r); + /* } */ case 2: + if (ellipsis) { + $s = -1; return $clone(st, Signature).VariadicType(); + } + $s = -1; return $assertType($clone(st, Signature).VariadicType(), ptrType$10).Elem(); + /* */ } return; } var $f = {$blk: Param, $c: true, $r, _r, ellipsis, i, st, $s};return $f; + }; + Signature.prototype.Param = function(...$args) { return this.$val.Param(...$args); }; + $ptrType(Signature).prototype.HasResults = function HasResults() { + var st; + st = this; + return st.Sig.Results().Len() > 0; + }; + Signature.prototype.HasResults = function(...$args) { return this.$val.HasResults(...$args); }; + $ptrType(Signature).prototype.HasNamedResults = function HasNamedResults() { + var st; + st = this; + return $clone(st, Signature).HasResults() && !(st.Sig.Results().At(0).object.Name() === ""); + }; + Signature.prototype.HasNamedResults = function(...$args) { return this.$val.HasNamedResults(...$args); }; + ptrType$11.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [types.SelectionKind], false)}, {prop: "Recv", name: "Recv", pkg: "", typ: $funcType([], [types.Type], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([], [sliceType$2], false)}, {prop: "Obj", name: "Obj", pkg: "", typ: $funcType([], [types.Object], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [types.Type], false)}]; + ptrType$12.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType$8], [], false)}, {prop: "Slice", name: "Slice", pkg: "", typ: $funcType([], [sliceType$5], false)}]; + TypeList.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([TypeList], [$Bool], false)}]; + Signature.methods = [{prop: "RequiredParams", name: "RequiredParams", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "VariadicType", name: "VariadicType", pkg: "", typ: $funcType([], [types.Type], false)}, {prop: "Param", name: "Param", pkg: "", typ: $funcType([$Int, $Bool], [types.Type], false)}, {prop: "HasResults", name: "HasResults", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "HasNamedResults", name: "HasNamedResults", pkg: "", typ: $funcType([], [$Bool], false)}]; + Selection.init([{prop: "Index", name: "Index", pkg: "", typ: $funcType([], [sliceType$2], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [types.SelectionKind], false)}, {prop: "Obj", name: "Obj", pkg: "", typ: $funcType([], [types.Object], false)}, {prop: "Recv", name: "Recv", pkg: "", typ: $funcType([], [types.Type], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [types.Type], false)}]); + selectionImpl.init("github.com/gopherjs/gopherjs/compiler/typesutil", [{prop: "kind", name: "kind", embedded: false, exported: false, typ: types.SelectionKind, tag: ""}, {prop: "recv", name: "recv", embedded: false, exported: false, typ: types.Type, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "obj", name: "obj", embedded: false, exported: false, typ: types.Object, tag: ""}, {prop: "typ", name: "typ", embedded: false, exported: false, typ: types.Type, tag: ""}]); + TypeNames.init("github.com/gopherjs/gopherjs/compiler/typesutil", [{prop: "known", name: "known", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "order", name: "order", embedded: false, exported: false, typ: sliceType$5, tag: ""}]); + TypeList.init(types.Type); + Signature.init("", [{prop: "Sig", name: "Sig", embedded: false, exported: true, typ: ptrType$7, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = types.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typeutil.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/internal/govendor/subst"] = (function() { + var $pkg = {}, $init, token, types, typeutil, subster, varlist, fieldlist, Subster, ptrType, sliceType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, ptrType$16, ptrType$17, sliceType$1, ptrType$18, sliceType$2, sliceType$3, ptrType$19, sliceType$4, sliceType$5, ptrType$20, ptrType$21, mapType, mapType$1, assert, changeRecv, declaredWithin, makeSubster, New; + token = $packages["go/token"]; + types = $packages["go/types"]; + typeutil = $packages["golang.org/x/tools/go/types/typeutil"]; + subster = $newType(0, $kindStruct, "subst.subster", true, "github.com/gopherjs/gopherjs/internal/govendor/subst", false, function(replacements_, cache_, origin_, ctxt_, uniqueness_) { + this.$val = this; + if (arguments.length === 0) { + this.replacements = false; + this.cache = false; + this.origin = ptrType$1.nil; + this.ctxt = ptrType$3.nil; + this.uniqueness = new typeutil.Map.ptr(new typeutil.Hasher.ptr(false, false, ptrType$4.nil), false, 0); + return; + } + this.replacements = replacements_; + this.cache = cache_; + this.origin = origin_; + this.ctxt = ctxt_; + this.uniqueness = uniqueness_; + }); + varlist = $newType(8, $kindInterface, "subst.varlist", true, "github.com/gopherjs/gopherjs/internal/govendor/subst", false, null); + fieldlist = $newType(0, $kindStruct, "subst.fieldlist", true, "github.com/gopherjs/gopherjs/internal/govendor/subst", false, function(str_) { + this.$val = this; + if (arguments.length === 0) { + this.str = ptrType$11.nil; + return; + } + this.str = str_; + }); + Subster = $newType(0, $kindStruct, "subst.Subster", true, "github.com/gopherjs/gopherjs/internal/govendor/subst", true, function(impl_) { + this.$val = this; + if (arguments.length === 0) { + this.impl = ptrType$5.nil; + return; + } + this.impl = impl_; + }); + $pkg.subster = subster; + $pkg.varlist = varlist; + $pkg.fieldlist = fieldlist; + $pkg.Subster = Subster; + $pkg.$finishSetup = function() { + ptrType = $ptrType(types.TypeParam); + sliceType = $sliceType(ptrType); + ptrType$1 = $ptrType(types.Func); + ptrType$2 = $ptrType(types.Scope); + ptrType$3 = $ptrType(types.Context); + ptrType$4 = $ptrType(types.TypeParamList); + ptrType$5 = $ptrType(subster); + ptrType$6 = $ptrType(types.Basic); + ptrType$7 = $ptrType(types.Array); + ptrType$8 = $ptrType(types.Slice); + ptrType$9 = $ptrType(types.Pointer); + ptrType$10 = $ptrType(types.Tuple); + ptrType$11 = $ptrType(types.Struct); + ptrType$12 = $ptrType(types.Map); + ptrType$13 = $ptrType(types.Chan); + ptrType$14 = $ptrType(types.Signature); + ptrType$15 = $ptrType(types.Union); + ptrType$16 = $ptrType(types.Interface); + ptrType$17 = $ptrType(types.Named); + sliceType$1 = $sliceType(types.Type); + ptrType$18 = $ptrType(types.Var); + sliceType$2 = $sliceType(ptrType$18); + sliceType$3 = $sliceType($String); + ptrType$19 = $ptrType(types.Term); + sliceType$4 = $sliceType(ptrType$19); + sliceType$5 = $sliceType(ptrType$1); + ptrType$20 = $ptrType(Subster); + ptrType$21 = $ptrType(types.TypeList); + mapType = $mapType(ptrType, types.Type); + mapType$1 = $mapType(types.Type, types.Type); + assert = function assert$1(p, msg) { + var msg, p; + if (!p) { + $panic(new $String(msg)); + } + }; + changeRecv = function changeRecv$1(s, recv) { + var {$24r, _r, recv, s, $s, $r, $c} = $restore(this, {s, recv}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = types.NewSignatureType(recv, sliceType.nil, sliceType.nil, s.Params(), s.Results(), s.Variadic()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: changeRecv$1, $c: true, $r, $24r, _r, recv, s, $s};return $f; + }; + declaredWithin = function declaredWithin$1(obj, fn) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, fn, obj, p, $s, $r, $c} = $restore(this, {obj, fn}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (fn === ptrType$1.nil) { + $s = -1; return false; + } + _r = obj.Pos(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!((_r === 0))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!((_r === 0))) { */ case 1: + _r$1 = obj.Pos(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = fn.Scope().Contains(_r$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 6; case 6: return $24r; + /* } */ case 2: + _r$3 = obj.Pkg(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!(fn.object.Pkg() === _r$3)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(fn.object.Pkg() === _r$3)) { */ case 7: + $s = -1; return false; + /* } */ case 8: + _r$4 = obj.Parent(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + p = _r$4; + /* while (true) { */ case 11: + /* if (!(!(p === ptrType$2.nil))) { break; } */ if(!(!(p === ptrType$2.nil))) { $s = 12; continue; } + if (p === fn.Scope()) { + $s = -1; return true; + } + p = p.Parent(); + $s = 11; continue; + case 12: + $s = -1; return false; + /* */ } return; } var $f = {$blk: declaredWithin$1, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, fn, obj, p, $s};return $f; + }; + makeSubster = function makeSubster$1(ctxt, fn, tparams, targs, debug) { + var _key, ctxt, debug, fn, i, origin, subst, targs, tparams, x; + assert(tparams.Len() === targs.$length, "makeSubster argument count must match"); + origin = ptrType$1.nil; + if (!(fn === ptrType$1.nil)) { + origin = fn.Origin(); + } + subst = new subster.ptr((x = tparams.Len(), ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : new $global.Map())), new $global.Map(), origin, ctxt, new typeutil.Map.ptr(new typeutil.Hasher.ptr(false, false, ptrType$4.nil), false, 0)); + i = 0; + while (true) { + if (!(i < tparams.Len())) { break; } + _key = tparams.At(i); (subst.replacements || $throwRuntimeError("assignment to entry in nil map")).set(ptrType.keyFor(_key), { k: _key, v: ((i < 0 || i >= targs.$length) ? ($throwRuntimeError("index out of range"), undefined) : targs.$array[targs.$offset + i]) }); + i = i + (1) >> 0; + } + return subst; + }; + $ptrType(subster).prototype.typ = function typ(t) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _entry, _entry$1, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, elem, elem$1, key, ok, r, r$1, r$2, r$3, r$4, res, subst, t, t$1, t$10, t$11, t$12, t$13, t$14, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, $s, $deferred, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + res = [res]; + subst = [subst]; + t = [t]; + res[0] = $ifaceNil; + subst[0] = this; + if (subst[0] === ptrType$5.nil) { + res[0] = t[0]; + $s = -1; return res[0]; + } + _tuple = (_entry = $mapIndex(subst[0].cache,types.Type.keyFor(t[0])), _entry !== undefined ? [_entry.v, true] : [$ifaceNil, false]); + r = _tuple[0]; + ok = _tuple[1]; + if (ok) { + res[0] = r; + $s = -1; return res[0]; + } + $deferred.push([(function(res, subst, t) { return function subster·typ·func1() { + var _key; + _key = t[0]; (subst[0].cache || $throwRuntimeError("assignment to entry in nil map")).set(types.Type.keyFor(_key), { k: _key, v: res[0] }); + }; })(res, subst, t), []]); + _ref = t[0]; + /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$6, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$17, true)[1]) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if ($assertType(_ref, ptrType, true)[1]) { */ case 1: + t$1 = _ref.$val; + r$1 = (_entry$1 = $mapIndex(subst[0].replacements,ptrType.keyFor(t$1)), _entry$1 !== undefined ? _entry$1.v : $ifaceNil); + if (!($interfaceIsEqual(r$1, $ifaceNil))) { + res[0] = r$1; + $s = -1; return res[0]; + } + res[0] = t$1; + $s = -1; return res[0]; + /* } else if ($assertType(_ref, ptrType$6, true)[1]) { */ case 2: + t$2 = _ref.$val; + res[0] = t$2; + $s = -1; return res[0]; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 3: + t$3 = _ref.$val; + _r = subst[0].typ(t$3.Elem()); /* */ $s = 16; case 16: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r$2 = _r; + if (!($interfaceIsEqual(r$2, t$3.Elem()))) { + res[0] = types.NewArray(r$2, t$3.Len()); + $s = -1; return res[0]; + } + res[0] = t$3; + $s = -1; return res[0]; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 4: + t$4 = _ref.$val; + _r$1 = subst[0].typ(t$4.Elem()); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + r$3 = _r$1; + if (!($interfaceIsEqual(r$3, t$4.Elem()))) { + res[0] = types.NewSlice(r$3); + $s = -1; return res[0]; + } + res[0] = t$4; + $s = -1; return res[0]; + /* } else if ($assertType(_ref, ptrType$9, true)[1]) { */ case 5: + t$5 = _ref.$val; + _r$2 = subst[0].typ(t$5.Elem()); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + r$4 = _r$2; + if (!($interfaceIsEqual(r$4, t$5.Elem()))) { + res[0] = types.NewPointer(r$4); + $s = -1; return res[0]; + } + res[0] = t$5; + $s = -1; return res[0]; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 6: + t$6 = _ref.$val; + _r$3 = subst[0].tuple(t$6); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + res[0] = _r$3; + $24r = res[0]; + $s = 20; case 20: return $24r; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 7: + t$7 = _ref.$val; + _r$4 = subst[0].struct_(t$7); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + res[0] = _r$4; + $24r$1 = res[0]; + $s = 22; case 22: return $24r$1; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 8: + t$8 = _ref.$val; + _r$5 = subst[0].typ(t$8.Key()); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + key = _r$5; + _r$6 = subst[0].typ(t$8.Elem()); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + elem = _r$6; + if (!($interfaceIsEqual(key, t$8.Key())) || !($interfaceIsEqual(elem, t$8.Elem()))) { + res[0] = types.NewMap(key, elem); + $s = -1; return res[0]; + } + res[0] = t$8; + $s = -1; return res[0]; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 9: + t$9 = _ref.$val; + _r$7 = subst[0].typ(t$9.Elem()); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + elem$1 = _r$7; + if (!($interfaceIsEqual(elem$1, t$9.Elem()))) { + res[0] = types.NewChan(t$9.Dir(), elem$1); + $s = -1; return res[0]; + } + res[0] = t$9; + $s = -1; return res[0]; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 10: + t$10 = _ref.$val; + _r$8 = subst[0].signature(t$10); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + res[0] = _r$8; + $24r$2 = res[0]; + $s = 27; case 27: return $24r$2; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 11: + t$11 = _ref.$val; + _r$9 = subst[0].union(t$11); /* */ $s = 28; case 28: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + res[0] = _r$9; + $24r$3 = res[0]; + $s = 29; case 29: return $24r$3; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 12: + t$12 = _ref.$val; + _r$10 = subst[0].interface_(t$12); /* */ $s = 30; case 30: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + res[0] = _r$10; + $24r$4 = res[0]; + $s = 31; case 31: return $24r$4; + /* } else if ($assertType(_ref, ptrType$17, true)[1]) { */ case 13: + t$13 = _ref.$val; + _r$11 = subst[0].named(t$13); /* */ $s = 32; case 32: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + res[0] = _r$11; + $24r$5 = res[0]; + $s = 33; case 33: return $24r$5; + /* } else { */ case 14: + t$14 = _ref; + $panic(new $String("unreachable")); + /* } */ case 15: + $s = -1; return res[0]; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return res[0]; } if($curGoroutine.asleep) { var $f = {$blk: typ, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _entry, _entry$1, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, elem, elem$1, key, ok, r, r$1, r$2, r$3, r$4, res, subst, t, t$1, t$10, t$11, t$12, t$13, t$14, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, $s, $deferred};return $f; } } + }; + $ptrType(subster).prototype.types = function types$1(ts) { + var {_i, _r, _ref, i, res, subst, ts, $s, $r, $c} = $restore(this, {ts}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst = this; + res = $makeSlice(sliceType$1, ts.$length); + _ref = ts; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + _r = subst.typ(((i < 0 || i >= ts.$length) ? ($throwRuntimeError("index out of range"), undefined) : ts.$array[ts.$offset + i])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ((i < 0 || i >= res.$length) ? ($throwRuntimeError("index out of range"), undefined) : res.$array[res.$offset + i] = _r); + _i++; + $s = 1; continue; + case 2: + $s = -1; return res; + /* */ } return; } var $f = {$blk: types$1, $c: true, $r, _i, _r, _ref, i, res, subst, ts, $s};return $f; + }; + $ptrType(subster).prototype.tuple = function tuple(t) { + var {_r, subst, t, vars, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst = this; + /* */ if (!(t === ptrType$10.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(t === ptrType$10.nil)) { */ case 1: + _r = subst.varlist(t); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + vars = _r; + if (!(vars === sliceType$2.nil)) { + $s = -1; return types.NewTuple(vars); + } + /* } */ case 2: + $s = -1; return t; + /* */ } return; } var $f = {$blk: tuple, $c: true, $r, _r, subst, t, vars, $s};return $f; + }; + $ptrType(fieldlist).prototype.At = function At(i) { + var fl, i; + fl = this; + return fl.str.Field(i); + }; + fieldlist.prototype.At = function(...$args) { return this.$val.At(...$args); }; + $ptrType(fieldlist).prototype.Len = function Len() { + var fl; + fl = this; + return fl.str.NumFields(); + }; + fieldlist.prototype.Len = function(...$args) { return this.$val.Len(...$args); }; + $ptrType(subster).prototype.struct_ = function struct_(t) { + var {$24r, _r, _r$1, _tmp, _tmp$1, fields, i, n, subst, t, tags, x, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst = this; + /* */ if (!(t === ptrType$11.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(t === ptrType$11.nil)) { */ case 1: + _r = subst.varlist((x = new fieldlist.ptr(t), new x.constructor.elem(x))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + fields = _r; + /* */ if (!(fields === sliceType$2.nil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(fields === sliceType$2.nil)) { */ case 4: + tags = $makeSlice(sliceType$3, t.NumFields()); + _tmp = 0; + _tmp$1 = t.NumFields(); + i = _tmp; + n = _tmp$1; + while (true) { + if (!(i < n)) { break; } + ((i < 0 || i >= tags.$length) ? ($throwRuntimeError("index out of range"), undefined) : tags.$array[tags.$offset + i] = t.Tag(i)); + i = i + (1) >> 0; + } + _r$1 = types.NewStruct(fields, tags); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 7; case 7: return $24r; + /* } */ case 5: + /* } */ case 2: + $s = -1; return t; + /* */ } return; } var $f = {$blk: struct_, $c: true, $r, $24r, _r, _r$1, _tmp, _tmp$1, fields, i, n, subst, t, tags, x, $s};return $f; + }; + $ptrType(subster).prototype.varlist = function varlist$1(in$1) { + var {_r, _r$1, _r$2, _r$3, _tmp, _tmp$1, i, in$1, j, n, out, subst, v, w, $s, $r, $c} = $restore(this, {in$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst = this; + out = sliceType$2.nil; + _tmp = 0; + _r = in$1.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tmp$1 = _r; + i = _tmp; + n = _tmp$1; + /* while (true) { */ case 2: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 3; continue; } + _r$1 = in$1.At(i); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v = _r$1; + _r$2 = subst.var_(v); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + w = _r$2; + /* */ if (!(v === w) && out === sliceType$2.nil) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(v === w) && out === sliceType$2.nil) { */ case 6: + out = $makeSlice(sliceType$2, n); + j = 0; + /* while (true) { */ case 8: + /* if (!(j < i)) { break; } */ if(!(j < i)) { $s = 9; continue; } + _r$3 = in$1.At(j); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ((j < 0 || j >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + j] = _r$3); + j = j + (1) >> 0; + $s = 8; continue; + case 9: + /* } */ case 7: + if (!(out === sliceType$2.nil)) { + ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = w); + } + i = i + (1) >> 0; + $s = 2; continue; + case 3: + $s = -1; return out; + /* */ } return; } var $f = {$blk: varlist$1, $c: true, $r, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, i, in$1, j, n, out, subst, v, w, $s};return $f; + }; + $ptrType(subster).prototype.var_ = function var_(v) { + var {_r, subst, typ$1, v, $s, $r, $c} = $restore(this, {v}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst = this; + /* */ if (!(v === ptrType$18.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(v === ptrType$18.nil)) { */ case 1: + _r = subst.typ(v.object.Type()); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typ$1 = _r; + if (!($interfaceIsEqual(typ$1, v.object.Type()))) { + if (v.IsField()) { + $s = -1; return types.NewField(v.object.Pos(), v.object.Pkg(), v.object.Name(), typ$1, v.Embedded()); + } + $s = -1; return types.NewParam(v.object.Pos(), v.object.Pkg(), v.object.Name(), typ$1); + } + /* } */ case 2: + $s = -1; return v; + /* */ } return; } var $f = {$blk: var_, $c: true, $r, _r, subst, typ$1, v, $s};return $f; + }; + $ptrType(subster).prototype.union = function union(u) { + var {_r, _tmp, _tmp$1, i, j, n, out, r, subst, t, u, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst = this; + out = sliceType$4.nil; + _tmp = 0; + _tmp$1 = u.Len(); + i = _tmp; + n = _tmp$1; + /* while (true) { */ case 1: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } + t = u.Term(i); + _r = subst.typ(t.Type()); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = _r; + if (!($interfaceIsEqual(r, t.Type())) && out === sliceType$4.nil) { + out = $makeSlice(sliceType$4, n); + j = 0; + while (true) { + if (!(j < i)) { break; } + ((j < 0 || j >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + j] = u.Term(j)); + j = j + (1) >> 0; + } + } + if (!(out === sliceType$4.nil)) { + ((i < 0 || i >= out.$length) ? ($throwRuntimeError("index out of range"), undefined) : out.$array[out.$offset + i] = types.NewTerm(t.Tilde(), r)); + } + i = i + (1) >> 0; + $s = 1; continue; + case 2: + if (!(out === sliceType$4.nil)) { + $s = -1; return types.NewUnion(out); + } + $s = -1; return u; + /* */ } return; } var $f = {$blk: union, $c: true, $r, _r, _tmp, _tmp$1, i, j, n, out, r, subst, t, u, $s};return $f; + }; + $ptrType(subster).prototype.interface_ = function interface_(iface) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, e, embeds, f, i, i$1, iface, initEmbeds, initMethods, methods, norecv, r, sig, subst, $s, $r, $c} = $restore(this, {iface}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + embeds = [embeds]; + iface = [iface]; + methods = [methods]; + subst = this; + if (iface[0] === ptrType$16.nil) { + $s = -1; return ptrType$16.nil; + } + methods[0] = sliceType$5.nil; + initMethods = (function(embeds, iface, methods) { return function subster·interface_·func1(n) { + var {_r, f, i, n, norecv, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + methods[0] = $makeSlice(sliceType$5, iface[0].NumExplicitMethods()); + i = 0; + /* while (true) { */ case 1: + /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; } + f = iface[0].ExplicitMethod(i); + _r = changeRecv($assertType(f.object.Type(), ptrType$14), ptrType$18.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + norecv = _r; + ((i < 0 || i >= methods[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : methods[0].$array[methods[0].$offset + i] = types.NewFunc(f.object.Pos(), f.object.Pkg(), f.object.Name(), norecv)); + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: subster·interface_·func1, $c: true, $r, _r, f, i, n, norecv, $s};return $f; + }; })(embeds, iface, methods); + i = 0; + /* while (true) { */ case 1: + /* if (!(i < iface[0].NumExplicitMethods())) { break; } */ if(!(i < iface[0].NumExplicitMethods())) { $s = 2; continue; } + f = iface[0].ExplicitMethod(i); + _r = changeRecv($assertType(f.object.Type(), ptrType$14), ptrType$18.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + norecv = _r; + _r$1 = subst.typ(norecv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + sig = _r$1; + /* */ if (!($interfaceIsEqual(sig, norecv)) && methods[0] === sliceType$5.nil) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!($interfaceIsEqual(sig, norecv)) && methods[0] === sliceType$5.nil) { */ case 5: + $r = initMethods(i); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + if (!(methods[0] === sliceType$5.nil)) { + ((i < 0 || i >= methods[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : methods[0].$array[methods[0].$offset + i] = types.NewFunc(f.object.Pos(), f.object.Pkg(), f.object.Name(), $assertType(sig, ptrType$14))); + } + i = i + (1) >> 0; + $s = 1; continue; + case 2: + embeds[0] = sliceType$1.nil; + initEmbeds = (function(embeds, iface, methods) { return function subster·interface_·func2(n) { + var i$1, n; + embeds[0] = $makeSlice(sliceType$1, iface[0].NumEmbeddeds()); + i$1 = 0; + while (true) { + if (!(i$1 < n)) { break; } + ((i$1 < 0 || i$1 >= embeds[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : embeds[0].$array[embeds[0].$offset + i$1] = iface[0].EmbeddedType(i$1)); + i$1 = i$1 + (1) >> 0; + } + }; })(embeds, iface, methods); + i$1 = 0; + /* while (true) { */ case 8: + /* if (!(i$1 < iface[0].NumEmbeddeds())) { break; } */ if(!(i$1 < iface[0].NumEmbeddeds())) { $s = 9; continue; } + e = iface[0].EmbeddedType(i$1); + _r$2 = subst.typ(e); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + r = _r$2; + /* */ if (!($interfaceIsEqual(e, r)) && embeds[0] === sliceType$1.nil) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if (!($interfaceIsEqual(e, r)) && embeds[0] === sliceType$1.nil) { */ case 11: + $r = initEmbeds(i$1); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 12: + if (!(embeds[0] === sliceType$1.nil)) { + ((i$1 < 0 || i$1 >= embeds[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : embeds[0].$array[embeds[0].$offset + i$1] = r); + } + i$1 = i$1 + (1) >> 0; + $s = 8; continue; + case 9: + if (methods[0] === sliceType$5.nil && embeds[0] === sliceType$1.nil) { + $s = -1; return iface[0]; + } + /* */ if (methods[0] === sliceType$5.nil) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (methods[0] === sliceType$5.nil) { */ case 14: + $r = initMethods(iface[0].NumExplicitMethods()); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 15: + /* */ if (embeds[0] === sliceType$1.nil) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (embeds[0] === sliceType$1.nil) { */ case 17: + $r = initEmbeds(iface[0].NumEmbeddeds()); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + _r$3 = types.NewInterfaceType(methods[0], embeds[0]); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = _r$3.Complete(); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 22; case 22: return $24r; + /* */ } return; } var $f = {$blk: interface_, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, e, embeds, f, i, i$1, iface, initEmbeds, initMethods, methods, norecv, r, sig, subst, $s};return $f; + }; + $ptrType(subster).prototype.named = function named(t) { + var {$24r, $24r$1, _i, _key, _key$1, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, bound, cname, cobj, cur, fresh, i, i$1, newTArgs, newTParams, ntp, ntp$1, obj, subOrigin, subTArgs, subst, t, targs, tname, tparams, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst = this; + _r = t.TypeParams(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tparams = _r; + targs = t.TypeArgs(); + _r$1 = declaredWithin(t.Obj(), subst.origin); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!_r$1) { */ case 2: + if (targs.Len() === 0) { + $s = -1; return t; + } + _r$2 = subst.typelist(targs); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + newTArgs = _r$2; + _r$3 = subst.instantiate(t.Origin(), newTArgs); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 7; case 7: return $24r; + /* } */ case 3: + /* */ if (targs.Len() === 0) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (targs.Len() === 0) { */ case 8: + assert(t === t.Origin(), "local parameterized type abstraction must be an origin type"); + tname = t.Obj(); + obj = types.NewTypeName(tname.object.Pos(), tname.object.Pkg(), tname.object.Name(), $ifaceNil); + fresh = types.NewNamed(obj, $ifaceNil, sliceType$5.nil); + newTParams = sliceType.nil; + i = 0; + /* while (true) { */ case 10: + /* if (!(i < tparams.Len())) { break; } */ if(!(i < tparams.Len())) { $s = 11; continue; } + cur = tparams.At(i); + cobj = cur.Obj(); + cname = types.NewTypeName(cobj.object.Pos(), cobj.object.Pkg(), cobj.object.Name(), $ifaceNil); + _r$4 = types.NewTypeParam(cname, $ifaceNil); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + ntp = _r$4; + newTParams = $append(newTParams, ntp); + i = i + (1) >> 0; + $s = 10; continue; + case 11: + $r = fresh.SetTypeParams(newTParams); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _key = t; (subst.cache || $throwRuntimeError("assignment to entry in nil map")).set(types.Type.keyFor(_key), { k: _key, v: fresh }); + _key$1 = fresh; (subst.cache || $throwRuntimeError("assignment to entry in nil map")).set(types.Type.keyFor(_key$1), { k: _key$1, v: fresh }); + _r$5 = t.Underlying(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = subst.typ(_r$5); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $r = fresh.SetUnderlying(_r$6); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref = newTParams; + _i = 0; + /* while (true) { */ case 17: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 18; continue; } + i$1 = _i; + ntp$1 = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + bound = tparams.At(i$1).Constraint(); + _r$7 = subst.typ(bound); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $r = ntp$1.SetConstraint(_r$7); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 17; continue; + case 18: + $s = -1; return fresh; + /* } */ case 9: + _r$8 = subst.typ(t.Origin()); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + subOrigin = _r$8; + _r$9 = subst.typelist(targs); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + subTArgs = _r$9; + _r$10 = subst.instantiate(subOrigin, subTArgs); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $24r$1 = _r$10; + $s = 24; case 24: return $24r$1; + /* */ } return; } var $f = {$blk: named, $c: true, $r, $24r, $24r$1, _i, _key, _key$1, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, bound, cname, cobj, cur, fresh, i, i$1, newTArgs, newTParams, ntp, ntp$1, obj, subOrigin, subTArgs, subst, t, targs, tname, tparams, $s};return $f; + }; + $ptrType(subster).prototype.instantiate = function instantiate(orig, targs) { + var {_r, _r$1, _r$2, _tuple, _tuple$1, c, err, i, orig, subst, targs, $s, $r, $c} = $restore(this, {orig, targs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst = this; + _r = types.Instantiate(subst.ctxt, orig, targs, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + i = _tuple[0]; + err = _tuple[1]; + assert($interfaceIsEqual(err, $ifaceNil), "failed to Instantiate named (Named or Alias) type"); + _r$1 = subst.uniqueness.At(i); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = $assertType(_r$1, types.Type, true); + c = _tuple$1[0]; + if (!($interfaceIsEqual(c, $ifaceNil))) { + $s = -1; return $assertType(c, types.Type); + } + _r$2 = subst.uniqueness.Set(i, i); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + $s = -1; return i; + /* */ } return; } var $f = {$blk: instantiate, $c: true, $r, _r, _r$1, _r$2, _tuple, _tuple$1, c, err, i, orig, subst, targs, $s};return $f; + }; + $ptrType(subster).prototype.typelist = function typelist(l) { + var {_r, i, l, res, subst, $s, $r, $c} = $restore(this, {l}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst = this; + res = $makeSlice(sliceType$1, l.Len()); + i = 0; + /* while (true) { */ case 1: + /* if (!(i < l.Len())) { break; } */ if(!(i < l.Len())) { $s = 2; continue; } + _r = subst.typ(l.At(i)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ((i < 0 || i >= res.$length) ? ($throwRuntimeError("index out of range"), undefined) : res.$array[res.$offset + i] = _r); + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return res; + /* */ } return; } var $f = {$blk: typelist, $c: true, $r, _r, i, l, res, subst, $s};return $f; + }; + $ptrType(subster).prototype.signature = function signature(t) { + var {$24r, _r, _r$1, _r$2, _r$3, params, recv, results, subst, t, tparams, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + subst = this; + tparams = t.TypeParams(); + assert(tparams.Len() === 0, "Substituting types.Signatures with generic functions are currently unsupported."); + _r = subst.var_(t.Recv()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + recv = _r; + _r$1 = subst.tuple(t.Params()); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + params = _r$1; + _r$2 = subst.tuple(t.Results()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + results = _r$2; + /* */ if (!(recv === t.Recv()) || !(params === t.Params()) || !(results === t.Results())) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(recv === t.Recv()) || !(params === t.Params()) || !(results === t.Results())) { */ case 4: + _r$3 = types.NewSignatureType(recv, sliceType.nil, sliceType.nil, params, results, t.Variadic()); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 7; case 7: return $24r; + /* } */ case 5: + $s = -1; return t; + /* */ } return; } var $f = {$blk: signature, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, params, recv, results, subst, t, tparams, $s};return $f; + }; + New = function New$1(tc, replacements) { + var replacements, subst, tc; + if ((replacements ? replacements.size : 0) === 0) { + return ptrType$20.nil; + } + subst = makeSubster(tc, ptrType$1.nil, ptrType$4.nil, sliceType$1.nil, false); + subst.replacements = replacements; + return new Subster.ptr(subst); + }; + $pkg.New = New; + $ptrType(Subster).prototype.Type = function Type(typ$1) { + var {$24r, _r, s, typ$1, $s, $r, $c} = $restore(this, {typ$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + if (s === ptrType$20.nil) { + $s = -1; return typ$1; + } + _r = s.impl.typ(typ$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Type, $c: true, $r, $24r, _r, s, typ$1, $s};return $f; + }; + $ptrType(Subster).prototype.Types = function Types(ts) { + var {$24r, _r, s, ts, $s, $r, $c} = $restore(this, {ts}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + if (s === ptrType$20.nil) { + $s = -1; return ts; + } + _r = s.impl.types(ts); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Types, $c: true, $r, $24r, _r, s, ts, $s};return $f; + }; + ptrType$5.methods = [{prop: "typ", name: "typ", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([types.Type], [types.Type], false)}, {prop: "types", name: "types", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "tuple", name: "tuple", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([ptrType$10], [ptrType$10], false)}, {prop: "struct_", name: "struct_", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([ptrType$11], [ptrType$11], false)}, {prop: "varlist", name: "varlist", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([varlist], [sliceType$2], false)}, {prop: "var_", name: "var_", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([ptrType$18], [ptrType$18], false)}, {prop: "union", name: "union", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([ptrType$15], [ptrType$15], false)}, {prop: "interface_", name: "interface_", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([ptrType$16], [ptrType$16], false)}, {prop: "named", name: "named", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([ptrType$17], [types.Type], false)}, {prop: "instantiate", name: "instantiate", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([types.Type, sliceType$1], [types.Type], false)}, {prop: "typelist", name: "typelist", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([ptrType$21], [sliceType$1], false)}, {prop: "signature", name: "signature", pkg: "github.com/gopherjs/gopherjs/internal/govendor/subst", typ: $funcType([ptrType$14], [types.Type], false)}]; + fieldlist.methods = [{prop: "At", name: "At", pkg: "", typ: $funcType([$Int], [ptrType$18], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}]; + ptrType$20.methods = [{prop: "Type", name: "Type", pkg: "", typ: $funcType([types.Type], [types.Type], false)}, {prop: "Types", name: "Types", pkg: "", typ: $funcType([sliceType$1], [sliceType$1], false)}]; + subster.init("github.com/gopherjs/gopherjs/internal/govendor/subst", [{prop: "replacements", name: "replacements", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "cache", name: "cache", embedded: false, exported: false, typ: mapType$1, tag: ""}, {prop: "origin", name: "origin", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "ctxt", name: "ctxt", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "uniqueness", name: "uniqueness", embedded: false, exported: false, typ: typeutil.Map, tag: ""}]); + varlist.init([{prop: "At", name: "At", pkg: "", typ: $funcType([$Int], [ptrType$18], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}]); + fieldlist.init("github.com/gopherjs/gopherjs/internal/govendor/subst", [{prop: "str", name: "str", embedded: false, exported: false, typ: ptrType$11, tag: ""}]); + Subster.init("github.com/gopherjs/gopherjs/internal/govendor/subst", [{prop: "impl", name: "impl", embedded: false, exported: false, typ: ptrType$5, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = token.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = types.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typeutil.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/internal/typeparams"] = (function() { + var $pkg = {}, $init, fmt, symbol, typesutil, subst, ast, token, types, typeutil, sort, strings, Resolver, mapEntry = [], mapBucket = [], mapBuckets = [], InstanceMap = [], Instance, InstanceSet, PackageInstanceSets, visitor, seedVisitor, Collector, ptrType, ptrType$1, ptrType$2, ptrType$3, sliceType, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, structType, ptrType$9, ptrType$10, ptrType$11, ptrType$12, interfaceType, sliceType$1, ptrType$13, sliceType$2, ptrType$14, ptrType$15, ptrType$16, ptrType$17, sliceType$3, ptrType$18, ptrType$19, ptrType$20, sliceType$4, ptrType$21, sliceType$5, ptrType$22, ptrType$23, ptrType$24, ptrType$25, ptrType$26, ptrType$27, ptrType$28, mapType, mapType$1, funcType, mapType$2, funcType$1, mapType$3, funcType$2, mapType$4, ptrType$29, mapType$5, ptrType$30, ptrType$31, mapType$6, ptrType$32, sliceType$6, ptrType$33, mapType$7, SignatureTypeParams, FindNestingFunc, HasTypeParams, isGeneric, NewResolver, candidateArgsMatch = [], typeHash; + fmt = $packages["fmt"]; + symbol = $packages["github.com/gopherjs/gopherjs/compiler/internal/symbol"]; + typesutil = $packages["github.com/gopherjs/gopherjs/compiler/typesutil"]; + subst = $packages["github.com/gopherjs/gopherjs/internal/govendor/subst"]; + ast = $packages["go/ast"]; + token = $packages["go/token"]; + types = $packages["go/types"]; + typeutil = $packages["golang.org/x/tools/go/types/typeutil"]; + sort = $packages["sort"]; + strings = $packages["strings"]; + Resolver = $newType(0, $kindStruct, "typeparams.Resolver", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", true, function(tParams_, tArgs_, nest_, nestTParams_, nestTArgs_, replacements_, root_, subster_, selMemo_) { + this.$val = this; + if (arguments.length === 0) { + this.tParams = ptrType$3.nil; + this.tArgs = sliceType.nil; + this.nest = ptrType$4.nil; + this.nestTParams = ptrType$3.nil; + this.nestTArgs = sliceType.nil; + this.replacements = false; + this.root = new Instance.ptr($ifaceNil, typesutil.TypeList.nil, typesutil.TypeList.nil); + this.subster = ptrType$13.nil; + this.selMemo = false; + return; + } + this.tParams = tParams_; + this.tArgs = tArgs_; + this.nest = nest_; + this.nestTParams = nestTParams_; + this.nestTArgs = nestTArgs_; + this.replacements = replacements_; + this.root = root_; + this.subster = subster_; + this.selMemo = selMemo_; + }); + mapEntry[36 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */] = $newType(0, $kindStruct, "typeparams.mapEntry[*github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", false, function(key_, value_) { + this.$val = this; + if (arguments.length === 0) { + this.key = new Instance.ptr($ifaceNil, typesutil.TypeList.nil, typesutil.TypeList.nil); + this.value = ptrType$17.nil; + return; + } + this.key = key_; + this.value = value_; + }); + mapEntry[40 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */] = $newType(0, $kindStruct, "typeparams.mapEntry[[]github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", false, function(key_, value_) { + this.$val = this; + if (arguments.length === 0) { + this.key = new Instance.ptr($ifaceNil, typesutil.TypeList.nil, typesutil.TypeList.nil); + this.value = sliceType$3.nil; + return; + } + this.key = key_; + this.value = value_; + }); + mapEntry[44 /* int */] = $newType(0, $kindStruct, "typeparams.mapEntry[int]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", false, function(key_, value_) { + this.$val = this; + if (arguments.length === 0) { + this.key = new Instance.ptr($ifaceNil, typesutil.TypeList.nil, typesutil.TypeList.nil); + this.value = 0; + return; + } + this.key = key_; + this.value = value_; + }); + mapBucket[34 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */] = $newType(12, $kindSlice, "typeparams.mapBucket[*github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", false, null); + mapBucket[38 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */] = $newType(12, $kindSlice, "typeparams.mapBucket[[]github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", false, null); + mapBucket[42 /* int */] = $newType(12, $kindSlice, "typeparams.mapBucket[int]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", false, null); + mapBuckets[33 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */] = $newType(4, $kindMap, "typeparams.mapBuckets[*github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", false, null); + mapBuckets[37 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */] = $newType(4, $kindMap, "typeparams.mapBuckets[[]github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", false, null); + mapBuckets[41 /* int */] = $newType(4, $kindMap, "typeparams.mapBuckets[int]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", false, null); + InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */] = $newType(0, $kindStruct, "typeparams.InstanceMap[*github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", true, function(data_, len_, hasher_) { + this.$val = this; + if (arguments.length === 0) { + this.data = false; + this.len = 0; + this.hasher = new typeutil.Hasher.ptr(false, false, ptrType$3.nil); + return; + } + this.data = data_; + this.len = len_; + this.hasher = hasher_; + }); + InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */] = $newType(0, $kindStruct, "typeparams.InstanceMap[[]github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", true, function(data_, len_, hasher_) { + this.$val = this; + if (arguments.length === 0) { + this.data = false; + this.len = 0; + this.hasher = new typeutil.Hasher.ptr(false, false, ptrType$3.nil); + return; + } + this.data = data_; + this.len = len_; + this.hasher = hasher_; + }); + InstanceMap[22 /* int */] = $newType(0, $kindStruct, "typeparams.InstanceMap[int]", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", true, function(data_, len_, hasher_) { + this.$val = this; + if (arguments.length === 0) { + this.data = false; + this.len = 0; + this.hasher = new typeutil.Hasher.ptr(false, false, ptrType$3.nil); + return; + } + this.data = data_; + this.len = len_; + this.hasher = hasher_; + }); + Instance = $newType(0, $kindStruct, "typeparams.Instance", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", true, function(Object_, TArgs_, TNest_) { + this.$val = this; + if (arguments.length === 0) { + this.Object = $ifaceNil; + this.TArgs = typesutil.TypeList.nil; + this.TNest = typesutil.TypeList.nil; + return; + } + this.Object = Object_; + this.TArgs = TArgs_; + this.TNest = TNest_; + }); + InstanceSet = $newType(0, $kindStruct, "typeparams.InstanceSet", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", true, function(values_, unprocessed_, seen_) { + this.$val = this; + if (arguments.length === 0) { + this.values = sliceType$4.nil; + this.unprocessed = 0; + this.seen = new InstanceMap[22 /* int */].ptr(false, 0, new typeutil.Hasher.ptr(false, false, ptrType$3.nil)); + return; + } + this.values = values_; + this.unprocessed = unprocessed_; + this.seen = seen_; + }); + PackageInstanceSets = $newType(4, $kindMap, "typeparams.PackageInstanceSets", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", true, null); + visitor = $newType(0, $kindStruct, "typeparams.visitor", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", false, function(instances_, resolver_, info_, nestTParams_, nestTArgs_) { + this.$val = this; + if (arguments.length === 0) { + this.instances = ptrType.nil; + this.resolver = ptrType$1.nil; + this.info = ptrType$2.nil; + this.nestTParams = ptrType$3.nil; + this.nestTArgs = sliceType.nil; + return; + } + this.instances = instances_; + this.resolver = resolver_; + this.info = info_; + this.nestTParams = nestTParams_; + this.nestTArgs = nestTArgs_; + }); + seedVisitor = $newType(0, $kindStruct, "typeparams.seedVisitor", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", false, function(visitor_, objMap_, mapOnly_) { + this.$val = this; + if (arguments.length === 0) { + this.visitor = new visitor.ptr(ptrType.nil, ptrType$1.nil, ptrType$2.nil, ptrType$3.nil, sliceType.nil); + this.objMap = false; + this.mapOnly = false; + return; + } + this.visitor = visitor_; + this.objMap = objMap_; + this.mapOnly = mapOnly_; + }); + Collector = $newType(0, $kindStruct, "typeparams.Collector", true, "github.com/gopherjs/gopherjs/compiler/internal/typeparams", true, function(TContext_, Instances_, objMap_, infoMap_) { + this.$val = this; + if (arguments.length === 0) { + this.TContext = ptrType$29.nil; + this.Instances = ptrType.nil; + this.objMap = false; + this.infoMap = false; + return; + } + this.TContext = TContext_; + this.Instances = Instances_; + this.objMap = objMap_; + this.infoMap = infoMap_; + }); + $pkg.Resolver = Resolver; + $pkg.mapEntry = mapEntry; + $pkg.mapBucket = mapBucket; + $pkg.mapBuckets = mapBuckets; + $pkg.InstanceMap = InstanceMap; + $pkg.Instance = Instance; + $pkg.InstanceSet = InstanceSet; + $pkg.PackageInstanceSets = PackageInstanceSets; + $pkg.visitor = visitor; + $pkg.seedVisitor = seedVisitor; + $pkg.Collector = Collector; + $pkg.$finishSetup = function() { + ptrType = $ptrType(PackageInstanceSets); + ptrType$1 = $ptrType(Resolver); + ptrType$2 = $ptrType(types.Info); + ptrType$3 = $ptrType(types.TypeParamList); + sliceType = $sliceType(types.Type); + ptrType$4 = $ptrType(types.Func); + ptrType$5 = $ptrType(types.Scope); + ptrType$6 = $ptrType(types.Package); + ptrType$7 = $ptrType(types.Named); + ptrType$8 = $ptrType(types.Signature); + structType = $structType("", []); + ptrType$9 = $ptrType(types.TypeParam); + ptrType$10 = $ptrType(types.Struct); + ptrType$11 = $ptrType(types.Interface); + ptrType$12 = $ptrType(types.Map); + interfaceType = $interfaceType([{prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [types.Type], false)}]); + sliceType$1 = $sliceType($emptyInterface); + ptrType$13 = $ptrType(subst.Subster); + sliceType$2 = $sliceType($String); + ptrType$14 = $ptrType(InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]); + ptrType$15 = $ptrType(InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]); + ptrType$16 = $ptrType(InstanceMap[22 /* int */]); + ptrType$17 = $ptrType($packages["github.com/gopherjs/gopherjs/compiler/internal/analysis"].FuncInfo); + sliceType$3 = $sliceType($packages["github.com/gopherjs/gopherjs/compiler/internal/analysis"].astPath); + ptrType$18 = $ptrType(mapEntry[36 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]); + ptrType$19 = $ptrType(mapEntry[40 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]); + ptrType$20 = $ptrType(mapEntry[44 /* int */]); + sliceType$4 = $sliceType(Instance); + ptrType$21 = $ptrType(strings.Builder); + sliceType$5 = $sliceType($Uint8); + ptrType$22 = $ptrType(InstanceSet); + ptrType$23 = $ptrType(ast.Ident); + ptrType$24 = $ptrType(types.TypeList); + ptrType$25 = $ptrType(types.Pointer); + ptrType$26 = $ptrType(types.TypeName); + ptrType$27 = $ptrType(ast.FuncDecl); + ptrType$28 = $ptrType(ast.TypeSpec); + mapType = $mapType(ptrType$9, types.Type); + mapType$1 = $mapType(typesutil.Selection, typesutil.Selection); + funcType = $funcType([Instance, ptrType$17], [], false); + mapType$2 = $mapType(types.Object, mapBuckets[33 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]); + funcType$1 = $funcType([Instance, sliceType$3], [], false); + mapType$3 = $mapType(types.Object, mapBuckets[37 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]); + funcType$2 = $funcType([Instance, $Int], [], false); + mapType$4 = $mapType(types.Object, mapBuckets[41 /* int */]); + ptrType$29 = $ptrType(types.Context); + mapType$5 = $mapType(types.Object, sliceType$4); + ptrType$30 = $ptrType(visitor); + ptrType$31 = $ptrType(seedVisitor); + mapType$6 = $mapType(types.Object, ast.Node); + ptrType$32 = $ptrType(ast.File); + sliceType$6 = $sliceType(ptrType$32); + ptrType$33 = $ptrType(Collector); + mapType$7 = $mapType($String, ptrType$2); + SignatureTypeParams = function SignatureTypeParams$1(sig) { + var sig, tp, tp$1; + tp = sig.RecvTypeParams(); + if (!(tp === ptrType$3.nil)) { + return tp; + } else { + tp$1 = sig.TypeParams(); + if (!(tp$1 === ptrType$3.nil)) { + return tp$1; + } else { + return ptrType$3.nil; + } + } + }; + $pkg.SignatureTypeParams = SignatureTypeParams; + FindNestingFunc = function FindNestingFunc$1(obj) { + var {_i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$2, d, fn, i, m, name, named, obj, objPos, ok, ok$1, ok$2, pkgScope, scope, $s, $r, $c} = $restore(this, {obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ($interfaceIsEqual(obj, $ifaceNil)) { + $s = -1; return ptrType$4.nil; + } + _r = obj.Pos(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + objPos = _r; + if (objPos === 0) { + $s = -1; return ptrType$4.nil; + } + _tuple = $assertType(obj, ptrType$4, true); + ok = _tuple[1]; + if (ok) { + $s = -1; return ptrType$4.nil; + } + pkgScope = ptrType$5.nil; + _r$1 = obj.Pkg(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!(_r$1 === ptrType$6.nil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(_r$1 === ptrType$6.nil)) { */ case 2: + _r$2 = obj.Pkg(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.Scope(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + pkgScope = _r$3; + /* } */ case 3: + _r$4 = obj.Parent(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + scope = _r$4; + if (scope === ptrType$5.nil) { + if (pkgScope === ptrType$5.nil) { + $s = -1; return ptrType$4.nil; + } + scope = pkgScope.Innermost(objPos); + } + if (scope === pkgScope) { + $s = -1; return ptrType$4.nil; + } + /* while (true) { */ case 8: + /* if (!(!(scope === ptrType$5.nil))) { break; } */ if(!(!(scope === ptrType$5.nil))) { $s = 9; continue; } + _r$5 = scope.Names(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _ref = _r$5; + _i = 0; + /* while (true) { */ case 11: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 12; continue; } + name = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$6 = scope.Lookup(name); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + d = _r$6; + _tuple$1 = $assertType(d, ptrType$4, true); + fn = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1 && !(fn.Scope() === ptrType$5.nil) && fn.Scope().Contains(objPos)) { + $s = -1; return fn; + } + _r$7 = d.Type(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _tuple$2 = $assertType(_r$7, ptrType$7, true); + named = _tuple$2[0]; + ok$2 = _tuple$2[1]; + /* */ if (ok$2) { $s = 15; continue; } + /* */ $s = 16; continue; + /* if (ok$2) { */ case 15: + i = 0; + /* while (true) { */ case 17: + _r$8 = named.NumMethods(); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + /* if (!(i < _r$8)) { break; } */ if(!(i < _r$8)) { $s = 18; continue; } + _r$9 = named.Method(i); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + m = _r$9; + if (!(m === ptrType$4.nil) && !(m.Scope() === ptrType$5.nil) && m.Scope().Contains(objPos)) { + $s = -1; return m; + } + i = i + (1) >> 0; + $s = 17; continue; + case 18: + /* } */ case 16: + _i++; + $s = 11; continue; + case 12: + if (scope === pkgScope) { + /* break; */ $s = 9; continue; + } + scope = scope.Parent(); + $s = 8; continue; + case 9: + $s = -1; return ptrType$4.nil; + /* */ } return; } var $f = {$blk: FindNestingFunc$1, $c: true, $r, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _tuple$2, d, fn, i, m, name, named, obj, objPos, ok, ok$1, ok$2, pkgScope, scope, $s};return $f; + }; + $pkg.FindNestingFunc = FindNestingFunc; + HasTypeParams = function HasTypeParams$1(typ) { + var {$24r, _r, _r$1, _ref, typ, typ$1, typ$2, typ$3, $s, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = typ; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 1: + typ$1 = _ref.$val; + $s = -1; return typ$1.RecvTypeParams().Len() > 0 || typ$1.TypeParams().Len() > 0; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 2: + typ$2 = _ref.$val; + _r = typ$2.TypeParams(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.Len(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1 > 0; + $s = 7; case 7: return $24r; + /* } else { */ case 3: + typ$3 = _ref; + $s = -1; return false; + /* } */ case 4: + $s = -1; return false; + /* */ } return; } var $f = {$blk: HasTypeParams$1, $c: true, $r, $24r, _r, _r$1, _ref, typ, typ$1, typ$2, typ$3, $s};return $f; + }; + $pkg.HasTypeParams = HasTypeParams; + isGeneric = function isGeneric$1(ignore, typ) { + var {$24r, _key, _r, containsTypeParam, foreach, i, ignore, managed, seen, typ, $s, $r, $c} = $restore(this, {ignore, typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + containsTypeParam = [containsTypeParam]; + foreach = [foreach]; + managed = [managed]; + seen = [seen]; + typ = [typ]; + containsTypeParam[0] = $throwNilPointerError; + foreach[0] = (function(containsTypeParam, foreach, managed, seen, typ) { return function isGeneric·func1(count, getter) { + var {_r, _r$1, count, getter, i, $s, $r, $c} = $restore(this, {count, getter}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = 0; + /* while (true) { */ case 1: + /* if (!(i < count)) { break; } */ if(!(i < count)) { $s = 2; continue; } + _r = getter(i); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = containsTypeParam[0](_r); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$1) { */ case 3: + $s = -1; return true; + /* } */ case 4: + i = i + (1) >> 0; + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: isGeneric·func1, $c: true, $r, _r, _r$1, count, getter, i, $s};return $f; + }; })(containsTypeParam, foreach, managed, seen, typ); + seen[0] = new $global.Map(); + managed[0] = new $global.Map(); + i = ignore.Len() - 1 >> 0; + while (true) { + if (!(i >= 0)) { break; } + _key = ignore.At(i); (managed[0] || $throwRuntimeError("assignment to entry in nil map")).set(types.Type.keyFor(_key), { k: _key, v: $clone(new structType.ptr(), structType) }); + i = i - (1) >> 0; + } + containsTypeParam[0] = (function(containsTypeParam, foreach, managed, seen, typ) { return function isGeneric·func2(t) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _entry, _entry$1, _key$1, _key$2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _v, _v$1, _v$2, i$1, ok, ok$1, t, t$1, t$2, t$3, t$4, t$5, t$6, t$7, t$8, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t$1 = [t$1]; + t$2 = [t$2]; + t$3 = [t$3]; + t$4 = [t$4]; + _tuple = (_entry = $mapIndex(seen[0],types.Type.keyFor(t)), _entry !== undefined ? [_entry.v, true] : [new structType.ptr(), false]); + ok = _tuple[1]; + if (ok) { + $s = -1; return false; + } + _key$1 = t; (seen[0] || $throwRuntimeError("assignment to entry in nil map")).set(types.Type.keyFor(_key$1), { k: _key$1, v: $clone(new structType.ptr(), structType) }); + _tuple$1 = (_entry$1 = $mapIndex(managed[0],types.Type.keyFor(t)), _entry$1 !== undefined ? [_entry$1.v, true] : [new structType.ptr(), false]); + ok$1 = _tuple$1[1]; + if (ok$1) { + $s = -1; return false; + } + _ref = t; + /* */ if ($assertType(_ref, ptrType$9, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, interfaceType, true)[1]) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if ($assertType(_ref, ptrType$9, true)[1]) { */ case 1: + t$5 = _ref.$val; + $s = -1; return true; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 2: + t$1[0] = _ref.$val; + _r = t$1[0].TypeParams(); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.Len(); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + if (!((_r$1 === t$1[0].TypeArgs().Len()))) { _v = true; $s = 12; continue s; } + _r$2 = foreach[0](t$1[0].TypeArgs().Len(), (function(containsTypeParam, foreach, managed, seen, t$1, t$2, t$3, t$4, typ) { return function isGeneric·func2·func1(i$1) { + var i$1; + return t$1[0].TypeArgs().At(i$1); + }; })(containsTypeParam, foreach, managed, seen, t$1, t$2, t$3, t$4, typ)); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2; case 12: + /* */ if (_v) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (_v) { */ case 10: + $s = -1; return true; + /* } */ case 11: + _r$3 = t$1[0].TypeParams(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = _r$3.Len(); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + i$1 = _r$4 - 1 >> 0; + /* while (true) { */ case 18: + /* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 19; continue; } + _r$5 = t$1[0].TypeParams(); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = _r$5.At(i$1); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _key$2 = _r$6; (managed[0] || $throwRuntimeError("assignment to entry in nil map")).set(types.Type.keyFor(_key$2), { k: _key$2, v: $clone(new structType.ptr(), structType) }); + i$1 = i$1 - (1) >> 0; + $s = 18; continue; + case 19: + _r$7 = t$1[0].Underlying(); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = containsTypeParam[0](_r$7); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $24r = _r$8; + $s = 24; case 24: return $24r; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 3: + t$2[0] = _ref.$val; + _r$9 = foreach[0](t$2[0].NumFields(), (function(containsTypeParam, foreach, managed, seen, t$1, t$2, t$3, t$4, typ) { return function isGeneric·func2·func2(i$2) { + var i$2; + return t$2[0].Field(i$2).object.Type(); + }; })(containsTypeParam, foreach, managed, seen, t$1, t$2, t$3, t$4, typ)); /* */ $s = 25; case 25: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $24r$1 = _r$9; + $s = 26; case 26: return $24r$1; + /* } else if ($assertType(_ref, ptrType$11, true)[1]) { */ case 4: + t$3[0] = _ref.$val; + _r$10 = t$3[0].NumMethods(); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = foreach[0](_r$10, (function(containsTypeParam, foreach, managed, seen, t$1, t$2, t$3, t$4, typ) { return function isGeneric·func2·func3(i$2) { + var {$24r$2, _r$11, _r$12, i$2, $s, $r, $c} = $restore(this, {i$2}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r$11 = t$3[0].Method(i$2); /* */ $s = 1; case 1: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _r$12 = _r$11.object.Type(); /* */ $s = 2; case 2: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $24r$2 = _r$12; + $s = 3; case 3: return $24r$2; + /* */ } return; } var $f = {$blk: isGeneric·func2·func3, $c: true, $r, $24r$2, _r$11, _r$12, i$2, $s};return $f; + }; })(containsTypeParam, foreach, managed, seen, t$1, t$2, t$3, t$4, typ)); /* */ $s = 28; case 28: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $24r$2 = _r$11; + $s = 29; case 29: return $24r$2; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 5: + t$4[0] = _ref.$val; + _r$12 = foreach[0](t$4[0].Params().Len(), (function(containsTypeParam, foreach, managed, seen, t$1, t$2, t$3, t$4, typ) { return function isGeneric·func2·func4(i$2) { + var i$2; + return t$4[0].Params().At(i$2).object.Type(); + }; })(containsTypeParam, foreach, managed, seen, t$1, t$2, t$3, t$4, typ)); /* */ $s = 31; case 31: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + if (_r$12) { _v$1 = true; $s = 30; continue s; } + _r$13 = foreach[0](t$4[0].Results().Len(), (function(containsTypeParam, foreach, managed, seen, t$1, t$2, t$3, t$4, typ) { return function isGeneric·func2·func5(i$2) { + var i$2; + return t$4[0].Results().At(i$2).object.Type(); + }; })(containsTypeParam, foreach, managed, seen, t$1, t$2, t$3, t$4, typ)); /* */ $s = 32; case 32: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _v$1 = _r$13; case 30: + $24r$3 = _v$1; + $s = 33; case 33: return $24r$3; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 6: + t$6 = _ref.$val; + _r$14 = containsTypeParam[0](t$6.Key()); /* */ $s = 35; case 35: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + if (_r$14) { _v$2 = true; $s = 34; continue s; } + _r$15 = containsTypeParam[0](t$6.Elem()); /* */ $s = 36; case 36: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + _v$2 = _r$15; case 34: + $24r$4 = _v$2; + $s = 37; case 37: return $24r$4; + /* } else if ($assertType(_ref, interfaceType, true)[1]) { */ case 7: + t$7 = _ref; + _r$16 = t$7.Elem(); /* */ $s = 38; case 38: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _r$17 = containsTypeParam[0](_r$16); /* */ $s = 39; case 39: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + $24r$5 = _r$17; + $s = 40; case 40: return $24r$5; + /* } else { */ case 8: + t$8 = _ref; + $s = -1; return false; + /* } */ case 9: + $s = -1; return false; + /* */ } return; } var $f = {$blk: isGeneric·func2, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, _entry, _entry$1, _key$1, _key$2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, _tuple$1, _v, _v$1, _v$2, i$1, ok, ok$1, t, t$1, t$2, t$3, t$4, t$5, t$6, t$7, t$8, $s};return $f; + }; })(containsTypeParam, foreach, managed, seen, typ); + _r = foreach[0](typ[0].$length, (function(containsTypeParam, foreach, managed, seen, typ) { return function isGeneric·func3(i$1) { + var i$1; + return ((i$1 < 0 || i$1 >= typ[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : typ[0].$array[typ[0].$offset + i$1]); + }; })(containsTypeParam, foreach, managed, seen, typ)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: isGeneric$1, $c: true, $r, $24r, _key, _r, containsTypeParam, foreach, i, ignore, managed, seen, typ, $s};return $f; + }; + NewResolver = function NewResolver$1(tc, root) { + var {_key, _key$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, i, i$1, nest, nestTParams, replacements, root, tParams, tc, typ, typ$1, typ$2, x, x$1, $s, $r, $c} = $restore(this, {tc, root}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + nest = ptrType$4.nil; + nestTParams = ptrType$3.nil; + tParams = ptrType$3.nil; + replacements = $makeMap(ptrType$9.keyFor, []); + _r = root.Object.Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _ref = _r; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 2: + typ = _ref.$val; + nest = $assertType(root.Object, ptrType$4); + tParams = SignatureTypeParams(typ); + $s = 5; continue; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 3: + typ$1 = _ref.$val; + _r$1 = typ$1.TypeParams(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + tParams = _r$1; + _r$2 = FindNestingFunc(root.Object); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + nest = _r$2; + if (!(nest === ptrType$4.nil)) { + nestTParams = SignatureTypeParams($assertType(nest.object.Type(), ptrType$8)); + } + $s = 5; continue; + /* } else { */ case 4: + typ$2 = _ref; + _r$3 = fmt.Errorf("unexpected type %T for object %s", new sliceType$1([typ$2, root.Object])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $panic(_r$3); + /* } */ case 5: + /* */ if (!((nestTParams.Len() === root.TNest.$length))) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!((nestTParams.Len() === root.TNest.$length))) { */ case 9: + _r$4 = fmt.Errorf("number of nesting type parameters and arguments must match: %d => %d", new sliceType$1([new $Int(nestTParams.Len()), new $Int(root.TNest.$length)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $panic(_r$4); + /* } */ case 10: + i = 0; + while (true) { + if (!(i < nestTParams.Len())) { break; } + _key = nestTParams.At(i); (replacements || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$9.keyFor(_key), { k: _key, v: (x = root.TNest, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])) }); + i = i + (1) >> 0; + } + /* */ if (!((tParams.Len() === root.TArgs.$length))) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!((tParams.Len() === root.TArgs.$length))) { */ case 12: + _r$5 = fmt.Errorf("number of type parameters and arguments must match: %d => %d", new sliceType$1([new $Int(tParams.Len()), new $Int(root.TArgs.$length)])); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $panic(_r$5); + /* } */ case 13: + i$1 = 0; + while (true) { + if (!(i$1 < tParams.Len())) { break; } + _key$1 = tParams.At(i$1); (replacements || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$9.keyFor(_key$1), { k: _key$1, v: (x$1 = root.TArgs, ((i$1 < 0 || i$1 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$1])) }); + i$1 = i$1 + (1) >> 0; + } + $s = -1; return new Resolver.ptr(tParams, $convertSliceType(root.TArgs, sliceType), nest, nestTParams, $convertSliceType(root.TNest, sliceType), replacements, $clone(root, Instance), subst.New(tc, replacements), $makeMap(typesutil.Selection.keyFor, [])); + /* */ } return; } var $f = {$blk: NewResolver$1, $c: true, $r, _key, _key$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, i, i$1, nest, nestTParams, replacements, root, tParams, tc, typ, typ$1, typ$2, x, x$1, $s};return $f; + }; + $pkg.NewResolver = NewResolver; + $ptrType(Resolver).prototype.TypeParams = function TypeParams() { + var r; + r = this; + if (r === ptrType$1.nil) { + return ptrType$3.nil; + } + return r.tParams; + }; + $ptrType(Resolver).prototype.TypeArgs = function TypeArgs() { + var r; + r = this; + if (r === ptrType$1.nil) { + return sliceType.nil; + } + return r.tArgs; + }; + $ptrType(Resolver).prototype.Nest = function Nest() { + var r; + r = this; + if (r === ptrType$1.nil) { + return ptrType$4.nil; + } + return r.nest; + }; + $ptrType(Resolver).prototype.NestTypeParams = function NestTypeParams() { + var r; + r = this; + if (r === ptrType$1.nil) { + return ptrType$3.nil; + } + return r.nestTParams; + }; + $ptrType(Resolver).prototype.NestTypeArgs = function NestTypeArgs() { + var r; + r = this; + if (r === ptrType$1.nil) { + return sliceType.nil; + } + return r.nestTArgs; + }; + $ptrType(Resolver).prototype.Substitute = function Substitute(typ) { + var {$24r, _r, r, typ, $s, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if (r === ptrType$1.nil || $interfaceIsEqual(typ, $ifaceNil)) { + $s = -1; return typ; + } + _r = r.subster.Type(typ); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Substitute, $c: true, $r, $24r, _r, r, typ, $s};return $f; + }; + $ptrType(Resolver).prototype.SubstituteAll = function SubstituteAll(list) { + var {_i, _r, _ref, i, list, r, result, $s, $r, $c} = $restore(this, {list}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + result = $makeSlice(sliceType, list.Len()); + _ref = result; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + _r = r.Substitute(list.At(i)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ((i < 0 || i >= result.$length) ? ($throwRuntimeError("index out of range"), undefined) : result.$array[result.$offset + i] = _r); + _i++; + $s = 1; continue; + case 2: + $s = -1; return result; + /* */ } return; } var $f = {$blk: SubstituteAll, $c: true, $r, _i, _r, _ref, i, list, r, result, $s};return $f; + }; + $ptrType(Resolver).prototype.SubstituteSelection = function SubstituteSelection(sel) { + var {_1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _entry, _key, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, concrete, concrete$1, index, obj, ok, pkg, r, recv, sel, typ, $s, $r, $c} = $restore(this, {sel}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if (r === ptrType$1.nil || $interfaceIsEqual(sel, $ifaceNil)) { + $s = -1; return sel; + } + _tuple = (_entry = $mapIndex(r.selMemo,typesutil.Selection.keyFor(sel)), _entry !== undefined ? [_entry.v, true] : [$ifaceNil, false]); + concrete = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $s = -1; return concrete; + } + _r = sel.Kind(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _1 = _r; + /* */ if ((_1 === (2)) || (_1 === (1)) || (_1 === (0))) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((_1 === (2)) || (_1 === (1)) || (_1 === (0))) { */ case 3: + _r$1 = sel.Recv(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = r.Substitute(_r$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + recv = _r$2; + _arg = recv; + _r$3 = sel.Recv(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$1 = _r$3; + _r$4 = types.Identical(_arg, _arg$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if (_r$4) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_r$4) { */ case 8: + $s = -1; return sel; + /* } */ case 9: + _r$5 = sel.Obj(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = _r$5.Pkg(); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + pkg = _r$6; + _arg$2 = recv; + _arg$3 = pkg; + _r$7 = sel.Obj(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = _r$7.Name(); /* */ $s = 15; case 15: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _arg$4 = _r$8; + _r$9 = types.LookupFieldOrMethod(_arg$2, true, _arg$3, _arg$4); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _tuple$1 = _r$9; + obj = _tuple$1[0]; + index = _tuple$1[1]; + /* */ if ($interfaceIsEqual(obj, $ifaceNil)) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if ($interfaceIsEqual(obj, $ifaceNil)) { */ case 17: + _r$10 = sel.Obj(); /* */ $s = 19; case 19: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + _r$11 = _r$10.Name(); /* */ $s = 20; case 20: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _arg$5 = new $String(_r$11); + _arg$6 = recv; + _r$12 = fmt.Errorf("failed to lookup field %q in type %v", new sliceType$1([_arg$5, _arg$6])); /* */ $s = 21; case 21: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $panic(_r$12); + /* } */ case 18: + _r$13 = obj.Type(); /* */ $s = 22; case 22: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + typ = _r$13; + _r$14 = sel.Kind(); /* */ $s = 25; case 25: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + /* */ if (_r$14 === 2) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if (_r$14 === 2) { */ case 23: + _r$15 = typesutil.RecvAsFirstArg($assertType(typ, ptrType$8)); /* */ $s = 26; case 26: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + typ = _r$15; + /* } */ case 24: + _r$16 = sel.Kind(); /* */ $s = 27; case 27: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _r$17 = typesutil.NewSelection(_r$16, recv, index, obj, typ); /* */ $s = 28; case 28: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + concrete$1 = _r$17; + _key = sel; (r.selMemo || $throwRuntimeError("assignment to entry in nil map")).set(typesutil.Selection.keyFor(_key), { k: _key, v: concrete$1 }); + $s = -1; return concrete$1; + /* } else { */ case 4: + _r$18 = sel.Kind(); /* */ $s = 29; case 29: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _arg$7 = new types.SelectionKind(_r$18); + _arg$8 = sel; + _r$19 = fmt.Errorf("unexpected selection kind %v: %v", new sliceType$1([_arg$7, _arg$8])); /* */ $s = 30; case 30: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + $panic(_r$19); + /* } */ case 5: + case 1: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: SubstituteSelection, $c: true, $r, _1, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _entry, _key, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, concrete, concrete$1, index, obj, ok, pkg, r, recv, sel, typ, $s};return $f; + }; + $ptrType(Resolver).prototype.String = function String() { + var {_entry, _i, _key, _keys, _r, _ref, _size, parts, r, ta, tp, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + if (r === ptrType$1.nil) { + $s = -1; return "{}"; + } + parts = $makeSlice(sliceType$2, 0, (r.replacements ? r.replacements.size : 0)); + _ref = r.replacements; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 1: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 2; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 1; continue; + } + tp = _entry.k; + ta = _entry.v; + _r = fmt.Sprintf("%s->%s", new sliceType$1([tp, ta])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + parts = $append(parts, _r); + _i++; + $s = 1; continue; + case 2: + $r = sort.Strings(parts); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return "{" + strings.Join(parts, ", ") + "}"; + /* */ } return; } var $f = {$blk: String, $c: true, $r, _entry, _i, _key, _keys, _r, _ref, _size, parts, r, ta, tp, $s};return $f; + }; + $ptrType(InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]).prototype.findIndex = function findIndex(key) { + var {_entry, _entry$1, _i, _r, _r$1, _ref, bucket, candidate, i, im, key, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + /* */ if (!(im === ptrType$14.nil) && !(im.data === false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(im === ptrType$14.nil) && !(im.data === false)) { */ case 1: + _r = typeHash($clone(im.hasher, typeutil.Hasher), $convertSliceType(key.TNest, sliceType), $convertSliceType(key.TArgs, sliceType)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + bucket = (_entry = $mapIndex((_entry$1 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$1 !== undefined ? _entry$1.v : false),$Uint32.keyFor(_r)), _entry !== undefined ? _entry.v : mapBucket[34 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */].nil); + _ref = bucket; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + i = _i; + candidate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = candidateArgsMatch[35 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]($clone(key, Instance), candidate); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$1) { */ case 6: + $s = -1; return [bucket, i]; + /* } */ case 7: + _i++; + $s = 4; continue; + case 5: + /* } */ case 2: + $s = -1; return [mapBucket[34 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */].nil, -1]; + /* */ } return; } var $f = {$blk: findIndex, $c: true, $r, _entry, _entry$1, _i, _r, _r$1, _ref, bucket, candidate, i, im, key, $s};return $f; + }; + $ptrType(InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]).prototype.findIndex = function findIndex$1(key) { + var {_entry, _entry$1, _i, _r, _r$1, _ref, bucket, candidate, i, im, key, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + /* */ if (!(im === ptrType$15.nil) && !(im.data === false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(im === ptrType$15.nil) && !(im.data === false)) { */ case 1: + _r = typeHash($clone(im.hasher, typeutil.Hasher), $convertSliceType(key.TNest, sliceType), $convertSliceType(key.TArgs, sliceType)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + bucket = (_entry = $mapIndex((_entry$1 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$1 !== undefined ? _entry$1.v : false),$Uint32.keyFor(_r)), _entry !== undefined ? _entry.v : mapBucket[38 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */].nil); + _ref = bucket; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + i = _i; + candidate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = candidateArgsMatch[39 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]($clone(key, Instance), candidate); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$1) { */ case 6: + $s = -1; return [bucket, i]; + /* } */ case 7: + _i++; + $s = 4; continue; + case 5: + /* } */ case 2: + $s = -1; return [mapBucket[38 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */].nil, -1]; + /* */ } return; } var $f = {$blk: findIndex$1, $c: true, $r, _entry, _entry$1, _i, _r, _r$1, _ref, bucket, candidate, i, im, key, $s};return $f; + }; + $ptrType(InstanceMap[22 /* int */]).prototype.findIndex = function findIndex$2(key) { + var {_entry, _entry$1, _i, _r, _r$1, _ref, bucket, candidate, i, im, key, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + /* */ if (!(im === ptrType$16.nil) && !(im.data === false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(im === ptrType$16.nil) && !(im.data === false)) { */ case 1: + _r = typeHash($clone(im.hasher, typeutil.Hasher), $convertSliceType(key.TNest, sliceType), $convertSliceType(key.TArgs, sliceType)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + bucket = (_entry = $mapIndex((_entry$1 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$1 !== undefined ? _entry$1.v : false),$Uint32.keyFor(_r)), _entry !== undefined ? _entry.v : mapBucket[42 /* int */].nil); + _ref = bucket; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + i = _i; + candidate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$1 = candidateArgsMatch[43 /* int */]($clone(key, Instance), candidate); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$1) { */ case 6: + $s = -1; return [bucket, i]; + /* } */ case 7: + _i++; + $s = 4; continue; + case 5: + /* } */ case 2: + $s = -1; return [mapBucket[42 /* int */].nil, -1]; + /* */ } return; } var $f = {$blk: findIndex$2, $c: true, $r, _entry, _entry$1, _i, _r, _r$1, _ref, bucket, candidate, i, im, key, $s};return $f; + }; + $ptrType(InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]).prototype.get = function get(key) { + var {_r, _tuple, bucket, i, im, key, zero, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.findIndex($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + bucket = _tuple[0]; + i = _tuple[1]; + if (i >= 0) { + $s = -1; return [((i < 0 || i >= bucket.$length) ? ($throwRuntimeError("index out of range"), undefined) : bucket.$array[bucket.$offset + i]).value, true]; + } + zero = ptrType$17.nil; + $s = -1; return [zero, false]; + /* */ } return; } var $f = {$blk: get, $c: true, $r, _r, _tuple, bucket, i, im, key, zero, $s};return $f; + }; + $ptrType(InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]).prototype.get = function get$1(key) { + var {_r, _tuple, bucket, i, im, key, zero, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.findIndex($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + bucket = _tuple[0]; + i = _tuple[1]; + if (i >= 0) { + $s = -1; return [((i < 0 || i >= bucket.$length) ? ($throwRuntimeError("index out of range"), undefined) : bucket.$array[bucket.$offset + i]).value, true]; + } + zero = sliceType$3.nil; + $s = -1; return [zero, false]; + /* */ } return; } var $f = {$blk: get$1, $c: true, $r, _r, _tuple, bucket, i, im, key, zero, $s};return $f; + }; + $ptrType(InstanceMap[22 /* int */]).prototype.get = function get$2(key) { + var {_r, _tuple, bucket, i, im, key, zero, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.findIndex($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + bucket = _tuple[0]; + i = _tuple[1]; + if (i >= 0) { + $s = -1; return [((i < 0 || i >= bucket.$length) ? ($throwRuntimeError("index out of range"), undefined) : bucket.$array[bucket.$offset + i]).value, true]; + } + zero = 0; + $s = -1; return [zero, false]; + /* */ } return; } var $f = {$blk: get$2, $c: true, $r, _r, _tuple, bucket, i, im, key, zero, $s};return $f; + }; + $ptrType(InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]).prototype.Get = function Get(key) { + var {_r, _tuple, im, key, val, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.get($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + val = _tuple[0]; + $s = -1; return val; + /* */ } return; } var $f = {$blk: Get, $c: true, $r, _r, _tuple, im, key, val, $s};return $f; + }; + $ptrType(InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]).prototype.Get = function Get$1(key) { + var {_r, _tuple, im, key, val, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.get($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + val = _tuple[0]; + $s = -1; return val; + /* */ } return; } var $f = {$blk: Get$1, $c: true, $r, _r, _tuple, im, key, val, $s};return $f; + }; + $ptrType(InstanceMap[22 /* int */]).prototype.Get = function Get$2(key) { + var {_r, _tuple, im, key, val, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.get($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + val = _tuple[0]; + $s = -1; return val; + /* */ } return; } var $f = {$blk: Get$2, $c: true, $r, _r, _tuple, im, key, val, $s};return $f; + }; + $ptrType(InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]).prototype.Has = function Has(key) { + var {_r, _tuple, im, key, ok, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.get($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ok = _tuple[1]; + $s = -1; return ok; + /* */ } return; } var $f = {$blk: Has, $c: true, $r, _r, _tuple, im, key, ok, $s};return $f; + }; + $ptrType(InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]).prototype.Has = function Has$1(key) { + var {_r, _tuple, im, key, ok, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.get($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ok = _tuple[1]; + $s = -1; return ok; + /* */ } return; } var $f = {$blk: Has$1, $c: true, $r, _r, _tuple, im, key, ok, $s};return $f; + }; + $ptrType(InstanceMap[22 /* int */]).prototype.Has = function Has$2(key) { + var {_r, _tuple, im, key, ok, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.get($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ok = _tuple[1]; + $s = -1; return ok; + /* */ } return; } var $f = {$blk: Has$2, $c: true, $r, _r, _tuple, im, key, ok, $s};return $f; + }; + $ptrType(InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]).prototype.Set = function Set(key, value) { + var {_entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _key, _key$1, _r, _r$1, _ref, _tuple, bucket, bucketID, candidate, hole, i, im, key, ok, old, value, x, zero, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + if (im.data === false) { + im.data = $makeMap(types.Object.keyFor, []); + typeutil.Hasher.copy(im.hasher, typeutil.MakeHasher()); + } + _tuple = (_entry = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry !== undefined ? [_entry.v, true] : [false, false]); + ok = _tuple[1]; + if (!ok) { + _key = key.Object; (im.data || $throwRuntimeError("assignment to entry in nil map")).set(types.Object.keyFor(_key), { k: _key, v: $makeMap($Uint32.keyFor, []) }); + } + _r = typeHash($clone(im.hasher, typeutil.Hasher), $convertSliceType(key.TNest, sliceType), $convertSliceType(key.TArgs, sliceType)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + bucketID = _r; + hole = -1; + bucket = (_entry$1 = $mapIndex((_entry$2 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$2 !== undefined ? _entry$2.v : false),$Uint32.keyFor(bucketID)), _entry$1 !== undefined ? _entry$1.v : mapBucket[34 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */].nil); + _ref = bucket; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + i = _i; + candidate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (candidate === ptrType$18.nil) { $s = 4; continue; } + _r$1 = candidateArgsMatch[35 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]($clone(key, Instance), candidate); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (candidate === ptrType$18.nil) { */ case 4: + hole = i; + $s = 6; continue; + /* } else if (_r$1) { */ case 5: + old = candidate.value; + candidate.value = value; + $s = -1; return old; + /* } */ case 6: + _i++; + $s = 2; continue; + case 3: + if (hole >= 0) { + (x = (_entry$3 = $mapIndex((_entry$4 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$4 !== undefined ? _entry$4.v : false),$Uint32.keyFor(bucketID)), _entry$3 !== undefined ? _entry$3.v : mapBucket[34 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */].nil), ((hole < 0 || hole >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + hole] = new mapEntry[36 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */].ptr($clone(key, Instance), value))); + } else { + _key$1 = bucketID; ((_entry$5 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$5 !== undefined ? _entry$5.v : false) || $throwRuntimeError("assignment to entry in nil map")).set($Uint32.keyFor(_key$1), { k: _key$1, v: $append(bucket, new mapEntry[36 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */].ptr($clone(key, Instance), value)) }); + } + im.len = im.len + (1) >> 0; + zero = ptrType$17.nil; + $s = -1; return zero; + /* */ } return; } var $f = {$blk: Set, $c: true, $r, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _key, _key$1, _r, _r$1, _ref, _tuple, bucket, bucketID, candidate, hole, i, im, key, ok, old, value, x, zero, $s};return $f; + }; + $ptrType(InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]).prototype.Set = function Set$1(key, value) { + var {_entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _key, _key$1, _r, _r$1, _ref, _tuple, bucket, bucketID, candidate, hole, i, im, key, ok, old, value, x, zero, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + if (im.data === false) { + im.data = $makeMap(types.Object.keyFor, []); + typeutil.Hasher.copy(im.hasher, typeutil.MakeHasher()); + } + _tuple = (_entry = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry !== undefined ? [_entry.v, true] : [false, false]); + ok = _tuple[1]; + if (!ok) { + _key = key.Object; (im.data || $throwRuntimeError("assignment to entry in nil map")).set(types.Object.keyFor(_key), { k: _key, v: $makeMap($Uint32.keyFor, []) }); + } + _r = typeHash($clone(im.hasher, typeutil.Hasher), $convertSliceType(key.TNest, sliceType), $convertSliceType(key.TArgs, sliceType)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + bucketID = _r; + hole = -1; + bucket = (_entry$1 = $mapIndex((_entry$2 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$2 !== undefined ? _entry$2.v : false),$Uint32.keyFor(bucketID)), _entry$1 !== undefined ? _entry$1.v : mapBucket[38 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */].nil); + _ref = bucket; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + i = _i; + candidate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (candidate === ptrType$19.nil) { $s = 4; continue; } + _r$1 = candidateArgsMatch[39 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]($clone(key, Instance), candidate); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (candidate === ptrType$19.nil) { */ case 4: + hole = i; + $s = 6; continue; + /* } else if (_r$1) { */ case 5: + old = candidate.value; + candidate.value = value; + $s = -1; return old; + /* } */ case 6: + _i++; + $s = 2; continue; + case 3: + if (hole >= 0) { + (x = (_entry$3 = $mapIndex((_entry$4 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$4 !== undefined ? _entry$4.v : false),$Uint32.keyFor(bucketID)), _entry$3 !== undefined ? _entry$3.v : mapBucket[38 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */].nil), ((hole < 0 || hole >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + hole] = new mapEntry[40 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */].ptr($clone(key, Instance), value))); + } else { + _key$1 = bucketID; ((_entry$5 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$5 !== undefined ? _entry$5.v : false) || $throwRuntimeError("assignment to entry in nil map")).set($Uint32.keyFor(_key$1), { k: _key$1, v: $append(bucket, new mapEntry[40 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */].ptr($clone(key, Instance), value)) }); + } + im.len = im.len + (1) >> 0; + zero = sliceType$3.nil; + $s = -1; return zero; + /* */ } return; } var $f = {$blk: Set$1, $c: true, $r, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _key, _key$1, _r, _r$1, _ref, _tuple, bucket, bucketID, candidate, hole, i, im, key, ok, old, value, x, zero, $s};return $f; + }; + $ptrType(InstanceMap[22 /* int */]).prototype.Set = function Set$2(key, value) { + var {_entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _key, _key$1, _r, _r$1, _ref, _tuple, bucket, bucketID, candidate, hole, i, im, key, ok, old, value, x, zero, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + if (im.data === false) { + im.data = $makeMap(types.Object.keyFor, []); + typeutil.Hasher.copy(im.hasher, typeutil.MakeHasher()); + } + _tuple = (_entry = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry !== undefined ? [_entry.v, true] : [false, false]); + ok = _tuple[1]; + if (!ok) { + _key = key.Object; (im.data || $throwRuntimeError("assignment to entry in nil map")).set(types.Object.keyFor(_key), { k: _key, v: $makeMap($Uint32.keyFor, []) }); + } + _r = typeHash($clone(im.hasher, typeutil.Hasher), $convertSliceType(key.TNest, sliceType), $convertSliceType(key.TArgs, sliceType)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + bucketID = _r; + hole = -1; + bucket = (_entry$1 = $mapIndex((_entry$2 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$2 !== undefined ? _entry$2.v : false),$Uint32.keyFor(bucketID)), _entry$1 !== undefined ? _entry$1.v : mapBucket[42 /* int */].nil); + _ref = bucket; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + i = _i; + candidate = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + /* */ if (candidate === ptrType$20.nil) { $s = 4; continue; } + _r$1 = candidateArgsMatch[43 /* int */]($clone(key, Instance), candidate); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (candidate === ptrType$20.nil) { */ case 4: + hole = i; + $s = 6; continue; + /* } else if (_r$1) { */ case 5: + old = candidate.value; + candidate.value = value; + $s = -1; return old; + /* } */ case 6: + _i++; + $s = 2; continue; + case 3: + if (hole >= 0) { + (x = (_entry$3 = $mapIndex((_entry$4 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$4 !== undefined ? _entry$4.v : false),$Uint32.keyFor(bucketID)), _entry$3 !== undefined ? _entry$3.v : mapBucket[42 /* int */].nil), ((hole < 0 || hole >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + hole] = new mapEntry[44 /* int */].ptr($clone(key, Instance), value))); + } else { + _key$1 = bucketID; ((_entry$5 = $mapIndex(im.data,types.Object.keyFor(key.Object)), _entry$5 !== undefined ? _entry$5.v : false) || $throwRuntimeError("assignment to entry in nil map")).set($Uint32.keyFor(_key$1), { k: _key$1, v: $append(bucket, new mapEntry[44 /* int */].ptr($clone(key, Instance), value)) }); + } + im.len = im.len + (1) >> 0; + zero = 0; + $s = -1; return zero; + /* */ } return; } var $f = {$blk: Set$2, $c: true, $r, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _i, _key, _key$1, _r, _r$1, _ref, _tuple, bucket, bucketID, candidate, hole, i, im, key, ok, old, value, x, zero, $s};return $f; + }; + $ptrType(InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]).prototype.Len = function Len() { + var im; + im = this; + if (!(im === ptrType$14.nil)) { + return im.len; + } + return 0; + }; + $ptrType(InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]).prototype.Len = function Len$1() { + var im; + im = this; + if (!(im === ptrType$15.nil)) { + return im.len; + } + return 0; + }; + $ptrType(InstanceMap[22 /* int */]).prototype.Len = function Len$2() { + var im; + im = this; + if (!(im === ptrType$16.nil)) { + return im.len; + } + return 0; + }; + $ptrType(InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]).prototype.Delete = function Delete(key) { + var {_r, _tuple, bucket, i, im, key, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.findIndex($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + bucket = _tuple[0]; + i = _tuple[1]; + if (i >= 0) { + ((i < 0 || i >= bucket.$length) ? ($throwRuntimeError("index out of range"), undefined) : bucket.$array[bucket.$offset + i] = ptrType$18.nil); + im.len = im.len - (1) >> 0; + $s = -1; return true; + } + $s = -1; return false; + /* */ } return; } var $f = {$blk: Delete, $c: true, $r, _r, _tuple, bucket, i, im, key, $s};return $f; + }; + $ptrType(InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]).prototype.Delete = function Delete$1(key) { + var {_r, _tuple, bucket, i, im, key, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.findIndex($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + bucket = _tuple[0]; + i = _tuple[1]; + if (i >= 0) { + ((i < 0 || i >= bucket.$length) ? ($throwRuntimeError("index out of range"), undefined) : bucket.$array[bucket.$offset + i] = ptrType$19.nil); + im.len = im.len - (1) >> 0; + $s = -1; return true; + } + $s = -1; return false; + /* */ } return; } var $f = {$blk: Delete$1, $c: true, $r, _r, _tuple, bucket, i, im, key, $s};return $f; + }; + $ptrType(InstanceMap[22 /* int */]).prototype.Delete = function Delete$2(key) { + var {_r, _tuple, bucket, i, im, key, $s, $r, $c} = $restore(this, {key}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + _r = im.findIndex($clone(key, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + bucket = _tuple[0]; + i = _tuple[1]; + if (i >= 0) { + ((i < 0 || i >= bucket.$length) ? ($throwRuntimeError("index out of range"), undefined) : bucket.$array[bucket.$offset + i] = ptrType$20.nil); + im.len = im.len - (1) >> 0; + $s = -1; return true; + } + $s = -1; return false; + /* */ } return; } var $f = {$blk: Delete$2, $c: true, $r, _r, _tuple, bucket, i, im, key, $s};return $f; + }; + $ptrType(InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]).prototype.Iterate = function Iterate(f) { + var {_entry, _entry$1, _i, _i$1, _i$2, _key, _key$1, _keys, _keys$1, _ref, _ref$1, _ref$2, _size, _size$1, bucket, e, f, im, mapBucket$1, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + /* */ if (!(im === ptrType$14.nil) && !(im.data === false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(im === ptrType$14.nil) && !(im.data === false)) { */ case 1: + _ref = im.data; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 3: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 4; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 3; continue; + } + mapBucket$1 = _entry.v; + _ref$1 = mapBucket$1; + _i$1 = 0; + _keys$1 = _ref$1 ? _ref$1.keys() : undefined; + _size$1 = _ref$1 ? _ref$1.size : 0; + /* while (true) { */ case 5: + /* if (!(_i$1 < _size$1)) { break; } */ if(!(_i$1 < _size$1)) { $s = 6; continue; } + _key$1 = _keys$1.next().value; + _entry$1 = _ref$1.get(_key$1); + if (_entry$1 === undefined) { + _i$1++; + /* continue; */ $s = 5; continue; + } + bucket = _entry$1.v; + _ref$2 = bucket; + _i$2 = 0; + /* while (true) { */ case 7: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 8; continue; } + e = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + /* */ if (!(e === ptrType$18.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(e === ptrType$18.nil)) { */ case 9: + $r = f($clone(e.key, Instance), e.value); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + _i$2++; + $s = 7; continue; + case 8: + _i$1++; + $s = 5; continue; + case 6: + _i++; + $s = 3; continue; + case 4: + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Iterate, $c: true, $r, _entry, _entry$1, _i, _i$1, _i$2, _key, _key$1, _keys, _keys$1, _ref, _ref$1, _ref$2, _size, _size$1, bucket, e, f, im, mapBucket$1, $s};return $f; + }; + $ptrType(InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]).prototype.Iterate = function Iterate$1(f) { + var {_entry, _entry$1, _i, _i$1, _i$2, _key, _key$1, _keys, _keys$1, _ref, _ref$1, _ref$2, _size, _size$1, bucket, e, f, im, mapBucket$1, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + /* */ if (!(im === ptrType$15.nil) && !(im.data === false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(im === ptrType$15.nil) && !(im.data === false)) { */ case 1: + _ref = im.data; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 3: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 4; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 3; continue; + } + mapBucket$1 = _entry.v; + _ref$1 = mapBucket$1; + _i$1 = 0; + _keys$1 = _ref$1 ? _ref$1.keys() : undefined; + _size$1 = _ref$1 ? _ref$1.size : 0; + /* while (true) { */ case 5: + /* if (!(_i$1 < _size$1)) { break; } */ if(!(_i$1 < _size$1)) { $s = 6; continue; } + _key$1 = _keys$1.next().value; + _entry$1 = _ref$1.get(_key$1); + if (_entry$1 === undefined) { + _i$1++; + /* continue; */ $s = 5; continue; + } + bucket = _entry$1.v; + _ref$2 = bucket; + _i$2 = 0; + /* while (true) { */ case 7: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 8; continue; } + e = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + /* */ if (!(e === ptrType$19.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(e === ptrType$19.nil)) { */ case 9: + $r = f($clone(e.key, Instance), e.value); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + _i$2++; + $s = 7; continue; + case 8: + _i$1++; + $s = 5; continue; + case 6: + _i++; + $s = 3; continue; + case 4: + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Iterate$1, $c: true, $r, _entry, _entry$1, _i, _i$1, _i$2, _key, _key$1, _keys, _keys$1, _ref, _ref$1, _ref$2, _size, _size$1, bucket, e, f, im, mapBucket$1, $s};return $f; + }; + $ptrType(InstanceMap[22 /* int */]).prototype.Iterate = function Iterate$2(f) { + var {_entry, _entry$1, _i, _i$1, _i$2, _key, _key$1, _keys, _keys$1, _ref, _ref$1, _ref$2, _size, _size$1, bucket, e, f, im, mapBucket$1, $s, $r, $c} = $restore(this, {f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + im = this; + /* */ if (!(im === ptrType$16.nil) && !(im.data === false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(im === ptrType$16.nil) && !(im.data === false)) { */ case 1: + _ref = im.data; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 3: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 4; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 3; continue; + } + mapBucket$1 = _entry.v; + _ref$1 = mapBucket$1; + _i$1 = 0; + _keys$1 = _ref$1 ? _ref$1.keys() : undefined; + _size$1 = _ref$1 ? _ref$1.size : 0; + /* while (true) { */ case 5: + /* if (!(_i$1 < _size$1)) { break; } */ if(!(_i$1 < _size$1)) { $s = 6; continue; } + _key$1 = _keys$1.next().value; + _entry$1 = _ref$1.get(_key$1); + if (_entry$1 === undefined) { + _i$1++; + /* continue; */ $s = 5; continue; + } + bucket = _entry$1.v; + _ref$2 = bucket; + _i$2 = 0; + /* while (true) { */ case 7: + /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 8; continue; } + e = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + /* */ if (!(e === ptrType$20.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(e === ptrType$20.nil)) { */ case 9: + $r = f($clone(e.key, Instance), e.value); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + _i$2++; + $s = 7; continue; + case 8: + _i$1++; + $s = 5; continue; + case 6: + _i++; + $s = 3; continue; + case 4: + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Iterate$2, $c: true, $r, _entry, _entry$1, _i, _i$1, _i$2, _key, _key$1, _keys, _keys$1, _ref, _ref$1, _ref$2, _size, _size$1, bucket, e, f, im, mapBucket$1, $s};return $f; + }; + $ptrType(InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]).prototype.Keys = function Keys() { + var {im, keys, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + keys = [keys]; + im = this; + keys[0] = $makeSlice(sliceType$4, 0, im.Len()); + $r = im.Iterate((function(keys) { return function InstanceMap·Keys·func1(key, param) { + var key, param; + keys[0] = $append(keys[0], key); + }; })(keys)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return keys[0]; + /* */ } return; } var $f = {$blk: Keys, $c: true, $r, im, keys, $s};return $f; + }; + $ptrType(InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]).prototype.Keys = function Keys$1() { + var {im, keys, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + keys = [keys]; + im = this; + keys[0] = $makeSlice(sliceType$4, 0, im.Len()); + $r = im.Iterate((function(keys) { return function InstanceMap·Keys·func1$1(key, param) { + var key, param; + keys[0] = $append(keys[0], key); + }; })(keys)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return keys[0]; + /* */ } return; } var $f = {$blk: Keys$1, $c: true, $r, im, keys, $s};return $f; + }; + $ptrType(InstanceMap[22 /* int */]).prototype.Keys = function Keys$2() { + var {im, keys, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + keys = [keys]; + im = this; + keys[0] = $makeSlice(sliceType$4, 0, im.Len()); + $r = im.Iterate((function(keys) { return function InstanceMap·Keys·func1$2(key, param) { + var key, param; + keys[0] = $append(keys[0], key); + }; })(keys)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return keys[0]; + /* */ } return; } var $f = {$blk: Keys$2, $c: true, $r, im, keys, $s};return $f; + }; + $ptrType(InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]).prototype.String = function String$1() { + var {entries, im, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + entries = [entries]; + im = this; + entries[0] = $makeSlice(sliceType$2, 0, im.Len()); + $r = im.Iterate((function(entries) { return function InstanceMap·String·func1(key, value) { + var {_r, key, value, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fmt.Sprintf("%v:%v", new sliceType$1([new key.constructor.elem(key), value])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + entries[0] = $append(entries[0], _r); + $s = -1; return; + /* */ } return; } var $f = {$blk: InstanceMap·String·func1, $c: true, $r, _r, key, value, $s};return $f; + }; })(entries)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.Strings(entries[0]); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return "{" + strings.Join(entries[0], ", ") + "}"; + /* */ } return; } var $f = {$blk: String$1, $c: true, $r, entries, im, $s};return $f; + }; + $ptrType(InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]).prototype.String = function String$2() { + var {entries, im, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + entries = [entries]; + im = this; + entries[0] = $makeSlice(sliceType$2, 0, im.Len()); + $r = im.Iterate((function(entries) { return function InstanceMap·String·func1$1(key, value) { + var {_r, key, value, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fmt.Sprintf("%v:%v", new sliceType$1([new key.constructor.elem(key), value])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + entries[0] = $append(entries[0], _r); + $s = -1; return; + /* */ } return; } var $f = {$blk: InstanceMap·String·func1$1, $c: true, $r, _r, key, value, $s};return $f; + }; })(entries)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.Strings(entries[0]); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return "{" + strings.Join(entries[0], ", ") + "}"; + /* */ } return; } var $f = {$blk: String$2, $c: true, $r, entries, im, $s};return $f; + }; + $ptrType(InstanceMap[22 /* int */]).prototype.String = function String$3() { + var {entries, im, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + entries = [entries]; + im = this; + entries[0] = $makeSlice(sliceType$2, 0, im.Len()); + $r = im.Iterate((function(entries) { return function InstanceMap·String·func1$2(key, value) { + var {_r, key, value, $s, $r, $c} = $restore(this, {key, value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fmt.Sprintf("%v:%v", new sliceType$1([new key.constructor.elem(key), new $Int(value)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + entries[0] = $append(entries[0], _r); + $s = -1; return; + /* */ } return; } var $f = {$blk: InstanceMap·String·func1$2, $c: true, $r, _r, key, value, $s};return $f; + }; })(entries)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.Strings(entries[0]); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return "{" + strings.Join(entries[0], ", ") + "}"; + /* */ } return; } var $f = {$blk: String$3, $c: true, $r, entries, im, $s};return $f; + }; + candidateArgsMatch[35 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */] = function candidateArgsMatch$1(key, candidate) { + var {$24r, _r, _r$1, _v, _v$1, candidate, key, $s, $r, $c} = $restore(this, {key, candidate}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(!(candidate === ptrType$18.nil))) { _v$1 = false; $s = 2; continue s; } + _r = candidate.key.TNest.Equal(key.TNest); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v$1 = _r; case 2: + if (!(_v$1)) { _v = false; $s = 1; continue s; } + _r$1 = candidate.key.TArgs.Equal(key.TArgs); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 1: + $24r = _v; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: candidateArgsMatch$1, $c: true, $r, $24r, _r, _r$1, _v, _v$1, candidate, key, $s};return $f; + }; + candidateArgsMatch[39 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */] = function candidateArgsMatch$2(key, candidate) { + var {$24r, _r, _r$1, _v, _v$1, candidate, key, $s, $r, $c} = $restore(this, {key, candidate}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(!(candidate === ptrType$19.nil))) { _v$1 = false; $s = 2; continue s; } + _r = candidate.key.TNest.Equal(key.TNest); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v$1 = _r; case 2: + if (!(_v$1)) { _v = false; $s = 1; continue s; } + _r$1 = candidate.key.TArgs.Equal(key.TArgs); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 1: + $24r = _v; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: candidateArgsMatch$2, $c: true, $r, $24r, _r, _r$1, _v, _v$1, candidate, key, $s};return $f; + }; + candidateArgsMatch[43 /* int */] = function candidateArgsMatch$3(key, candidate) { + var {$24r, _r, _r$1, _v, _v$1, candidate, key, $s, $r, $c} = $restore(this, {key, candidate}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!(!(candidate === ptrType$20.nil))) { _v$1 = false; $s = 2; continue s; } + _r = candidate.key.TNest.Equal(key.TNest); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v$1 = _r; case 2: + if (!(_v$1)) { _v = false; $s = 1; continue s; } + _r$1 = candidate.key.TArgs.Equal(key.TArgs); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _v = _r$1; case 1: + $24r = _v; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: candidateArgsMatch$3, $c: true, $r, $24r, _r, _r$1, _v, _v$1, candidate, key, $s};return $f; + }; + typeHash = function typeHash$1(hasher, nestTypes, types$1) { + var {_i, _i$1, _r, _r$1, _ref, _ref$1, hash, hasher, nestTypes, typ, typ$1, types$1, $s, $r, $c} = $restore(this, {hasher, nestTypes, types$1}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + hash = 0; + _ref = nestTypes; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + typ = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r = $clone(hasher, typeutil.Hasher).Hash(typ); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + hash = (hash ^ (_r)) >>> 0; + _i++; + $s = 1; continue; + case 2: + _ref$1 = types$1; + _i$1 = 0; + /* while (true) { */ case 4: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; } + typ$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r$1 = $clone(hasher, typeutil.Hasher).Hash(typ$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + hash = (hash ^ (_r$1)) >>> 0; + _i$1++; + $s = 4; continue; + case 5: + $s = -1; return hash; + /* */ } return; } var $f = {$blk: typeHash$1, $c: true, $r, _i, _i$1, _r, _r$1, _ref, _ref$1, hash, hasher, nestTypes, typ, typ$1, types$1, $s};return $f; + }; + $ptrType(Instance).prototype.String = function String$4() { + var {$24r, _r, _r$1, i, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = this; + _r = $clone(i, Instance).symbolicName(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = $clone(i, Instance).TypeParamsString("<", ">"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r + _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: String$4, $c: true, $r, $24r, _r, _r$1, i, $s};return $f; + }; + Instance.prototype.String = function(...$args) { return this.$val.String(...$args); }; + $ptrType(Instance).prototype.TypeString = function TypeString() { + var {$24r, _r, _r$1, i, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = this; + _r = $clone(i, Instance).qualifiedName(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = $clone(i, Instance).TypeParamsString("[", "]"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r + _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: TypeString, $c: true, $r, $24r, _r, _r$1, i, $s};return $f; + }; + Instance.prototype.TypeString = function(...$args) { return this.$val.TypeString(...$args); }; + $ptrType(Instance).prototype.symbolicName = function symbolicName() { + var {$24r, _r, _r$1, i, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = this; + if ($interfaceIsEqual(i.Object, $ifaceNil)) { + $s = -1; return ""; + } + _r = symbol.New(i.Object); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = $clone(_r, symbol.Name).String(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: symbolicName, $c: true, $r, $24r, _r, _r$1, i, $s};return $f; + }; + Instance.prototype.symbolicName = function(...$args) { return this.$val.symbolicName(...$args); }; + $ptrType(Instance).prototype.qualifiedName = function qualifiedName() { + var {$24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, i, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = this; + if ($interfaceIsEqual(i.Object, $ifaceNil)) { + $s = -1; return ""; + } + _r = i.Object.Pkg(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r === ptrType$6.nil) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r === ptrType$6.nil) { */ case 1: + _r$1 = i.Object.Name(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 5; case 5: return $24r; + /* } */ case 2: + _r$2 = i.Object.Pkg(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.Name(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg = new $String(_r$3); + _r$4 = i.Object.Name(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$4); + _r$5 = fmt.Sprintf("%s.%s", new sliceType$1([_arg, _arg$1])); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r$1 = _r$5; + $s = 10; case 10: return $24r$1; + /* */ } return; } var $f = {$blk: qualifiedName, $c: true, $r, $24r, $24r$1, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, i, $s};return $f; + }; + Instance.prototype.qualifiedName = function(...$args) { return this.$val.qualifiedName(...$args); }; + $ptrType(Instance).prototype.TypeParamsString = function TypeParamsString(open, close) { + var {_r, _r$1, _r$2, _r$3, buf, close, hasArgs, hasNest, i, open, $s, $r, $c} = $restore(this, {open, close}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = this; + hasNest = i.TNest.$length > 0; + hasArgs = i.TArgs.$length > 0; + buf = new strings.Builder.ptr(ptrType$21.nil, sliceType$5.nil); + /* */ if (hasNest || hasArgs) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (hasNest || hasArgs) { */ case 1: + buf.WriteString(open); + /* */ if (hasNest) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (hasNest) { */ case 3: + _r = i.TNest.String(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = buf.WriteString(_r); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + buf.WriteRune(59); + if (hasArgs) { + buf.WriteRune(32); + } + /* } */ case 4: + /* */ if (hasArgs) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (hasArgs) { */ case 7: + _r$2 = i.TArgs.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = buf.WriteString(_r$2); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$3; + /* } */ case 8: + buf.WriteString(close); + /* } */ case 2: + $s = -1; return buf.String(); + /* */ } return; } var $f = {$blk: TypeParamsString, $c: true, $r, _r, _r$1, _r$2, _r$3, buf, close, hasArgs, hasNest, i, open, $s};return $f; + }; + Instance.prototype.TypeParamsString = function(...$args) { return this.$val.TypeParamsString(...$args); }; + $ptrType(Instance).prototype.IsTrivial = function IsTrivial() { + var i; + i = this; + return (i.TArgs.$length === 0) && (i.TNest.$length === 0); + }; + Instance.prototype.IsTrivial = function(...$args) { return this.$val.IsTrivial(...$args); }; + $ptrType(Instance).prototype.Recv = function Recv() { + var {_r, _tuple, i, ok, recv, sig, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = this; + _r = i.Object.Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$8, true); + sig = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + $s = -1; return new Instance.ptr($ifaceNil, typesutil.TypeList.nil, typesutil.TypeList.nil); + } + recv = typesutil.RecvType(sig); + if (recv === ptrType$7.nil) { + $s = -1; return new Instance.ptr($ifaceNil, typesutil.TypeList.nil, typesutil.TypeList.nil); + } + $s = -1; return new Instance.ptr(recv.Obj(), i.TArgs, typesutil.TypeList.nil); + /* */ } return; } var $f = {$blk: Recv, $c: true, $r, _r, _tuple, i, ok, recv, sig, $s};return $f; + }; + Instance.prototype.Recv = function(...$args) { return this.$val.Recv(...$args); }; + $ptrType(Instance).prototype.Resolve = function Resolve(tc) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, err, i, instType, tc, $s, $r, $c} = $restore(this, {tc}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = this; + _r = i.Object.Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + instType = _r; + /* */ if (i.TArgs.$length > 0) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (i.TArgs.$length > 0) { */ case 2: + err = $ifaceNil; + _r$1 = types.Instantiate(tc, instType, $convertSliceType(i.TArgs, sliceType), true); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + instType = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5: + _r$2 = fmt.Errorf("failed to instantiate %v: %w", new sliceType$1([new i.constructor.elem(i), err])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $panic(_r$2); + /* } */ case 6: + /* } */ case 3: + _r$3 = NewResolver(tc, $clone(i, Instance)); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = _r$3.Substitute(instType); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 10; case 10: return $24r; + /* */ } return; } var $f = {$blk: Resolve, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, err, i, instType, tc, $s};return $f; + }; + Instance.prototype.Resolve = function(...$args) { return this.$val.Resolve(...$args); }; + $ptrType(InstanceSet).prototype.Add = function Add(instances) { + var {_i, _r, _r$1, _ref, inst, instances, iset, $s, $r, $c} = $restore(this, {instances}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + iset = this; + _ref = instances; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), Instance); + _r = iset.seen.Has($clone(inst, Instance)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r) { */ case 3: + _i++; + /* continue; */ $s = 1; continue; + /* } */ case 4: + _r$1 = iset.seen.Set($clone(inst, Instance), iset.seen.Len()); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + iset.values = $append(iset.values, inst); + _i++; + $s = 1; continue; + case 2: + $s = -1; return iset; + /* */ } return; } var $f = {$blk: Add, $c: true, $r, _i, _r, _r$1, _ref, inst, instances, iset, $s};return $f; + }; + $ptrType(InstanceSet).prototype.ID = function ID(inst) { + var {_r, _r$1, _tuple, id, inst, iset, ok, $s, $r, $c} = $restore(this, {inst}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + iset = this; + _r = iset.seen.get($clone(inst, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + id = _tuple[0]; + ok = _tuple[1]; + /* */ if (!ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!ok) { */ case 2: + _r$1 = fmt.Errorf("requesting ID of instance %v that hasn't been added to the set", new sliceType$1([new inst.constructor.elem(inst)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(_r$1); + /* } */ case 3: + $s = -1; return id; + /* */ } return; } var $f = {$blk: ID, $c: true, $r, _r, _r$1, _tuple, id, inst, iset, ok, $s};return $f; + }; + $ptrType(InstanceSet).prototype.next = function next() { + var iset, next$1, x, x$1; + iset = this; + if (iset.exhausted()) { + return [new Instance.ptr($ifaceNil, typesutil.TypeList.nil, typesutil.TypeList.nil), false]; + } + next$1 = $clone((x = iset.values, x$1 = iset.unprocessed, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])), Instance); + iset.unprocessed = iset.unprocessed + (1) >> 0; + return [next$1, true]; + }; + $ptrType(InstanceSet).prototype.exhausted = function exhausted() { + var iset; + iset = this; + return iset.values.$length <= iset.unprocessed; + }; + $ptrType(InstanceSet).prototype.Values = function Values() { + var iset; + iset = this; + return iset.values; + }; + $ptrType(InstanceSet).prototype.ByObj = function ByObj() { + var _entry, _i, _key, _ref, inst, iset, result; + iset = this; + result = $makeMap(types.Object.keyFor, []); + _ref = iset.values; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), Instance); + _key = inst.Object; (result || $throwRuntimeError("assignment to entry in nil map")).set(types.Object.keyFor(_key), { k: _key, v: $append((_entry = $mapIndex(result,types.Object.keyFor(inst.Object)), _entry !== undefined ? _entry.v : sliceType$4.nil), inst) }); + _i++; + } + return result; + }; + $ptrType(InstanceSet).prototype.ForObj = function ForObj(obj) { + var _i, _ref, inst, iset, obj, result; + iset = this; + result = new sliceType$4([]); + _ref = iset.values; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), Instance); + if ($interfaceIsEqual(inst.Object, obj)) { + result = $append(result, inst); + } + _i++; + } + return result; + }; + $ptrType(InstanceSet).prototype.ObjHasInstances = function ObjHasInstances(obj) { + var _i, _ref, inst, iset, obj; + iset = this; + _ref = iset.values; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), Instance); + if ($interfaceIsEqual(inst.Object, obj)) { + return true; + } + _i++; + } + return false; + }; + PackageInstanceSets.prototype.allExhausted = function allExhausted() { + var _entry, _i, _key, _keys, _ref, _size, i, iset; + i = this.$val; + _ref = i; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + iset = _entry.v; + if (!iset.exhausted()) { + return false; + } + _i++; + } + return true; + }; + $ptrType(PackageInstanceSets).prototype.allExhausted = function(...$args) { return new PackageInstanceSets(this.$get()).allExhausted(...$args); }; + PackageInstanceSets.prototype.Pkg = function Pkg(pkg) { + var _entry, _key, _tuple, i, iset, ok, path, pkg; + i = this.$val; + path = pkg.Path(); + _tuple = (_entry = $mapIndex(i,$String.keyFor(path)), _entry !== undefined ? [_entry.v, true] : [ptrType$22.nil, false]); + iset = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + iset = new InstanceSet.ptr(sliceType$4.nil, 0, new InstanceMap[22 /* int */].ptr(false, 0, new typeutil.Hasher.ptr(false, false, ptrType$3.nil))); + _key = path; (i || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: iset }); + } + return iset; + }; + $ptrType(PackageInstanceSets).prototype.Pkg = function(...$args) { return new PackageInstanceSets(this.$get()).Pkg(...$args); }; + PackageInstanceSets.prototype.Add = function Add$1(instances) { + var {_i, _r, _r$1, _r$2, _ref, i, inst, instances, $s, $r, $c} = $restore(this, {instances}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = this.$val; + _ref = instances; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), Instance); + _r = inst.Object.Pkg(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = new PackageInstanceSets(i).Pkg(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Add(new sliceType$4([$clone(inst, Instance)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Add$1, $c: true, $r, _i, _r, _r$1, _r$2, _ref, i, inst, instances, $s};return $f; + }; + $ptrType(PackageInstanceSets).prototype.Add = function(...$args) { return new PackageInstanceSets(this.$get()).Add(...$args); }; + PackageInstanceSets.prototype.ID = function ID$1(inst) { + var {$24r, _r, _r$1, _r$2, i, inst, $s, $r, $c} = $restore(this, {inst}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + i = this.$val; + _r = inst.Object.Pkg(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = new PackageInstanceSets(i).Pkg(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.ID($clone(inst, Instance)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = _r$2; + $s = 4; case 4: return $24r; + /* */ } return; } var $f = {$blk: ID$1, $c: true, $r, $24r, _r, _r$1, _r$2, i, inst, $s};return $f; + }; + $ptrType(PackageInstanceSets).prototype.ID = function(...$args) { return new PackageInstanceSets(this.$get()).ID(...$args); }; + $ptrType(visitor).prototype.Visit = function Visit(n) { + var {_tuple, c, ident, n, ok, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _tuple = $assertType(n, ptrType$23, true); + ident = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + $r = c.visitIdent(ident); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return c; + /* */ } return; } var $f = {$blk: Visit, $c: true, $r, _tuple, c, ident, n, ok, $s};return $f; + }; + $ptrType(visitor).prototype.visitIdent = function visitIdent(ident) { + var {_entry, _entry$1, _tuple, _tuple$1, c, ident, inst, obj, ok, ok$1, $s, $r, $c} = $restore(this, {ident}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _tuple = (_entry = $mapIndex(c.info.Instances,ptrType$23.keyFor(ident)), _entry !== undefined ? [_entry.v, true] : [new types.Instance.ptr(ptrType$24.nil, $ifaceNil), false]); + inst = $clone(_tuple[0], types.Instance); + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + $r = c.visitInstance(ident, $clone(inst, types.Instance)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + /* */ if (c.resolver.TypeArgs().$length > 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (c.resolver.TypeArgs().$length > 0) { */ case 4: + _tuple$1 = (_entry$1 = $mapIndex(c.info.Defs,ptrType$23.keyFor(ident)), _entry$1 !== undefined ? [_entry$1.v, true] : [$ifaceNil, false]); + obj = _tuple$1[0]; + ok$1 = _tuple$1[1]; + /* */ if (ok$1 && !($interfaceIsEqual(obj, $ifaceNil))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (ok$1 && !($interfaceIsEqual(obj, $ifaceNil))) { */ case 6: + $r = c.visitNestedType(obj); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + /* } */ case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: visitIdent, $c: true, $r, _entry, _entry$1, _tuple, _tuple$1, c, ident, inst, obj, ok, ok$1, $s};return $f; + }; + $ptrType(visitor).prototype.visitInstance = function visitInstance(ident, inst) { + var {_entry, _r, _r$1, _r$2, _tuple, _tuple$1, c, ident, inst, nestTArgs, nestTParams, obj, ok, ok$1, ptr, t, tArgs, typ, $s, $r, $c} = $restore(this, {ident, inst}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + obj = (_entry = $mapIndex(c.info.Uses,ptrType$23.keyFor(ident)), _entry !== undefined ? _entry.v : $ifaceNil); + tArgs = inst.TypeArgs; + _r = obj.Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typ = _r; + _tuple = $assertType(typ, ptrType$25, true); + ptr = _tuple[0]; + ok = _tuple[1]; + if (ok) { + typ = ptr.Elem(); + } + _tuple$1 = $assertType(typ, ptrType$7, true); + t = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + obj = t.Obj(); + } + nestTParams = ptrType$3.nil; + nestTArgs = sliceType.nil; + _r$1 = obj.Parent(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Contains(ident.Pos()); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + /* */ if (_r$2) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_r$2) { */ case 2: + nestTParams = c.nestTParams; + nestTArgs = c.nestTArgs; + /* } */ case 3: + $r = c.addInstance(obj, tArgs, nestTParams, nestTArgs); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: visitInstance, $c: true, $r, _entry, _r, _r$1, _r$2, _tuple, _tuple$1, c, ident, inst, nestTArgs, nestTParams, obj, ok, ok$1, ptr, t, tArgs, typ, $s};return $f; + }; + $ptrType(visitor).prototype.visitNestedType = function visitNestedType(obj) { + var {_r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _v, c, obj, ok, ok$1, ok$2, ptr, t, typ, $s, $r, $c} = $restore(this, {obj}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _tuple = $assertType(obj, ptrType$26, true); + ok = _tuple[1]; + if (!ok) { + $s = -1; return; + } + _r = obj.Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typ = _r; + _tuple$1 = $assertType(typ, ptrType$25, true); + ptr = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + typ = ptr.Elem(); + } + _tuple$2 = $assertType(typ, ptrType$7, true); + t = _tuple$2[0]; + ok$2 = _tuple$2[1]; + if (!ok$2) { _v = true; $s = 4; continue s; } + _r$1 = t.TypeParams(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Len(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _v = _r$2 > 0; case 4: + /* */ if (_v) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_v) { */ case 2: + $s = -1; return; + /* } */ case 3: + $r = c.addInstance(obj, ptrType$24.nil, c.resolver.TypeParams(), c.resolver.TypeArgs()); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: visitNestedType, $c: true, $r, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _v, c, obj, ok, ok$1, ok$2, ptr, t, typ, $s};return $f; + }; + $ptrType(visitor).prototype.addInstance = function addInstance(obj, tArgList, nestTParams, nestTArgs) { + var {_r, _r$1, _r$2, _r$3, _r$4, _tuple, c, i, method, nestTArgs, nestTParams, obj, ok, t, tArgList, tArgs, $s, $r, $c} = $restore(this, {obj, tArgList, nestTParams, nestTArgs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = c.resolver.SubstituteAll(tArgList); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tArgs = _r; + _r$1 = isGeneric(nestTParams, tArgs); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (_r$1) { */ case 2: + $s = -1; return; + /* } */ case 3: + $r = c.instances.Add(new sliceType$4([$clone(new Instance.ptr(obj, $convertSliceType(tArgs, typesutil.TypeList), $convertSliceType(nestTArgs, typesutil.TypeList)), Instance)])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r$2 = obj.Type(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = $assertType(_r$2, ptrType$7, true); + t = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (ok) { */ case 7: + i = 0; + /* while (true) { */ case 9: + _r$3 = t.NumMethods(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* if (!(i < _r$3)) { break; } */ if(!(i < _r$3)) { $s = 10; continue; } + _r$4 = t.Method(i); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + method = _r$4; + $r = c.instances.Add(new sliceType$4([$clone(new Instance.ptr(method.Origin(), $convertSliceType(tArgs, typesutil.TypeList), $convertSliceType(nestTArgs, typesutil.TypeList)), Instance)])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = i + (1) >> 0; + $s = 9; continue; + case 10: + /* } */ case 8: + $s = -1; return; + /* */ } return; } var $f = {$blk: addInstance, $c: true, $r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, c, i, method, nestTArgs, nestTParams, obj, ok, t, tArgList, tArgs, $s};return $f; + }; + $ptrType(seedVisitor).prototype.Visit = function Visit$1(n) { + var {_entry, _entry$1, _key, _key$1, _r, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, c, n, n$1, n$2, named, obj, obj$1, ok, sig, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _ref = n; + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* switch (0) { default: if ($assertType(_ref, ptrType$27, true)[1]) { */ case 1: + n$1 = _ref.$val; + obj = (_entry = $mapIndex(c.visitor.info.Defs,ptrType$23.keyFor(n$1.Name)), _entry !== undefined ? _entry.v : $ifaceNil); + _r = obj.Type(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + sig = $assertType(_r, ptrType$8); + if (!((sig.TypeParams().Len() === 0)) || !((sig.RecvTypeParams().Len() === 0))) { + _key = obj; (c.objMap || $throwRuntimeError("assignment to entry in nil map")).set(types.Object.keyFor(_key), { k: _key, v: n$1 }); + $s = -1; return new seedVisitor.ptr($clone(c.visitor, visitor), c.objMap, true); + } + $s = 3; continue; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 2: + n$2 = _ref.$val; + obj$1 = (_entry$1 = $mapIndex(c.visitor.info.Defs,ptrType$23.keyFor(n$2.Name)), _entry$1 !== undefined ? _entry$1.v : $ifaceNil); + _r$1 = obj$1.Type(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = $assertType(_r$1, ptrType$7, true); + named = _tuple[0]; + ok = _tuple[1]; + if (!ok) { + /* break; */ $s = 3; continue; + } + _r$2 = named.TypeParams(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.Len(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + /* */ if (!((_r$3 === 0)) && (named.TypeArgs().Len() === 0)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!((_r$3 === 0)) && (named.TypeArgs().Len() === 0)) { */ case 6: + _key$1 = obj$1; (c.objMap || $throwRuntimeError("assignment to entry in nil map")).set(types.Object.keyFor(_key$1), { k: _key$1, v: n$2 }); + $s = -1; return $ifaceNil; + /* } */ case 7: + /* } } */ case 3: + /* */ if (!c.mapOnly) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!c.mapOnly) { */ case 10: + _r$4 = c.visitor.Visit(n); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$4; + /* } */ case 11: + $s = -1; return c; + /* */ } return; } var $f = {$blk: Visit$1, $c: true, $r, _entry, _entry$1, _key, _key$1, _r, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, c, n, n$1, n$2, named, obj, obj$1, ok, sig, $s};return $f; + }; + $ptrType(Collector).prototype.Scan = function Scan(info, pkg, files) { + var {_i, _key, _r, _ref, c, file, files, info, pkg, sc, $s, $r, $c} = $restore(this, {info, pkg, files}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + sc = [sc]; + c = this; + if (c.objMap === false) { + c.objMap = $makeMap(types.Object.keyFor, []); + } + if (c.infoMap === false) { + c.infoMap = $makeMap($String.keyFor, []); + } + /* */ if (info.Instances === false || info.Defs === false) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (info.Instances === false || info.Defs === false) { */ case 1: + _r = fmt.Errorf("types.Info must have Instances and Defs populated", sliceType$1.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $panic(_r); + /* } */ case 2: + _key = pkg.Path(); (c.infoMap || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: info }); + sc[0] = new seedVisitor.ptr($clone(new visitor.ptr(c.Instances, ptrType$1.nil, info, ptrType$3.nil, sliceType.nil), visitor), c.objMap, false); + _ref = files; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + file = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = ast.Walk(sc[0], file); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 4; continue; + case 5: + $s = -1; return; + /* */ } return; } var $f = {$blk: Scan, $c: true, $r, _i, _key, _r, _ref, c, file, files, info, pkg, sc, $s};return $f; + }; + $ptrType(Collector).prototype.Finish = function Finish() { + var {_entry, _i, _key, _keys, _ref, _size, c, instances, pkgPath, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + /* while (true) { */ case 1: + /* if (!(!c.Instances.allExhausted())) { break; } */ if(!(!c.Instances.allExhausted())) { $s = 2; continue; } + _ref = c.Instances.$get(); + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 3: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 4; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 3; continue; + } + pkgPath = _entry.k; + instances = _entry.v; + $r = c.propagate(pkgPath, instances); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 3; continue; + case 4: + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Finish, $c: true, $r, _entry, _i, _key, _keys, _ref, _size, c, instances, pkgPath, $s};return $f; + }; + $ptrType(Collector).prototype.propagate = function propagate(pkgPath, instances) { + var {_entry, _r, _ref, _tuple, c, info, inst, instances, iset, pkgPath, typ, typ$1, $s, $r, $c} = $restore(this, {pkgPath, instances}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + info = (_entry = $mapIndex(c.infoMap,$String.keyFor(pkgPath)), _entry !== undefined ? _entry.v : ptrType$2.nil); + iset = instances; + /* while (true) { */ case 1: + /* if (!(!iset.exhausted())) { break; } */ if(!(!iset.exhausted())) { $s = 2; continue; } + _tuple = iset.next(); + inst = $clone(_tuple[0], Instance); + _r = inst.Object.Type(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _ref = _r; + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($assertType(_ref, ptrType$8, true)[1]) { */ case 4: + typ = _ref.$val; + $r = c.scanSignature($clone(inst, Instance), typ, info); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 6; continue; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 5: + typ$1 = _ref.$val; + $r = c.scanNamed($clone(inst, Instance), typ$1, info); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 6: + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: propagate, $c: true, $r, _entry, _r, _ref, _tuple, c, info, inst, instances, iset, pkgPath, typ, typ$1, $s};return $f; + }; + $ptrType(Collector).prototype.scanSignature = function scanSignature(inst, typ, info) { + var {_entry, _r, c, info, inst, typ, v, $s, $r, $c} = $restore(this, {inst, typ, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = [v]; + c = this; + _r = NewResolver(c.TContext, $clone(inst, Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v[0] = new visitor.ptr(c.Instances, _r, info, SignatureTypeParams(typ), $convertSliceType(inst.TArgs, sliceType)); + $r = ast.Walk(v[0], (_entry = $mapIndex(c.objMap,types.Object.keyFor(inst.Object)), _entry !== undefined ? _entry.v : $ifaceNil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: scanSignature, $c: true, $r, _entry, _r, c, info, inst, typ, v, $s};return $f; + }; + $ptrType(Collector).prototype.scanNamed = function scanNamed(inst, typ, info) { + var {_entry, _r, _r$1, c, info, inst, nest, nestTParams, node, obj, typ, v, $s, $r, $c} = $restore(this, {inst, typ, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = [v]; + c = this; + obj = typ.Obj(); + node = (_entry = $mapIndex(c.objMap,types.Object.keyFor(obj)), _entry !== undefined ? _entry.v : $ifaceNil); + if ($interfaceIsEqual(node, $ifaceNil)) { + $s = -1; return; + } + nestTParams = ptrType$3.nil; + _r = FindNestingFunc(obj); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + nest = _r; + if (!(nest === ptrType$4.nil)) { + nestTParams = SignatureTypeParams($assertType(nest.object.Type(), ptrType$8)); + } + _r$1 = NewResolver(c.TContext, $clone(inst, Instance)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + v[0] = new visitor.ptr(c.Instances, _r$1, info, nestTParams, $convertSliceType(inst.TNest, sliceType)); + $r = ast.Walk(v[0], node); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: scanNamed, $c: true, $r, _entry, _r, _r$1, c, info, inst, nest, nestTParams, node, obj, typ, v, $s};return $f; + }; + ptrType$1.methods = [{prop: "TypeParams", name: "TypeParams", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "TypeArgs", name: "TypeArgs", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "Nest", name: "Nest", pkg: "", typ: $funcType([], [ptrType$4], false)}, {prop: "NestTypeParams", name: "NestTypeParams", pkg: "", typ: $funcType([], [ptrType$3], false)}, {prop: "NestTypeArgs", name: "NestTypeArgs", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "Substitute", name: "Substitute", pkg: "", typ: $funcType([types.Type], [types.Type], false)}, {prop: "SubstituteAll", name: "SubstituteAll", pkg: "", typ: $funcType([ptrType$24], [sliceType], false)}, {prop: "SubstituteSelection", name: "SubstituteSelection", pkg: "", typ: $funcType([typesutil.Selection], [typesutil.Selection], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$14.methods = [{prop: "findIndex", name: "findIndex", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([Instance], [mapBucket[34 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */], $Int], false)}, {prop: "get", name: "get", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([Instance], [ptrType$17, $Bool], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([Instance], [ptrType$17], false)}, {prop: "Has", name: "Has", pkg: "", typ: $funcType([Instance], [$Bool], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([Instance, ptrType$17], [ptrType$17], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([Instance], [$Bool], false)}, {prop: "Iterate", name: "Iterate", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "Keys", name: "Keys", pkg: "", typ: $funcType([], [sliceType$4], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$15.methods = [{prop: "findIndex", name: "findIndex", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([Instance], [mapBucket[38 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */], $Int], false)}, {prop: "get", name: "get", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([Instance], [sliceType$3, $Bool], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([Instance], [sliceType$3], false)}, {prop: "Has", name: "Has", pkg: "", typ: $funcType([Instance], [$Bool], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([Instance, sliceType$3], [sliceType$3], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([Instance], [$Bool], false)}, {prop: "Iterate", name: "Iterate", pkg: "", typ: $funcType([funcType$1], [], false)}, {prop: "Keys", name: "Keys", pkg: "", typ: $funcType([], [sliceType$4], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$16.methods = [{prop: "findIndex", name: "findIndex", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([Instance], [mapBucket[42 /* int */], $Int], false)}, {prop: "get", name: "get", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([Instance], [$Int, $Bool], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([Instance], [$Int], false)}, {prop: "Has", name: "Has", pkg: "", typ: $funcType([Instance], [$Bool], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([Instance, $Int], [$Int], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([Instance], [$Bool], false)}, {prop: "Iterate", name: "Iterate", pkg: "", typ: $funcType([funcType$2], [], false)}, {prop: "Keys", name: "Keys", pkg: "", typ: $funcType([], [sliceType$4], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + Instance.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "TypeString", name: "TypeString", pkg: "", typ: $funcType([], [$String], false)}, {prop: "symbolicName", name: "symbolicName", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([], [$String], false)}, {prop: "qualifiedName", name: "qualifiedName", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([], [$String], false)}, {prop: "TypeParamsString", name: "TypeParamsString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "IsTrivial", name: "IsTrivial", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Recv", name: "Recv", pkg: "", typ: $funcType([], [Instance], false)}, {prop: "Resolve", name: "Resolve", pkg: "", typ: $funcType([ptrType$29], [types.Type], false)}]; + ptrType$22.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([sliceType$4], [ptrType$22], true)}, {prop: "ID", name: "ID", pkg: "", typ: $funcType([Instance], [$Int], false)}, {prop: "next", name: "next", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([], [Instance, $Bool], false)}, {prop: "exhausted", name: "exhausted", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([], [$Bool], false)}, {prop: "Values", name: "Values", pkg: "", typ: $funcType([], [sliceType$4], false)}, {prop: "ByObj", name: "ByObj", pkg: "", typ: $funcType([], [mapType$5], false)}, {prop: "ForObj", name: "ForObj", pkg: "", typ: $funcType([types.Object], [sliceType$4], false)}, {prop: "ObjHasInstances", name: "ObjHasInstances", pkg: "", typ: $funcType([types.Object], [$Bool], false)}]; + PackageInstanceSets.methods = [{prop: "allExhausted", name: "allExhausted", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([], [$Bool], false)}, {prop: "Pkg", name: "Pkg", pkg: "", typ: $funcType([ptrType$6], [ptrType$22], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([sliceType$4], [], true)}, {prop: "ID", name: "ID", pkg: "", typ: $funcType([Instance], [$Int], false)}]; + ptrType$30.methods = [{prop: "Visit", name: "Visit", pkg: "", typ: $funcType([ast.Node], [ast.Visitor], false)}, {prop: "visitIdent", name: "visitIdent", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([ptrType$23], [], false)}, {prop: "visitInstance", name: "visitInstance", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([ptrType$23, types.Instance], [], false)}, {prop: "visitNestedType", name: "visitNestedType", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([types.Object], [], false)}, {prop: "addInstance", name: "addInstance", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([types.Object, ptrType$24, ptrType$3, sliceType], [], false)}]; + ptrType$31.methods = [{prop: "Visit", name: "Visit", pkg: "", typ: $funcType([ast.Node], [ast.Visitor], false)}]; + ptrType$33.methods = [{prop: "Scan", name: "Scan", pkg: "", typ: $funcType([ptrType$2, ptrType$6, sliceType$6], [], true)}, {prop: "Finish", name: "Finish", pkg: "", typ: $funcType([], [], false)}, {prop: "propagate", name: "propagate", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([$String, ptrType$22], [], false)}, {prop: "scanSignature", name: "scanSignature", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([Instance, ptrType$8, ptrType$2], [], false)}, {prop: "scanNamed", name: "scanNamed", pkg: "github.com/gopherjs/gopherjs/compiler/internal/typeparams", typ: $funcType([Instance, ptrType$7, ptrType$2], [], false)}]; + Resolver.init("github.com/gopherjs/gopherjs/compiler/internal/typeparams", [{prop: "tParams", name: "tParams", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "tArgs", name: "tArgs", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "nest", name: "nest", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "nestTParams", name: "nestTParams", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "nestTArgs", name: "nestTArgs", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "replacements", name: "replacements", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "root", name: "root", embedded: false, exported: false, typ: Instance, tag: ""}, {prop: "subster", name: "subster", embedded: false, exported: false, typ: ptrType$13, tag: ""}, {prop: "selMemo", name: "selMemo", embedded: false, exported: false, typ: mapType$1, tag: ""}]); + mapEntry[36 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */].init("github.com/gopherjs/gopherjs/compiler/internal/typeparams", [{prop: "key", name: "key", embedded: false, exported: false, typ: Instance, tag: ""}, {prop: "value", name: "value", embedded: false, exported: false, typ: ptrType$17, tag: ""}]); + mapEntry[40 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */].init("github.com/gopherjs/gopherjs/compiler/internal/typeparams", [{prop: "key", name: "key", embedded: false, exported: false, typ: Instance, tag: ""}, {prop: "value", name: "value", embedded: false, exported: false, typ: sliceType$3, tag: ""}]); + mapEntry[44 /* int */].init("github.com/gopherjs/gopherjs/compiler/internal/typeparams", [{prop: "key", name: "key", embedded: false, exported: false, typ: Instance, tag: ""}, {prop: "value", name: "value", embedded: false, exported: false, typ: $Int, tag: ""}]); + mapBucket[34 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */].init(ptrType$18); + mapBucket[38 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */].init(ptrType$19); + mapBucket[42 /* int */].init(ptrType$20); + mapBuckets[33 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */].init($Uint32, mapBucket[34 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]); + mapBuckets[37 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */].init($Uint32, mapBucket[38 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]); + mapBuckets[41 /* int */].init($Uint32, mapBucket[42 /* int */]); + InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */].init("github.com/gopherjs/gopherjs/compiler/internal/typeparams", [{prop: "data", name: "data", embedded: false, exported: false, typ: mapType$2, tag: ""}, {prop: "len", name: "len", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "hasher", name: "hasher", embedded: false, exported: false, typ: typeutil.Hasher, tag: ""}]); + InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */].init("github.com/gopherjs/gopherjs/compiler/internal/typeparams", [{prop: "data", name: "data", embedded: false, exported: false, typ: mapType$3, tag: ""}, {prop: "len", name: "len", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "hasher", name: "hasher", embedded: false, exported: false, typ: typeutil.Hasher, tag: ""}]); + InstanceMap[22 /* int */].init("github.com/gopherjs/gopherjs/compiler/internal/typeparams", [{prop: "data", name: "data", embedded: false, exported: false, typ: mapType$4, tag: ""}, {prop: "len", name: "len", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "hasher", name: "hasher", embedded: false, exported: false, typ: typeutil.Hasher, tag: ""}]); + Instance.init("", [{prop: "Object", name: "Object", embedded: false, exported: true, typ: types.Object, tag: ""}, {prop: "TArgs", name: "TArgs", embedded: false, exported: true, typ: typesutil.TypeList, tag: ""}, {prop: "TNest", name: "TNest", embedded: false, exported: true, typ: typesutil.TypeList, tag: ""}]); + InstanceSet.init("github.com/gopherjs/gopherjs/compiler/internal/typeparams", [{prop: "values", name: "values", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "unprocessed", name: "unprocessed", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "seen", name: "seen", embedded: false, exported: false, typ: InstanceMap[22 /* int */], tag: ""}]); + PackageInstanceSets.init($String, ptrType$22); + visitor.init("github.com/gopherjs/gopherjs/compiler/internal/typeparams", [{prop: "instances", name: "instances", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "resolver", name: "resolver", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "info", name: "info", embedded: false, exported: false, typ: ptrType$2, tag: ""}, {prop: "nestTParams", name: "nestTParams", embedded: false, exported: false, typ: ptrType$3, tag: ""}, {prop: "nestTArgs", name: "nestTArgs", embedded: false, exported: false, typ: sliceType, tag: ""}]); + seedVisitor.init("github.com/gopherjs/gopherjs/compiler/internal/typeparams", [{prop: "visitor", name: "visitor", embedded: true, exported: false, typ: visitor, tag: ""}, {prop: "objMap", name: "objMap", embedded: false, exported: false, typ: mapType$6, tag: ""}, {prop: "mapOnly", name: "mapOnly", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Collector.init("github.com/gopherjs/gopherjs/compiler/internal/typeparams", [{prop: "TContext", name: "TContext", embedded: false, exported: true, typ: ptrType$29, tag: ""}, {prop: "Instances", name: "Instances", embedded: false, exported: true, typ: ptrType, tag: ""}, {prop: "objMap", name: "objMap", embedded: false, exported: false, typ: mapType$6, tag: ""}, {prop: "infoMap", name: "infoMap", embedded: false, exported: false, typ: mapType$7, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = symbol.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typesutil.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = subst.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = types.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typeutil.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/internal/analysis"] = (function() { + var $pkg = {}, $init, fmt, astutil, typeparams, typesutil, ast, constant, token, types, strings, hasSideEffectVisitor, returnStmt, continueStmt, astPath, Info, InfoImporter, FuncInfo, skipParentNode, escapeAnalysis, escapingObjectCollector, deferStmt, hasBreakVisitor, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, sliceType, ptrType$5, ptrType$6, sliceType$1, sliceType$2, sliceType$3, sliceType$4, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, sliceType$5, ptrType$16, ptrType$17, ptrType$18, ptrType$19, ptrType$20, ptrType$21, ptrType$22, ptrType$23, ptrType$24, ptrType$25, ptrType$26, ptrType$27, ptrType$28, ptrType$29, sliceType$6, ptrType$30, ptrType$31, ptrType$32, ptrType$33, ptrType$34, ptrType$35, ptrType$36, ptrType$37, ptrType$38, ptrType$40, ptrType$41, ptrType$42, sliceType$7, ptrType$43, ptrType$44, ptrType$45, ptrType$46, ptrType$47, ptrType$48, mapType, mapType$1, mapType$2, mapType$3, mapType$4, ptrType$49, mapType$5, ptrType$50, ptrType$51, HasSideEffect, newReturnStmt, newContinueStmt, AnalyzePkg, PropagateAnalysis, EscapingObjects, newBlockingDefer, newInstDefer, newLitDefer, isAnyDeferBlocking, HasBreak, BoolValue; + fmt = $packages["fmt"]; + astutil = $packages["github.com/gopherjs/gopherjs/compiler/astutil"]; + typeparams = $packages["github.com/gopherjs/gopherjs/compiler/internal/typeparams"]; + typesutil = $packages["github.com/gopherjs/gopherjs/compiler/typesutil"]; + ast = $packages["go/ast"]; + constant = $packages["go/constant"]; + token = $packages["go/token"]; + types = $packages["go/types"]; + strings = $packages["strings"]; + hasSideEffectVisitor = $newType(0, $kindStruct, "analysis.hasSideEffectVisitor", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", false, function(info_, hasSideEffect_) { + this.$val = this; + if (arguments.length === 0) { + this.info = ptrType.nil; + this.hasSideEffect = false; + return; + } + this.info = info_; + this.hasSideEffect = hasSideEffect_; + }); + returnStmt = $newType(0, $kindStruct, "analysis.returnStmt", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", false, function(analyzeStack_, deferStmts_) { + this.$val = this; + if (arguments.length === 0) { + this.analyzeStack = astPath.nil; + this.deferStmts = sliceType.nil; + return; + } + this.analyzeStack = analyzeStack_; + this.deferStmts = deferStmts_; + }); + continueStmt = $newType(0, $kindStruct, "analysis.continueStmt", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", false, function(forStmt_, analyzeStack_) { + this.$val = this; + if (arguments.length === 0) { + this.forStmt = ptrType$5.nil; + this.analyzeStack = astPath.nil; + return; + } + this.forStmt = forStmt_; + this.analyzeStack = analyzeStack_; + }); + astPath = $newType(12, $kindSlice, "analysis.astPath", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", false, null); + Info = $newType(0, $kindStruct, "analysis.Info", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", true, function(Info_, Pkg_, typeCtx_, InstanceSets_, HasPointer_, funcInstInfos_, funcLitInfos_, InitFuncInfo_, infoImporter_, allInfos_) { + this.$val = this; + if (arguments.length === 0) { + this.Info = ptrType.nil; + this.Pkg = ptrType$17.nil; + this.typeCtx = ptrType$18.nil; + this.InstanceSets = ptrType$19.nil; + this.HasPointer = false; + this.funcInstInfos = ptrType$20.nil; + this.funcLitInfos = false; + this.InitFuncInfo = ptrType$15.nil; + this.infoImporter = $throwNilPointerError; + this.allInfos = sliceType$5.nil; + return; + } + this.Info = Info_; + this.Pkg = Pkg_; + this.typeCtx = typeCtx_; + this.InstanceSets = InstanceSets_; + this.HasPointer = HasPointer_; + this.funcInstInfos = funcInstInfos_; + this.funcLitInfos = funcLitInfos_; + this.InitFuncInfo = InitFuncInfo_; + this.infoImporter = infoImporter_; + this.allInfos = allInfos_; + }); + InfoImporter = $newType(4, $kindFunc, "analysis.InfoImporter", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", true, null); + FuncInfo = $newType(0, $kindStruct, "analysis.FuncInfo", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", true, function(HasDefer_, Flattened_, Blocking_, GotoLabel_, continueStmts_, returnStmts_, deferStmts_, loopReturnIndex_, instCallees_, literalFuncCallees_, typeArgs_, resolver_, pkgInfo_, visitorStack_) { + this.$val = this; + if (arguments.length === 0) { + this.HasDefer = false; + this.Flattened = false; + this.Blocking = false; + this.GotoLabel = false; + this.continueStmts = sliceType$3.nil; + this.returnStmts = sliceType$4.nil; + this.deferStmts = sliceType.nil; + this.loopReturnIndex = 0; + this.instCallees = ptrType$7.nil; + this.literalFuncCallees = false; + this.typeArgs = typesutil.TypeList.nil; + this.resolver = ptrType$8.nil; + this.pkgInfo = ptrType$9.nil; + this.visitorStack = astPath.nil; + return; + } + this.HasDefer = HasDefer_; + this.Flattened = Flattened_; + this.Blocking = Blocking_; + this.GotoLabel = GotoLabel_; + this.continueStmts = continueStmts_; + this.returnStmts = returnStmts_; + this.deferStmts = deferStmts_; + this.loopReturnIndex = loopReturnIndex_; + this.instCallees = instCallees_; + this.literalFuncCallees = literalFuncCallees_; + this.typeArgs = typeArgs_; + this.resolver = resolver_; + this.pkgInfo = pkgInfo_; + this.visitorStack = visitorStack_; + }); + skipParentNode = $newType(0, $kindStruct, "analysis.skipParentNode", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", false, function(then_) { + this.$val = this; + if (arguments.length === 0) { + this.then = $ifaceNil; + return; + } + this.then = then_; + }); + escapeAnalysis = $newType(0, $kindStruct, "analysis.escapeAnalysis", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", false, function(info_, escaping_, ordered_, topScope_, bottomScopes_) { + this.$val = this; + if (arguments.length === 0) { + this.info = ptrType.nil; + this.escaping = false; + this.ordered = sliceType$7.nil; + this.topScope = ptrType$43.nil; + this.bottomScopes = false; + return; + } + this.info = info_; + this.escaping = escaping_; + this.ordered = ordered_; + this.topScope = topScope_; + this.bottomScopes = bottomScopes_; + }); + escapingObjectCollector = $newType(0, $kindStruct, "analysis.escapingObjectCollector", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", false, function(analysis_) { + this.$val = this; + if (arguments.length === 0) { + this.analysis = ptrType$49.nil; + return; + } + this.analysis = analysis_; + }); + deferStmt = $newType(0, $kindStruct, "analysis.deferStmt", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", false, function(obj_, lit_, typeArgs_) { + this.$val = this; + if (arguments.length === 0) { + this.obj = $ifaceNil; + this.lit = ptrType$12.nil; + this.typeArgs = typesutil.TypeList.nil; + return; + } + this.obj = obj_; + this.lit = lit_; + this.typeArgs = typeArgs_; + }); + hasBreakVisitor = $newType(0, $kindStruct, "analysis.hasBreakVisitor", true, "github.com/gopherjs/gopherjs/compiler/internal/analysis", false, function(hasBreak_) { + this.$val = this; + if (arguments.length === 0) { + this.hasBreak = false; + return; + } + this.hasBreak = hasBreak_; + }); + $pkg.hasSideEffectVisitor = hasSideEffectVisitor; + $pkg.returnStmt = returnStmt; + $pkg.continueStmt = continueStmt; + $pkg.astPath = astPath; + $pkg.Info = Info; + $pkg.InfoImporter = InfoImporter; + $pkg.FuncInfo = FuncInfo; + $pkg.skipParentNode = skipParentNode; + $pkg.escapeAnalysis = escapeAnalysis; + $pkg.escapingObjectCollector = escapingObjectCollector; + $pkg.deferStmt = deferStmt; + $pkg.hasBreakVisitor = hasBreakVisitor; + $pkg.$finishSetup = function() { + ptrType = $ptrType(types.Info); + ptrType$1 = $ptrType(ast.CallExpr); + ptrType$2 = $ptrType(ast.UnaryExpr); + ptrType$3 = $ptrType(types.Signature); + ptrType$4 = $ptrType(deferStmt); + sliceType = $sliceType(ptrType$4); + ptrType$5 = $ptrType(ast.ForStmt); + ptrType$6 = $ptrType(strings.Builder); + sliceType$1 = $sliceType($Uint8); + sliceType$2 = $sliceType($emptyInterface); + sliceType$3 = $sliceType(continueStmt); + sliceType$4 = $sliceType(returnStmt); + ptrType$7 = $ptrType(typeparams.InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */]); + ptrType$8 = $ptrType(typeparams.Resolver); + ptrType$9 = $ptrType(Info); + ptrType$10 = $ptrType(types.TypeParamList); + ptrType$11 = $ptrType(ast.FuncDecl); + ptrType$12 = $ptrType(ast.FuncLit); + ptrType$13 = $ptrType(ast.BlockStmt); + ptrType$14 = $ptrType(ast.Ident); + ptrType$15 = $ptrType(FuncInfo); + sliceType$5 = $sliceType(ptrType$15); + ptrType$16 = $ptrType(types.Var); + ptrType$17 = $ptrType(types.Package); + ptrType$18 = $ptrType(types.Context); + ptrType$19 = $ptrType(typeparams.PackageInstanceSets); + ptrType$20 = $ptrType(typeparams.InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */]); + ptrType$21 = $ptrType(ast.BranchStmt); + ptrType$22 = $ptrType(ast.SendStmt); + ptrType$23 = $ptrType(ast.RangeStmt); + ptrType$24 = $ptrType(ast.SelectStmt); + ptrType$25 = $ptrType(ast.CommClause); + ptrType$26 = $ptrType(ast.GoStmt); + ptrType$27 = $ptrType(ast.DeferStmt); + ptrType$28 = $ptrType(ast.ReturnStmt); + ptrType$29 = $ptrType(types.Label); + sliceType$6 = $sliceType(ast.Node); + ptrType$30 = $ptrType(types.Chan); + ptrType$31 = $ptrType(ast.ExprStmt); + ptrType$32 = $ptrType(ast.AssignStmt); + ptrType$33 = $ptrType(ast.SelectorExpr); + ptrType$34 = $ptrType(ast.IndexExpr); + ptrType$35 = $ptrType(ast.IndexListExpr); + ptrType$36 = $ptrType(types.Selection); + ptrType$37 = $ptrType(types.TypeList); + ptrType$38 = $ptrType(types.Pointer); + ptrType$40 = $ptrType(types.Named); + ptrType$41 = $ptrType(types.Func); + ptrType$42 = $ptrType(types.Interface); + sliceType$7 = $sliceType(ptrType$16); + ptrType$43 = $ptrType(types.Scope); + ptrType$44 = $ptrType(ast.SwitchStmt); + ptrType$45 = $ptrType(ast.TypeSwitchStmt); + ptrType$46 = $ptrType(ast.BinaryExpr); + ptrType$47 = $ptrType(ast.ParenExpr); + ptrType$48 = $ptrType(hasSideEffectVisitor); + mapType = $mapType(ptrType$16, $Bool); + mapType$1 = $mapType(ptrType$12, sliceType$5); + mapType$2 = $mapType(ast.Node, $Bool); + mapType$3 = $mapType(ptrType$29, $Bool); + mapType$4 = $mapType(ptrType$12, astPath); + ptrType$49 = $ptrType(escapeAnalysis); + mapType$5 = $mapType(ptrType$43, $Bool); + ptrType$50 = $ptrType(escapingObjectCollector); + ptrType$51 = $ptrType(hasBreakVisitor); + HasSideEffect = function HasSideEffect$1(n, info) { + var {info, n, v, $s, $r, $c} = $restore(this, {n, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = [v]; + v[0] = new hasSideEffectVisitor.ptr(info, false); + $r = ast.Walk(v[0], n); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return v[0].hasSideEffect; + /* */ } return; } var $f = {$blk: HasSideEffect$1, $c: true, $r, info, n, v, $s};return $f; + }; + $pkg.HasSideEffect = HasSideEffect; + $ptrType(hasSideEffectVisitor).prototype.Visit = function Visit(node) { + var {_r, _ref, _tuple, isSig, n, n$1, node, v, w, $s, $r, $c} = $restore(this, {node}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + w = $ifaceNil; + v = this; + if (v.hasSideEffect) { + w = $ifaceNil; + $s = -1; return w; + } + _ref = node; + /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, ptrType$1, true)[1]) { */ case 1: + n = _ref.$val; + _r = v.info.TypeOf(n.Fun); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$3, true); + isSig = _tuple[1]; + if (isSig) { + v.hasSideEffect = true; + w = $ifaceNil; + $s = -1; return w; + } + $s = 3; continue; + /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 2: + n$1 = _ref.$val; + if (n$1.Op === 36) { + v.hasSideEffect = true; + w = $ifaceNil; + $s = -1; return w; + } + /* } */ case 3: + w = v; + $s = -1; return w; + /* */ } return; } var $f = {$blk: Visit, $c: true, $r, _r, _ref, _tuple, isSig, n, n$1, node, v, w, $s};return $f; + }; + newReturnStmt = function newReturnStmt$1(stack, deferStmts) { + var deferStmts, stack; + return new returnStmt.ptr(stack.copy(), deferStmts); + }; + $ptrType(returnStmt).prototype.IsBlocking = function IsBlocking(info) { + var {$24r, _r, info, r, $s, $r, $c} = $restore(this, {info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + r = this; + _r = isAnyDeferBlocking(r.deferStmts, info.pkgInfo); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: IsBlocking, $c: true, $r, $24r, _r, info, r, $s};return $f; + }; + returnStmt.prototype.IsBlocking = function(...$args) { return this.$val.IsBlocking(...$args); }; + newContinueStmt = function newContinueStmt$1(forStmt, stack) { + var cs, forStmt, stack; + cs = new continueStmt.ptr(forStmt, stack.copy()); + return cs; + }; + astPath.prototype.copy = function copy() { + var dst, src; + src = this; + dst = $makeSlice(astPath, src.$length); + $copySlice(dst, src); + return dst; + }; + $ptrType(astPath).prototype.copy = function(...$args) { return this.$get().copy(...$args); }; + astPath.prototype.String = function String() { + var {_i, _r, _ref, ap, i, n, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ap = this; + s = new strings.Builder.ptr(ptrType$6.nil, sliceType$1.nil); + s.WriteString("["); + _ref = ap; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + n = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + s.WriteString(", "); + } + _r = fmt.Fprintf(s, "%T(%p)", new sliceType$2([n, n])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + _i++; + $s = 1; continue; + case 2: + s.WriteString("]"); + $s = -1; return s.String(); + /* */ } return; } var $f = {$blk: String, $c: true, $r, _i, _r, _ref, ap, i, n, s, $s};return $f; + }; + $ptrType(astPath).prototype.String = function(...$args) { return this.$get().String(...$args); }; + $ptrType(Info).prototype.newFuncInfo = function newFuncInfo(n, obj, typeArgs, resolver) { + var {_entry, _entry$1, _key, _key$1, _r, _ref, funcInfo, info, inst, n, n$1, n$2, obj, resolver, typeArgs, $s, $r, $c} = $restore(this, {n, obj, typeArgs, resolver}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + info = this; + funcInfo = new FuncInfo.ptr(false, new $global.Map(), new $global.Map(), new $global.Map(), sliceType$3.nil, sliceType$4.nil, sliceType.nil, -1, new typeparams.InstanceMap[11 /* []github.com/gopherjs/gopherjs/compiler/internal/analysis.astPath */].ptr(false, 0, new $packages["golang.org/x/tools/go/types/typeutil"].Hasher.ptr(false, false, ptrType$10.nil)), new $global.Map(), typeArgs, resolver, info, astPath.nil); + _ref = n; + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, ptrType$11, true)[1]) { */ case 1: + n$1 = _ref.$val; + if (n$1.Body === ptrType$13.nil) { + _key = n$1; (funcInfo.Blocking || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: true }); + } + if ($interfaceIsEqual(obj, $ifaceNil)) { + obj = (_entry = $mapIndex(info.Info.Defs,ptrType$14.keyFor(n$1.Name)), _entry !== undefined ? _entry.v : $ifaceNil); + } + inst = new typeparams.Instance.ptr(obj, typeArgs, typesutil.TypeList.nil); + _r = info.funcInstInfos.Set($clone(inst, typeparams.Instance), funcInfo); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + $s = 3; continue; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 2: + n$2 = _ref.$val; + _key$1 = n$2; (info.funcLitInfos || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$12.keyFor(_key$1), { k: _key$1, v: $append((_entry$1 = $mapIndex(info.funcLitInfos,ptrType$12.keyFor(n$2)), _entry$1 !== undefined ? _entry$1.v : sliceType$5.nil), funcInfo) }); + /* } */ case 3: + info.allInfos = $append(info.allInfos, funcInfo); + $s = -1; return funcInfo; + /* */ } return; } var $f = {$blk: newFuncInfo, $c: true, $r, _entry, _entry$1, _key, _key$1, _r, _ref, funcInfo, info, inst, n, n$1, n$2, obj, resolver, typeArgs, $s};return $f; + }; + $ptrType(Info).prototype.newFuncInfoInstances = function newFuncInfoInstances(fd) { + var {$24r, _entry, _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, fd, fi, funcInfos, info, inst, instances, obj, resolver, $s, $r, $c} = $restore(this, {fd}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + info = this; + obj = (_entry = $mapIndex(info.Info.Defs,ptrType$14.keyFor(fd.Name)), _entry !== undefined ? _entry.v : $ifaceNil); + instances = info.InstanceSets.Pkg(info.Pkg).ForObj(obj); + /* */ if (instances.$length === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (instances.$length === 0) { */ case 1: + _r = obj.Type(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = typeparams.HasTypeParams(_r); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r$1) { */ case 3: + $s = -1; return new sliceType$5([]); + /* } */ case 4: + _r$2 = info.newFuncInfo(fd, $ifaceNil, typesutil.TypeList.nil, ptrType$8.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r = new sliceType$5([_r$2]); + $s = 8; case 8: return $24r; + /* } */ case 2: + funcInfos = $makeSlice(sliceType$5, 0, instances.$length); + _ref = instances; + _i = 0; + /* while (true) { */ case 9: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 10; continue; } + inst = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), typeparams.Instance); + _r$3 = typeparams.NewResolver(info.typeCtx, $clone(inst, typeparams.Instance)); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + resolver = _r$3; + _r$4 = info.newFuncInfo(fd, inst.Object, inst.TArgs, resolver); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + fi = _r$4; + funcInfos = $append(funcInfos, fi); + _i++; + $s = 9; continue; + case 10: + $s = -1; return funcInfos; + /* */ } return; } var $f = {$blk: newFuncInfoInstances, $c: true, $r, $24r, _entry, _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, fd, fi, funcInfos, info, inst, instances, obj, resolver, $s};return $f; + }; + $ptrType(Info).prototype.IsBlocking = function IsBlocking$1(inst) { + var {$24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, err, funInfo, info, inst, otherInfo, path, $s, $r, $c} = $restore(this, {inst}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + info = this; + _r = inst.Object.Pkg(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!(_r === info.Pkg)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(_r === info.Pkg)) { */ case 1: + _r$1 = inst.Object.Pkg(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Path(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + path = _r$2; + _r$3 = info.infoImporter(path); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _tuple = _r$3; + otherInfo = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7: + _r$4 = fmt.Errorf("failed to get info for package %q: %v", new sliceType$2([new $String(path), err])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $panic(_r$4); + /* } */ case 8: + _r$5 = otherInfo.IsBlocking($clone(inst, typeparams.Instance)); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r = _r$5; + $s = 11; case 11: return $24r; + /* } */ case 2: + _r$6 = info.FuncInfo($clone(inst, typeparams.Instance)); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + funInfo = _r$6; + if (!(funInfo === ptrType$15.nil)) { + $s = -1; return funInfo.IsBlocking(); + } + _r$7 = $clone(inst, typeparams.Instance).TypeString(); /* */ $s = 13; case 13: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _arg = new $String(_r$7); + _r$8 = fmt.Errorf("info did not have function declaration instance for %q", new sliceType$2([_arg])); /* */ $s = 14; case 14: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $panic(_r$8); + $s = -1; return false; + /* */ } return; } var $f = {$blk: IsBlocking$1, $c: true, $r, $24r, _arg, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, err, funInfo, info, inst, otherInfo, path, $s};return $f; + }; + $ptrType(Info).prototype.FuncInfo = function FuncInfo$1(inst) { + var {$24r, _r, info, inst, $s, $r, $c} = $restore(this, {inst}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + info = this; + _r = info.funcInstInfos.Get($clone(inst, typeparams.Instance)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: FuncInfo$1, $c: true, $r, $24r, _r, info, inst, $s};return $f; + }; + $ptrType(Info).prototype.FuncLitInfo = function FuncLitInfo(fun, typeArgs) { + var {_entry, _i, _r, _ref, fi, fun, info, lits, typeArgs, $s, $r, $c} = $restore(this, {fun, typeArgs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + info = this; + lits = (_entry = $mapIndex(info.funcLitInfos,ptrType$12.keyFor(fun)), _entry !== undefined ? _entry.v : sliceType$5.nil); + _ref = lits; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + fi = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r = fi.typeArgs.Equal(typeArgs); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r) { */ case 3: + $s = -1; return fi; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return ptrType$15.nil; + /* */ } return; } var $f = {$blk: FuncLitInfo, $c: true, $r, _entry, _i, _r, _ref, fi, fun, info, lits, typeArgs, $s};return $f; + }; + $ptrType(Info).prototype.VarsWithInitializers = function VarsWithInitializers() { + var _i, _i$1, _key, _ref, _ref$1, info, init, o, result; + info = this; + result = $makeMap(ptrType$16.keyFor, []); + _ref = info.Info.InitOrder; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + init = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = init.Lhs; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + o = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _key = o; (result || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$16.keyFor(_key), { k: _key, v: true }); + _i$1++; + } + _i++; + } + return result; + }; + AnalyzePkg = function AnalyzePkg$1(files, fileSet, typesInfo, typeCtx, typesPkg, instanceSets, infoImporter) { + var {_i, _r, _ref, file, fileSet, files, info, infoImporter, instanceSets, typeCtx, typesInfo, typesPkg, $s, $r, $c} = $restore(this, {files, fileSet, typesInfo, typeCtx, typesPkg, instanceSets, infoImporter}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + info = new Info.ptr(typesInfo, typesPkg, typeCtx, instanceSets, new $global.Map(), new typeparams.InstanceMap[0 /* *github.com/gopherjs/gopherjs/compiler/internal/analysis.FuncInfo */].ptr(false, 0, new $packages["golang.org/x/tools/go/types/typeutil"].Hasher.ptr(false, false, ptrType$10.nil)), new $global.Map(), ptrType$15.nil, infoImporter, sliceType$5.nil); + _r = info.newFuncInfo($ifaceNil, $ifaceNil, typesutil.TypeList.nil, ptrType$8.nil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + info.InitFuncInfo = _r; + _ref = files; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + file = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = ast.Walk(info.InitFuncInfo, file); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 2; continue; + case 3: + $s = -1; return info; + /* */ } return; } var $f = {$blk: AnalyzePkg$1, $c: true, $r, _i, _r, _ref, file, fileSet, files, info, infoImporter, instanceSets, typeCtx, typesInfo, typesPkg, $s};return $f; + }; + $pkg.AnalyzePkg = AnalyzePkg; + PropagateAnalysis = function PropagateAnalysis$1(allInfo) { + var {_i, _i$1, _r, _ref, _ref$1, allInfo, done, info, info$1, $s, $r, $c} = $restore(this, {allInfo}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + done = false; + /* while (true) { */ case 1: + /* if (!(!done)) { break; } */ if(!(!done)) { $s = 2; continue; } + done = true; + _ref = allInfo; + _i = 0; + /* while (true) { */ case 3: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; } + info = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r = info.propagateFunctionBlocking(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!_r) { */ case 5: + done = false; + /* } */ case 6: + _i++; + $s = 3; continue; + case 4: + $s = 1; continue; + case 2: + _ref$1 = allInfo; + _i$1 = 0; + /* while (true) { */ case 8: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 9; continue; } + info$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + $r = info$1.propagateControlStatementBlocking(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$1++; + $s = 8; continue; + case 9: + $s = -1; return; + /* */ } return; } var $f = {$blk: PropagateAnalysis$1, $c: true, $r, _i, _i$1, _r, _ref, _ref$1, allInfo, done, info, info$1, $s};return $f; + }; + $pkg.PropagateAnalysis = PropagateAnalysis; + $ptrType(Info).prototype.propagateFunctionBlocking = function propagateFunctionBlocking() { + var {_entry, _i, _i$1, _key, _keys, _r, _r$1, _ref, _ref$1, _size, callSite, callee, caller, done, info, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + caller = [caller]; + done = [done]; + info = [info]; + info[0] = this; + done[0] = true; + _ref = info[0].allInfos; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + caller[0] = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = caller[0].instCallees.Iterate((function(caller, done, info) { return function Info·propagateFunctionBlocking·func1(callee, callSites) { + var {_i$1, _r, _r$1, _ref$1, callSite, callSites, callee, $s, $r, $c} = $restore(this, {callee, callSites}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = info[0].IsBlocking($clone(callee, typeparams.Instance)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + _ref$1 = callSites; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + callSite = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + caller[0].markBlocking(callSite); + _i$1++; + } + _r$1 = caller[0].instCallees.Delete($clone(callee, typeparams.Instance)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + done[0] = false; + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Info·propagateFunctionBlocking·func1, $c: true, $r, _i$1, _r, _r$1, _ref$1, callSite, callSites, callee, $s};return $f; + }; })(caller, done, info)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$1 = caller[0].literalFuncCallees; + _i$1 = 0; + _keys = _ref$1 ? _ref$1.keys() : undefined; + _size = _ref$1 ? _ref$1.size : 0; + /* while (true) { */ case 4: + /* if (!(_i$1 < _size)) { break; } */ if(!(_i$1 < _size)) { $s = 5; continue; } + _key = _keys.next().value; + _entry = _ref$1.get(_key); + if (_entry === undefined) { + _i$1++; + /* continue; */ $s = 4; continue; + } + callee = _entry.k; + callSite = _entry.v; + _r = info[0].FuncLitInfo(callee, caller[0].typeArgs); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.IsBlocking(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_r$1) { */ case 6: + caller[0].markBlocking(callSite); + $mapDelete(caller[0].literalFuncCallees, ptrType$12.keyFor(callee)); + done[0] = false; + /* } */ case 7: + _i$1++; + $s = 4; continue; + case 5: + _i++; + $s = 1; continue; + case 2: + $s = -1; return done[0]; + /* */ } return; } var $f = {$blk: propagateFunctionBlocking, $c: true, $r, _entry, _i, _i$1, _key, _keys, _r, _r$1, _ref, _ref$1, _size, callSite, callee, caller, done, info, $s};return $f; + }; + $ptrType(Info).prototype.propagateControlStatementBlocking = function propagateControlStatementBlocking() { + var {_i, _ref, funcInfo, info, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + info = this; + _ref = info.allInfos; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + funcInfo = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = funcInfo.propagateReturnBlocking(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + funcInfo.propagateContinueBlocking(); + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: propagateControlStatementBlocking, $c: true, $r, _i, _ref, funcInfo, info, $s};return $f; + }; + $ptrType(FuncInfo).prototype.IsBlocking = function IsBlocking$2() { + var fi; + fi = this; + return fi === ptrType$15.nil || !(((fi.Blocking ? fi.Blocking.size : 0) === 0)); + }; + $ptrType(FuncInfo).prototype.TypeArgs = function TypeArgs() { + var fi; + fi = this; + return fi.typeArgs; + }; + $ptrType(FuncInfo).prototype.propagateReturnBlocking = function propagateReturnBlocking() { + var {_i, _i$1, _r, _r$1, _ref, _ref$1, fi, returnStmt$1, returnStmt$2, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fi = this; + /* */ if ((fi.GotoLabel ? fi.GotoLabel.size : 0) > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ((fi.GotoLabel ? fi.GotoLabel.size : 0) > 0) { */ case 1: + _r = isAnyDeferBlocking(fi.deferStmts, fi.pkgInfo); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r) { */ case 3: + _ref = fi.returnStmts; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + returnStmt$1 = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), returnStmt); + fi.markBlocking(returnStmt$1.analyzeStack); + _i++; + } + /* } */ case 4: + $s = -1; return; + /* } */ case 2: + _ref$1 = fi.returnStmts; + _i$1 = 0; + /* while (true) { */ case 6: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 7; continue; } + returnStmt$2 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), returnStmt); + _r$1 = $clone(returnStmt$2, returnStmt).IsBlocking(fi); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (_r$1) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_r$1) { */ case 8: + fi.markBlocking(returnStmt$2.analyzeStack); + /* } */ case 9: + _i$1++; + $s = 6; continue; + case 7: + $s = -1; return; + /* */ } return; } var $f = {$blk: propagateReturnBlocking, $c: true, $r, _i, _i$1, _r, _r$1, _ref, _ref$1, fi, returnStmt$1, returnStmt$2, $s};return $f; + }; + $ptrType(FuncInfo).prototype.propagateContinueBlocking = function propagateContinueBlocking() { + var _entry, _i, _ref, continueStmt$1, fi; + fi = this; + _ref = fi.continueStmts; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + continueStmt$1 = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), continueStmt); + if ((_entry = $mapIndex(fi.Blocking,ast.Node.keyFor(continueStmt$1.forStmt.Post)), _entry !== undefined ? _entry.v : false)) { + fi.markBlocking(continueStmt$1.analyzeStack); + } + _i++; + } + }; + $ptrType(FuncInfo).prototype.Visit = function Visit$1(node) { + var {$24r, $24r$1, $24r$2, _1, _2, _entry, _entry$1, _i, _i$1, _i$2, _i$3, _key, _key$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _tuple, _tuple$1, _tuple$2, arg, comm, comm$1, comm$2, fi, fi$1, fis, forStmt, i, i$1, id, loopStmt, n, n$1, n$10, n$11, n$12, n$13, n$2, n$3, n$4, n$5, n$6, n$7, n$8, n$9, node, ok, ok$1, ok$2, rs, s, s$1, x, x$1, x$2, x$3, x$4, $s, $r, $c} = $restore(this, {node}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fi = this; + if ($interfaceIsEqual(node, $ifaceNil)) { + if (!((fi.visitorStack.$length === 0))) { + fi.visitorStack = $subslice(fi.visitorStack, 0, (fi.visitorStack.$length - 1 >> 0)); + } + $s = -1; return $ifaceNil; + } + fi.visitorStack = $append(fi.visitorStack, node); + _ref = node; + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$22, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$23, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$24, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if ($assertType(_ref, ptrType$11, true)[1]) { */ case 1: + n = _ref.$val; + _r = fi.pkgInfo.newFuncInfoInstances(n); /* */ $s = 16; case 16: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + fis = _r; + /* */ if (!(n.Body === ptrType$13.nil)) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (!(n.Body === ptrType$13.nil)) { */ case 17: + _ref$1 = fis; + _i = 0; + /* while (true) { */ case 19: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 20; continue; } + fi$1 = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + $r = ast.Walk(fi$1, n.Body); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 19; continue; + case 20: + /* } */ case 18: + $s = -1; return $ifaceNil; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 2: + n$1 = _ref.$val; + _r$1 = fi.pkgInfo.newFuncInfo(n$1, $ifaceNil, fi.typeArgs, fi.resolver); /* */ $s = 22; case 22: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 23; case 23: return $24r; + /* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 3: + n$2 = _ref.$val; + _1 = n$2.Tok; + /* */ if (_1 === (73)) { $s = 25; continue; } + /* */ if (_1 === (65)) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (_1 === (73)) { */ case 25: + fi.markFlattened(fi.visitorStack); + _key = $assertType((_entry = $mapIndex(fi.pkgInfo.Info.Uses,ptrType$14.keyFor(n$2.Label)), _entry !== undefined ? _entry.v : $ifaceNil), ptrType$29); (fi.GotoLabel || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$29.keyFor(_key), { k: _key, v: true }); + $s = 27; continue; + /* } else if (_1 === (65)) { */ case 26: + _r$2 = astutil.FindLoopStmt($convertSliceType(fi.visitorStack, sliceType$6), n$2, fi.pkgInfo.Info); /* */ $s = 28; case 28: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + loopStmt = _r$2; + _tuple = $assertType((loopStmt), ptrType$5, true); + forStmt = _tuple[0]; + ok = _tuple[1]; + if (ok) { + fi.continueStmts = $append(fi.continueStmts, newContinueStmt(forStmt, fi.visitorStack)); + } + /* } */ case 27: + case 24: + $s = -1; return fi; + /* } else if ($assertType(_ref, ptrType$1, true)[1]) { */ case 4: + n$3 = _ref.$val; + _r$3 = fi.visitCallExpr(n$3, false); /* */ $s = 29; case 29: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = _r$3; + $s = 30; case 30: return $24r$1; + /* } else if ($assertType(_ref, ptrType$22, true)[1]) { */ case 5: + n$4 = _ref.$val; + fi.markBlocking(fi.visitorStack); + $s = -1; return fi; + /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 6: + n$5 = _ref.$val; + _2 = n$5.Op; + if (_2 === (17)) { + _tuple$1 = $assertType(astutil.RemoveParens(n$5.X), ptrType$14, true); + id = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + _key$1 = $assertType((_entry$1 = $mapIndex(fi.pkgInfo.Info.Uses,ptrType$14.keyFor(id)), _entry$1 !== undefined ? _entry$1.v : $ifaceNil), ptrType$16); (fi.pkgInfo.HasPointer || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$16.keyFor(_key$1), { k: _key$1, v: true }); + } + } else if (_2 === (36)) { + fi.markBlocking(fi.visitorStack); + } + $s = -1; return fi; + /* } else if ($assertType(_ref, ptrType$23, true)[1]) { */ case 7: + n$6 = _ref.$val; + _r$4 = fi.pkgInfo.Info.TypeOf(n$6.X); /* */ $s = 31; case 31: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = _r$4.Underlying(); /* */ $s = 32; case 32: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _tuple$2 = $assertType(_r$5, ptrType$30, true); + ok$2 = _tuple$2[1]; + if (ok$2) { + fi.markBlocking(fi.visitorStack); + } + if (fi.loopReturnIndex >= 0) { + $s = -1; return fi; + } + fi.loopReturnIndex = fi.returnStmts.$length; + $r = ast.Walk((x = new skipParentNode.ptr(fi), new x.constructor.elem(x)), n$6); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i = fi.loopReturnIndex; + while (true) { + if (!(i < fi.returnStmts.$length)) { break; } + (x$1 = fi.returnStmts, ((i < 0 || i >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i])).deferStmts = fi.deferStmts; + i = i + (1) >> 0; + } + fi.loopReturnIndex = -1; + $s = -1; return $ifaceNil; + /* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 8: + n$7 = _ref.$val; + if (fi.loopReturnIndex >= 0) { + $s = -1; return fi; + } + fi.loopReturnIndex = fi.returnStmts.$length; + $r = ast.Walk((x$2 = new skipParentNode.ptr(fi), new x$2.constructor.elem(x$2)), n$7); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + i$1 = fi.loopReturnIndex; + while (true) { + if (!(i$1 < fi.returnStmts.$length)) { break; } + (x$3 = fi.returnStmts, ((i$1 < 0 || i$1 >= x$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$3.$array[x$3.$offset + i$1])).deferStmts = fi.deferStmts; + i$1 = i$1 + (1) >> 0; + } + fi.loopReturnIndex = -1; + $s = -1; return $ifaceNil; + /* } else if ($assertType(_ref, ptrType$24, true)[1]) { */ case 9: + n$8 = _ref.$val; + _ref$2 = n$8.Body.List; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$2.$length)) { break; } + s = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + if ($interfaceIsEqual($assertType(s, ptrType$25).Comm, $ifaceNil)) { + $s = -1; return fi; + } + _i$1++; + } + fi.markBlocking(fi.visitorStack); + $s = -1; return fi; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 10: + n$9 = _ref.$val; + _ref$3 = n$9.Comm; + /* */ if ($assertType(_ref$3, ptrType$22, true)[1]) { $s = 35; continue; } + /* */ if ($assertType(_ref$3, ptrType$31, true)[1]) { $s = 36; continue; } + /* */ if ($assertType(_ref$3, ptrType$32, true)[1]) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if ($assertType(_ref$3, ptrType$22, true)[1]) { */ case 35: + comm = _ref$3.$val; + $r = ast.Walk(fi, comm.Chan); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.Walk(fi, comm.Value); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 38; continue; + /* } else if ($assertType(_ref$3, ptrType$31, true)[1]) { */ case 36: + comm$1 = _ref$3.$val; + $r = ast.Walk(fi, $assertType(comm$1.X, ptrType$2).X); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 38; continue; + /* } else if ($assertType(_ref$3, ptrType$32, true)[1]) { */ case 37: + comm$2 = _ref$3.$val; + $r = ast.Walk(fi, $assertType((x$4 = comm$2.Rhs, (0 >= x$4.$length ? ($throwRuntimeError("index out of range"), undefined) : x$4.$array[x$4.$offset + 0])), ptrType$2).X); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 38: + _ref$4 = n$9.Body; + _i$2 = 0; + /* while (true) { */ case 43: + /* if (!(_i$2 < _ref$4.$length)) { break; } */ if(!(_i$2 < _ref$4.$length)) { $s = 44; continue; } + s$1 = ((_i$2 < 0 || _i$2 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$2]); + $r = ast.Walk(fi, s$1); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$2++; + $s = 43; continue; + case 44: + $s = -1; return $ifaceNil; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 11: + n$10 = _ref.$val; + $r = ast.Walk(fi, n$10.Call.Fun); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$5 = n$10.Call.Args; + _i$3 = 0; + /* while (true) { */ case 47: + /* if (!(_i$3 < _ref$5.$length)) { break; } */ if(!(_i$3 < _ref$5.$length)) { $s = 48; continue; } + arg = ((_i$3 < 0 || _i$3 >= _ref$5.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$5.$array[_ref$5.$offset + _i$3]); + $r = ast.Walk(fi, arg); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i$3++; + $s = 47; continue; + case 48: + $s = -1; return $ifaceNil; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 12: + n$11 = _ref.$val; + fi.HasDefer = true; + _r$6 = fi.visitCallExpr(n$11.Call, true); /* */ $s = 50; case 50: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$2 = _r$6; + $s = 51; case 51: return $24r$2; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 13: + n$12 = _ref.$val; + rs = $clone(newReturnStmt(fi.visitorStack, fi.deferStmts), returnStmt); + fi.returnStmts = $append(fi.returnStmts, rs); + $s = -1; return fi; + /* } else { */ case 14: + n$13 = _ref; + $s = -1; return fi; + /* } */ case 15: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Visit$1, $c: true, $r, $24r, $24r$1, $24r$2, _1, _2, _entry, _entry$1, _i, _i$1, _i$2, _i$3, _key, _key$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _tuple, _tuple$1, _tuple$2, arg, comm, comm$1, comm$2, fi, fi$1, fis, forStmt, i, i$1, id, loopStmt, n, n$1, n$10, n$11, n$12, n$13, n$2, n$3, n$4, n$5, n$6, n$7, n$8, n$9, node, ok, ok$1, ok$2, rs, s, s$1, x, x$1, x$2, x$3, x$4, $s};return $f; + }; + $ptrType(FuncInfo).prototype.visitCallExpr = function visitCallExpr(n, deferredCall) { + var {_entry, _entry$1, _entry$2, _i, _key, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, arg, deferredCall, f, f$1, f$2, f$3, f$4, f$5, fi, fxt, fxt$1, fxt$2, fxt$3, fxt$4, fxt$5, inst, inst$1, n, sel, sel$1, sel$2, $s, $r, $c} = $restore(this, {n, deferredCall}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fi = this; + _ref = astutil.RemoveParens(n.Fun); + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$34, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$35, true)[1]) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if ($assertType(_ref, ptrType$14, true)[1]) { */ case 1: + f = _ref.$val; + _r = fi.instanceForIdent(f); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $r = fi.callToNamedFunc($clone(_r, typeparams.Instance), deferredCall); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return fi; + /* } else if ($assertType(_ref, ptrType$33, true)[1]) { */ case 2: + f$1 = _ref.$val; + sel = (_entry = $mapIndex(fi.pkgInfo.Info.Selections,ptrType$33.keyFor(f$1)), _entry !== undefined ? _entry.v : ptrType$36.nil); + /* */ if (!(sel === ptrType$36.nil)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!(sel === ptrType$36.nil)) { */ case 10: + if (typesutil.IsJsObject(sel.Recv())) { + $s = -1; return fi; + } + _r$1 = fi.instanceForSelection(sel); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $r = fi.callToNamedFunc($clone(_r$1, typeparams.Instance), deferredCall); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return fi; + /* } */ case 11: + _r$2 = fi.instanceForIdent(f$1.Sel); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $r = fi.callToNamedFunc($clone(_r$2, typeparams.Instance), deferredCall); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return fi; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 3: + f$2 = _ref.$val; + $r = ast.Walk(fi, n.Fun); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$1 = n.Args; + _i = 0; + /* while (true) { */ case 17: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 18; continue; } + arg = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + $r = ast.Walk(fi, arg); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 17; continue; + case 18: + _key = f$2; (fi.literalFuncCallees || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$12.keyFor(_key), { k: _key, v: fi.visitorStack.copy() }); + if (deferredCall) { + fi.deferStmts = $append(fi.deferStmts, newLitDefer(f$2, fi.typeArgs)); + } + $s = -1; return $ifaceNil; + /* } else if ($assertType(_ref, ptrType$34, true)[1]) { */ case 4: + f$3 = _ref.$val; + if (astutil.IsTypeExpr(f$3, fi.pkgInfo.Info)) { + $s = -1; return fi; + } + /* */ if (astutil.IsTypeExpr(f$3.Index, fi.pkgInfo.Info)) { $s = 20; continue; } + /* */ $s = 21; continue; + /* if (astutil.IsTypeExpr(f$3.Index, fi.pkgInfo.Info)) { */ case 20: + inst = new typeparams.Instance.ptr($ifaceNil, typesutil.TypeList.nil, typesutil.TypeList.nil); + _ref$2 = f$3.X; + /* */ if ($assertType(_ref$2, ptrType$14, true)[1]) { $s = 22; continue; } + /* */ if ($assertType(_ref$2, ptrType$33, true)[1]) { $s = 23; continue; } + /* */ $s = 24; continue; + /* if ($assertType(_ref$2, ptrType$14, true)[1]) { */ case 22: + fxt = _ref$2.$val; + _r$3 = fi.instanceForIdent(fxt); /* */ $s = 26; case 26: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + typeparams.Instance.copy(inst, _r$3); + $s = 25; continue; + /* } else if ($assertType(_ref$2, ptrType$33, true)[1]) { */ case 23: + fxt$1 = _ref$2.$val; + sel$1 = (_entry$1 = $mapIndex(fi.pkgInfo.Info.Selections,ptrType$33.keyFor(fxt$1)), _entry$1 !== undefined ? _entry$1.v : ptrType$36.nil); + /* */ if (!(sel$1 === ptrType$36.nil)) { $s = 27; continue; } + /* */ $s = 28; continue; + /* if (!(sel$1 === ptrType$36.nil)) { */ case 27: + _r$4 = fi.instanceForSelection(sel$1); /* */ $s = 30; case 30: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + typeparams.Instance.copy(inst, _r$4); + $s = 29; continue; + /* } else { */ case 28: + _r$5 = fi.instanceForIdent(fxt$1.Sel); /* */ $s = 31; case 31: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + typeparams.Instance.copy(inst, _r$5); + /* } */ case 29: + $s = 25; continue; + /* } else { */ case 24: + fxt$2 = _ref$2; + _r$6 = fmt.Errorf("unexpected type %T for index expression %s", new sliceType$2([f$3.X, f$3.X])); /* */ $s = 32; case 32: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $panic(_r$6); + /* } */ case 25: + $r = fi.callToNamedFunc($clone(inst, typeparams.Instance), deferredCall); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return fi; + /* } */ case 21: + fi.markBlocking(fi.visitorStack); + if (deferredCall) { + fi.deferStmts = $append(fi.deferStmts, newBlockingDefer()); + } + $s = -1; return fi; + /* } else if ($assertType(_ref, ptrType$35, true)[1]) { */ case 5: + f$4 = _ref.$val; + if (astutil.IsTypeExpr(f$4, fi.pkgInfo.Info)) { + $s = -1; return fi; + } + inst$1 = new typeparams.Instance.ptr($ifaceNil, typesutil.TypeList.nil, typesutil.TypeList.nil); + _ref$3 = f$4.X; + /* */ if ($assertType(_ref$3, ptrType$14, true)[1]) { $s = 34; continue; } + /* */ if ($assertType(_ref$3, ptrType$33, true)[1]) { $s = 35; continue; } + /* */ $s = 36; continue; + /* if ($assertType(_ref$3, ptrType$14, true)[1]) { */ case 34: + fxt$3 = _ref$3.$val; + _r$7 = fi.instanceForIdent(fxt$3); /* */ $s = 38; case 38: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + typeparams.Instance.copy(inst$1, _r$7); + $s = 37; continue; + /* } else if ($assertType(_ref$3, ptrType$33, true)[1]) { */ case 35: + fxt$4 = _ref$3.$val; + sel$2 = (_entry$2 = $mapIndex(fi.pkgInfo.Info.Selections,ptrType$33.keyFor(fxt$4)), _entry$2 !== undefined ? _entry$2.v : ptrType$36.nil); + /* */ if (!(sel$2 === ptrType$36.nil)) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (!(sel$2 === ptrType$36.nil)) { */ case 39: + _r$8 = fi.instanceForSelection(sel$2); /* */ $s = 42; case 42: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + typeparams.Instance.copy(inst$1, _r$8); + $s = 41; continue; + /* } else { */ case 40: + _r$9 = fi.instanceForIdent(fxt$4.Sel); /* */ $s = 43; case 43: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + typeparams.Instance.copy(inst$1, _r$9); + /* } */ case 41: + $s = 37; continue; + /* } else { */ case 36: + fxt$5 = _ref$3; + _r$10 = fmt.Errorf("unexpected type %T for index list expression %s", new sliceType$2([f$4.X, f$4.X])); /* */ $s = 44; case 44: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $panic(_r$10); + /* } */ case 37: + $r = fi.callToNamedFunc($clone(inst$1, typeparams.Instance), deferredCall); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return fi; + /* } else { */ case 6: + f$5 = _ref; + if (astutil.IsTypeExpr(f$5, fi.pkgInfo.Info)) { + $s = -1; return fi; + } + fi.markBlocking(fi.visitorStack); + if (deferredCall) { + fi.deferStmts = $append(fi.deferStmts, newBlockingDefer()); + } + $s = -1; return fi; + /* } */ case 7: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: visitCallExpr, $c: true, $r, _entry, _entry$1, _entry$2, _i, _key, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, arg, deferredCall, f, f$1, f$2, f$3, f$4, f$5, fi, fxt, fxt$1, fxt$2, fxt$3, fxt$4, fxt$5, inst, inst$1, n, sel, sel$1, sel$2, $s};return $f; + }; + $ptrType(FuncInfo).prototype.instanceForIdent = function instanceForIdent(fnId) { + var {$24r, _entry, _entry$1, _r, fi, fnId, tArgs, $s, $r, $c} = $restore(this, {fnId}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fi = this; + tArgs = (_entry = $mapIndex(fi.pkgInfo.Info.Instances,ptrType$14.keyFor(fnId)), _entry !== undefined ? _entry.v : new types.Instance.ptr(ptrType$37.nil, $ifaceNil)).TypeArgs; + _r = fi.resolver.SubstituteAll(tArgs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = new typeparams.Instance.ptr((_entry$1 = $mapIndex(fi.pkgInfo.Info.Uses,ptrType$14.keyFor(fnId)), _entry$1 !== undefined ? _entry$1.v : $ifaceNil), $convertSliceType(_r, typesutil.TypeList), typesutil.TypeList.nil); + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: instanceForIdent, $c: true, $r, $24r, _entry, _entry$1, _r, fi, fnId, tArgs, $s};return $f; + }; + $ptrType(FuncInfo).prototype.instanceForSelection = function instanceForSelection(sel) { + var {$24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, fi, ok, ok$1, ok$2, origMethod, ptrType$39, recv, resolved, rt, sel, sig, typ, $s, $r, $c} = $restore(this, {sel}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fi = this; + _r = sel.Obj().Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$3, true); + ok = _tuple[1]; + /* */ if (ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok) { */ case 2: + _r$1 = fi.resolver.SubstituteSelection(sel); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + resolved = _r$1; + _r$2 = resolved.Obj(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$3 = _r$2.Type(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + sig = $assertType(_r$3, ptrType$3); + recv = sig.Recv(); + /* */ if (!(recv === ptrType$16.nil)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!(recv === ptrType$16.nil)) { */ case 7: + typ = recv.object.Type(); + _tuple$1 = $assertType(typ, ptrType$38, true); + ptrType$39 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + typ = ptrType$39.Elem(); + } + _tuple$2 = $assertType(typ, ptrType$40, true); + rt = _tuple$2[0]; + ok$2 = _tuple$2[1]; + /* */ if (ok$2) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (ok$2) { */ case 9: + _arg = rt.Origin(); + _arg$1 = rt.Obj().object.Pkg(); + _r$4 = resolved.Obj(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _r$5 = _r$4.Name(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$2 = _r$5; + _r$6 = types.LookupFieldOrMethod(_arg, true, _arg$1, _arg$2); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$3 = _r$6; + origMethod = _tuple$3[0]; + /* */ if ($interfaceIsEqual(origMethod, $ifaceNil)) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if ($interfaceIsEqual(origMethod, $ifaceNil)) { */ case 14: + _r$7 = resolved.Obj(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = _r$7.Name(); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _arg$3 = new $String(_r$8); + _arg$4 = rt.Origin(); + _r$9 = fmt.Errorf("failed to lookup field %q in type %v", new sliceType$2([_arg$3, _arg$4])); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $panic(_r$9); + /* } */ case 15: + _r$10 = fi.resolver.SubstituteAll(rt.TypeArgs()); /* */ $s = 19; case 19: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $24r = new typeparams.Instance.ptr(origMethod, $convertSliceType(_r$10, typesutil.TypeList), typesutil.TypeList.nil); + $s = 20; case 20: return $24r; + /* } */ case 10: + /* } */ case 8: + /* } */ case 3: + $s = -1; return new typeparams.Instance.ptr(sel.Obj(), typesutil.TypeList.nil, typesutil.TypeList.nil); + /* */ } return; } var $f = {$blk: instanceForSelection, $c: true, $r, $24r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, fi, ok, ok$1, ok$2, origMethod, ptrType$39, recv, resolved, rt, sel, sig, typ, $s};return $f; + }; + $ptrType(FuncInfo).prototype.callToNamedFunc = function callToNamedFunc(callee, deferredCall) { + var {_r, _r$1, _r$2, _ref, _tuple, callee, deferredCall, fi, o, o$1, o$2, ok, paths, recv, $s, $r, $c} = $restore(this, {callee, deferredCall}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + fi = this; + _ref = callee.Object; + /* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($assertType(_ref, ptrType$41, true)[1]) { */ case 1: + o = _ref.$val; + o = o.Origin(); + recv = $assertType(o.object.Type(), ptrType$3).Recv(); + /* */ if (!(recv === ptrType$16.nil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(recv === ptrType$16.nil)) { */ case 5: + _r = recv.object.Type().Underlying(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$42, true); + ok = _tuple[1]; + if (ok) { + fi.markBlocking(fi.visitorStack); + if (deferredCall) { + fi.deferStmts = $append(fi.deferStmts, newBlockingDefer()); + } + $s = -1; return; + } + /* } */ case 6: + _r$1 = fi.instCallees.Get($clone(callee, typeparams.Instance)); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + paths = _r$1; + paths = $append(paths, fi.visitorStack.copy()); + _r$2 = fi.instCallees.Set($clone(callee, typeparams.Instance), paths); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _r$2; + if (deferredCall) { + fi.deferStmts = $append(fi.deferStmts, newInstDefer($clone(callee, typeparams.Instance))); + } + $s = 4; continue; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 2: + o$1 = _ref.$val; + fi.markBlocking(fi.visitorStack); + if (deferredCall) { + fi.deferStmts = $append(fi.deferStmts, newBlockingDefer()); + } + $s = 4; continue; + /* } else { */ case 3: + o$2 = _ref; + $s = -1; return; + /* } */ case 4: + $s = -1; return; + /* */ } return; } var $f = {$blk: callToNamedFunc, $c: true, $r, _r, _r$1, _r$2, _ref, _tuple, callee, deferredCall, fi, o, o$1, o$2, ok, paths, recv, $s};return $f; + }; + $ptrType(FuncInfo).prototype.markBlocking = function markBlocking(stack) { + var _i, _key, _key$1, _ref, fi, n, stack; + fi = this; + _ref = stack; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + n = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _key = n; (fi.Blocking || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: true }); + _key$1 = n; (fi.Flattened || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key$1), { k: _key$1, v: true }); + _i++; + } + }; + $ptrType(FuncInfo).prototype.markFlattened = function markFlattened(stack) { + var _i, _key, _ref, fi, n, stack; + fi = this; + _ref = stack; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + n = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _key = n; (fi.Flattened || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: true }); + _i++; + } + }; + $ptrType(skipParentNode).prototype.Visit = function Visit$2(node) { + var node, v; + v = this; + return v.then; + }; + skipParentNode.prototype.Visit = function(...$args) { return this.$val.Visit(...$args); }; + EscapingObjects = function EscapingObjects$1(n, info) { + var {_entry, info, n, v, $s, $r, $c} = $restore(this, {n, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = [v]; + v[0] = new escapeAnalysis.ptr(info, new $global.Map(), sliceType$7.nil, (_entry = $mapIndex(info.Scopes,ast.Node.keyFor(n)), _entry !== undefined ? _entry.v : ptrType$43.nil), new $global.Map()); + $r = ast.Walk(v[0], n); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return v[0].ordered; + /* */ } return; } var $f = {$blk: EscapingObjects$1, $c: true, $r, _entry, info, n, v, $s};return $f; + }; + $pkg.EscapingObjects = EscapingObjects; + $ptrType(escapeAnalysis).prototype.Visit = function Visit$3(node) { + var _entry, _entry$1, _entry$2, _key, _key$1, _key$2, _ref, _tuple, n, n$1, n$2, n$3, node, ok, v, w; + w = $ifaceNil; + v = this; + _ref = node; + if ($assertType(_ref, ptrType$2, true)[1]) { + n = _ref.$val; + if (n.Op === 17) { + _tuple = $assertType(n.X, ptrType$14, true); + ok = _tuple[1]; + if (ok) { + w = new escapingObjectCollector.ptr(v); + return w; + } + } + } else if ($assertType(_ref, ptrType$12, true)[1]) { + n$1 = _ref.$val; + _key = (_entry = $mapIndex(v.info.Scopes,ast.Node.keyFor(n$1.Type)), _entry !== undefined ? _entry.v : ptrType$43.nil); (v.bottomScopes || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$43.keyFor(_key), { k: _key, v: true }); + w = new escapingObjectCollector.ptr(v); + return w; + } else if ($assertType(_ref, ptrType$5, true)[1]) { + n$2 = _ref.$val; + _key$1 = (_entry$1 = $mapIndex(v.info.Scopes,ast.Node.keyFor(n$2.Body)), _entry$1 !== undefined ? _entry$1.v : ptrType$43.nil); (v.bottomScopes || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$43.keyFor(_key$1), { k: _key$1, v: true }); + } else if ($assertType(_ref, ptrType$23, true)[1]) { + n$3 = _ref.$val; + _key$2 = (_entry$2 = $mapIndex(v.info.Scopes,ast.Node.keyFor(n$3.Body)), _entry$2 !== undefined ? _entry$2.v : ptrType$43.nil); (v.bottomScopes || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$43.keyFor(_key$2), { k: _key$2, v: true }); + } + w = v; + return w; + }; + $ptrType(escapingObjectCollector).prototype.Visit = function Visit$4(node) { + var _entry, _entry$1, _entry$2, _key, _tuple, _tuple$1, id, node, obj, ok, ok$1, s, v, w; + w = $ifaceNil; + v = this; + _tuple = $assertType(node, ptrType$14, true); + id = _tuple[0]; + ok = _tuple[1]; + if (ok) { + _tuple$1 = $assertType((_entry = $mapIndex(v.analysis.info.Uses,ptrType$14.keyFor(id)), _entry !== undefined ? _entry.v : $ifaceNil), ptrType$16, true); + obj = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + s = obj.object.Parent(); + while (true) { + if (!(!(s === ptrType$43.nil))) { break; } + if (s === v.analysis.topScope) { + if (!(_entry$1 = $mapIndex(v.analysis.escaping,ptrType$16.keyFor(obj)), _entry$1 !== undefined ? _entry$1.v : false)) { + _key = obj; (v.analysis.escaping || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$16.keyFor(_key), { k: _key, v: true }); + v.analysis.ordered = $append(v.analysis.ordered, obj); + } + break; + } + if ((_entry$2 = $mapIndex(v.analysis.bottomScopes,ptrType$43.keyFor(s)), _entry$2 !== undefined ? _entry$2.v : false)) { + break; + } + s = s.Parent(); + } + } + } + w = v; + return w; + }; + newBlockingDefer = function newBlockingDefer$1() { + return new deferStmt.ptr($ifaceNil, ptrType$12.nil, typesutil.TypeList.nil); + }; + newInstDefer = function newInstDefer$1(inst) { + var inst; + return new deferStmt.ptr(inst.Object, ptrType$12.nil, inst.TArgs); + }; + newLitDefer = function newLitDefer$1(lit, typeArgs) { + var lit, typeArgs; + return new deferStmt.ptr($ifaceNil, lit, typeArgs); + }; + $ptrType(deferStmt).prototype.IsBlocking = function IsBlocking$3(info) { + var {$24r, $24r$1, _r, _r$1, _r$2, d, info, $s, $r, $c} = $restore(this, {info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + /* */ if (!($interfaceIsEqual(d.obj, $ifaceNil))) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!($interfaceIsEqual(d.obj, $ifaceNil))) { */ case 1: + _r = info.IsBlocking($clone(new typeparams.Instance.ptr(d.obj, d.typeArgs, typesutil.TypeList.nil), typeparams.Instance)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + /* */ if (!(d.lit === ptrType$12.nil)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (!(d.lit === ptrType$12.nil)) { */ case 5: + _r$1 = info.FuncLitInfo(d.lit, d.typeArgs); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.IsBlocking(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = _r$2; + $s = 9; case 9: return $24r$1; + /* } */ case 6: + $s = -1; return true; + /* */ } return; } var $f = {$blk: IsBlocking$3, $c: true, $r, $24r, $24r$1, _r, _r$1, _r$2, d, info, $s};return $f; + }; + isAnyDeferBlocking = function isAnyDeferBlocking$1(deferStmts, info) { + var {_i, _r, _ref, def, deferStmts, info, $s, $r, $c} = $restore(this, {deferStmts, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = deferStmts; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + def = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r = def.IsBlocking(info); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (_r) { */ case 3: + $s = -1; return true; + /* } */ case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return false; + /* */ } return; } var $f = {$blk: isAnyDeferBlocking$1, $c: true, $r, _i, _r, _ref, def, deferStmts, info, $s};return $f; + }; + HasBreak = function HasBreak$1(n) { + var {n, v, $s, $r, $c} = $restore(this, {n}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = [v]; + v[0] = new hasBreakVisitor.ptr(false); + $r = ast.Walk(v[0], n); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return v[0].hasBreak; + /* */ } return; } var $f = {$blk: HasBreak$1, $c: true, $r, n, v, $s};return $f; + }; + $pkg.HasBreak = HasBreak; + $ptrType(hasBreakVisitor).prototype.Visit = function Visit$5(node) { + var _ref, n, n$1, node, v, w; + w = $ifaceNil; + v = this; + if (v.hasBreak) { + w = $ifaceNil; + return w; + } + _ref = node; + if ($assertType(_ref, ptrType$21, true)[1]) { + n = _ref.$val; + if ((n.Tok === 61) && n.Label === ptrType$14.nil) { + v.hasBreak = true; + w = $ifaceNil; + return w; + } + } else if ($assertType(_ref, ptrType$5, true)[1] || $assertType(_ref, ptrType$23, true)[1] || $assertType(_ref, ptrType$44, true)[1] || $assertType(_ref, ptrType$45, true)[1] || $assertType(_ref, ptrType$24, true)[1] || $assertType(_ref, ast.Expr, true)[1]) { + n$1 = _ref; + w = $ifaceNil; + return w; + } + w = v; + return w; + }; + BoolValue = function BoolValue$1(expr, info) { + var {$24r, $24r$1, $24r$2, $24r$3, _1, _entry, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tuple, _tuple$1, _tuple$2, _v, b, b$1, b$2, e, e$1, e$2, expr, info, ok, ok$1, ok$2, v, $s, $r, $c} = $restore(this, {expr, info}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = (_entry = $mapIndex(info.Types,ast.Expr.keyFor(expr)), _entry !== undefined ? _entry.v : new types.TypeAndValue.ptr(0, $ifaceNil, $ifaceNil)).Value; + if (!(!($interfaceIsEqual(v, $ifaceNil)))) { _v = false; $s = 3; continue s; } + _r = v.Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r === 1; case 3: + /* */ if (_v) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_v) { */ case 1: + _r$1 = constant.BoolVal(v); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = [_r$1, true]; + $s = 6; case 6: return $24r; + /* } */ case 2: + _ref = expr; + /* */ if ($assertType(_ref, ptrType$46, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$2, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$47, true)[1]) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if ($assertType(_ref, ptrType$46, true)[1]) { */ case 7: + e = _ref.$val; + _1 = e.Op; + /* */ if (_1 === (34)) { $s = 12; continue; } + /* */ if (_1 === (35)) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (_1 === (34)) { */ case 12: + _r$2 = BoolValue(e.X, info); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + b = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (ok) { */ case 16: + if (!b) { + $s = -1; return [false, true]; + } + _r$3 = BoolValue(e.Y, info); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = _r$3; + $s = 19; case 19: return $24r$1; + /* } */ case 17: + $s = 14; continue; + /* } else if (_1 === (35)) { */ case 13: + _r$4 = BoolValue(e.X, info); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _tuple$1 = _r$4; + b$1 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + /* */ if (ok$1) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (ok$1) { */ case 21: + if (b$1) { + $s = -1; return [true, true]; + } + _r$5 = BoolValue(e.Y, info); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r$2 = _r$5; + $s = 24; case 24: return $24r$2; + /* } */ case 22: + /* } */ case 14: + case 11: + $s = 10; continue; + /* } else if ($assertType(_ref, ptrType$2, true)[1]) { */ case 8: + e$1 = _ref.$val; + /* */ if (e$1.Op === 43) { $s = 25; continue; } + /* */ $s = 26; continue; + /* if (e$1.Op === 43) { */ case 25: + _r$6 = BoolValue(e$1.X, info); /* */ $s = 27; case 27: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _tuple$2 = _r$6; + b$2 = _tuple$2[0]; + ok$2 = _tuple$2[1]; + if (ok$2) { + $s = -1; return [!b$2, true]; + } + /* } */ case 26: + $s = 10; continue; + /* } else if ($assertType(_ref, ptrType$47, true)[1]) { */ case 9: + e$2 = _ref.$val; + _r$7 = BoolValue(e$2.X, info); /* */ $s = 28; case 28: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $24r$3 = _r$7; + $s = 29; case 29: return $24r$3; + /* } */ case 10: + $s = -1; return [false, false]; + /* */ } return; } var $f = {$blk: BoolValue$1, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _1, _entry, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tuple, _tuple$1, _tuple$2, _v, b, b$1, b$2, e, e$1, e$2, expr, info, ok, ok$1, ok$2, v, $s};return $f; + }; + $pkg.BoolValue = BoolValue; + ptrType$48.methods = [{prop: "Visit", name: "Visit", pkg: "", typ: $funcType([ast.Node], [ast.Visitor], false)}]; + returnStmt.methods = [{prop: "IsBlocking", name: "IsBlocking", pkg: "", typ: $funcType([ptrType$15], [$Bool], false)}]; + astPath.methods = [{prop: "copy", name: "copy", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([], [astPath], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$9.methods = [{prop: "newFuncInfo", name: "newFuncInfo", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([ast.Node, types.Object, typesutil.TypeList, ptrType$8], [ptrType$15], false)}, {prop: "newFuncInfoInstances", name: "newFuncInfoInstances", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([ptrType$11], [sliceType$5], false)}, {prop: "IsBlocking", name: "IsBlocking", pkg: "", typ: $funcType([typeparams.Instance], [$Bool], false)}, {prop: "FuncInfo", name: "FuncInfo", pkg: "", typ: $funcType([typeparams.Instance], [ptrType$15], false)}, {prop: "FuncLitInfo", name: "FuncLitInfo", pkg: "", typ: $funcType([ptrType$12, typesutil.TypeList], [ptrType$15], false)}, {prop: "VarsWithInitializers", name: "VarsWithInitializers", pkg: "", typ: $funcType([], [mapType], false)}, {prop: "propagateFunctionBlocking", name: "propagateFunctionBlocking", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([], [$Bool], false)}, {prop: "propagateControlStatementBlocking", name: "propagateControlStatementBlocking", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([], [], false)}]; + ptrType$15.methods = [{prop: "IsBlocking", name: "IsBlocking", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "TypeArgs", name: "TypeArgs", pkg: "", typ: $funcType([], [typesutil.TypeList], false)}, {prop: "propagateReturnBlocking", name: "propagateReturnBlocking", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([], [], false)}, {prop: "propagateContinueBlocking", name: "propagateContinueBlocking", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([], [], false)}, {prop: "Visit", name: "Visit", pkg: "", typ: $funcType([ast.Node], [ast.Visitor], false)}, {prop: "visitCallExpr", name: "visitCallExpr", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([ptrType$1, $Bool], [ast.Visitor], false)}, {prop: "instanceForIdent", name: "instanceForIdent", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([ptrType$14], [typeparams.Instance], false)}, {prop: "instanceForSelection", name: "instanceForSelection", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([ptrType$36], [typeparams.Instance], false)}, {prop: "callToNamedFunc", name: "callToNamedFunc", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([typeparams.Instance, $Bool], [], false)}, {prop: "markBlocking", name: "markBlocking", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([astPath], [], false)}, {prop: "markFlattened", name: "markFlattened", pkg: "github.com/gopherjs/gopherjs/compiler/internal/analysis", typ: $funcType([astPath], [], false)}]; + skipParentNode.methods = [{prop: "Visit", name: "Visit", pkg: "", typ: $funcType([ast.Node], [ast.Visitor], false)}]; + ptrType$49.methods = [{prop: "Visit", name: "Visit", pkg: "", typ: $funcType([ast.Node], [ast.Visitor], false)}]; + ptrType$50.methods = [{prop: "Visit", name: "Visit", pkg: "", typ: $funcType([ast.Node], [ast.Visitor], false)}]; + ptrType$4.methods = [{prop: "IsBlocking", name: "IsBlocking", pkg: "", typ: $funcType([ptrType$9], [$Bool], false)}]; + ptrType$51.methods = [{prop: "Visit", name: "Visit", pkg: "", typ: $funcType([ast.Node], [ast.Visitor], false)}]; + hasSideEffectVisitor.init("github.com/gopherjs/gopherjs/compiler/internal/analysis", [{prop: "info", name: "info", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "hasSideEffect", name: "hasSideEffect", embedded: false, exported: false, typ: $Bool, tag: ""}]); + returnStmt.init("github.com/gopherjs/gopherjs/compiler/internal/analysis", [{prop: "analyzeStack", name: "analyzeStack", embedded: false, exported: false, typ: astPath, tag: ""}, {prop: "deferStmts", name: "deferStmts", embedded: false, exported: false, typ: sliceType, tag: ""}]); + continueStmt.init("github.com/gopherjs/gopherjs/compiler/internal/analysis", [{prop: "forStmt", name: "forStmt", embedded: false, exported: false, typ: ptrType$5, tag: ""}, {prop: "analyzeStack", name: "analyzeStack", embedded: false, exported: false, typ: astPath, tag: ""}]); + astPath.init(ast.Node); + Info.init("github.com/gopherjs/gopherjs/compiler/internal/analysis", [{prop: "Info", name: "Info", embedded: true, exported: true, typ: ptrType, tag: ""}, {prop: "Pkg", name: "Pkg", embedded: false, exported: true, typ: ptrType$17, tag: ""}, {prop: "typeCtx", name: "typeCtx", embedded: false, exported: false, typ: ptrType$18, tag: ""}, {prop: "InstanceSets", name: "InstanceSets", embedded: false, exported: true, typ: ptrType$19, tag: ""}, {prop: "HasPointer", name: "HasPointer", embedded: false, exported: true, typ: mapType, tag: ""}, {prop: "funcInstInfos", name: "funcInstInfos", embedded: false, exported: false, typ: ptrType$20, tag: ""}, {prop: "funcLitInfos", name: "funcLitInfos", embedded: false, exported: false, typ: mapType$1, tag: ""}, {prop: "InitFuncInfo", name: "InitFuncInfo", embedded: false, exported: true, typ: ptrType$15, tag: ""}, {prop: "infoImporter", name: "infoImporter", embedded: false, exported: false, typ: InfoImporter, tag: ""}, {prop: "allInfos", name: "allInfos", embedded: false, exported: false, typ: sliceType$5, tag: ""}]); + InfoImporter.init([$String], [ptrType$9, $error], false); + FuncInfo.init("github.com/gopherjs/gopherjs/compiler/internal/analysis", [{prop: "HasDefer", name: "HasDefer", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Flattened", name: "Flattened", embedded: false, exported: true, typ: mapType$2, tag: ""}, {prop: "Blocking", name: "Blocking", embedded: false, exported: true, typ: mapType$2, tag: ""}, {prop: "GotoLabel", name: "GotoLabel", embedded: false, exported: true, typ: mapType$3, tag: ""}, {prop: "continueStmts", name: "continueStmts", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "returnStmts", name: "returnStmts", embedded: false, exported: false, typ: sliceType$4, tag: ""}, {prop: "deferStmts", name: "deferStmts", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "loopReturnIndex", name: "loopReturnIndex", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "instCallees", name: "instCallees", embedded: false, exported: false, typ: ptrType$7, tag: ""}, {prop: "literalFuncCallees", name: "literalFuncCallees", embedded: false, exported: false, typ: mapType$4, tag: ""}, {prop: "typeArgs", name: "typeArgs", embedded: false, exported: false, typ: typesutil.TypeList, tag: ""}, {prop: "resolver", name: "resolver", embedded: false, exported: false, typ: ptrType$8, tag: ""}, {prop: "pkgInfo", name: "pkgInfo", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "visitorStack", name: "visitorStack", embedded: false, exported: false, typ: astPath, tag: ""}]); + skipParentNode.init("github.com/gopherjs/gopherjs/compiler/internal/analysis", [{prop: "then", name: "then", embedded: false, exported: false, typ: ast.Visitor, tag: ""}]); + escapeAnalysis.init("github.com/gopherjs/gopherjs/compiler/internal/analysis", [{prop: "info", name: "info", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "escaping", name: "escaping", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "ordered", name: "ordered", embedded: false, exported: false, typ: sliceType$7, tag: ""}, {prop: "topScope", name: "topScope", embedded: false, exported: false, typ: ptrType$43, tag: ""}, {prop: "bottomScopes", name: "bottomScopes", embedded: false, exported: false, typ: mapType$5, tag: ""}]); + escapingObjectCollector.init("github.com/gopherjs/gopherjs/compiler/internal/analysis", [{prop: "analysis", name: "analysis", embedded: false, exported: false, typ: ptrType$49, tag: ""}]); + deferStmt.init("github.com/gopherjs/gopherjs/compiler/internal/analysis", [{prop: "obj", name: "obj", embedded: false, exported: false, typ: types.Object, tag: ""}, {prop: "lit", name: "lit", embedded: false, exported: false, typ: ptrType$12, tag: ""}, {prop: "typeArgs", name: "typeArgs", embedded: false, exported: false, typ: typesutil.TypeList, tag: ""}]); + hasBreakVisitor.init("github.com/gopherjs/gopherjs/compiler/internal/analysis", [{prop: "hasBreak", name: "hasBreak", embedded: false, exported: false, typ: $Bool, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = astutil.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typeparams.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typesutil.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = constant.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = types.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/internal/dce"] = (function() { + var $pkg = {}, $init, errors, fmt, typeparams, typesutil, types, sort, strconv, strings, Selector = [], declInfo = [], Info, processingGroup, filterGen, Decl, Collector, ptrType, ptrType$1, sliceType, structType, sliceType$1, sliceType$2, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$7, sliceType$3, sliceType$4, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, ptrType$16, ptrType$17, ptrType$18, sliceType$5, mapType, ptrType$19, mapType$1, mapType$2, funcType, ptrType$20, ptrType$21, mapType$3, ptrType$22, getFilters, getObjectFilter, getMethodFilter, objectName, getNestTypeParams, getTypeArgs, getTypeParams, typeListToSlice, typeParamListToSlice; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + typeparams = $packages["github.com/gopherjs/gopherjs/compiler/internal/typeparams"]; + typesutil = $packages["github.com/gopherjs/gopherjs/compiler/typesutil"]; + types = $packages["go/types"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + Selector[0 /* *github.com/gopherjs/gopherjs/compiler.Decl */] = $newType(0, $kindStruct, "dce.Selector[*github.com/gopherjs/gopherjs/compiler.Decl]", true, "github.com/gopherjs/gopherjs/compiler/internal/dce", true, function(byFilter_, pendingDecls_) { + this.$val = this; + if (arguments.length === 0) { + this.byFilter = false; + this.pendingDecls = sliceType$5.nil; + return; + } + this.byFilter = byFilter_; + this.pendingDecls = pendingDecls_; + }); + declInfo[4 /* *github.com/gopherjs/gopherjs/compiler.Decl */] = $newType(0, $kindStruct, "dce.declInfo[*github.com/gopherjs/gopherjs/compiler.Decl]", true, "github.com/gopherjs/gopherjs/compiler/internal/dce", false, function(decl_, objectFilter_, methodFilter_) { + this.$val = this; + if (arguments.length === 0) { + this.decl = ptrType.nil; + this.objectFilter = ""; + this.methodFilter = ""; + return; + } + this.decl = decl_; + this.objectFilter = objectFilter_; + this.methodFilter = methodFilter_; + }); + Info = $newType(0, $kindStruct, "dce.Info", true, "github.com/gopherjs/gopherjs/compiler/internal/dce", true, function(alive_, objectFilter_, methodFilter_, deps_) { + this.$val = this; + if (arguments.length === 0) { + this.alive = false; + this.objectFilter = ""; + this.methodFilter = ""; + this.deps = false; + return; + } + this.alive = alive_; + this.objectFilter = objectFilter_; + this.methodFilter = methodFilter_; + this.deps = deps_; + }); + processingGroup = $newType(0, $kindStruct, "dce.processingGroup", true, "github.com/gopherjs/gopherjs/compiler/internal/dce", false, function(o_, nestTArgs_, tArgs_) { + this.$val = this; + if (arguments.length === 0) { + this.o = $ifaceNil; + this.nestTArgs = sliceType$3.nil; + this.tArgs = sliceType$3.nil; + return; + } + this.o = o_; + this.nestTArgs = nestTArgs_; + this.tArgs = tArgs_; + }); + filterGen = $newType(0, $kindStruct, "dce.filterGen", true, "github.com/gopherjs/gopherjs/compiler/internal/dce", false, function(replacement_, inProgress_) { + this.$val = this; + if (arguments.length === 0) { + this.replacement = false; + this.inProgress = sliceType$4.nil; + return; + } + this.replacement = replacement_; + this.inProgress = inProgress_; + }); + Decl = $newType(8, $kindInterface, "dce.Decl", true, "github.com/gopherjs/gopherjs/compiler/internal/dce", true, null); + Collector = $newType(0, $kindStruct, "dce.Collector", true, "github.com/gopherjs/gopherjs/compiler/internal/dce", true, function(dce_) { + this.$val = this; + if (arguments.length === 0) { + this.dce = ptrType$18.nil; + return; + } + this.dce = dce_; + }); + $pkg.Selector = Selector; + $pkg.declInfo = declInfo; + $pkg.Info = Info; + $pkg.processingGroup = processingGroup; + $pkg.filterGen = filterGen; + $pkg.Decl = Decl; + $pkg.Collector = Collector; + $pkg.$finishSetup = function() { + ptrType = $ptrType($packages["github.com/gopherjs/gopherjs/compiler"].Decl); + ptrType$1 = $ptrType(declInfo[4 /* *github.com/gopherjs/gopherjs/compiler.Decl */]); + sliceType = $sliceType(ptrType$1); + structType = $structType("", []); + sliceType$1 = $sliceType($String); + sliceType$2 = $sliceType($emptyInterface); + ptrType$2 = $ptrType(types.Func); + ptrType$3 = $ptrType(types.Signature); + ptrType$4 = $ptrType(types.Var); + ptrType$5 = $ptrType(types.Pointer); + ptrType$7 = $ptrType(types.Named); + sliceType$3 = $sliceType(types.Type); + sliceType$4 = $sliceType(processingGroup); + ptrType$8 = $ptrType(types.Package); + ptrType$9 = $ptrType(types.TypeParamList); + ptrType$10 = $ptrType(types.Slice); + ptrType$11 = $ptrType(types.Array); + ptrType$12 = $ptrType(types.Chan); + ptrType$13 = $ptrType(types.Interface); + ptrType$14 = $ptrType(types.Map); + ptrType$15 = $ptrType(types.Struct); + ptrType$16 = $ptrType(types.TypeParam); + ptrType$17 = $ptrType(types.Union); + ptrType$18 = $ptrType(Info); + sliceType$5 = $sliceType(ptrType); + mapType = $mapType(ptrType, structType); + ptrType$19 = $ptrType(Selector[0 /* *github.com/gopherjs/gopherjs/compiler.Decl */]); + mapType$1 = $mapType($String, sliceType); + mapType$2 = $mapType($String, structType); + funcType = $funcType([], [], false); + ptrType$20 = $ptrType(types.Tuple); + ptrType$21 = $ptrType(filterGen); + mapType$3 = $mapType(types.Type, types.Type); + ptrType$22 = $ptrType(Collector); + $ptrType(Selector[0 /* *github.com/gopherjs/gopherjs/compiler.Decl */]).prototype.Include = function Include(decl, implementsLink) { + var _entry, _entry$1, _key, _key$1, dce, decl, implementsLink, info, s; + s = this; + if (s.byFilter === false) { + s.byFilter = new $global.Map(); + } + dce = decl.Dce(); + if (dce.isAlive()) { + s.pendingDecls = $append(s.pendingDecls, decl); + return; + } + if (implementsLink) { + s.pendingDecls = $append(s.pendingDecls, decl); + } + info = new declInfo[4 /* *github.com/gopherjs/gopherjs/compiler.Decl */].ptr(decl, "", ""); + if (!(dce.objectFilter === "")) { + info.objectFilter = dce.objectFilter; + _key = info.objectFilter; (s.byFilter || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: $append((_entry = $mapIndex(s.byFilter,$String.keyFor(info.objectFilter)), _entry !== undefined ? _entry.v : sliceType.nil), info) }); + } + if (!(dce.methodFilter === "")) { + info.methodFilter = dce.methodFilter; + _key$1 = info.methodFilter; (s.byFilter || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$1), { k: _key$1, v: $append((_entry$1 = $mapIndex(s.byFilter,$String.keyFor(info.methodFilter)), _entry$1 !== undefined ? _entry$1.v : sliceType.nil), info) }); + } + }; + $ptrType(Selector[0 /* *github.com/gopherjs/gopherjs/compiler.Decl */]).prototype.popPending = function popPending() { + var d, max, s, x; + s = this; + max = s.pendingDecls.$length - 1 >> 0; + d = (x = s.pendingDecls, ((max < 0 || max >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + max])); + s.pendingDecls = $subslice(s.pendingDecls, 0, max); + return d; + }; + $ptrType(Selector[0 /* *github.com/gopherjs/gopherjs/compiler.Decl */]).prototype.AliveDecls = function AliveDecls() { + var {_entry, _i, _i$1, _key, _r, _ref, _ref$1, _tuple, d, dce, dceSelection, dep, info, infos, ok, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + dceSelection = new $global.Map(); + /* while (true) { */ case 1: + /* if (!(!((s.pendingDecls.$length === 0)))) { break; } */ if(!(!((s.pendingDecls.$length === 0)))) { $s = 2; continue; } + d = s.popPending(); + dce = d.Dce(); + _key = d; (dceSelection || $throwRuntimeError("assignment to entry in nil map")).set(ptrType.keyFor(_key), { k: _key, v: $clone(new structType.ptr(), structType) }); + _r = dce.getDeps(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _ref = _r; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + dep = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _tuple = (_entry = $mapIndex(s.byFilter,$String.keyFor(dep)), _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); + infos = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $mapDelete(s.byFilter, $String.keyFor(dep)); + _ref$1 = infos; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + info = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (info.objectFilter === dep) { + info.objectFilter = ""; + } + if (info.methodFilter === dep) { + info.methodFilter = ""; + } + if (info.objectFilter === "" && info.methodFilter === "") { + s.pendingDecls = $append(s.pendingDecls, info.decl); + } + _i$1++; + } + } + _i++; + $s = 4; continue; + case 5: + $s = 1; continue; + case 2: + $s = -1; return dceSelection; + /* */ } return; } var $f = {$blk: AliveDecls, $c: true, $r, _entry, _i, _i$1, _key, _r, _ref, _ref$1, _tuple, d, dce, dceSelection, dep, info, infos, ok, s, $s};return $f; + }; + $ptrType(Info).prototype.String = function String() { + var {$24r, _r, _r$1, d, names, tags, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + tags = ""; + if (d.alive) { + tags = tags + ("[alive] "); + } + if (d.unnamed()) { + tags = tags + ("[unnamed] "); + } + names = new sliceType$1([]); + if (d.objectFilter.length > 0) { + names = $append(names, d.objectFilter + " "); + } + if (d.methodFilter.length > 0) { + names = $append(names, d.methodFilter + " "); + } + _r = d.getDeps(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = strings.Join(_r, ", "); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = tags + strings.Join(names, "& ") + "-> [" + _r$1 + "]"; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: String, $c: true, $r, $24r, _r, _r$1, d, names, tags, $s};return $f; + }; + $ptrType(Info).prototype.unnamed = function unnamed() { + var d; + d = this; + return d.objectFilter === "" && d.methodFilter === ""; + }; + $ptrType(Info).prototype.isAlive = function isAlive() { + var d; + d = this; + return d.alive || d.unnamed(); + }; + $ptrType(Info).prototype.SetAsAlive = function SetAsAlive() { + var d; + d = this; + d.alive = true; + }; + $ptrType(Info).prototype.SetName = function SetName(o, tNest, tArgs) { + var {_arg, _r, _r$1, _r$2, _tuple, d, o, tArgs, tNest, $s, $r, $c} = $restore(this, {o, tNest, tArgs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + /* */ if (!d.unnamed()) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!d.unnamed()) { */ case 1: + _r = d.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = new $String(_r); + _r$1 = fmt.Errorf("may only set the name once for %s", new sliceType$2([_arg])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $panic(_r$1); + /* } */ case 2: + _r$2 = getFilters(o, tNest, tArgs); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple = _r$2; + d.objectFilter = _tuple[0]; + d.methodFilter = _tuple[1]; + $s = -1; return; + /* */ } return; } var $f = {$blk: SetName, $c: true, $r, _arg, _r, _r$1, _r$2, _tuple, d, o, tArgs, tNest, $s};return $f; + }; + $ptrType(Info).prototype.addDep = function addDep(o, tNest, tArgs) { + var {_r, _tuple, d, methodFilter, o, objectFilter, tArgs, tNest, $s, $r, $c} = $restore(this, {o, tNest, tArgs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + d = this; + _r = getFilters(o, tNest, tArgs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + objectFilter = _tuple[0]; + methodFilter = _tuple[1]; + d.addDepName(objectFilter); + d.addDepName(methodFilter); + $s = -1; return; + /* */ } return; } var $f = {$blk: addDep, $c: true, $r, _r, _tuple, d, methodFilter, o, objectFilter, tArgs, tNest, $s};return $f; + }; + $ptrType(Info).prototype.addDepName = function addDepName(depName) { + var _key, d, depName; + d = this; + if (depName.length > 0) { + if (d.deps === false) { + d.deps = new $global.Map(); + } + _key = depName; (d.deps || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: $clone(new structType.ptr(), structType) }); + } + }; + $ptrType(Info).prototype.getDeps = function getDeps() { + var {_entry, _i, _key, _keys, _ref, _size, dep, deps, i, id, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + id = this; + deps = $makeSlice(sliceType$1, (id.deps ? id.deps.size : 0)); + i = 0; + _ref = id.deps; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + dep = _entry.k; + ((i < 0 || i >= deps.$length) ? ($throwRuntimeError("index out of range"), undefined) : deps.$array[deps.$offset + i] = dep); + i = i + (1) >> 0; + _i++; + } + $r = sort.Strings(deps); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return deps; + /* */ } return; } var $f = {$blk: getDeps, $c: true, $r, _entry, _i, _key, _keys, _ref, _size, dep, deps, i, id, $s};return $f; + }; + getFilters = function getFilters$1(o, nestTArgs, tArgs) { + var {_r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, f, methodFilter, named, nestTArgs, o, objectFilter, ok, ok$1, ok$2, ptrType$6, recv, sig, tArgs, typ, $s, $r, $c} = $restore(this, {o, nestTArgs, tArgs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + objectFilter = ""; + methodFilter = ""; + _tuple = $assertType(o, ptrType$2, true); + f = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + sig = $assertType(f.object.Type(), ptrType$3); + recv = sig.Recv(); + /* */ if (!(recv === ptrType$4.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(recv === ptrType$4.nil)) { */ case 3: + typ = recv.object.Type(); + _tuple$1 = $assertType(typ, ptrType$5, true); + ptrType$6 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + typ = ptrType$6.Elem(); + } + if (tArgs.$length === 0) { + tArgs = getTypeArgs(typ); + } + _tuple$2 = $assertType(typ, ptrType$7, true); + named = _tuple$2[0]; + ok$2 = _tuple$2[1]; + /* */ if (ok$2) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (ok$2) { */ case 5: + _r = getObjectFilter(named.Obj(), sliceType$3.nil, tArgs); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + objectFilter = _r; + /* } */ case 6: + _r$1 = o.Exported(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!_r$1) { */ case 8: + _r$2 = getMethodFilter(o, tArgs); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + methodFilter = _r$2; + /* } */ case 9: + $s = -1; return [objectFilter, methodFilter]; + /* } */ case 4: + /* } */ case 2: + _r$3 = getObjectFilter(o, nestTArgs, tArgs); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + objectFilter = _r$3; + $s = -1; return [objectFilter, methodFilter]; + /* */ } return; } var $f = {$blk: getFilters$1, $c: true, $r, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, f, methodFilter, named, nestTArgs, o, objectFilter, ok, ok$1, ok$2, ptrType$6, recv, sig, tArgs, typ, $s};return $f; + }; + getObjectFilter = function getObjectFilter$1(o, nestTArgs, tArgs) { + var {$24r, _r, nestTArgs, o, tArgs, $s, $r, $c} = $restore(this, {o, nestTArgs, tArgs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = (new filterGen.ptr(false, sliceType$4.nil)).Object(o, nestTArgs, tArgs); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: getObjectFilter$1, $c: true, $r, $24r, _r, nestTArgs, o, tArgs, $s};return $f; + }; + getMethodFilter = function getMethodFilter$1(o, tArgs) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, gen, o, ok, sig, tArgs, tParams, $s, $r, $c} = $restore(this, {o, tArgs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = o.Type(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$3, true); + sig = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok) { */ case 2: + gen = new filterGen.ptr(false, sliceType$4.nil); + _r$1 = o.Type(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = getTypeParams(_r$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + tParams = _r$2; + if (tArgs.$length === 0) { + tArgs = getTypeArgs(sig); + } + if (tArgs.$length > 0) { + gen.addReplacements(tParams, tArgs); + } + _r$3 = objectName(o); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = gen.Signature(sig); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$3 + _r$4; + $s = 8; case 8: return $24r; + /* } */ case 3: + $s = -1; return ""; + /* */ } return; } var $f = {$blk: getMethodFilter$1, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, _tuple, gen, o, ok, sig, tArgs, tParams, $s};return $f; + }; + objectName = function objectName$1(o) { + var {$24r, _r, _r$1, _r$2, _r$3, _r$4, nest, o, prefix, recv, $s, $r, $c} = $restore(this, {o}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + prefix = ""; + _r = o.Pkg(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!(_r === ptrType$8.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(_r === ptrType$8.nil)) { */ case 1: + _r$1 = o.Pkg(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = _r$1.Path(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + prefix = prefix + (_r$2 + "."); + /* } */ case 2: + _r$3 = typeparams.FindNestingFunc(o); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + nest = _r$3; + if (!(nest === ptrType$2.nil) && !($interfaceIsEqual(nest, o))) { + recv = typesutil.RecvType($assertType(nest.object.Type(), ptrType$3)); + if (!(recv === ptrType$7.nil)) { + prefix = prefix + (recv.Obj().object.Name() + ":"); + } + prefix = prefix + (nest.object.Name() + ":"); + } + _r$4 = o.Name(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = prefix + _r$4; + $s = 8; case 8: return $24r; + /* */ } return; } var $f = {$blk: objectName$1, $c: true, $r, $24r, _r, _r$1, _r$2, _r$3, _r$4, nest, o, prefix, recv, $s};return $f; + }; + getNestTypeParams = function getNestTypeParams$1(o) { + var {_r, fn, i, nestTParams, o, tp, $s, $r, $c} = $restore(this, {o}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = typeparams.FindNestingFunc(o); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + fn = _r; + if (fn === ptrType$2.nil || $interfaceIsEqual(fn, o)) { + $s = -1; return sliceType$3.nil; + } + tp = typeparams.SignatureTypeParams($assertType(fn.object.Type(), ptrType$3)); + nestTParams = $makeSlice(sliceType$3, tp.Len()); + i = 0; + while (true) { + if (!(i < tp.Len())) { break; } + ((i < 0 || i >= nestTParams.$length) ? ($throwRuntimeError("index out of range"), undefined) : nestTParams.$array[nestTParams.$offset + i] = tp.At(i)); + i = i + (1) >> 0; + } + $s = -1; return nestTParams; + /* */ } return; } var $f = {$blk: getNestTypeParams$1, $c: true, $r, _r, fn, i, nestTParams, o, tp, $s};return $f; + }; + getTypeArgs = function getTypeArgs$1(typ) { + var _ref, t, t$1, typ; + _ref = typ; + if ($assertType(_ref, ptrType$5, true)[1]) { + t = _ref.$val; + return getTypeArgs(t.Elem()); + } else if ($assertType(_ref, ptrType$7, true)[1]) { + t$1 = _ref.$val; + return typeListToSlice(t$1.TypeArgs()); + } + return sliceType$3.nil; + }; + getTypeParams = function getTypeParams$1(typ) { + var {$24r, _r, _r$1, _ref, t, t$1, t$2, typ, typeParams, typeParams$1, typeParams$2, $s, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _ref = typ; + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref, ptrType$5, true)[1]) { */ case 1: + t = _ref.$val; + _r = getTypeParams(t.Elem()); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 6; case 6: return $24r; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 2: + t$1 = _ref.$val; + _r$1 = t$1.TypeParams(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + typeParams = _r$1; + if (!(typeParams === ptrType$9.nil)) { + $s = -1; return typeParamListToSlice(typeParams); + } + $s = 4; continue; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 3: + t$2 = _ref.$val; + typeParams$1 = t$2.RecvTypeParams(); + if (!(typeParams$1 === ptrType$9.nil)) { + $s = -1; return typeParamListToSlice(typeParams$1); + } + typeParams$2 = t$2.TypeParams(); + if (!(typeParams$2 === ptrType$9.nil)) { + $s = -1; return typeParamListToSlice(typeParams$2); + } + /* } */ case 4: + $s = -1; return sliceType$3.nil; + /* */ } return; } var $f = {$blk: getTypeParams$1, $c: true, $r, $24r, _r, _r$1, _ref, t, t$1, t$2, typ, typeParams, typeParams$1, typeParams$2, $s};return $f; + }; + typeListToSlice = function typeListToSlice$1(typeArgs) { + var _i, _ref, i, tArgs, typeArgs; + tArgs = $makeSlice(sliceType$3, typeArgs.Len()); + _ref = tArgs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= tArgs.$length) ? ($throwRuntimeError("index out of range"), undefined) : tArgs.$array[tArgs.$offset + i] = typeArgs.At(i)); + _i++; + } + return tArgs; + }; + typeParamListToSlice = function typeParamListToSlice$1(typeParams) { + var _i, _ref, i, tParams, typeParams; + tParams = $makeSlice(sliceType$3, typeParams.Len()); + _ref = tParams; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= tParams.$length) ? ($throwRuntimeError("index out of range"), undefined) : tParams.$array[tParams.$offset + i] = typeParams.At(i)); + _i++; + } + return tParams; + }; + $ptrType(processingGroup).prototype.is = function is(o, nestTArgs, tArgs) { + var _i, _i$1, _ref, _ref$1, i, i$1, nestTArgs, o, p, tArgs, ta, ta$1, x, x$1; + p = this; + if (!((p.nestTArgs.$length === nestTArgs.$length)) || !((p.tArgs.$length === tArgs.$length)) || !($interfaceIsEqual(p.o, o))) { + return false; + } + _ref = nestTArgs; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ta = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!($interfaceIsEqual((x = p.nestTArgs, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), ta))) { + return false; + } + _i++; + } + _ref$1 = tArgs; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + i$1 = _i$1; + ta$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + if (!($interfaceIsEqual((x$1 = p.tArgs, ((i$1 < 0 || i$1 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + i$1])), ta$1))) { + return false; + } + _i$1++; + } + return true; + }; + processingGroup.prototype.is = function(...$args) { return this.$val.is(...$args); }; + $ptrType(filterGen).prototype.addReplacements = function addReplacements(from, to) { + var _key, count, from, gen, i, to; + gen = this; + if ((from.$length === 0) || (to.$length === 0)) { + return; + } + if (gen.replacement === false) { + gen.replacement = $makeMap(types.Type.keyFor, []); + } + count = from.$length; + if (count > to.$length) { + count = to.$length; + } + i = 0; + while (true) { + if (!(i < count)) { break; } + if (!($interfaceIsEqual(((i < 0 || i >= from.$length) ? ($throwRuntimeError("index out of range"), undefined) : from.$array[from.$offset + i]), ((i < 0 || i >= to.$length) ? ($throwRuntimeError("index out of range"), undefined) : to.$array[to.$offset + i])))) { + _key = ((i < 0 || i >= from.$length) ? ($throwRuntimeError("index out of range"), undefined) : from.$array[from.$offset + i]); (gen.replacement || $throwRuntimeError("assignment to entry in nil map")).set(types.Type.keyFor(_key), { k: _key, v: ((i < 0 || i >= to.$length) ? ($throwRuntimeError("index out of range"), undefined) : to.$array[to.$offset + i]) }); + } + i = i + (1) >> 0; + } + }; + $ptrType(filterGen).prototype.pushGenerics = function pushGenerics(o, nestTArgs, tArgs) { + var {_entry, _i, _key, _key$1, _keys, _r, _r$1, _r$2, _r$3, _r$4, _ref, _size, gen, nestTArgs, nestTParams, o, oldReplacement, tArgs, tParams, ta, tp, $s, $r, $c} = $restore(this, {o, nestTArgs, tArgs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gen = [gen]; + oldReplacement = [oldReplacement]; + gen[0] = this; + oldReplacement[0] = gen[0].replacement; + gen[0].replacement = $makeMap(types.Type.keyFor, []); + _ref = oldReplacement[0]; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + tp = _entry.k; + ta = _entry.v; + _key$1 = tp; (gen[0].replacement || $throwRuntimeError("assignment to entry in nil map")).set(types.Type.keyFor(_key$1), { k: _key$1, v: ta }); + _i++; + } + _r = getNestTypeParams(o); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + nestTParams = _r; + if (nestTArgs.$length > 0) { + gen[0].addReplacements(nestTParams, nestTArgs); + } else { + nestTArgs = nestTParams; + } + _r$1 = o.Type(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = getTypeParams(_r$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + tParams = _r$2; + /* */ if (tArgs.$length === 0) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (tArgs.$length === 0) { */ case 4: + _r$3 = o.Type(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = getTypeArgs(_r$3); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + tArgs = _r$4; + /* } */ case 5: + if (tArgs.$length > 0) { + gen[0].addReplacements(tParams, tArgs); + } else { + tArgs = tParams; + } + $s = -1; return [nestTArgs, tArgs, (function(gen, oldReplacement) { return function filterGen·pushGenerics·func1() { + gen[0].replacement = oldReplacement[0]; + }; })(gen, oldReplacement)]; + /* */ } return; } var $f = {$blk: pushGenerics, $c: true, $r, _entry, _i, _key, _key$1, _keys, _r, _r$1, _r$2, _r$3, _r$4, _ref, _size, gen, nestTArgs, nestTParams, o, oldReplacement, tArgs, tParams, ta, tp, $s};return $f; + }; + $ptrType(filterGen).prototype.startProcessing = function startProcessing(o, nestTArgs, tArgs) { + var _i, _ref, gen, nestTArgs, o, p, tArgs; + gen = this; + _ref = gen.inProgress; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + p = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), processingGroup); + if ($clone(p, processingGroup).is(o, nestTArgs, tArgs)) { + return false; + } + _i++; + } + gen.inProgress = $append(gen.inProgress, new processingGroup.ptr(o, nestTArgs, tArgs)); + return true; + }; + $ptrType(filterGen).prototype.stopProcessing = function stopProcessing() { + var gen; + gen = this; + gen.inProgress = $subslice(gen.inProgress, 0, (gen.inProgress.$length - 1 >> 0)); + }; + $ptrType(filterGen).prototype.Object = function Object(o, nestTArgs, tArgs) { + var {$24r, _r, _r$1, _r$2, _tuple, filter, gen, nestTArgs, o, popGenerics, tArgs, $s, $deferred, $r, $c} = $restore(this, {o, nestTArgs, tArgs}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + gen = this; + _r = objectName(o); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + filter = _r; + _r$1 = gen.pushGenerics(o, nestTArgs, tArgs); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple = _r$1; + nestTArgs = _tuple[0]; + tArgs = _tuple[1]; + popGenerics = _tuple[2]; + $deferred.push([popGenerics, []]); + /* */ if (tArgs.$length > 0 || nestTArgs.$length > 0) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (tArgs.$length > 0 || nestTArgs.$length > 0) { */ case 3: + /* */ if (gen.startProcessing(o, nestTArgs, tArgs)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (gen.startProcessing(o, nestTArgs, tArgs)) { */ case 5: + _r$2 = gen.TypeArgs(nestTArgs, tArgs); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + filter = filter + (_r$2); + gen.stopProcessing(); + $s = 7; continue; + /* } else { */ case 6: + filter = filter + ("[...]"); + /* } */ case 7: + /* } */ case 4: + $24r = filter; + $s = 9; case 9: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ""; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Object, $c: true, $r, $24r, _r, _r$1, _r$2, _tuple, filter, gen, nestTArgs, o, popGenerics, tArgs, $s, $deferred};return $f; } } + }; + $ptrType(filterGen).prototype.Signature = function Signature(sig) { + var {_1, _r, _r$1, _r$2, filter, gen, sig, $s, $r, $c} = $restore(this, {sig}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gen = this; + _r = gen.Tuple(sig.Params(), sig.Variadic()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + filter = "(" + _r + ")"; + _1 = sig.Results().Len(); + /* */ if (_1 === (0)) { $s = 3; continue; } + /* */ if (_1 === (1)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (0)) { */ case 3: + /* break; */ $s = 2; continue; + $s = 6; continue; + /* } else if (_1 === (1)) { */ case 4: + _r$1 = gen.Type(sig.Results().At(0).object.Type()); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + filter = filter + (" " + _r$1); + $s = 6; continue; + /* } else { */ case 5: + _r$2 = gen.Tuple(sig.Results(), false); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + filter = filter + ("(" + _r$2 + ")"); + /* } */ case 6: + case 2: + $s = -1; return filter; + /* */ } return; } var $f = {$blk: Signature, $c: true, $r, _1, _r, _r$1, _r$2, filter, gen, sig, $s};return $f; + }; + $ptrType(filterGen).prototype.TypeArgs = function TypeArgs(nestTArgs, tArgs) { + var {$24r, _r, _r$1, gen, head, nestTArgs, tArgs, toStr, $s, $r, $c} = $restore(this, {nestTArgs, tArgs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gen = [gen]; + gen[0] = this; + toStr = (function(gen) { return function filterGen·TypeArgs·func1(t) { + var {_i, _r, _ref, i, parts, t, ta, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + parts = $makeSlice(sliceType$1, t.$length); + _ref = t; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + ta = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r = gen[0].Type(ta); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i] = _r); + _i++; + $s = 1; continue; + case 2: + $s = -1; return strings.Join(parts, ", "); + /* */ } return; } var $f = {$blk: filterGen·TypeArgs·func1, $c: true, $r, _i, _r, _ref, i, parts, t, ta, $s};return $f; + }; })(gen); + head = "["; + /* */ if (nestTArgs.$length > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (nestTArgs.$length > 0) { */ case 1: + _r = toStr(nestTArgs); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + head = head + (_r + ";"); + if (tArgs.$length > 0) { + head = head + (" "); + } + /* } */ case 2: + _r$1 = toStr(tArgs); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = head + _r$1 + "]"; + $s = 5; case 5: return $24r; + /* */ } return; } var $f = {$blk: TypeArgs, $c: true, $r, $24r, _r, _r$1, gen, head, nestTArgs, tArgs, toStr, $s};return $f; + }; + $ptrType(filterGen).prototype.Tuple = function Tuple(t, variadic) { + var {_i, _r, _r$1, _ref, _tuple, argType, count, gen, i, ok, parts, slice, t, variadic, $s, $r, $c} = $restore(this, {t, variadic}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gen = this; + count = t.Len(); + parts = $makeSlice(sliceType$1, count); + _ref = parts; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + argType = t.At(i).object.Type(); + /* */ if ((i === (count - 1 >> 0)) && variadic) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((i === (count - 1 >> 0)) && variadic) { */ case 3: + _tuple = $assertType(argType, ptrType$10, true); + slice = _tuple[0]; + ok = _tuple[1]; + if (ok) { + argType = slice.Elem(); + } + _r = gen.Type(argType); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i] = "..." + _r); + $s = 5; continue; + /* } else { */ case 4: + _r$1 = gen.Type(argType); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i] = _r$1); + /* } */ case 5: + _i++; + $s = 1; continue; + case 2: + $s = -1; return strings.Join(parts, ", "); + /* */ } return; } var $f = {$blk: Tuple, $c: true, $r, _i, _r, _r$1, _ref, _tuple, argType, count, gen, i, ok, parts, slice, t, variadic, $s};return $f; + }; + $ptrType(filterGen).prototype.Type = function Type(typ) { + var {$24r, $24r$1, $24r$10, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, $24r$9, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, gen, t, t$1, t$10, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, typ, $s, $r, $c} = $restore(this, {typ}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gen = this; + _ref = typ; + /* */ if ($assertType(_ref, ptrType$11, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$12, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$7, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$5, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$3, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$10, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if ($assertType(_ref, ptrType$11, true)[1]) { */ case 1: + t = _ref.$val; + _r = gen.Type(t.Elem()); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = "[" + strconv.FormatInt(t.Len(), 10) + "]" + _r; + $s = 14; case 14: return $24r; + /* } else if ($assertType(_ref, ptrType$12, true)[1]) { */ case 2: + t$1 = _ref.$val; + _r$1 = gen.Type(t$1.Elem()); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = "chan " + _r$1; + $s = 16; case 16: return $24r$1; + /* } else if ($assertType(_ref, ptrType$13, true)[1]) { */ case 3: + t$2 = _ref.$val; + _r$2 = gen.Interface(t$2); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$2 = _r$2; + $s = 18; case 18: return $24r$2; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 4: + t$3 = _ref.$val; + _r$3 = gen.Type(t$3.Key()); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = gen.Type(t$3.Elem()); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$3 = "map[" + _r$3 + "]" + _r$4; + $s = 21; case 21: return $24r$3; + /* } else if ($assertType(_ref, ptrType$7, true)[1]) { */ case 5: + t$4 = _ref.$val; + _r$5 = gen.Object(t$4.Obj(), sliceType$3.nil, typeListToSlice(t$4.TypeArgs())); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + $24r$4 = _r$5; + $s = 23; case 23: return $24r$4; + /* } else if ($assertType(_ref, ptrType$5, true)[1]) { */ case 6: + t$5 = _ref.$val; + _r$6 = gen.Type(t$5.Elem()); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$5 = "*" + _r$6; + $s = 25; case 25: return $24r$5; + /* } else if ($assertType(_ref, ptrType$3, true)[1]) { */ case 7: + t$6 = _ref.$val; + _r$7 = gen.Signature(t$6); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + $24r$6 = "func" + _r$7; + $s = 27; case 27: return $24r$6; + /* } else if ($assertType(_ref, ptrType$10, true)[1]) { */ case 8: + t$7 = _ref.$val; + _r$8 = gen.Type(t$7.Elem()); /* */ $s = 28; case 28: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + $24r$7 = "[]" + _r$8; + $s = 29; case 29: return $24r$7; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 9: + t$8 = _ref.$val; + _r$9 = gen.Struct(t$8); /* */ $s = 30; case 30: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + $24r$8 = _r$9; + $s = 31; case 31: return $24r$8; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 10: + t$9 = _ref.$val; + _r$10 = gen.TypeParam(t$9); /* */ $s = 32; case 32: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $24r$9 = _r$10; + $s = 33; case 33: return $24r$9; + /* } else { */ case 11: + t$10 = _ref; + _r$11 = t$10.String(); /* */ $s = 34; case 34: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $24r$10 = _r$11; + $s = 35; case 35: return $24r$10; + /* } */ case 12: + $s = -1; return ""; + /* */ } return; } var $f = {$blk: Type, $c: true, $r, $24r, $24r$1, $24r$10, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, $24r$9, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, gen, t, t$1, t$10, t$2, t$3, t$4, t$5, t$6, t$7, t$8, t$9, typ, $s};return $f; + }; + $ptrType(filterGen).prototype.Union = function Union(u) { + var {_i, _r, _ref, gen, i, part, parts, term, u, $s, $r, $c} = $restore(this, {u}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gen = this; + parts = $makeSlice(sliceType$1, u.Len()); + _ref = parts; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + term = u.Term(i); + _r = gen.Type(term.Type()); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + part = _r; + if (term.Tilde()) { + part = "~" + part; + } + ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i] = part); + _i++; + $s = 1; continue; + case 2: + $r = sort.Strings(parts); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return strings.Join(parts, "|"); + /* */ } return; } var $f = {$blk: Union, $c: true, $r, _i, _r, _ref, gen, i, part, parts, term, u, $s};return $f; + }; + $ptrType(filterGen).prototype.Interface = function Interface(inter) { + var {_i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, fn, gen, i, i$1, inter, ok, parts, union, $s, $r, $c} = $restore(this, {inter}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gen = this; + _r = inter.NumMethods(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + parts = $makeSlice(sliceType$1, _r); + _ref = parts; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + i = _i; + _r$1 = inter.Method(i); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + fn = _r$1; + _r$2 = gen.Signature($assertType(fn.object.Type(), ptrType$3)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i] = fn.object.Id() + _r$2); + _i++; + $s = 2; continue; + case 3: + i$1 = 0; + /* while (true) { */ case 6: + /* if (!(i$1 < inter.NumEmbeddeds())) { break; } */ if(!(i$1 < inter.NumEmbeddeds())) { $s = 7; continue; } + _tuple = $assertType(inter.EmbeddedType(i$1), ptrType$17, true); + union = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (ok) { */ case 8: + _r$3 = gen.Union(union); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + parts = $append(parts, _r$3); + /* } */ case 9: + i$1 = i$1 + (1) >> 0; + $s = 6; continue; + case 7: + $r = sort.Strings(parts); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (parts.$length === 0) { + $s = -1; return "any"; + } + _r$4 = inter.NumMethods(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + /* */ if ((_r$4 === 0) && (parts.$length === 1)) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if ((_r$4 === 0) && (parts.$length === 1)) { */ case 12: + $s = -1; return (0 >= parts.$length ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + 0]); + /* } */ case 13: + $s = -1; return "interface{ " + strings.Join(parts, "; ") + " }"; + /* */ } return; } var $f = {$blk: Interface, $c: true, $r, _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, fn, gen, i, i$1, inter, ok, parts, union, $s};return $f; + }; + $ptrType(filterGen).prototype.Struct = function Struct(s) { + var {_i, _r, _ref, f, gen, i, parts, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gen = this; + if (s.NumFields() === 0) { + $s = -1; return "struct{}"; + } + parts = $makeSlice(sliceType$1, s.NumFields()); + _ref = parts; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + f = s.Field(i); + _r = gen.Type(f.object.Type()); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ((i < 0 || i >= parts.$length) ? ($throwRuntimeError("index out of range"), undefined) : parts.$array[parts.$offset + i] = f.object.Id() + " " + _r); + _i++; + $s = 1; continue; + case 2: + $s = -1; return "struct{ " + strings.Join(parts, "; ") + " }"; + /* */ } return; } var $f = {$blk: Struct, $c: true, $r, _i, _r, _ref, f, gen, i, parts, s, $s};return $f; + }; + $ptrType(filterGen).prototype.TypeParam = function TypeParam(t) { + var {$24r, $24r$1, _entry, _r, _r$1, _tuple, exists, gen, inst, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gen = this; + _tuple = (_entry = $mapIndex(gen.replacement,types.Type.keyFor(t)), _entry !== undefined ? [_entry.v, true] : [$ifaceNil, false]); + inst = _tuple[0]; + exists = _tuple[1]; + /* */ if (exists) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (exists) { */ case 1: + _r = gen.Type(inst); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + if ($interfaceIsEqual(t.Constraint(), $ifaceNil)) { + $s = -1; return "any"; + } + _r$1 = gen.Type(t.Constraint()); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: TypeParam, $c: true, $r, $24r, $24r$1, _entry, _r, _r$1, _tuple, exists, gen, inst, t, $s};return $f; + }; + $ptrType(Collector).prototype.CollectDCEDeps = function CollectDCEDeps(decl, f) { + var {_r, c, decl, f, $s, $deferred, $r, $c} = $restore(this, {decl, f}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + c = [c]; + c[0] = this; + if (!(c[0].dce === ptrType$18.nil)) { + $panic(errors.New("called CollectDCEDeps inside another CollectDCEDeps call")); + } + _r = decl.Dce(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + c[0].dce = _r; + $deferred.push([(function(c) { return function Collector·CollectDCEDeps·func1() { + c[0].dce = ptrType$18.nil; + }; })(c), []]); + $r = f(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: CollectDCEDeps, $c: true, $r, _r, c, decl, f, $s, $deferred};return $f; } } + }; + $ptrType(Collector).prototype.DeclareDCEDep = function DeclareDCEDep(o, tNest, tArgs) { + var {c, o, tArgs, tNest, $s, $r, $c} = $restore(this, {o, tNest, tArgs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + /* */ if (!(c.dce === ptrType$18.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(c.dce === ptrType$18.nil)) { */ case 1: + $r = c.dce.addDep(o, tNest, tArgs); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: DeclareDCEDep, $c: true, $r, c, o, tArgs, tNest, $s};return $f; + }; + ptrType$19.methods = [{prop: "Include", name: "Include", pkg: "", typ: $funcType([ptrType, $Bool], [], false)}, {prop: "popPending", name: "popPending", pkg: "github.com/gopherjs/gopherjs/compiler/internal/dce", typ: $funcType([], [ptrType], false)}, {prop: "AliveDecls", name: "AliveDecls", pkg: "", typ: $funcType([], [mapType], false)}]; + ptrType$18.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "unnamed", name: "unnamed", pkg: "github.com/gopherjs/gopherjs/compiler/internal/dce", typ: $funcType([], [$Bool], false)}, {prop: "isAlive", name: "isAlive", pkg: "github.com/gopherjs/gopherjs/compiler/internal/dce", typ: $funcType([], [$Bool], false)}, {prop: "SetAsAlive", name: "SetAsAlive", pkg: "", typ: $funcType([], [], false)}, {prop: "SetName", name: "SetName", pkg: "", typ: $funcType([types.Object, sliceType$3, sliceType$3], [], false)}, {prop: "addDep", name: "addDep", pkg: "github.com/gopherjs/gopherjs/compiler/internal/dce", typ: $funcType([types.Object, sliceType$3, sliceType$3], [], false)}, {prop: "addDepName", name: "addDepName", pkg: "github.com/gopherjs/gopherjs/compiler/internal/dce", typ: $funcType([$String], [], false)}, {prop: "getDeps", name: "getDeps", pkg: "github.com/gopherjs/gopherjs/compiler/internal/dce", typ: $funcType([], [sliceType$1], false)}]; + processingGroup.methods = [{prop: "is", name: "is", pkg: "github.com/gopherjs/gopherjs/compiler/internal/dce", typ: $funcType([types.Object, sliceType$3, sliceType$3], [$Bool], false)}]; + ptrType$21.methods = [{prop: "addReplacements", name: "addReplacements", pkg: "github.com/gopherjs/gopherjs/compiler/internal/dce", typ: $funcType([sliceType$3, sliceType$3], [], false)}, {prop: "pushGenerics", name: "pushGenerics", pkg: "github.com/gopherjs/gopherjs/compiler/internal/dce", typ: $funcType([types.Object, sliceType$3, sliceType$3], [sliceType$3, sliceType$3, funcType], false)}, {prop: "startProcessing", name: "startProcessing", pkg: "github.com/gopherjs/gopherjs/compiler/internal/dce", typ: $funcType([types.Object, sliceType$3, sliceType$3], [$Bool], false)}, {prop: "stopProcessing", name: "stopProcessing", pkg: "github.com/gopherjs/gopherjs/compiler/internal/dce", typ: $funcType([], [], false)}, {prop: "Object", name: "Object", pkg: "", typ: $funcType([types.Object, sliceType$3, sliceType$3], [$String], false)}, {prop: "Signature", name: "Signature", pkg: "", typ: $funcType([ptrType$3], [$String], false)}, {prop: "TypeArgs", name: "TypeArgs", pkg: "", typ: $funcType([sliceType$3, sliceType$3], [$String], false)}, {prop: "Tuple", name: "Tuple", pkg: "", typ: $funcType([ptrType$20, $Bool], [$String], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([types.Type], [$String], false)}, {prop: "Union", name: "Union", pkg: "", typ: $funcType([ptrType$17], [$String], false)}, {prop: "Interface", name: "Interface", pkg: "", typ: $funcType([ptrType$13], [$String], false)}, {prop: "Struct", name: "Struct", pkg: "", typ: $funcType([ptrType$15], [$String], false)}, {prop: "TypeParam", name: "TypeParam", pkg: "", typ: $funcType([ptrType$16], [$String], false)}]; + ptrType$22.methods = [{prop: "CollectDCEDeps", name: "CollectDCEDeps", pkg: "", typ: $funcType([Decl, funcType], [], false)}, {prop: "DeclareDCEDep", name: "DeclareDCEDep", pkg: "", typ: $funcType([types.Object, sliceType$3, sliceType$3], [], false)}]; + Selector[0 /* *github.com/gopherjs/gopherjs/compiler.Decl */].init("github.com/gopherjs/gopherjs/compiler/internal/dce", [{prop: "byFilter", name: "byFilter", embedded: false, exported: false, typ: mapType$1, tag: ""}, {prop: "pendingDecls", name: "pendingDecls", embedded: false, exported: false, typ: sliceType$5, tag: ""}]); + declInfo[4 /* *github.com/gopherjs/gopherjs/compiler.Decl */].init("github.com/gopherjs/gopherjs/compiler/internal/dce", [{prop: "decl", name: "decl", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "objectFilter", name: "objectFilter", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "methodFilter", name: "methodFilter", embedded: false, exported: false, typ: $String, tag: ""}]); + Info.init("github.com/gopherjs/gopherjs/compiler/internal/dce", [{prop: "alive", name: "alive", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "objectFilter", name: "objectFilter", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "methodFilter", name: "methodFilter", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "deps", name: "deps", embedded: false, exported: false, typ: mapType$2, tag: ""}]); + processingGroup.init("github.com/gopherjs/gopherjs/compiler/internal/dce", [{prop: "o", name: "o", embedded: false, exported: false, typ: types.Object, tag: ""}, {prop: "nestTArgs", name: "nestTArgs", embedded: false, exported: false, typ: sliceType$3, tag: ""}, {prop: "tArgs", name: "tArgs", embedded: false, exported: false, typ: sliceType$3, tag: ""}]); + filterGen.init("github.com/gopherjs/gopherjs/compiler/internal/dce", [{prop: "replacement", name: "replacement", embedded: false, exported: false, typ: mapType$3, tag: ""}, {prop: "inProgress", name: "inProgress", embedded: false, exported: false, typ: sliceType$4, tag: ""}]); + Decl.init([{prop: "Dce", name: "Dce", pkg: "", typ: $funcType([], [ptrType$18], false)}]); + Collector.init("github.com/gopherjs/gopherjs/compiler/internal/dce", [{prop: "dce", name: "dce", embedded: false, exported: false, typ: ptrType$18, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typeparams.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typesutil.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = types.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/linkname"] = (function() { + var $pkg = {}, $init, fmt, astutil, errlist, symbol, ast, token, strings, GoLinkname, GoLinknameSet, ptrType, sliceType, sliceType$1, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, mapType, mapType$1, readLinknameFromComment, isMitigatedVarLinkname, isMitigatedInsertLinkname, ParseGoLinknames, lookupTopNode, errorAt; + fmt = $packages["fmt"]; + astutil = $packages["github.com/gopherjs/gopherjs/compiler/astutil"]; + errlist = $packages["github.com/gopherjs/gopherjs/compiler/errlist"]; + symbol = $packages["github.com/gopherjs/gopherjs/compiler/internal/symbol"]; + ast = $packages["go/ast"]; + token = $packages["go/token"]; + strings = $packages["strings"]; + GoLinkname = $newType(0, $kindStruct, "linkname.GoLinkname", true, "github.com/gopherjs/gopherjs/compiler/linkname", true, function(Implementation_, Reference_) { + this.$val = this; + if (arguments.length === 0) { + this.Implementation = new symbol.Name.ptr("", ""); + this.Reference = new symbol.Name.ptr("", ""); + return; + } + this.Implementation = Implementation_; + this.Reference = Reference_; + }); + GoLinknameSet = $newType(0, $kindStruct, "linkname.GoLinknameSet", true, "github.com/gopherjs/gopherjs/compiler/linkname", true, function(byImplementation_, byReference_) { + this.$val = this; + if (arguments.length === 0) { + this.byImplementation = false; + this.byReference = false; + return; + } + this.byImplementation = byImplementation_; + this.byReference = byReference_; + }); + $pkg.GoLinkname = GoLinkname; + $pkg.GoLinknameSet = GoLinknameSet; + $pkg.$finishSetup = function() { + ptrType = $ptrType(GoLinkname); + sliceType = $sliceType($emptyInterface); + sliceType$1 = $sliceType(GoLinkname); + ptrType$1 = $ptrType(ast.FuncDecl); + ptrType$2 = $ptrType(ast.BlockStmt); + ptrType$3 = $ptrType(ast.GenDecl); + ptrType$4 = $ptrType(ast.TypeSpec); + ptrType$5 = $ptrType(ast.ValueSpec); + ptrType$6 = $ptrType(GoLinknameSet); + mapType = $mapType(symbol.Name, sliceType$1); + mapType$1 = $mapType(symbol.Name, GoLinkname); + readLinknameFromComment = function readLinknameFromComment$1(pkgPath, comment) { + var {$24r, _1, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, comment, extName, extPkg, fields, idx, localName, localPkg, pathOffset, pkgPath, pos, $s, $r, $c} = $restore(this, {pkgPath, comment}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (!strings.HasPrefix(comment.Text, "//go:linkname ")) { + $s = -1; return [ptrType.nil, $ifaceNil]; + } + _r = strings.Fields(comment.Text); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + fields = _r; + _1 = fields.$length; + /* */ if (_1 === (2)) { $s = 3; continue; } + /* */ if (_1 === (3)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (_1 === (2)) { */ case 3: + $s = -1; return [ptrType.nil, $ifaceNil]; + /* } else if (_1 === (3)) { */ case 4: + /* break; */ $s = 2; continue; + $s = 6; continue; + /* } else { */ case 5: + _r$1 = fmt.Errorf("gopherjs: usage requires 2 arguments: //go:linkname localName importPath.extName", sliceType.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = [ptrType.nil, _r$1]; + $s = 8; case 8: return $24r; + /* } */ case 6: + case 2: + _tmp = pkgPath; + _tmp$1 = (1 >= fields.$length ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + 1]); + localPkg = _tmp; + localName = _tmp$1; + _tmp$2 = ""; + _tmp$3 = (2 >= fields.$length ? ($throwRuntimeError("index out of range"), undefined) : fields.$array[fields.$offset + 2]); + extPkg = _tmp$2; + extName = _tmp$3; + if (localName === extName) { + $s = -1; return [ptrType.nil, $ifaceNil]; + } + pathOffset = 0; + pos = strings.LastIndexByte(extName, 47); + if (!((pos === -1))) { + pathOffset = pos + 1 >> 0; + } + idx = strings.IndexByte($substring(extName, pathOffset), 46); + if (!((idx === -1))) { + _tmp$4 = $substring(extName, 0, (pathOffset + idx >> 0)); + _tmp$5 = $substring(extName, ((pathOffset + idx >> 0) + 1 >> 0)); + extPkg = _tmp$4; + extName = _tmp$5; + } + $s = -1; return [new GoLinkname.ptr($clone(new symbol.Name.ptr(extPkg, extName), symbol.Name), $clone(new symbol.Name.ptr(localPkg, localName), symbol.Name)), $ifaceNil]; + /* */ } return; } var $f = {$blk: readLinknameFromComment$1, $c: true, $r, $24r, _1, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, comment, extName, extPkg, fields, idx, localName, localPkg, pathOffset, pkgPath, pos, $s};return $f; + }; + isMitigatedVarLinkname = function isMitigatedVarLinkname$1(sym) { + var _entry, mitigatedLinks, sym; + mitigatedLinks = $makeMap($String.keyFor, [{ k: "reflect.zeroVal", v: true }, { k: "math/bits.overflowError", v: true }, { k: "math/bits.divideError", v: true }]); + return (_entry = $mapIndex(mitigatedLinks,$String.keyFor($clone(sym, symbol.Name).String())), _entry !== undefined ? _entry.v : false); + }; + isMitigatedInsertLinkname = function isMitigatedInsertLinkname$1(sym) { + var _entry, _entry$1, mitigatedLinks, mitigatedPkg, sym; + mitigatedPkg = $makeMap($String.keyFor, [{ k: "runtime", v: true }, { k: "internal/fuzz", v: true }]); + mitigatedLinks = $makeMap($String.keyFor, [{ k: "internal/bytealg.runtime_cmpstring", v: true }, { k: "os.net_newUnixFile", v: true }]); + return (_entry = $mapIndex(mitigatedPkg,$String.keyFor(sym.PkgPath)), _entry !== undefined ? _entry.v : false) || (_entry$1 = $mapIndex(mitigatedLinks,$String.keyFor($clone(sym, symbol.Name).String())), _entry$1 !== undefined ? _entry$1.v : false); + }; + ParseGoLinknames = function ParseGoLinknames$1(fset, pkgPath, file) { + var {_i, _i$1, _r, _r$1, _ref, _ref$1, c, cg, directives, err, errs, file, fset, isUnsafe, pkgPath, processComment, $s, $r, $c} = $restore(this, {fset, pkgPath, file}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + directives = [directives]; + file = [file]; + isUnsafe = [isUnsafe]; + pkgPath = [pkgPath]; + errs = errlist.ErrorList.nil; + directives[0] = sliceType$1.nil; + isUnsafe[0] = astutil.ImportsUnsafe(file[0]); + processComment = (function(directives, file, isUnsafe, pkgPath) { return function ParseGoLinknames·func1(comment) { + var {$24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, comment, decl, err, isFunc, link, localName, node, $s, $r, $c} = $restore(this, {comment}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = readLinknameFromComment(pkgPath[0], comment); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + link = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil)) || link === ptrType.nil) { + $s = -1; return err; + } + /* */ if (!isUnsafe[0]) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!isUnsafe[0]) { */ case 2: + _r$1 = fmt.Errorf("//go:linkname is only allowed in Go files that import \"unsafe\"", sliceType.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 5; case 5: return $24r; + /* } */ case 3: + localName = link.Reference.Name; + node = lookupTopNode(file[0], localName); + /* */ if ($interfaceIsEqual(node, $ifaceNil)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if ($interfaceIsEqual(node, $ifaceNil)) { */ case 6: + _r$2 = fmt.Errorf("//go:linkname local symbol %q is not found in the current source file", new sliceType([new $String(localName)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + $24r$1 = _r$2; + $s = 9; case 9: return $24r$1; + /* } */ case 7: + _tuple$1 = $assertType(node, ptrType$1, true); + decl = _tuple$1[0]; + isFunc = _tuple$1[1]; + /* */ if (!isFunc) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!isFunc) { */ case 10: + if (isMitigatedVarLinkname($clone(link.Reference, symbol.Name))) { + $s = -1; return $ifaceNil; + } + _r$3 = fmt.Errorf("gopherjs: //go:linkname is only supported for functions, got %T", new sliceType([node])); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$2 = _r$3; + $s = 13; case 13: return $24r$2; + /* } */ case 11: + /* */ if (!(decl.Body === ptrType$2.nil)) { $s = 14; continue; } + /* */ $s = 15; continue; + /* if (!(decl.Body === ptrType$2.nil)) { */ case 14: + if (isMitigatedInsertLinkname($clone(link.Reference, symbol.Name))) { + $s = -1; return $ifaceNil; + } + _r$4 = fmt.Errorf("gopherjs: //go:linkname can not insert local implementation into an external package %q", new sliceType([new $String(link.Implementation.PkgPath)])); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$3 = _r$4; + $s = 17; case 17: return $24r$3; + /* } */ case 15: + directives[0] = $append(directives[0], link); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: ParseGoLinknames·func1, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, comment, decl, err, isFunc, link, localName, node, $s};return $f; + }; })(directives, file, isUnsafe, pkgPath); + _ref = file[0].Comments; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + cg = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = cg.List; + _i$1 = 0; + /* while (true) { */ case 3: + /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 4; continue; } + c = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _r = processComment(c); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6: + _r$1 = errorAt(err, fset, c.Pos()); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + errs = $append(errs, _r$1); + /* } */ case 7: + _i$1++; + $s = 3; continue; + case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return [directives[0], errs.ErrOrNil()]; + /* */ } return; } var $f = {$blk: ParseGoLinknames$1, $c: true, $r, _i, _i$1, _r, _r$1, _ref, _ref$1, c, cg, directives, err, errs, file, fset, isUnsafe, pkgPath, processComment, $s};return $f; + }; + $pkg.ParseGoLinknames = ParseGoLinknames; + lookupTopNode = function lookupTopNode$1(file, name) { + var _i, _i$1, _i$2, _ref, _ref$1, _ref$2, _ref$3, _ref$4, d, d$1, decl, file, n, name, s, s$1, spec; + _ref = file.Decls; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + decl = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = decl; + if ($assertType(_ref$1, ptrType$3, true)[1]) { + d = _ref$1.$val; + _ref$2 = d.Specs; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$2.$length)) { break; } + spec = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + _ref$3 = spec; + if ($assertType(_ref$3, ptrType$4, true)[1]) { + s = _ref$3.$val; + if (s.Name.Name === name) { + return s; + } + } else if ($assertType(_ref$3, ptrType$5, true)[1]) { + s$1 = _ref$3.$val; + _ref$4 = s$1.Names; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$4.$length)) { break; } + n = ((_i$2 < 0 || _i$2 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$2]); + if (n.Name === name) { + return s$1; + } + _i$2++; + } + } + _i$1++; + } + } else if ($assertType(_ref$1, ptrType$1, true)[1]) { + d$1 = _ref$1.$val; + if (d$1.Name.Name === name) { + return d$1; + } + } + _i++; + } + return $ifaceNil; + }; + errorAt = function errorAt$1(err, fset, pos) { + var {$24r, _arg, _arg$1, _r, _r$1, err, fset, pos, x, $s, $r, $c} = $restore(this, {err, fset, pos}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fset.Position(pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg = (x = _r, new x.constructor.elem(x)); + _arg$1 = err; + _r$1 = fmt.Errorf("%s: %w", new sliceType([_arg, _arg$1])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: errorAt$1, $c: true, $r, $24r, _arg, _arg$1, _r, _r$1, err, fset, pos, x, $s};return $f; + }; + $ptrType(GoLinknameSet).prototype.Add = function Add(entries) { + var {$24r, _entry, _entry$1, _i, _key, _key$1, _r, _ref, _tuple, e, entries, found, gls, prev, x, x$1, x$2, $s, $r, $c} = $restore(this, {entries}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + gls = this; + if (gls.byImplementation === false) { + gls.byImplementation = $makeMap(symbol.Name.keyFor, []); + } + if (gls.byReference === false) { + gls.byReference = $makeMap(symbol.Name.keyFor, []); + } + _ref = entries; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + e = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), GoLinkname); + _key = $clone(e.Implementation, symbol.Name); (gls.byImplementation || $throwRuntimeError("assignment to entry in nil map")).set(symbol.Name.keyFor(_key), { k: _key, v: $append((_entry = $mapIndex(gls.byImplementation,symbol.Name.keyFor(e.Implementation)), _entry !== undefined ? _entry.v : sliceType$1.nil), e) }); + _tuple = (_entry$1 = $mapIndex(gls.byReference,symbol.Name.keyFor(e.Reference)), _entry$1 !== undefined ? [_entry$1.v, true] : [new GoLinkname.ptr(new symbol.Name.ptr("", ""), new symbol.Name.ptr("", "")), false]); + prev = $clone(_tuple[0], GoLinkname); + found = _tuple[1]; + /* */ if (found) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (found) { */ case 3: + _r = fmt.Errorf("conflicting go:linkname directives: two implementations for %q: %q and %q", new sliceType([(x = e.Reference, new x.constructor.elem(x)), (x$1 = prev.Implementation, new x$1.constructor.elem(x$1)), (x$2 = e.Implementation, new x$2.constructor.elem(x$2))])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 6; case 6: return $24r; + /* } */ case 4: + _key$1 = $clone(e.Reference, symbol.Name); (gls.byReference || $throwRuntimeError("assignment to entry in nil map")).set(symbol.Name.keyFor(_key$1), { k: _key$1, v: $clone(e, GoLinkname) }); + _i++; + $s = 1; continue; + case 2: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Add, $c: true, $r, $24r, _entry, _entry$1, _i, _key, _key$1, _r, _ref, _tuple, e, entries, found, gls, prev, x, x$1, x$2, $s};return $f; + }; + $ptrType(GoLinknameSet).prototype.IsImplementation = function IsImplementation(sym) { + var _entry, _tuple, found, gls, sym; + gls = this; + _tuple = (_entry = $mapIndex(gls.byImplementation,symbol.Name.keyFor(sym)), _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]); + found = _tuple[1]; + return found; + }; + $ptrType(GoLinknameSet).prototype.FindImplementation = function FindImplementation(sym) { + var _entry, _tuple, directive, found, gls, sym; + gls = this; + _tuple = (_entry = $mapIndex(gls.byReference,symbol.Name.keyFor(sym)), _entry !== undefined ? [_entry.v, true] : [new GoLinkname.ptr(new symbol.Name.ptr("", ""), new symbol.Name.ptr("", "")), false]); + directive = $clone(_tuple[0], GoLinkname); + found = _tuple[1]; + return [directive.Implementation, found]; + }; + ptrType$6.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "IsImplementation", name: "IsImplementation", pkg: "", typ: $funcType([symbol.Name], [$Bool], false)}, {prop: "FindImplementation", name: "FindImplementation", pkg: "", typ: $funcType([symbol.Name], [symbol.Name, $Bool], false)}]; + GoLinkname.init("", [{prop: "Implementation", name: "Implementation", embedded: false, exported: true, typ: symbol.Name, tag: ""}, {prop: "Reference", name: "Reference", embedded: false, exported: true, typ: symbol.Name, tag: ""}]); + GoLinknameSet.init("github.com/gopherjs/gopherjs/compiler/linkname", [{prop: "byImplementation", name: "byImplementation", embedded: false, exported: false, typ: mapType, tag: ""}, {prop: "byReference", name: "byReference", embedded: false, exported: false, typ: mapType$1, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = astutil.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errlist.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = symbol.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["embed"] = (function() { + var $pkg = {}, $init, errors, io, fs, time, FS, file, openFile, openDir, sliceType, ptrType, ptrType$1, arrayType, ptrType$2, ptrType$3, sliceType$1, ptrType$4, sliceType$2, dotFile, buildFS, split, trimSlash, sortSearch; + errors = $packages["errors"]; + io = $packages["io"]; + fs = $packages["io/fs"]; + time = $packages["time"]; + FS = $newType(0, $kindStruct, "embed.FS", true, "embed", true, function(files_) { + this.$val = this; + if (arguments.length === 0) { + this.files = ptrType.nil; + return; + } + this.files = files_; + }); + file = $newType(0, $kindStruct, "embed.file", true, "embed", false, function(name_, data_, hash_) { + this.$val = this; + if (arguments.length === 0) { + this.name = ""; + this.data = ""; + this.hash = arrayType.zero(); + return; + } + this.name = name_; + this.data = data_; + this.hash = hash_; + }); + openFile = $newType(0, $kindStruct, "embed.openFile", true, "embed", false, function(f_, offset_) { + this.$val = this; + if (arguments.length === 0) { + this.f = ptrType$1.nil; + this.offset = new $Int64(0, 0); + return; + } + this.f = f_; + this.offset = offset_; + }); + openDir = $newType(0, $kindStruct, "embed.openDir", true, "embed", false, function(f_, files_, offset_) { + this.$val = this; + if (arguments.length === 0) { + this.f = ptrType$1.nil; + this.files = sliceType.nil; + this.offset = 0; + return; + } + this.f = f_; + this.files = files_; + this.offset = offset_; + }); + $pkg.FS = FS; + $pkg.file = file; + $pkg.openFile = openFile; + $pkg.openDir = openDir; + $pkg.$finishSetup = function() { + sliceType = $sliceType(file); + ptrType = $ptrType(sliceType); + ptrType$1 = $ptrType(file); + arrayType = $arrayType($Uint8, 16); + ptrType$2 = $ptrType(openFile); + ptrType$3 = $ptrType(time.Location); + sliceType$1 = $sliceType(fs.DirEntry); + ptrType$4 = $ptrType(openDir); + sliceType$2 = $sliceType($Uint8); + buildFS = function buildFS$1(list) { + var f, files, files$24ptr, i, list, n; + f = new FS.ptr(ptrType.nil); + n = list.$length; + files = $makeSlice(sliceType, n); + i = 0; + while (true) { + if (!(i < n)) { break; } + ((i < 0 || i >= files.$length) ? ($throwRuntimeError("index out of range"), undefined) : files.$array[files.$offset + i]).name = ((i < 0 || i >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + i]).name; + ((i < 0 || i >= files.$length) ? ($throwRuntimeError("index out of range"), undefined) : files.$array[files.$offset + i]).data = ((i < 0 || i >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + i]).data; + arrayType.copy(((i < 0 || i >= files.$length) ? ($throwRuntimeError("index out of range"), undefined) : files.$array[files.$offset + i]).hash, ((i < 0 || i >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + i]).hash); + i = i + (1) >> 0; + } + f.files = (files$24ptr || (files$24ptr = new ptrType(function() { return files; }, function($v) { files = $v; }))); + return f; + }; + split = function split$1(name) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, dir, elem, i, isDir, name; + dir = ""; + elem = ""; + isDir = false; + if (name.charCodeAt((name.length - 1 >> 0)) === 47) { + isDir = true; + name = $substring(name, 0, (name.length - 1 >> 0)); + } + i = name.length - 1 >> 0; + while (true) { + if (!(i >= 0 && !((name.charCodeAt(i) === 47)))) { break; } + i = i - (1) >> 0; + } + if (i < 0) { + _tmp = "."; + _tmp$1 = name; + _tmp$2 = isDir; + dir = _tmp; + elem = _tmp$1; + isDir = _tmp$2; + return [dir, elem, isDir]; + } + _tmp$3 = $substring(name, 0, i); + _tmp$4 = $substring(name, (i + 1 >> 0)); + _tmp$5 = isDir; + dir = _tmp$3; + elem = _tmp$4; + isDir = _tmp$5; + return [dir, elem, isDir]; + }; + trimSlash = function trimSlash$1(name) { + var name; + if (name.length > 0 && (name.charCodeAt((name.length - 1 >> 0)) === 47)) { + return $substring(name, 0, (name.length - 1 >> 0)); + } + return name; + }; + $ptrType(file).prototype.Name = function Name() { + var _tuple, elem, f; + f = this; + _tuple = split(f.name); + elem = _tuple[1]; + return elem; + }; + $ptrType(file).prototype.Size = function Size() { + var f; + f = this; + return (new $Int64(0, f.data.length)); + }; + $ptrType(file).prototype.ModTime = function ModTime() { + var f; + f = this; + return new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$3.nil); + }; + $ptrType(file).prototype.IsDir = function IsDir() { + var _tuple, f, isDir; + f = this; + _tuple = split(f.name); + isDir = _tuple[2]; + return isDir; + }; + $ptrType(file).prototype.Sys = function Sys() { + var f; + f = this; + return $ifaceNil; + }; + $ptrType(file).prototype.Type = function Type() { + var f; + f = this; + return new fs.FileMode(f.Mode()).Type(); + }; + $ptrType(file).prototype.Info = function Info() { + var f; + f = this; + return [f, $ifaceNil]; + }; + $ptrType(file).prototype.Mode = function Mode() { + var f; + f = this; + if (f.IsDir()) { + return 2147484013; + } + return 292; + }; + $ptrType(FS).prototype.lookup = function lookup(name) { + var {_r, _tuple, dir, elem, f, files, i, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dir = [dir]; + elem = [elem]; + files = [files]; + f = this; + if (!fs.ValidPath(name)) { + $s = -1; return ptrType$1.nil; + } + if (name === ".") { + $s = -1; return dotFile; + } + if (f.files === ptrType.nil) { + $s = -1; return ptrType$1.nil; + } + _tuple = split(name); + dir[0] = _tuple[0]; + elem[0] = _tuple[1]; + files[0] = f.files.$get(); + _r = sortSearch(files[0].$length, (function(dir, elem, files) { return function FS·lookup·func1(i) { + var _tuple$1, i, idir, ielem; + _tuple$1 = split(((i < 0 || i >= files[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : files[0].$array[files[0].$offset + i]).name); + idir = _tuple$1[0]; + ielem = _tuple$1[1]; + return idir > dir[0] || idir === dir[0] && ielem >= elem[0]; + }; })(dir, elem, files)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + if (i < files[0].$length && trimSlash(((i < 0 || i >= files[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : files[0].$array[files[0].$offset + i]).name) === name) { + $s = -1; return ((i < 0 || i >= files[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : files[0].$array[files[0].$offset + i]); + } + $s = -1; return ptrType$1.nil; + /* */ } return; } var $f = {$blk: lookup, $c: true, $r, _r, _tuple, dir, elem, f, files, i, name, $s};return $f; + }; + FS.prototype.lookup = function(...$args) { return this.$val.lookup(...$args); }; + $ptrType(FS).prototype.readDir = function readDir(dir) { + var {_r, _r$1, dir, f, files, i, j, $s, $r, $c} = $restore(this, {dir}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dir = [dir]; + files = [files]; + f = this; + if (f.files === ptrType.nil) { + $s = -1; return sliceType.nil; + } + files[0] = f.files.$get(); + _r = sortSearch(files[0].$length, (function(dir, files) { return function FS·readDir·func1(i) { + var _tuple, i, idir; + _tuple = split(((i < 0 || i >= files[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : files[0].$array[files[0].$offset + i]).name); + idir = _tuple[0]; + return idir >= dir[0]; + }; })(dir, files)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + i = _r; + _r$1 = sortSearch(files[0].$length, (function(dir, files) { return function FS·readDir·func2(j) { + var _tuple, j, jdir; + _tuple = split(((j < 0 || j >= files[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : files[0].$array[files[0].$offset + j]).name); + jdir = _tuple[0]; + return jdir > dir[0]; + }; })(dir, files)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + j = _r$1; + $s = -1; return $subslice(files[0], i, j); + /* */ } return; } var $f = {$blk: readDir, $c: true, $r, _r, _r$1, dir, f, files, i, j, $s};return $f; + }; + FS.prototype.readDir = function(...$args) { return this.$val.readDir(...$args); }; + $ptrType(FS).prototype.Open = function Open(name) { + var {$24r, _r, _r$1, f, file$1, name, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + _r = $clone(f, FS).lookup(name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + file$1 = _r; + if (file$1 === ptrType$1.nil) { + $s = -1; return [$ifaceNil, new fs.PathError.ptr("open", name, fs.ErrNotExist)]; + } + /* */ if (file$1.IsDir()) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (file$1.IsDir()) { */ case 2: + _r$1 = $clone(f, FS).readDir(name); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = [new openDir.ptr(file$1, _r$1, 0), $ifaceNil]; + $s = 5; case 5: return $24r; + /* } */ case 3: + $s = -1; return [new openFile.ptr(file$1, new $Int64(0, 0)), $ifaceNil]; + /* */ } return; } var $f = {$blk: Open, $c: true, $r, $24r, _r, _r$1, f, file$1, name, $s};return $f; + }; + FS.prototype.Open = function(...$args) { return this.$val.Open(...$args); }; + $ptrType(FS).prototype.ReadDir = function ReadDir(name) { + var {_i, _r, _ref, _tuple, _tuple$1, dir, err, f, file$1, i, list, name, ok, x$2, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + _r = $clone(f, FS).Open(name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + file$1 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType$1.nil, err]; + } + _tuple$1 = $assertType(file$1, ptrType$4, true); + dir = _tuple$1[0]; + ok = _tuple$1[1]; + if (!ok) { + $s = -1; return [sliceType$1.nil, new fs.PathError.ptr("read", name, errors.New("not a directory"))]; + } + list = $makeSlice(sliceType$1, dir.files.$length); + _ref = list; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + i] = (x$2 = dir.files, ((i < 0 || i >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + i]))); + _i++; + } + $s = -1; return [list, $ifaceNil]; + /* */ } return; } var $f = {$blk: ReadDir, $c: true, $r, _i, _r, _ref, _tuple, _tuple$1, dir, err, f, file$1, i, list, name, ok, x$2, $s};return $f; + }; + FS.prototype.ReadDir = function(...$args) { return this.$val.ReadDir(...$args); }; + $ptrType(FS).prototype.ReadFile = function ReadFile(name) { + var {_r, _tuple, _tuple$1, err, f, file$1, name, ofile, ok, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + f = this; + _r = $clone(f, FS).Open(name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + file$1 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [sliceType$2.nil, err]; + } + _tuple$1 = $assertType(file$1, ptrType$2, true); + ofile = _tuple$1[0]; + ok = _tuple$1[1]; + if (!ok) { + $s = -1; return [sliceType$2.nil, new fs.PathError.ptr("read", name, errors.New("is a directory"))]; + } + $s = -1; return [(new sliceType$2($stringToBytes(ofile.f.data))), $ifaceNil]; + /* */ } return; } var $f = {$blk: ReadFile, $c: true, $r, _r, _tuple, _tuple$1, err, f, file$1, name, ofile, ok, $s};return $f; + }; + FS.prototype.ReadFile = function(...$args) { return this.$val.ReadFile(...$args); }; + $ptrType(openFile).prototype.Close = function Close() { + var f; + f = this; + return $ifaceNil; + }; + $ptrType(openFile).prototype.Stat = function Stat() { + var f; + f = this; + return [f.f, $ifaceNil]; + }; + $ptrType(openFile).prototype.Read = function Read(b) { + var b, f, n, x$2, x$3, x$4, x$5, x$6; + f = this; + if ((x$2 = f.offset, x$3 = (new $Int64(0, f.f.data.length)), (x$2.$high > x$3.$high || (x$2.$high === x$3.$high && x$2.$low >= x$3.$low)))) { + return [0, io.EOF]; + } + if ((x$4 = f.offset, (x$4.$high < 0 || (x$4.$high === 0 && x$4.$low < 0)))) { + return [0, new fs.PathError.ptr("read", f.f.name, fs.ErrInvalid)]; + } + n = $copyString(b, $substring(f.f.data, $flatten64(f.offset))); + f.offset = (x$5 = f.offset, x$6 = (new $Int64(0, n)), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)); + return [n, $ifaceNil]; + }; + $ptrType(openFile).prototype.Seek = function Seek(offset, whence) { + var _1, f, offset, whence, x$2, x$3, x$4; + f = this; + _1 = whence; + if (_1 === (0)) { + } else if (_1 === (1)) { + offset = (x$2 = f.offset, new $Int64(offset.$high + x$2.$high, offset.$low + x$2.$low)); + } else if (_1 === (2)) { + offset = (x$3 = (new $Int64(0, f.f.data.length)), new $Int64(offset.$high + x$3.$high, offset.$low + x$3.$low)); + } + if ((offset.$high < 0 || (offset.$high === 0 && offset.$low < 0)) || (x$4 = (new $Int64(0, f.f.data.length)), (offset.$high > x$4.$high || (offset.$high === x$4.$high && offset.$low > x$4.$low)))) { + return [new $Int64(0, 0), new fs.PathError.ptr("seek", f.f.name, fs.ErrInvalid)]; + } + f.offset = offset; + return [offset, $ifaceNil]; + }; + $ptrType(openDir).prototype.Close = function Close$1() { + var d; + d = this; + return $ifaceNil; + }; + $ptrType(openDir).prototype.Stat = function Stat$1() { + var d; + d = this; + return [d.f, $ifaceNil]; + }; + $ptrType(openDir).prototype.Read = function Read$1(param) { + var d, param; + d = this; + return [0, new fs.PathError.ptr("read", d.f.name, errors.New("is a directory"))]; + }; + $ptrType(openDir).prototype.ReadDir = function ReadDir$1(count) { + var _i, _ref, count, d, i, list, n, x$2, x$3; + d = this; + n = d.files.$length - d.offset >> 0; + if (n === 0) { + if (count <= 0) { + return [sliceType$1.nil, $ifaceNil]; + } + return [sliceType$1.nil, io.EOF]; + } + if (count > 0 && n > count) { + n = count; + } + list = $makeSlice(sliceType$1, n); + _ref = list; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + ((i < 0 || i >= list.$length) ? ($throwRuntimeError("index out of range"), undefined) : list.$array[list.$offset + i] = (x$2 = d.files, x$3 = d.offset + i >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3]))); + _i++; + } + d.offset = d.offset + (n) >> 0; + return [list, $ifaceNil]; + }; + sortSearch = function sortSearch$1(n, f) { + var {_r, _tmp, _tmp$1, f, h, i, j, n, $s, $r, $c} = $restore(this, {n, f}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tmp = 0; + _tmp$1 = n; + i = _tmp; + j = _tmp$1; + /* while (true) { */ case 1: + /* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 2; continue; } + h = ((((((i + j >> 0) >>> 0)) >>> 1 >>> 0) >> 0)); + _r = f(h); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (!_r) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!_r) { */ case 3: + i = h + 1 >> 0; + $s = 5; continue; + /* } else { */ case 4: + j = h; + /* } */ case 5: + $s = 1; continue; + case 2: + $s = -1; return i; + /* */ } return; } var $f = {$blk: sortSearch$1, $c: true, $r, _r, _tmp, _tmp$1, f, h, i, j, n, $s};return $f; + }; + FS.methods = [{prop: "lookup", name: "lookup", pkg: "embed", typ: $funcType([$String], [ptrType$1], false)}, {prop: "readDir", name: "readDir", pkg: "embed", typ: $funcType([$String], [sliceType], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([$String], [fs.File, $error], false)}, {prop: "ReadDir", name: "ReadDir", pkg: "", typ: $funcType([$String], [sliceType$1, $error], false)}, {prop: "ReadFile", name: "ReadFile", pkg: "", typ: $funcType([$String], [sliceType$2, $error], false)}]; + ptrType$1.methods = [{prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "ModTime", name: "ModTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [fs.FileMode], false)}, {prop: "Info", name: "Info", pkg: "", typ: $funcType([], [fs.FileInfo, $error], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [fs.FileMode], false)}]; + ptrType$2.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([], [fs.FileInfo, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}]; + ptrType$4.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([], [fs.FileInfo, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadDir", name: "ReadDir", pkg: "", typ: $funcType([$Int], [sliceType$1, $error], false)}]; + FS.init("embed", [{prop: "files", name: "files", embedded: false, exported: false, typ: ptrType, tag: ""}]); + file.init("embed", [{prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "data", name: "data", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "hash", name: "hash", embedded: false, exported: false, typ: arrayType, tag: ""}]); + openFile.init("embed", [{prop: "f", name: "f", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int64, tag: ""}]); + openDir.init("embed", [{prop: "f", name: "f", embedded: false, exported: false, typ: ptrType$1, tag: ""}, {prop: "files", name: "files", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int, tag: ""}]); + $linknames["embed.buildFS"] = buildFS; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + dotFile = new file.ptr("./", "", arrayType.zero()); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["runtime/debug"] = (function() { + var $pkg = {}, $init, fmt, os, runtime, sort, strconv, strings, time, sliceType, Stack; + fmt = $packages["fmt"]; + os = $packages["os"]; + runtime = $packages["runtime"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + time = $packages["time"]; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint8); + Stack = function Stack$1() { + var buf, n; + buf = $makeSlice(sliceType, 1024); + while (true) { + n = runtime.Stack(buf, false); + if (n < buf.$length) { + return $subslice(buf, 0, n); + } + buf = $makeSlice(sliceType, ($imul(2, buf.$length))); + } + }; + $pkg.Stack = Stack; + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/prelude"] = (function() { + var $pkg = {}, $init, embed, filepath, debug, strings, PreludeFile, sliceType, sliceType$1, prelude, types, numeric, jsmapping, goroutines, PreludeFiles, getPackagePath; + embed = $packages["embed"]; + filepath = $packages["path/filepath"]; + debug = $packages["runtime/debug"]; + strings = $packages["strings"]; + PreludeFile = $newType(0, $kindStruct, "prelude.PreludeFile", true, "github.com/gopherjs/gopherjs/compiler/prelude", true, function(Name_, Source_) { + this.$val = this; + if (arguments.length === 0) { + this.Name = ""; + this.Source = ""; + return; + } + this.Name = Name_; + this.Source = Source_; + }); + $pkg.PreludeFile = PreludeFile; + $pkg.$finishSetup = function() { + sliceType = $sliceType(PreludeFile); + sliceType$1 = $sliceType($String); + PreludeFiles = function PreludeFiles$1() { + var {_r, add, basePath, files, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + basePath = [basePath]; + files = [files]; + files[0] = sliceType.nil; + _r = getPackagePath(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + basePath[0] = _r; + add = (function(basePath, files) { return function PreludeFiles·func1(name, src) { + var name, src; + files[0] = $append(files[0], new PreludeFile.ptr(filepath.Join(new sliceType$1([basePath[0], name])), src)); + }; })(basePath, files); + $r = add("prelude.js", prelude); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = add("numberic.js", numeric); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = add("types.js", types); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = add("goroutines.js", goroutines); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = add("jsmapping.js", jsmapping); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return files[0]; + /* */ } return; } var $f = {$blk: PreludeFiles$1, $c: true, $r, _r, add, basePath, files, $s};return $f; + }; + $pkg.PreludeFiles = PreludeFiles; + getPackagePath = function getPackagePath$1() { + var {_r, index, lines, stack, tracePath, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + stack = ($bytesToString(debug.Stack())); + lines = strings.Split(stack, "\n"); + /* */ if (lines.$length >= 4) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (lines.$length >= 4) { */ case 1: + _r = strings.TrimSpace((4 >= lines.$length ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + 4])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tracePath = _r; + index = strings.LastIndex(tracePath, "/"); + if (index >= 0) { + $s = -1; return $substring(tracePath, 0, index); + } + /* } */ case 2: + $s = -1; return "github.com/gopherjs/gopherjs/compiler/prelude/"; + /* */ } return; } var $f = {$blk: getPackagePath$1, $c: true, $r, _r, index, lines, stack, tracePath, $s};return $f; + }; + PreludeFile.init("", [{prop: "Name", name: "Name", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Source", name: "Source", embedded: false, exported: true, typ: $String, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = embed.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = filepath.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = debug.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + prelude = "Error.stackTraceLimit = Infinity;\n\nvar $NaN = NaN;\nvar $global, $module;\nif (typeof window !== \"undefined\") { /* web page */\n $global = window;\n} else if (typeof self !== \"undefined\") { /* web worker */\n $global = self;\n} else if (typeof global !== \"undefined\") { /* Node.js */\n $global = global;\n $global.require = require;\n} else { /* others (e.g. Nashorn) */\n $global = this;\n}\n\nif ($global === undefined || $global.Array === undefined) {\n throw new Error(\"no global object found\");\n}\nif (typeof module !== \"undefined\") {\n $module = module;\n}\n\nif (!$global.fs && $global.require) {\n try {\n var fs = $global.require('fs');\n if (typeof fs === \"object\" && fs !== null && Object.keys(fs).length !== 0) {\n $global.fs = fs;\n }\n } catch (e) { /* Ignore if the module couldn't be loaded. */ }\n}\n\nif (!$global.fs) {\n var outputBuf = \"\";\n var decoder = new TextDecoder(\"utf-8\");\n $global.fs = {\n constants: { O_WRONLY: -1, O_RDWR: -1, O_CREAT: -1, O_TRUNC: -1, O_APPEND: -1, O_EXCL: -1 }, // unused\n writeSync: function writeSync(fd, buf) {\n // check for a hook to redirect `os.Stdout` and `os.Stderr` to a different output\n // instead of the default `console.log`. This is useful for redirecting methods like\n // fmt.Println to write to a text box, like we do for the GopherJS playground.\n // `fd` is 1 for os.Stdout (\"/dev/stdout\") and 2 for os.Stderr (\"/dev/stderr\").\n // This will not work when running in node.js or another `fs` is present.\n // This will not effect the built-in `print` methods.\n if ($global.gopherjsWriteSyncHook) {\n outputBuf += decoder.decode(buf);\n $global.gopherjsWriteSyncHook(fd, outputBuf);\n outputBuf = \"\";\n return buf.length;\n }\n\n outputBuf += decoder.decode(buf);\n var nl = outputBuf.lastIndexOf(\"\\n\");\n if (nl != -1) {\n console.log(outputBuf.substring(0, nl));\n outputBuf = outputBuf.substring(nl + 1);\n }\n return buf.length;\n },\n write: function write(fd, buf, offset, length, position, callback) {\n if (offset !== 0 || length !== buf.length || position !== null) {\n callback(enosys());\n return;\n }\n var n = this.writeSync(fd, buf);\n callback(null, n);\n }\n };\n}\n\nvar $linknames = {} // Collection of functions referenced by a go:linkname directive.\nvar $packages = {}, $idCounter = 0;\nvar $keys = m => { return m ? Object.keys(m) : []; };\nvar $flushConsole = () => { };\nvar $throwRuntimeError; /* set by package \"runtime\" */\nvar $throwNilPointerError = () => { $throwRuntimeError(\"invalid memory address or nil pointer dereference\"); };\nvar $call = (fn, rcvr, args) => { return fn.apply(rcvr, args); };\nvar $makeFunc = fn => { return function(...args) { return $externalize(fn(this, new ($sliceType($jsObjectPtr))($global.Array.prototype.slice.call(args, []))), $emptyInterface); }; };\nvar $unused = v => { };\nvar $print = console.log;\n// Under Node we can emulate print() more closely by avoiding a newline.\nif (($global.process !== undefined) && $global.require) {\n try {\n var util = $global.require('util');\n $print = function(...args) { $global.process.stderr.write(util.format.apply(this, args)); };\n } catch (e) {\n // Failed to require util module, keep using console.log().\n }\n}\nvar $println = console.log\n\nvar $callForAllPackages = (methodName) => {\n var names = $keys($packages);\n for (var i = 0; i < names.length; i++) {\n var f = $packages[names[i]][methodName];\n if (typeof f == 'function') {\n f();\n }\n }\n}\n\nvar $mapArray = (array, f) => {\n var newArray = new array.constructor(array.length);\n for (var i = 0; i < array.length; i++) {\n newArray[i] = f(array[i]);\n }\n return newArray;\n};\n\n// $mapIndex returns the value of the given key in m, or undefined if m is nil/undefined or not a map\nvar $mapIndex = (m, key) => {\n return typeof m.get === \"function\" ? m.get(key) : undefined;\n};\n// $mapDelete deletes the key and associated value from m. If m is nil/undefined or not a map, $mapDelete is a no-op\nvar $mapDelete = (m, key) => {\n typeof m.delete === \"function\" && m.delete(key)\n};\n// Returns a method bound to the receiver instance, safe to invoke as a \n// standalone function. Bound function is cached for later reuse.\nvar $methodVal = (recv, name) => {\n var vals = recv.$methodVals || {};\n recv.$methodVals = vals; /* noop for primitives */\n var f = vals[name];\n if (f !== undefined) {\n return f;\n }\n var method = recv[name];\n f = method.bind(recv);\n vals[name] = f;\n return f;\n};\n\nvar $methodExpr = (typ, name) => {\n var method = typ.prototype[name];\n if (method.$expr === undefined) {\n method.$expr = (...args) => {\n $stackDepthOffset--;\n try {\n if (typ.wrapped) {\n args[0] = new typ(args[0]);\n }\n return Function.call.apply(method, args);\n } finally {\n $stackDepthOffset++;\n }\n };\n }\n return method.$expr;\n};\n\nvar $ifaceMethodExprs = {};\nvar $ifaceMethodExpr = name => {\n var expr = $ifaceMethodExprs[\"$\" + name];\n if (expr === undefined) {\n expr = $ifaceMethodExprs[\"$\" + name] = (...args) => {\n $stackDepthOffset--;\n try {\n return Function.call.apply(args[0][name], args);\n } finally {\n $stackDepthOffset++;\n }\n };\n }\n return expr;\n};\n\nvar $subslice = (slice, low, high, max) => {\n if (high === undefined) {\n high = slice.$length;\n }\n if (max === undefined) {\n max = slice.$capacity;\n }\n if (low < 0 || high < low || max < high || high > slice.$capacity || max > slice.$capacity) {\n $throwRuntimeError(\"slice bounds out of range\");\n }\n if (slice === slice.constructor.nil) {\n return slice;\n }\n var s = new slice.constructor(slice.$array);\n s.$offset = slice.$offset + low;\n s.$length = high - low;\n s.$capacity = max - low;\n return s;\n};\n\nvar $substring = (str, low, high) => {\n if (low < 0 || high < low || high > str.length) {\n $throwRuntimeError(\"slice bounds out of range\");\n }\n return str.substring(low, high);\n};\n\n// Convert Go slice to an equivalent JS array type.\nvar $sliceToNativeArray = slice => {\n if (slice.$array.constructor !== Array) {\n return slice.$array.subarray(slice.$offset, slice.$offset + slice.$length);\n }\n return slice.$array.slice(slice.$offset, slice.$offset + slice.$length);\n};\n\n// Convert Go slice to a pointer to an underlying Go array, `[]T -> *[N]T`.\n// \n// Note that an array pointer can be represented by an \"unwrapped\" native array\n// type, and it will be wrapped back into its Go type when necessary.\nvar $sliceToGoArray = (slice, arrayPtrType) => {\n var arrayType = arrayPtrType.elem;\n if (arrayType !== undefined && slice.$length < arrayType.len) {\n $throwRuntimeError(\"cannot convert slice with length \" + slice.$length + \" to pointer to array with length \" + arrayType.len);\n }\n if (slice == slice.constructor.nil) {\n return arrayPtrType.nil; // Nil slice converts to nil array pointer.\n }\n if (slice.$array.constructor !== Array) {\n return slice.$array.subarray(slice.$offset, slice.$offset + arrayType.len);\n }\n if (slice.$offset == 0 && slice.$length == slice.$capacity && slice.$length == arrayType.len) {\n return slice.$array;\n }\n if (arrayType.len == 0) {\n return new arrayType([]);\n }\n\n // Array.slice (unlike TypedArray.subarray) returns a copy of an array range,\n // which is not sharing memory with the original one, which violates the spec\n // for slice to array conversion. This is incompatible with the Go spec, in\n // particular that the assignments to the array elements would be visible in\n // the slice. Prefer to fail explicitly instead of creating subtle bugs.\n $throwRuntimeError(\"gopherjs: non-numeric slice to underlying array conversion is not supported for subslices\");\n};\n\n// Convert between compatible slice types (e.g. native and names).\nvar $convertSliceType = (slice, desiredType) => {\n if (slice == slice.constructor.nil) {\n return desiredType.nil; // Preserve nil value.\n }\n\n return $subslice(new desiredType(slice.$array), slice.$offset, slice.$offset + slice.$length);\n}\n\nvar $decodeRune = (str, pos) => {\n var c0 = str.charCodeAt(pos);\n\n if (c0 < 0x80) {\n return [c0, 1];\n }\n\n if (c0 !== c0 || c0 < 0xC0) {\n return [0xFFFD, 1];\n }\n\n var c1 = str.charCodeAt(pos + 1);\n if (c1 !== c1 || c1 < 0x80 || 0xC0 <= c1) {\n return [0xFFFD, 1];\n }\n\n if (c0 < 0xE0) {\n var r = (c0 & 0x1F) << 6 | (c1 & 0x3F);\n if (r <= 0x7F) {\n return [0xFFFD, 1];\n }\n return [r, 2];\n }\n\n var c2 = str.charCodeAt(pos + 2);\n if (c2 !== c2 || c2 < 0x80 || 0xC0 <= c2) {\n return [0xFFFD, 1];\n }\n\n if (c0 < 0xF0) {\n var r = (c0 & 0x0F) << 12 | (c1 & 0x3F) << 6 | (c2 & 0x3F);\n if (r <= 0x7FF) {\n return [0xFFFD, 1];\n }\n if (0xD800 <= r && r <= 0xDFFF) {\n return [0xFFFD, 1];\n }\n return [r, 3];\n }\n\n var c3 = str.charCodeAt(pos + 3);\n if (c3 !== c3 || c3 < 0x80 || 0xC0 <= c3) {\n return [0xFFFD, 1];\n }\n\n if (c0 < 0xF8) {\n var r = (c0 & 0x07) << 18 | (c1 & 0x3F) << 12 | (c2 & 0x3F) << 6 | (c3 & 0x3F);\n if (r <= 0xFFFF || 0x10FFFF < r) {\n return [0xFFFD, 1];\n }\n return [r, 4];\n }\n\n return [0xFFFD, 1];\n};\n\nvar $encodeRune = r => {\n if (r < 0 || r > 0x10FFFF || (0xD800 <= r && r <= 0xDFFF)) {\n r = 0xFFFD;\n }\n if (r <= 0x7F) {\n return String.fromCharCode(r);\n }\n if (r <= 0x7FF) {\n return String.fromCharCode(0xC0 | r >> 6, 0x80 | (r & 0x3F));\n }\n if (r <= 0xFFFF) {\n return String.fromCharCode(0xE0 | r >> 12, 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F));\n }\n return String.fromCharCode(0xF0 | r >> 18, 0x80 | (r >> 12 & 0x3F), 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F));\n};\n\nvar $stringToBytes = str => {\n var array = new Uint8Array(str.length);\n for (var i = 0; i < str.length; i++) {\n array[i] = str.charCodeAt(i);\n }\n return array;\n};\n\nvar $bytesToString = slice => {\n if (slice.$length === 0) {\n return \"\";\n }\n var str = \"\";\n for (var i = 0; i < slice.$length; i += 10000) {\n str += String.fromCharCode.apply(undefined, slice.$array.subarray(slice.$offset + i, slice.$offset + Math.min(slice.$length, i + 10000)));\n }\n return str;\n};\n\nvar $stringToRunes = str => {\n var array = new Int32Array(str.length);\n var rune, j = 0;\n for (var i = 0; i < str.length; i += rune[1], j++) {\n rune = $decodeRune(str, i);\n array[j] = rune[0];\n }\n return array.subarray(0, j);\n};\n\nvar $runesToString = slice => {\n if (slice.$length === 0) {\n return \"\";\n }\n var str = \"\";\n for (var i = 0; i < slice.$length; i++) {\n str += $encodeRune(slice.$array[slice.$offset + i]);\n }\n return str;\n};\n\nvar $copyString = (dst, src) => {\n var n = Math.min(src.length, dst.$length);\n for (var i = 0; i < n; i++) {\n dst.$array[dst.$offset + i] = src.charCodeAt(i);\n }\n return n;\n};\n\nvar $copySlice = (dst, src) => {\n var n = Math.min(src.$length, dst.$length);\n $copyArray(dst.$array, src.$array, dst.$offset, src.$offset, n, dst.constructor.elem);\n return n;\n};\n\nvar $copyArray = (dst, src, dstOffset, srcOffset, n, elem) => {\n if (n === 0 || (dst === src && dstOffset === srcOffset)) {\n return;\n }\n\n if (src.subarray) {\n dst.set(src.subarray(srcOffset, srcOffset + n), dstOffset);\n return;\n }\n\n switch (elem.kind) {\n case $kindArray:\n case $kindStruct:\n if (dst === src && dstOffset > srcOffset) {\n for (var i = n - 1; i >= 0; i--) {\n elem.copy(dst[dstOffset + i], src[srcOffset + i]);\n }\n return;\n }\n for (var i = 0; i < n; i++) {\n elem.copy(dst[dstOffset + i], src[srcOffset + i]);\n }\n return;\n }\n\n if (dst === src && dstOffset > srcOffset) {\n for (var i = n - 1; i >= 0; i--) {\n dst[dstOffset + i] = src[srcOffset + i];\n }\n return;\n }\n for (var i = 0; i < n; i++) {\n dst[dstOffset + i] = src[srcOffset + i];\n }\n};\n\nvar $clone = (src, type) => {\n var clone = type.zero();\n type.copy(clone, src);\n return clone;\n};\n\nvar $pointerOfStructConversion = (obj, type) => {\n if (obj.$proxies === undefined) {\n obj.$proxies = {};\n obj.$proxies[obj.constructor.string] = obj;\n }\n var proxy = obj.$proxies[type.string];\n if (proxy === undefined) {\n var properties = {};\n for (var i = 0; i < type.elem.fields.length; i++) {\n (fieldProp => {\n properties[fieldProp] = {\n get() { return obj[fieldProp]; },\n set(value) { obj[fieldProp] = value; }\n };\n })(type.elem.fields[i].prop);\n }\n proxy = Object.create(type.prototype, properties);\n proxy.$val = proxy;\n obj.$proxies[type.string] = proxy;\n proxy.$proxies = obj.$proxies;\n }\n return proxy;\n};\n\nvar $append = function (slice) {\n return $internalAppend(slice, arguments, 1, arguments.length - 1);\n};\n\nvar $appendSlice = (slice, toAppend) => {\n if (toAppend.constructor === String) {\n var bytes = $stringToBytes(toAppend);\n return $internalAppend(slice, bytes, 0, bytes.length);\n }\n return $internalAppend(slice, toAppend.$array, toAppend.$offset, toAppend.$length);\n};\n\n// Internal helper function for appending to a slice.\n// The given slice will not be modified.\n//\n// If no values are being appended, the original slice will be returned.\n// Otherwise, a new slice will be created with the appended values.\n//\n// If the underlying array has enough capacity, it will be used.\n// Otherwise, a new array will be allocated with enough capacity to hold\n// the new values and the original array will not be modified.\nvar $internalAppend = (slice, array, offset, length) => {\n if (length === 0) {\n return slice;\n }\n\n let newLength = slice.$length + length;\n let newSlice = $growSlice(slice, newLength);\n \n let newArray = newSlice.$array;\n $copyArray(newArray, array, newSlice.$offset + newSlice.$length, offset, length, newSlice.constructor.elem);\n \n newSlice.$length = newLength;\n return newSlice;\n};\n\n// Calculates the new capacity for a slice that is expected to grow to at least\n// the given minCapacity. This follows the Go runtime's growth strategy.\n// The oldCapacity is the current capacity of the slice that is being grown.\nconst $calculateNewCapacity = (minCapacity, oldCapacity) => {\n return Math.max(minCapacity, oldCapacity < 1024 ? oldCapacity * 2 : Math.floor(oldCapacity * 5 / 4));\n};\n\n// Potentially grows the slice to have a capacity of at least minCapacity.\n//\n// A new slice will always be returned, even if the given slice had the required capacity.\n// If the slice didn't have enough capacity, the new slice will have a\n// new array created for it with the required minimum capacity.\n//\n// This takes the place of the growSlice function in the reflect package.\nvar $growSlice = (slice, minCapacity) => {\n let array = slice.$array;\n let offset = slice.$offset;\n const length = slice.$length;\n let capacity = slice.$capacity;\n\n if (minCapacity > capacity) {\n capacity = $calculateNewCapacity(minCapacity, capacity);\n \n let newArray;\n if (array.constructor === Array) {\n newArray = array.slice(offset, offset + length);\n newArray.length = capacity;\n const zero = slice.constructor.elem.zero;\n for (let i = slice.$length; i < capacity; i++) {\n newArray[i] = zero();\n }\n } else {\n newArray = new array.constructor(capacity);\n newArray.set(array.subarray(offset, offset + length));\n }\n\n array = newArray;\n offset = 0;\n }\n\n let newSlice = new slice.constructor(array);\n newSlice.$offset = offset;\n newSlice.$length = length;\n newSlice.$capacity = capacity;\n return newSlice;\n};\n\nvar $equal = (a, b, type) => {\n if (type === $jsObjectPtr) {\n return a === b;\n }\n switch (type.kind) {\n case $kindComplex64:\n case $kindComplex128:\n return a.$real === b.$real && a.$imag === b.$imag;\n case $kindInt64:\n case $kindUint64:\n return a.$high === b.$high && a.$low === b.$low;\n case $kindArray:\n if (a.length !== b.length) {\n return false;\n }\n for (var i = 0; i < a.length; i++) {\n if (!$equal(a[i], b[i], type.elem)) {\n return false;\n }\n }\n return true;\n case $kindStruct:\n for (var i = 0; i < type.fields.length; i++) {\n var f = type.fields[i];\n if (!$equal(a[f.prop], b[f.prop], f.typ)) {\n return false;\n }\n }\n return true;\n case $kindInterface:\n return $interfaceIsEqual(a, b);\n default:\n return a === b;\n }\n};\n\nvar $interfaceIsEqual = (a, b) => {\n if (a === $ifaceNil || b === $ifaceNil) {\n return a === b;\n }\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.constructor === $jsObjectPtr) {\n return a.object === b.object;\n }\n if (!a.constructor.comparable) {\n $throwRuntimeError(\"comparing uncomparable type \" + a.constructor.string);\n }\n return $equal(a.$val, b.$val, a.constructor);\n};\n\nvar $unsafeMethodToFunction = (typ, name, isPtr) => {\n if (isPtr) {\n return (r, ...args) => {\n var ptrType = $ptrType(typ);\n if (r.constructor != ptrType) {\n switch (typ.kind) {\n case $kindStruct:\n r = $pointerOfStructConversion(r, ptrType);\n break;\n case $kindArray:\n r = new ptrType(r);\n break;\n default:\n r = new ptrType(r.$get, r.$set, r.$target);\n }\n }\n return r[name](...args);\n };\n } else {\n return (r, ...args) => {\n var ptrType = $ptrType(typ);\n if (r.constructor != ptrType) {\n switch (typ.kind) {\n case $kindStruct:\n r = $clone(r, typ);\n break;\n case $kindSlice:\n r = $convertSliceType(r, typ);\n break;\n case $kindComplex64:\n case $kindComplex128:\n r = new typ(r.$real, r.$imag);\n break;\n default:\n r = new typ(r);\n }\n }\n return r[name](...args);\n };\n }\n};\n\nvar $id = x => {\n return x;\n};\n\nvar $instanceOf = (x, y) => {\n return x instanceof y;\n};\n\nvar $typeOf = x => {\n return typeof (x);\n};\n\nvar $sliceData = (slice, typ) => {\n if (slice === typ.nil) {\n return $ptrType(typ.elem).nil;\n }\n return $indexPtr(slice.$array, slice.$offset, typ.elem);\n};\n"; + types = "var $kindBool = 1;\nvar $kindInt = 2;\nvar $kindInt8 = 3;\nvar $kindInt16 = 4;\nvar $kindInt32 = 5;\nvar $kindInt64 = 6;\nvar $kindUint = 7;\nvar $kindUint8 = 8;\nvar $kindUint16 = 9;\nvar $kindUint32 = 10;\nvar $kindUint64 = 11;\nvar $kindUintptr = 12;\nvar $kindFloat32 = 13;\nvar $kindFloat64 = 14;\nvar $kindComplex64 = 15;\nvar $kindComplex128 = 16;\nvar $kindArray = 17;\nvar $kindChan = 18;\nvar $kindFunc = 19;\nvar $kindInterface = 20;\nvar $kindMap = 21;\nvar $kindPtr = 22;\nvar $kindSlice = 23;\nvar $kindString = 24;\nvar $kindStruct = 25;\nvar $kindUnsafePointer = 26;\n\nvar $methodSynthesizers = [];\nvar $addMethodSynthesizer = f => {\n if ($methodSynthesizers === null) {\n f();\n return;\n }\n $methodSynthesizers.push(f);\n};\nvar $synthesizeMethods = () => {\n $methodSynthesizers.forEach(f => { f(); });\n $methodSynthesizers = null;\n};\n\nvar $ifaceKeyFor = x => {\n if (x === $ifaceNil) {\n return 'nil';\n }\n var c = x.constructor;\n return c.string + '$' + c.keyFor(x.$val);\n};\n\nvar $identity = x => { return x; };\n\nvar $typeIDCounter = 0;\n\nvar $idKey = x => {\n if (x.$id === undefined) {\n $idCounter++;\n x.$id = $idCounter;\n }\n return String(x.$id);\n};\n\n// Creates constructor functions for array pointer types. Returns a new function\n// instance each time to make sure each type is independent of the other.\nvar $arrayPtrCtor = () => {\n return function (array) {\n this.$get = () => { return array; };\n this.$set = function (v) { typ.copy(this, v); };\n this.$val = array;\n };\n}\n\nvar $newType = (size, kind, string, named, pkg, exported, constructor) => {\n var typ;\n switch (kind) {\n case $kindBool:\n case $kindInt:\n case $kindInt8:\n case $kindInt16:\n case $kindInt32:\n case $kindUint:\n case $kindUint8:\n case $kindUint16:\n case $kindUint32:\n case $kindUintptr:\n case $kindUnsafePointer:\n typ = function (v) { this.$val = v; };\n typ.wrapped = true;\n typ.keyFor = $identity;\n break;\n\n case $kindString:\n typ = function (v) { this.$val = v; };\n typ.wrapped = true;\n typ.keyFor = x => { return \"$\" + x; };\n break;\n\n case $kindFloat32:\n case $kindFloat64:\n typ = function (v) { this.$val = v; };\n typ.wrapped = true;\n typ.keyFor = x => { return $floatKey(x); };\n break;\n\n case $kindInt64:\n typ = function (high, low) {\n this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >> 0;\n this.$low = low >>> 0;\n this.$val = this;\n };\n typ.keyFor = x => { return x.$high + \"$\" + x.$low; };\n break;\n\n case $kindUint64:\n typ = function (high, low) {\n this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >>> 0;\n this.$low = low >>> 0;\n this.$val = this;\n };\n typ.keyFor = x => { return x.$high + \"$\" + x.$low; };\n break;\n\n case $kindComplex64:\n typ = function (real, imag) {\n this.$real = $fround(real);\n this.$imag = $fround(imag);\n this.$val = this;\n };\n typ.keyFor = x => { return x.$real + \"$\" + x.$imag; };\n break;\n\n case $kindComplex128:\n typ = function (real, imag) {\n this.$real = real;\n this.$imag = imag;\n this.$val = this;\n };\n typ.keyFor = x => { return x.$real + \"$\" + x.$imag; };\n break;\n\n case $kindArray:\n typ = function (v) { this.$val = v; };\n typ.wrapped = true;\n typ.ptr = $newType(4, $kindPtr, \"*\" + string, false, \"\", false, $arrayPtrCtor());\n typ.init = (elem, len) => {\n typ.elem = elem;\n typ.len = len;\n typ.comparable = elem.comparable;\n typ.keyFor = x => {\n return Array.prototype.join.call($mapArray(x, e => {\n return String(elem.keyFor(e)).replace(/\\\\/g, \"\\\\\\\\\").replace(/\\$/g, \"\\\\$\");\n }), \"$\");\n };\n typ.copy = (dst, src) => {\n if (src.length === undefined) {\n // copy from a slice, the slice may be bigger but not smaller than the array\n if (src.$length < dst.length) {\n $throwRuntimeError(\"cannot convert slice with length \"+src.$length+\" to array or pointer to array with length \"+dst.length);\n }\n $copyArray(dst, src.$array, 0, 0, dst.length, elem);\n } else {\n // copy from another array\n $copyArray(dst, src, 0, 0, src.length, elem);\n }\n };\n typ.ptr.init(typ);\n Object.defineProperty(typ.ptr.nil, \"nilCheck\", { get: $throwNilPointerError });\n };\n break;\n\n case $kindChan:\n typ = function (v) { this.$val = v; };\n typ.wrapped = true;\n typ.keyFor = $idKey;\n typ.init = (elem, sendOnly, recvOnly) => {\n typ.elem = elem;\n typ.sendOnly = sendOnly;\n typ.recvOnly = recvOnly;\n };\n break;\n\n case $kindFunc:\n typ = function (v) { this.$val = v; };\n typ.wrapped = true;\n typ.init = (params, results, variadic) => {\n typ.params = params;\n typ.results = results;\n typ.variadic = variadic;\n typ.comparable = false;\n };\n break;\n\n case $kindInterface:\n typ = { implementedBy: {}, missingMethodFor: {} };\n typ.keyFor = $ifaceKeyFor;\n typ.init = methods => {\n typ.methods = methods;\n methods.forEach(m => {\n $ifaceNil[m.prop] = $throwNilPointerError;\n });\n };\n break;\n\n case $kindMap:\n typ = function (v) { this.$val = v; };\n typ.wrapped = true;\n typ.init = (key, elem) => {\n typ.key = key;\n typ.elem = elem;\n typ.comparable = false;\n };\n break;\n\n case $kindPtr:\n typ = constructor || function (getter, setter, target) {\n this.$get = getter;\n this.$set = setter;\n this.$target = target;\n this.$val = this;\n };\n typ.keyFor = $idKey;\n typ.init = elem => {\n typ.elem = elem;\n typ.wrapped = (elem.kind === $kindArray);\n typ.nil = new typ($throwNilPointerError, $throwNilPointerError);\n };\n break;\n\n case $kindSlice:\n typ = function (array) {\n if (array.constructor !== typ.nativeArray) {\n array = new typ.nativeArray(array);\n }\n this.$array = array;\n this.$offset = 0;\n this.$length = array.length;\n this.$capacity = array.length;\n this.$val = this;\n };\n typ.init = elem => {\n typ.elem = elem;\n typ.comparable = false;\n typ.nativeArray = $nativeArray(elem.kind);\n typ.nil = new typ([]);\n Object.freeze(typ.nil);\n };\n break;\n\n case $kindStruct:\n typ = function (v) { this.$val = v; };\n typ.wrapped = true;\n typ.ptr = $newType(4, $kindPtr, \"*\" + string, false, pkg, exported, constructor);\n typ.ptr.elem = typ;\n typ.ptr.prototype.$get = function () { return this; };\n typ.ptr.prototype.$set = function (v) { typ.copy(this, v); };\n typ.init = (pkgPath, fields) => {\n typ.pkgPath = pkgPath;\n typ.fields = fields;\n fields.forEach(f => {\n if (!f.typ.comparable) {\n typ.comparable = false;\n }\n });\n typ.keyFor = x => {\n var val = x.$val;\n return $mapArray(fields, f => {\n return String(f.typ.keyFor(val[f.prop])).replace(/\\\\/g, \"\\\\\\\\\").replace(/\\$/g, \"\\\\$\");\n }).join(\"$\");\n };\n typ.copy = (dst, src) => {\n for (var i = 0; i < fields.length; i++) {\n var f = fields[i];\n switch (f.typ.kind) {\n case $kindArray:\n case $kindStruct:\n f.typ.copy(dst[f.prop], src[f.prop]);\n continue;\n default:\n dst[f.prop] = src[f.prop];\n continue;\n }\n }\n };\n /* nil value */\n var properties = {};\n fields.forEach(f => {\n properties[f.prop] = { get: $throwNilPointerError, set: $throwNilPointerError };\n });\n typ.ptr.nil = Object.create(constructor.prototype, properties);\n typ.ptr.nil.$val = typ.ptr.nil;\n /* methods for embedded fields */\n $addMethodSynthesizer(() => {\n var synthesizeMethod = (target, m, f) => {\n if (target.prototype[m.prop] !== undefined) { return; }\n target.prototype[m.prop] = function(...args) {\n var v = this.$val[f.prop];\n if (f.typ === $jsObjectPtr) {\n v = new $jsObjectPtr(v);\n }\n if (v.$val === undefined) {\n v = new f.typ(v);\n }\n return v[m.prop](...args);\n };\n };\n fields.forEach(f => {\n if (f.embedded) {\n $methodSet(f.typ).forEach(m => {\n synthesizeMethod(typ, m, f);\n synthesizeMethod(typ.ptr, m, f);\n });\n $methodSet($ptrType(f.typ)).forEach(m => {\n synthesizeMethod(typ.ptr, m, f);\n });\n }\n });\n });\n };\n break;\n\n default:\n $panic(new $String(\"invalid kind: \" + kind));\n }\n\n switch (kind) {\n case $kindBool:\n case $kindMap:\n typ.zero = () => { return false; };\n break;\n\n case $kindInt:\n case $kindInt8:\n case $kindInt16:\n case $kindInt32:\n case $kindUint:\n case $kindUint8:\n case $kindUint16:\n case $kindUint32:\n case $kindUintptr:\n case $kindUnsafePointer:\n case $kindFloat32:\n case $kindFloat64:\n typ.zero = () => { return 0; };\n break;\n\n case $kindString:\n typ.zero = () => { return \"\"; };\n break;\n\n case $kindInt64:\n case $kindUint64:\n case $kindComplex64:\n case $kindComplex128:\n var zero = new typ(0, 0);\n typ.zero = () => { return zero; };\n break;\n\n case $kindPtr:\n case $kindSlice:\n typ.zero = () => { return typ.nil; };\n break;\n\n case $kindChan:\n typ.zero = () => { return $chanNil; };\n break;\n\n case $kindFunc:\n typ.zero = () => { return $throwNilPointerError; };\n break;\n\n case $kindInterface:\n typ.zero = () => { return $ifaceNil; };\n break;\n\n case $kindArray:\n typ.zero = () => {\n var arrayClass = $nativeArray(typ.elem.kind);\n if (arrayClass !== Array) {\n return new arrayClass(typ.len);\n }\n var array = new Array(typ.len);\n for (var i = 0; i < typ.len; i++) {\n array[i] = typ.elem.zero();\n }\n return array;\n };\n break;\n\n case $kindStruct:\n typ.zero = () => { return new typ.ptr(); };\n break;\n\n default:\n $panic(new $String(\"invalid kind: \" + kind));\n }\n\n typ.id = $typeIDCounter;\n $typeIDCounter++;\n typ.size = size;\n typ.kind = kind;\n typ.string = string;\n typ.named = named;\n typ.pkg = pkg;\n typ.exported = exported;\n typ.methods = [];\n typ.methodSetCache = null;\n typ.comparable = true;\n return typ;\n};\n\nvar $methodSet = typ => {\n if (typ.methodSetCache !== null) {\n return typ.methodSetCache;\n }\n var base = {};\n\n var isPtr = (typ.kind === $kindPtr);\n if (isPtr && typ.elem.kind === $kindInterface) {\n typ.methodSetCache = [];\n return [];\n }\n\n var current = [{ typ: isPtr ? typ.elem : typ, indirect: isPtr }];\n\n var seen = {};\n\n while (current.length > 0) {\n var next = [];\n var mset = [];\n\n current.forEach(e => {\n if (seen[e.typ.string]) {\n return;\n }\n seen[e.typ.string] = true;\n\n if (e.typ.named) {\n mset = mset.concat(e.typ.methods);\n if (e.indirect) {\n mset = mset.concat($ptrType(e.typ).methods);\n }\n }\n\n switch (e.typ.kind) {\n case $kindStruct:\n e.typ.fields.forEach(f => {\n if (f.embedded) {\n var fTyp = f.typ;\n var fIsPtr = (fTyp.kind === $kindPtr);\n next.push({ typ: fIsPtr ? fTyp.elem : fTyp, indirect: e.indirect || fIsPtr });\n }\n });\n break;\n\n case $kindInterface:\n mset = mset.concat(e.typ.methods);\n break;\n }\n });\n\n mset.forEach(m => {\n if (base[m.name] === undefined) {\n base[m.name] = m;\n }\n });\n\n current = next;\n }\n\n typ.methodSetCache = [];\n Object.keys(base).sort().forEach(name => {\n typ.methodSetCache.push(base[name]);\n });\n return typ.methodSetCache;\n};\n\nvar $Bool = $newType(1, $kindBool, \"bool\", true, \"\", false, null);\nvar $Int = $newType(4, $kindInt, \"int\", true, \"\", false, null);\nvar $Int8 = $newType(1, $kindInt8, \"int8\", true, \"\", false, null);\nvar $Int16 = $newType(2, $kindInt16, \"int16\", true, \"\", false, null);\nvar $Int32 = $newType(4, $kindInt32, \"int32\", true, \"\", false, null);\nvar $Int64 = $newType(8, $kindInt64, \"int64\", true, \"\", false, null);\nvar $Uint = $newType(4, $kindUint, \"uint\", true, \"\", false, null);\nvar $Uint8 = $newType(1, $kindUint8, \"uint8\", true, \"\", false, null);\nvar $Uint16 = $newType(2, $kindUint16, \"uint16\", true, \"\", false, null);\nvar $Uint32 = $newType(4, $kindUint32, \"uint32\", true, \"\", false, null);\nvar $Uint64 = $newType(8, $kindUint64, \"uint64\", true, \"\", false, null);\nvar $Uintptr = $newType(4, $kindUintptr, \"uintptr\", true, \"\", false, null);\nvar $Float32 = $newType(4, $kindFloat32, \"float32\", true, \"\", false, null);\nvar $Float64 = $newType(8, $kindFloat64, \"float64\", true, \"\", false, null);\nvar $Complex64 = $newType(8, $kindComplex64, \"complex64\", true, \"\", false, null);\nvar $Complex128 = $newType(16, $kindComplex128, \"complex128\", true, \"\", false, null);\nvar $String = $newType(8, $kindString, \"string\", true, \"\", false, null);\nvar $UnsafePointer = $newType(4, $kindUnsafePointer, \"unsafe.Pointer\", true, \"unsafe\", false, null);\n\nvar $nativeArray = elemKind => {\n switch (elemKind) {\n case $kindInt:\n return Int32Array;\n case $kindInt8:\n return Int8Array;\n case $kindInt16:\n return Int16Array;\n case $kindInt32:\n return Int32Array;\n case $kindUint:\n return Uint32Array;\n case $kindUint8:\n return Uint8Array;\n case $kindUint16:\n return Uint16Array;\n case $kindUint32:\n return Uint32Array;\n case $kindUintptr:\n return Uint32Array;\n case $kindFloat32:\n return Float32Array;\n case $kindFloat64:\n return Float64Array;\n default:\n return Array;\n }\n};\nvar $toNativeArray = (elemKind, array) => {\n var nativeArray = $nativeArray(elemKind);\n if (nativeArray === Array) {\n return array;\n }\n return new nativeArray(array);\n};\nvar $arrayTypes = {};\nvar $arrayType = (elem, len) => {\n var typeKey = elem.id + \"$\" + len;\n var typ = $arrayTypes[typeKey];\n if (typ === undefined) {\n typ = $newType(elem.size * len, $kindArray, \"[\" + len + \"]\" + elem.string, false, \"\", false, null);\n $arrayTypes[typeKey] = typ;\n typ.init(elem, len);\n }\n return typ;\n};\n\nvar $chanType = (elem, sendOnly, recvOnly) => {\n var string = (recvOnly ? \"<-\" : \"\") + \"chan\" + (sendOnly ? \"<- \" : \" \");\n if (!sendOnly && !recvOnly && (elem.string[0] == \"<\")) {\n string += \"(\" + elem.string + \")\";\n } else {\n string += elem.string;\n }\n var field = sendOnly ? \"SendChan\" : (recvOnly ? \"RecvChan\" : \"Chan\");\n var typ = elem[field];\n if (typ === undefined) {\n typ = $newType(4, $kindChan, string, false, \"\", false, null);\n elem[field] = typ;\n typ.init(elem, sendOnly, recvOnly);\n }\n return typ;\n};\nvar $Chan = function (elem, capacity) {\n if (capacity < 0 || capacity > 2147483647) {\n $throwRuntimeError(\"makechan: size out of range\");\n }\n this.$elem = elem;\n this.$capacity = capacity;\n this.$buffer = [];\n this.$sendQueue = [];\n this.$recvQueue = [];\n this.$closed = false;\n};\nvar $chanNil = new $Chan(null, 0);\n$chanNil.$sendQueue = $chanNil.$recvQueue = { length: 0, push() { }, shift() { return undefined; }, indexOf() { return -1; } };\n\nvar $funcTypes = {};\nvar $funcType = (params, results, variadic) => {\n var typeKey = $mapArray(params, p => { return p.id; }).join(\",\") + \"$\" + $mapArray(results, r => { return r.id; }).join(\",\") + \"$\" + variadic;\n var typ = $funcTypes[typeKey];\n if (typ === undefined) {\n var paramTypes = $mapArray(params, p => { return p.string; });\n if (variadic) {\n paramTypes[paramTypes.length - 1] = \"...\" + paramTypes[paramTypes.length - 1].substring(2);\n }\n var string = \"func(\" + paramTypes.join(\", \") + \")\";\n if (results.length === 1) {\n string += \" \" + results[0].string;\n } else if (results.length > 1) {\n string += \" (\" + $mapArray(results, r => { return r.string; }).join(\", \") + \")\";\n }\n typ = $newType(4, $kindFunc, string, false, \"\", false, null);\n $funcTypes[typeKey] = typ;\n typ.init(params, results, variadic);\n }\n return typ;\n};\n\nvar $interfaceTypes = {};\nvar $interfaceType = methods => {\n var typeKey = $mapArray(methods, m => { return m.pkg + \",\" + m.name + \",\" + m.typ.id; }).join(\"$\");\n var typ = $interfaceTypes[typeKey];\n if (typ === undefined) {\n var string = \"interface {}\";\n if (methods.length !== 0) {\n string = \"interface { \" + $mapArray(methods, m => {\n return (m.pkg !== \"\" ? m.pkg + \".\" : \"\") + m.name + m.typ.string.substring(4);\n }).join(\"; \") + \" }\";\n }\n typ = $newType(8, $kindInterface, string, false, \"\", false, null);\n $interfaceTypes[typeKey] = typ;\n typ.init(methods);\n }\n return typ;\n};\nvar $emptyInterface = $interfaceType([]);\nvar $ifaceNil = {};\nvar $error = $newType(8, $kindInterface, \"error\", true, \"\", false, null);\n$error.init([{ prop: \"Error\", name: \"Error\", pkg: \"\", typ: $funcType([], [$String], false) }]);\n\nvar $mapTypes = {};\nvar $mapType = (key, elem) => {\n var typeKey = key.id + \"$\" + elem.id;\n var typ = $mapTypes[typeKey];\n if (typ === undefined) {\n typ = $newType(4, $kindMap, \"map[\" + key.string + \"]\" + elem.string, false, \"\", false, null);\n $mapTypes[typeKey] = typ;\n typ.init(key, elem);\n }\n return typ;\n};\nvar $makeMap = (keyForFunc, entries) => {\n var m = new Map();\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i];\n m.set(keyForFunc(e.k), e);\n }\n return m;\n};\n\nvar $ptrType = elem => {\n var typ = elem.ptr;\n if (typ === undefined) {\n typ = $newType(4, $kindPtr, \"*\" + elem.string, false, \"\", elem.exported, null);\n elem.ptr = typ;\n typ.init(elem);\n }\n return typ;\n};\n\nvar $newDataPointer = (data, constructor) => {\n if (constructor.elem.kind === $kindStruct) {\n return data;\n }\n return new constructor(() => { return data; }, v => { data = v; });\n};\n\nvar $indexPtr = (array, index, constructor) => {\n if (array.buffer) {\n // Pointers to the same underlying ArrayBuffer share cache.\n var cache = array.buffer.$ptr = array.buffer.$ptr || {};\n // Pointers of different primitive types are non-comparable and stored in different caches.\n var typeCache = cache[array.name] = cache[array.name] || {};\n var cacheIdx = array.BYTES_PER_ELEMENT * index + array.byteOffset;\n return typeCache[cacheIdx] || (typeCache[cacheIdx] = new constructor(() => { return array[index]; }, v => { array[index] = v; }));\n } else {\n array.$ptr = array.$ptr || {};\n return array.$ptr[index] || (array.$ptr[index] = new constructor(() => { return array[index]; }, v => { array[index] = v; }));\n }\n};\n\nvar $sliceType = elem => {\n var typ = elem.slice;\n if (typ === undefined) {\n typ = $newType(12, $kindSlice, \"[]\" + elem.string, false, \"\", false, null);\n elem.slice = typ;\n typ.init(elem);\n }\n return typ;\n};\nvar $makeSlice = (typ, length, capacity = length) => {\n if (length < 0 || length > 2147483647) {\n $throwRuntimeError(\"makeslice: len out of range\");\n }\n if (capacity < 0 || capacity < length || capacity > 2147483647) {\n $throwRuntimeError(\"makeslice: cap out of range\");\n }\n var array = new typ.nativeArray(capacity);\n if (typ.nativeArray === Array) {\n for (var i = 0; i < capacity; i++) {\n array[i] = typ.elem.zero();\n }\n }\n var slice = new typ(array);\n slice.$length = length;\n return slice;\n};\n\nvar $structTypes = {};\nvar $structType = (pkgPath, fields) => {\n var typeKey = $mapArray(fields, f => { return f.name + \",\" + f.typ.id + \",\" + f.tag; }).join(\"$\");\n var typ = $structTypes[typeKey];\n if (typ === undefined) {\n var string = \"struct { \" + $mapArray(fields, f => {\n var str = f.typ.string + (f.tag !== \"\" ? (\" \\\"\" + f.tag.replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, \"\\\\\\\"\") + \"\\\"\") : \"\");\n if (f.embedded) {\n return str;\n }\n return f.name + \" \" + str;\n }).join(\"; \") + \" }\";\n if (fields.length === 0) {\n string = \"struct {}\";\n }\n typ = $newType(0, $kindStruct, string, false, \"\", false, function(...args) {\n this.$val = this;\n for (var i = 0; i < fields.length; i++) {\n var f = fields[i];\n if (f.name == '_') {\n continue;\n }\n var arg = args[i];\n this[f.prop] = arg !== undefined ? arg : f.typ.zero();\n }\n });\n $structTypes[typeKey] = typ;\n typ.init(pkgPath, fields);\n }\n return typ;\n};\n\nvar $assertType = (value, type, returnTuple) => {\n var isInterface = (type.kind === $kindInterface), ok, missingMethod = \"\";\n if (value === $ifaceNil) {\n ok = false;\n } else if (!isInterface) {\n ok = value.constructor === type;\n } else {\n var valueTypeString = value.constructor.string;\n ok = type.implementedBy[valueTypeString];\n if (ok === undefined) {\n ok = true;\n var valueMethodSet = $methodSet(value.constructor);\n var interfaceMethods = type.methods;\n for (var i = 0; i < interfaceMethods.length; i++) {\n var tm = interfaceMethods[i];\n var found = false;\n for (var j = 0; j < valueMethodSet.length; j++) {\n var vm = valueMethodSet[j];\n if (vm.name === tm.name && vm.pkg === tm.pkg && vm.typ === tm.typ) {\n found = true;\n break;\n }\n }\n if (!found) {\n ok = false;\n type.missingMethodFor[valueTypeString] = tm.name;\n break;\n }\n }\n type.implementedBy[valueTypeString] = ok;\n }\n if (!ok) {\n missingMethod = type.missingMethodFor[valueTypeString];\n }\n }\n\n if (!ok) {\n if (returnTuple) {\n return [type.zero(), false];\n }\n $panic(new $packages[\"runtime\"].TypeAssertionError.ptr(\n $packages[\"runtime\"]._type.ptr.nil,\n (value === $ifaceNil ? $packages[\"runtime\"]._type.ptr.nil : new $packages[\"runtime\"]._type.ptr(value.constructor.string)),\n new $packages[\"runtime\"]._type.ptr(type.string),\n missingMethod));\n }\n\n if (!isInterface) {\n value = value.$val;\n }\n if (type === $jsObjectPtr) {\n value = value.object;\n }\n return returnTuple ? [value, true] : value;\n};\n"; + numeric = "var $min = Math.min;\nvar $mod = (x, y) => { return x % y; };\nvar $parseInt = parseInt;\nvar $parseFloat = f => {\n if (f !== undefined && f !== null && f.constructor === Number) {\n return f;\n }\n return parseFloat(f);\n};\n\nvar $froundBuf = new Float32Array(1);\nvar $fround = Math.fround || (f => {\n $froundBuf[0] = f;\n return $froundBuf[0];\n});\n\nvar $imul = Math.imul || ((a, b) => {\n var ah = (a >>> 16) & 0xffff;\n var al = a & 0xffff;\n var bh = (b >>> 16) & 0xffff;\n var bl = b & 0xffff;\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) >> 0);\n});\n\nvar $floatKey = f => {\n if (f !== f) {\n $idCounter++;\n return \"NaN$\" + $idCounter;\n }\n return String(f);\n};\n\nvar $flatten64 = x => {\n return x.$high * 4294967296 + x.$low;\n};\n\nvar $shiftLeft64 = (x, y) => {\n if (y === 0) {\n return x;\n }\n if (y < 32) {\n return new x.constructor(x.$high << y | x.$low >>> (32 - y), (x.$low << y) >>> 0);\n }\n if (y < 64) {\n return new x.constructor(x.$low << (y - 32), 0);\n }\n return new x.constructor(0, 0);\n};\n\nvar $shiftRightInt64 = (x, y) => {\n if (y === 0) {\n return x;\n }\n if (y < 32) {\n return new x.constructor(x.$high >> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0);\n }\n if (y < 64) {\n return new x.constructor(x.$high >> 31, (x.$high >> (y - 32)) >>> 0);\n }\n if (x.$high < 0) {\n return new x.constructor(-1, 4294967295);\n }\n return new x.constructor(0, 0);\n};\n\nvar $shiftRightUint64 = (x, y) => {\n if (y === 0) {\n return x;\n }\n if (y < 32) {\n return new x.constructor(x.$high >>> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0);\n }\n if (y < 64) {\n return new x.constructor(0, x.$high >>> (y - 32));\n }\n return new x.constructor(0, 0);\n};\n\nvar $mul64 = (x, y) => {\n var x48 = x.$high >>> 16;\n var x32 = x.$high & 0xFFFF;\n var x16 = x.$low >>> 16;\n var x00 = x.$low & 0xFFFF;\n\n var y48 = y.$high >>> 16;\n var y32 = y.$high & 0xFFFF;\n var y16 = y.$low >>> 16;\n var y00 = y.$low & 0xFFFF;\n\n var z48 = 0, z32 = 0, z16 = 0, z00 = 0;\n z00 += x00 * y00;\n z16 += z00 >>> 16;\n z00 &= 0xFFFF;\n z16 += x16 * y00;\n z32 += z16 >>> 16;\n z16 &= 0xFFFF;\n z16 += x00 * y16;\n z32 += z16 >>> 16;\n z16 &= 0xFFFF;\n z32 += x32 * y00;\n z48 += z32 >>> 16;\n z32 &= 0xFFFF;\n z32 += x16 * y16;\n z48 += z32 >>> 16;\n z32 &= 0xFFFF;\n z32 += x00 * y32;\n z48 += z32 >>> 16;\n z32 &= 0xFFFF;\n z48 += x48 * y00 + x32 * y16 + x16 * y32 + x00 * y48;\n z48 &= 0xFFFF;\n\n var hi = ((z48 << 16) | z32) >>> 0;\n var lo = ((z16 << 16) | z00) >>> 0;\n\n var r = new x.constructor(hi, lo);\n return r;\n};\n\nvar $div64 = (x, y, returnRemainder) => {\n if (y.$high === 0 && y.$low === 0) {\n $throwRuntimeError(\"integer divide by zero\");\n }\n\n var s = 1;\n var rs = 1;\n\n var xHigh = x.$high;\n var xLow = x.$low;\n if (xHigh < 0) {\n s = -1;\n rs = -1;\n xHigh = -xHigh;\n if (xLow !== 0) {\n xHigh--;\n xLow = 4294967296 - xLow;\n }\n }\n\n var yHigh = y.$high;\n var yLow = y.$low;\n if (y.$high < 0) {\n s *= -1;\n yHigh = -yHigh;\n if (yLow !== 0) {\n yHigh--;\n yLow = 4294967296 - yLow;\n }\n }\n\n var high = 0, low = 0, n = 0;\n while (yHigh < 2147483648 && ((xHigh > yHigh) || (xHigh === yHigh && xLow > yLow))) {\n yHigh = (yHigh << 1 | yLow >>> 31) >>> 0;\n yLow = (yLow << 1) >>> 0;\n n++;\n }\n for (var i = 0; i <= n; i++) {\n high = high << 1 | low >>> 31;\n low = (low << 1) >>> 0;\n if ((xHigh > yHigh) || (xHigh === yHigh && xLow >= yLow)) {\n xHigh = xHigh - yHigh;\n xLow = xLow - yLow;\n if (xLow < 0) {\n xHigh--;\n xLow += 4294967296;\n }\n low++;\n if (low === 4294967296) {\n high++;\n low = 0;\n }\n }\n yLow = (yLow >>> 1 | yHigh << (32 - 1)) >>> 0;\n yHigh = yHigh >>> 1;\n }\n\n if (returnRemainder) {\n return new x.constructor(xHigh * rs, xLow * rs);\n }\n return new x.constructor(high * s, low * s);\n};\n\nvar $divComplex = (n, d) => {\n var ninf = n.$real === Infinity || n.$real === -Infinity || n.$imag === Infinity || n.$imag === -Infinity;\n var dinf = d.$real === Infinity || d.$real === -Infinity || d.$imag === Infinity || d.$imag === -Infinity;\n var nnan = !ninf && (n.$real !== n.$real || n.$imag !== n.$imag);\n var dnan = !dinf && (d.$real !== d.$real || d.$imag !== d.$imag);\n if (nnan || dnan) {\n return new n.constructor(NaN, NaN);\n }\n if (ninf && !dinf) {\n return new n.constructor(Infinity, Infinity);\n }\n if (!ninf && dinf) {\n return new n.constructor(0, 0);\n }\n if (d.$real === 0 && d.$imag === 0) {\n if (n.$real === 0 && n.$imag === 0) {\n return new n.constructor(NaN, NaN);\n }\n return new n.constructor(Infinity, Infinity);\n }\n var a = Math.abs(d.$real);\n var b = Math.abs(d.$imag);\n if (a <= b) {\n var ratio = d.$real / d.$imag;\n var denom = d.$real * ratio + d.$imag;\n return new n.constructor((n.$real * ratio + n.$imag) / denom, (n.$imag * ratio - n.$real) / denom);\n }\n var ratio = d.$imag / d.$real;\n var denom = d.$imag * ratio + d.$real;\n return new n.constructor((n.$imag * ratio + n.$real) / denom, (n.$imag - n.$real * ratio) / denom);\n};\n"; + jsmapping = "var $jsObjectPtr, $jsErrorPtr;\n\nvar $needsExternalization = t => {\n switch (t.kind) {\n case $kindBool:\n case $kindInt:\n case $kindInt8:\n case $kindInt16:\n case $kindInt32:\n case $kindUint:\n case $kindUint8:\n case $kindUint16:\n case $kindUint32:\n case $kindUintptr:\n case $kindFloat32:\n case $kindFloat64:\n return false;\n default:\n return t !== $jsObjectPtr;\n }\n};\n\nvar $externalize = (v, t, makeWrapper) => {\n if (t === $jsObjectPtr) {\n return v;\n }\n switch (t.kind) {\n case $kindBool:\n case $kindInt:\n case $kindInt8:\n case $kindInt16:\n case $kindInt32:\n case $kindUint:\n case $kindUint8:\n case $kindUint16:\n case $kindUint32:\n case $kindUintptr:\n case $kindFloat32:\n case $kindFloat64:\n return v;\n case $kindInt64:\n case $kindUint64:\n return $flatten64(v);\n case $kindArray:\n if ($needsExternalization(t.elem)) {\n return $mapArray(v, e => { return $externalize(e, t.elem, makeWrapper); });\n }\n return v;\n case $kindFunc:\n return $externalizeFunction(v, t, false, makeWrapper);\n case $kindInterface:\n if (v === $ifaceNil) {\n return null;\n }\n if (v.constructor === $jsObjectPtr) {\n return v.$val.object;\n }\n return $externalize(v.$val, v.constructor, makeWrapper);\n case $kindMap:\n if (v.keys === undefined) {\n return null;\n }\n var m = {};\n var keys = Array.from(v.keys());\n for (var i = 0; i < keys.length; i++) {\n var entry = v.get(keys[i]);\n m[$externalize(entry.k, t.key, makeWrapper)] = $externalize(entry.v, t.elem, makeWrapper);\n }\n return m;\n case $kindPtr:\n if (v === t.nil) {\n return null;\n }\n return $externalize(v.$get(), t.elem, makeWrapper);\n case $kindSlice:\n if (v === v.constructor.nil) {\n return null;\n }\n if ($needsExternalization(t.elem)) {\n return $mapArray($sliceToNativeArray(v), e => { return $externalize(e, t.elem, makeWrapper); });\n }\n return $sliceToNativeArray(v);\n case $kindString:\n if ($isASCII(v)) {\n return v;\n }\n var s = \"\", r;\n for (var i = 0; i < v.length; i += r[1]) {\n r = $decodeRune(v, i);\n var c = r[0];\n if (c > 0xFFFF) {\n var h = Math.floor((c - 0x10000) / 0x400) + 0xD800;\n var l = (c - 0x10000) % 0x400 + 0xDC00;\n s += String.fromCharCode(h, l);\n continue;\n }\n s += String.fromCharCode(c);\n }\n return s;\n case $kindStruct:\n var timePkg = $packages[\"time\"];\n if (timePkg !== undefined && v.constructor === timePkg.Time.ptr) {\n var milli = $div64(v.UnixNano(), new $Int64(0, 1000000));\n return new Date($flatten64(milli));\n }\n\n var noJsObject = {};\n var searchJsObject = (v, t) => {\n if (t === $jsObjectPtr) {\n return v;\n }\n switch (t.kind) {\n case $kindPtr:\n if (v === t.nil) {\n return noJsObject;\n }\n return searchJsObject(v.$get(), t.elem);\n case $kindStruct:\n if (t.fields.length === 0) {\n return noJsObject;\n }\n var f = t.fields[0];\n return searchJsObject(v[f.prop], f.typ);\n case $kindInterface:\n return searchJsObject(v.$val, v.constructor);\n default:\n return noJsObject;\n }\n };\n var o = searchJsObject(v, t);\n if (o !== noJsObject) {\n return o;\n }\n\n if (makeWrapper !== undefined) {\n return makeWrapper(v);\n }\n\n o = {};\n for (var i = 0; i < t.fields.length; i++) {\n var f = t.fields[i];\n if (!f.exported) {\n continue;\n }\n o[f.name] = $externalize(v[f.prop], f.typ, makeWrapper);\n }\n return o;\n }\n $throwRuntimeError(\"cannot externalize \" + t.string);\n};\n\nvar $externalizeFunction = (v, t, passThis, makeWrapper) => {\n if (v === $throwNilPointerError) {\n return null;\n }\n if (v.$externalizeWrapper === undefined) {\n $checkForDeadlock = false;\n v.$externalizeWrapper = function () {\n var args = [];\n for (var i = 0; i < t.params.length; i++) {\n if (t.variadic && i === t.params.length - 1) {\n var vt = t.params[i].elem, varargs = [];\n for (var j = i; j < arguments.length; j++) {\n varargs.push($internalize(arguments[j], vt, makeWrapper));\n }\n args.push(new (t.params[i])(varargs));\n break;\n }\n args.push($internalize(arguments[i], t.params[i], makeWrapper));\n }\n var result = v.apply(passThis ? this : undefined, args);\n switch (t.results.length) {\n case 0:\n return;\n case 1:\n return $externalize($copyIfRequired(result, t.results[0]), t.results[0], makeWrapper);\n default:\n for (var i = 0; i < t.results.length; i++) {\n result[i] = $externalize($copyIfRequired(result[i], t.results[i]), t.results[i], makeWrapper);\n }\n return result;\n }\n };\n }\n return v.$externalizeWrapper;\n};\n\nvar $internalize = (v, t, recv, seen, makeWrapper) => {\n if (t === $jsObjectPtr) {\n return v;\n }\n if (t === $jsObjectPtr.elem) {\n $throwRuntimeError(\"cannot internalize js.Object, use *js.Object instead\");\n }\n if (v && v.__internal_object__ !== undefined) {\n return $assertType(v.__internal_object__, t, false);\n }\n var timePkg = $packages[\"time\"];\n if (timePkg !== undefined && t === timePkg.Time) {\n if (!(v !== null && v !== undefined && v.constructor === Date)) {\n $throwRuntimeError(\"cannot internalize time.Time from \" + typeof v + \", must be Date\");\n }\n return timePkg.Unix(new $Int64(0, 0), new $Int64(0, v.getTime() * 1000000));\n }\n\n // Cache for values we've already internalized in order to deal with circular\n // references.\n if (seen === undefined) { seen = new Map(); }\n if (!seen.has(t)) { seen.set(t, new Map()); }\n if (seen.get(t).has(v)) { return seen.get(t).get(v); }\n\n switch (t.kind) {\n case $kindBool:\n return !!v;\n case $kindInt:\n return parseInt(v);\n case $kindInt8:\n return parseInt(v) << 24 >> 24;\n case $kindInt16:\n return parseInt(v) << 16 >> 16;\n case $kindInt32:\n return parseInt(v) >> 0;\n case $kindUint:\n return parseInt(v);\n case $kindUint8:\n return parseInt(v) << 24 >>> 24;\n case $kindUint16:\n return parseInt(v) << 16 >>> 16;\n case $kindUint32:\n case $kindUintptr:\n return parseInt(v) >>> 0;\n case $kindInt64:\n case $kindUint64:\n return new t(0, v);\n case $kindFloat32:\n case $kindFloat64:\n return parseFloat(v);\n case $kindArray:\n if (v === null || v === undefined) {\n $throwRuntimeError(\"cannot internalize \"+v+\" as a \"+t.string);\n }\n if (v.length !== t.len) {\n $throwRuntimeError(\"got array with wrong size from JavaScript native\");\n }\n return $mapArray(v, e => { return $internalize(e, t.elem, makeWrapper); });\n case $kindFunc:\n return function () {\n var args = [];\n for (var i = 0; i < t.params.length; i++) {\n if (t.variadic && i === t.params.length - 1) {\n var vt = t.params[i].elem, varargs = arguments[i];\n for (var j = 0; j < varargs.$length; j++) {\n args.push($externalize(varargs.$array[varargs.$offset + j], vt, makeWrapper));\n }\n break;\n }\n args.push($externalize(arguments[i], t.params[i], makeWrapper));\n }\n var result = v.apply(recv, args);\n switch (t.results.length) {\n case 0:\n return;\n case 1:\n return $internalize(result, t.results[0], makeWrapper);\n default:\n for (var i = 0; i < t.results.length; i++) {\n result[i] = $internalize(result[i], t.results[i], makeWrapper);\n }\n return result;\n }\n };\n case $kindInterface:\n if (t.methods.length !== 0) {\n $throwRuntimeError(\"cannot internalize \" + t.string);\n }\n if (v === null) {\n return $ifaceNil;\n }\n if (v === undefined) {\n return new $jsObjectPtr(undefined);\n }\n switch (v.constructor) {\n case Int8Array:\n return new ($sliceType($Int8))(v);\n case Int16Array:\n return new ($sliceType($Int16))(v);\n case Int32Array:\n return new ($sliceType($Int))(v);\n case Uint8Array:\n return new ($sliceType($Uint8))(v);\n case Uint16Array:\n return new ($sliceType($Uint16))(v);\n case Uint32Array:\n return new ($sliceType($Uint))(v);\n case Float32Array:\n return new ($sliceType($Float32))(v);\n case Float64Array:\n return new ($sliceType($Float64))(v);\n case Array:\n return $internalize(v, $sliceType($emptyInterface), makeWrapper);\n case Boolean:\n return new $Bool(!!v);\n case Date:\n if (timePkg === undefined) {\n /* time package is not present, internalize as &js.Object{Date} so it can be externalized into original Date. */\n return new $jsObjectPtr(v);\n }\n return new timePkg.Time($internalize(v, timePkg.Time, makeWrapper));\n case ((() => { })).constructor: // is usually Function, but in Chrome extensions it is something else\n var funcType = $funcType([$sliceType($emptyInterface)], [$jsObjectPtr], true);\n return new funcType($internalize(v, funcType, makeWrapper));\n case Number:\n return new $Float64(parseFloat(v));\n case String:\n return new $String($internalize(v, $String, makeWrapper));\n default:\n if ($global.Node && v instanceof $global.Node) {\n return new $jsObjectPtr(v);\n }\n var mapType = $mapType($String, $emptyInterface);\n return new mapType($internalize(v, mapType, recv, seen, makeWrapper));\n }\n case $kindMap:\n var m = new Map();\n seen.get(t).set(v, m);\n var keys = $keys(v);\n for (var i = 0; i < keys.length; i++) {\n var k = $internalize(keys[i], t.key, recv, seen, makeWrapper);\n m.set(t.key.keyFor(k), { k, v: $internalize(v[keys[i]], t.elem, recv, seen, makeWrapper) });\n }\n return m;\n case $kindPtr:\n if (t.elem.kind === $kindStruct) {\n return $internalize(v, t.elem, makeWrapper);\n }\n case $kindSlice:\n if (v == null) {\n return t.zero();\n }\n return new t($mapArray(v, e => { return $internalize(e, t.elem, makeWrapper); }));\n case $kindString:\n v = String(v);\n if ($isASCII(v)) {\n return v;\n }\n var s = \"\";\n var i = 0;\n while (i < v.length) {\n var h = v.charCodeAt(i);\n if (0xD800 <= h && h <= 0xDBFF) {\n var l = v.charCodeAt(i + 1);\n var c = (h - 0xD800) * 0x400 + l - 0xDC00 + 0x10000;\n s += $encodeRune(c);\n i += 2;\n continue;\n }\n s += $encodeRune(h);\n i++;\n }\n return s;\n case $kindStruct:\n var noJsObject = {};\n var searchJsObject = t => {\n if (t === $jsObjectPtr) {\n return v;\n }\n if (t === $jsObjectPtr.elem) {\n $throwRuntimeError(\"cannot internalize js.Object, use *js.Object instead\");\n }\n switch (t.kind) {\n case $kindPtr:\n return searchJsObject(t.elem);\n case $kindStruct:\n if (t.fields.length === 0) {\n return noJsObject;\n }\n var f = t.fields[0];\n var o = searchJsObject(f.typ);\n if (o !== noJsObject) {\n var n = new t.ptr();\n n[f.prop] = o;\n return n;\n }\n return noJsObject;\n default:\n return noJsObject;\n }\n };\n var o = searchJsObject(t);\n if (o !== noJsObject) {\n return o;\n }\n var n = new t.ptr();\n for (var i = 0; i < t.fields.length; i++) {\n var f = t.fields[i];\n if (!f.exported) {\n continue;\n }\n var jsProp = v[f.name];\n n[f.prop] = $internalize(jsProp, f.typ, recv, seen, makeWrapper);\n }\n return n;\n }\n $throwRuntimeError(\"cannot internalize \" + t.string);\n};\n\nvar $copyIfRequired = (v, typ) => {\n // interface values\n if (v && v.constructor && v.constructor.copy) {\n return new v.constructor($clone(v.$val, v.constructor))\n }\n // array and struct values\n if (typ.copy) {\n var clone = typ.zero();\n typ.copy(clone, v);\n return clone;\n }\n return v;\n}\n\n/* $isASCII reports whether string s contains only ASCII characters. */\nvar $isASCII = s => {\n for (var i = 0; i < s.length; i++) {\n if (s.charCodeAt(i) >= 128) {\n return false;\n }\n }\n return true;\n};\n"; + goroutines = "var $stackDepthOffset = 0;\nvar $getStackDepth = () => {\n var err = new Error();\n if (err.stack === undefined) {\n return undefined;\n }\n return $stackDepthOffset + err.stack.split(\"\\n\").length;\n};\n\nvar $panicStackDepth = null, $panicValue;\nvar $callDeferred = (deferred, jsErr, fromPanic) => {\n if (!fromPanic && deferred !== null && $curGoroutine.deferStack.indexOf(deferred) == -1) {\n throw jsErr;\n }\n if (jsErr !== null) {\n var newErr = null;\n try {\n $panic(new $jsErrorPtr(jsErr));\n } catch (err) {\n newErr = err;\n }\n $callDeferred(deferred, newErr);\n return;\n }\n if ($curGoroutine.asleep) {\n return;\n }\n\n $stackDepthOffset--;\n var outerPanicStackDepth = $panicStackDepth;\n var outerPanicValue = $panicValue;\n\n var localPanicValue = $curGoroutine.panicStack.pop();\n if (localPanicValue !== undefined) {\n $panicStackDepth = $getStackDepth();\n $panicValue = localPanicValue;\n }\n\n try {\n while (true) {\n if (deferred === null) {\n deferred = $curGoroutine.deferStack[$curGoroutine.deferStack.length - 1];\n if (deferred === undefined) {\n /* The panic reached the top of the stack. Clear it and throw it as a JavaScript error. */\n $panicStackDepth = null;\n if (localPanicValue.Object instanceof Error) {\n throw localPanicValue.Object;\n }\n var msg;\n if (localPanicValue.constructor === $String) {\n msg = localPanicValue.$val;\n } else if (localPanicValue.Error !== undefined) {\n msg = localPanicValue.Error();\n } else if (localPanicValue.String !== undefined) {\n msg = localPanicValue.String();\n } else {\n msg = localPanicValue;\n }\n throw new Error(msg);\n }\n }\n var call = deferred.pop();\n if (call === undefined) {\n $curGoroutine.deferStack.pop();\n if (localPanicValue !== undefined) {\n deferred = null;\n continue;\n }\n return;\n }\n var r = call[0].apply(call[2], call[1]);\n if (r && r.$blk !== undefined) {\n deferred.push([r.$blk, [], r]);\n if (fromPanic) {\n throw null;\n }\n return;\n }\n\n if (localPanicValue !== undefined && $panicStackDepth === null) {\n /* error was recovered */\n if (fromPanic) {\n throw null;\n }\n return;\n }\n }\n } catch (e) {\n // Deferred function threw a JavaScript exception or tries to unwind stack\n // to the point where a panic was handled.\n if (fromPanic) {\n // Re-throw the exception to reach deferral execution call at the end\n // of the function.\n throw e;\n }\n // We are at the end of the function, handle the error or re-throw to\n // continue unwinding if necessary, or simply stop unwinding if we got far\n // enough.\n $callDeferred(deferred, e, fromPanic);\n } finally {\n if (localPanicValue !== undefined) {\n if ($panicStackDepth !== null) {\n $curGoroutine.panicStack.push(localPanicValue);\n }\n $panicStackDepth = outerPanicStackDepth;\n $panicValue = outerPanicValue;\n }\n $stackDepthOffset++;\n }\n};\n\nvar $panic = value => {\n $curGoroutine.panicStack.push(value);\n $callDeferred(null, null, true);\n};\nvar $recover = () => {\n if ($panicStackDepth === null || ($panicStackDepth !== undefined && $panicStackDepth !== $getStackDepth() - 2)) {\n return $ifaceNil;\n }\n $panicStackDepth = null;\n return $panicValue;\n};\nvar $throw = err => { throw err; };\n\nvar $noGoroutine = { asleep: false, exit: false, deferStack: [], panicStack: [] };\nvar $curGoroutine = $noGoroutine, $totalGoroutines = 0, $awakeGoroutines = 0, $checkForDeadlock = true, $exportedFunctions = 0;\nvar $mainFinished = false;\nvar $go = (fun, args) => {\n $totalGoroutines++;\n $awakeGoroutines++;\n var $goroutine = () => {\n try {\n $curGoroutine = $goroutine;\n var r = fun(...args);\n if (r && r.$blk !== undefined) {\n fun = () => { return r.$blk(); };\n args = [];\n return;\n }\n $goroutine.exit = true;\n } catch (err) {\n if (!$goroutine.exit) {\n throw err;\n }\n } finally {\n $curGoroutine = $noGoroutine;\n if ($goroutine.exit) { /* also set by runtime.Goexit() */\n $totalGoroutines--;\n $goroutine.asleep = true;\n }\n if ($goroutine.asleep) {\n $awakeGoroutines--;\n if (!$mainFinished && $awakeGoroutines === 0 && $checkForDeadlock && $exportedFunctions === 0) {\n console.error(\"fatal error: all goroutines are asleep - deadlock!\");\n if ($global.process !== undefined) {\n $global.process.exit(2);\n }\n }\n }\n }\n };\n $goroutine.asleep = false;\n $goroutine.exit = false;\n $goroutine.deferStack = [];\n $goroutine.panicStack = [];\n $schedule($goroutine);\n};\n\nvar $scheduled = [];\nvar $runScheduled = () => {\n // For nested setTimeout calls browsers enforce 4ms minimum delay. We minimize\n // the effect of this penalty by queueing the timer preemptively before we run\n // the goroutines, and later cancelling it if it turns out unneeded. See:\n // https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#nested_timeouts\n var nextRun = setTimeout($runScheduled);\n try {\n var start = Date.now();\n var r;\n while ((r = $scheduled.shift()) !== undefined) {\n r();\n // We need to interrupt this loop in order to allow the event loop to\n // process timers, IO, etc. However, invoking scheduling through\n // setTimeout is ~1000 times more expensive, so we amortize this cost by\n // looping until the 4ms minimal delay has elapsed (assuming there are\n // scheduled goroutines to run), and then yield to the event loop.\n var elapsed = Date.now() - start;\n if (elapsed > 4 || elapsed < 0) { break; }\n }\n } finally {\n if ($scheduled.length == 0) {\n // Cancel scheduling pass if there's nothing to run.\n clearTimeout(nextRun);\n }\n }\n};\n\nvar $schedule = goroutine => {\n if (goroutine.asleep) {\n goroutine.asleep = false;\n $awakeGoroutines++;\n }\n $scheduled.push(goroutine);\n if ($curGoroutine === $noGoroutine) {\n $runScheduled();\n }\n};\n\nvar $setTimeout = (f, t) => {\n $awakeGoroutines++;\n return setTimeout(() => {\n $awakeGoroutines--;\n f();\n }, t);\n};\n\nvar $block = () => {\n if ($curGoroutine === $noGoroutine) {\n $throwRuntimeError(\"cannot block in JavaScript callback, fix by wrapping code in goroutine\");\n }\n $curGoroutine.asleep = true;\n};\n\nvar $restore = (context, params) => {\n if (context !== undefined && context.$blk !== undefined) {\n return context;\n }\n return params;\n}\n\nvar $send = (chan, value) => {\n if (chan.$closed) {\n $throwRuntimeError(\"send on closed channel\");\n }\n var queuedRecv = chan.$recvQueue.shift();\n if (queuedRecv !== undefined) {\n queuedRecv([value, true]);\n return;\n }\n if (chan.$buffer.length < chan.$capacity) {\n chan.$buffer.push(value);\n return;\n }\n\n var thisGoroutine = $curGoroutine;\n var closedDuringSend;\n chan.$sendQueue.push(closed => {\n closedDuringSend = closed;\n $schedule(thisGoroutine);\n return value;\n });\n $block();\n return {\n $blk() {\n if (closedDuringSend) {\n $throwRuntimeError(\"send on closed channel\");\n }\n }\n };\n};\nvar $recv = chan => {\n var queuedSend = chan.$sendQueue.shift();\n if (queuedSend !== undefined) {\n chan.$buffer.push(queuedSend(false));\n }\n var bufferedValue = chan.$buffer.shift();\n if (bufferedValue !== undefined) {\n return [bufferedValue, true];\n }\n if (chan.$closed) {\n return [chan.$elem.zero(), false];\n }\n\n var thisGoroutine = $curGoroutine;\n var f = { $blk() { return this.value; } };\n var queueEntry = v => {\n f.value = v;\n $schedule(thisGoroutine);\n };\n chan.$recvQueue.push(queueEntry);\n $block();\n return f;\n};\nvar $close = chan => {\n if (chan.$closed) {\n $throwRuntimeError(\"close of closed channel\");\n }\n chan.$closed = true;\n while (true) {\n var queuedSend = chan.$sendQueue.shift();\n if (queuedSend === undefined) {\n break;\n }\n queuedSend(true); /* will panic */\n }\n while (true) {\n var queuedRecv = chan.$recvQueue.shift();\n if (queuedRecv === undefined) {\n break;\n }\n queuedRecv([chan.$elem.zero(), false]);\n }\n};\nvar $select = comms => {\n var ready = [];\n var selection = -1;\n for (var i = 0; i < comms.length; i++) {\n var comm = comms[i];\n var chan = comm[0];\n switch (comm.length) {\n case 0: /* default */\n selection = i;\n break;\n case 1: /* recv */\n if (chan.$sendQueue.length !== 0 || chan.$buffer.length !== 0 || chan.$closed) {\n ready.push(i);\n }\n break;\n case 2: /* send */\n if (chan.$closed) {\n $throwRuntimeError(\"send on closed channel\");\n }\n if (chan.$recvQueue.length !== 0 || chan.$buffer.length < chan.$capacity) {\n ready.push(i);\n }\n break;\n }\n }\n\n if (ready.length !== 0) {\n selection = ready[Math.floor(Math.random() * ready.length)];\n }\n if (selection !== -1) {\n var comm = comms[selection];\n switch (comm.length) {\n case 0: /* default */\n return [selection];\n case 1: /* recv */\n return [selection, $recv(comm[0])];\n case 2: /* send */\n $send(comm[0], comm[1]);\n return [selection];\n }\n }\n\n var entries = [];\n var thisGoroutine = $curGoroutine;\n var f = { $blk() { return this.selection; } };\n var removeFromQueues = () => {\n for (var i = 0; i < entries.length; i++) {\n var entry = entries[i];\n var queue = entry[0];\n var index = queue.indexOf(entry[1]);\n if (index !== -1) {\n queue.splice(index, 1);\n }\n }\n };\n for (var i = 0; i < comms.length; i++) {\n (i => {\n var comm = comms[i];\n switch (comm.length) {\n case 1: /* recv */\n var queueEntry = value => {\n f.selection = [i, value];\n removeFromQueues();\n $schedule(thisGoroutine);\n };\n entries.push([comm[0].$recvQueue, queueEntry]);\n comm[0].$recvQueue.push(queueEntry);\n break;\n case 2: /* send */\n var queueEntry = () => {\n if (comm[0].$closed) {\n $throwRuntimeError(\"send on closed channel\");\n }\n f.selection = [i];\n removeFromQueues();\n $schedule(thisGoroutine);\n return comm[1];\n };\n entries.push([comm[0].$sendQueue, queueEntry]);\n comm[0].$sendQueue.push(queueEntry);\n break;\n }\n })(i);\n }\n $block();\n return f;\n};\n"; + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/neelance/astrewrite"] = (function() { + var $pkg = {}, $init, fmt, ast, constant, token, types, simplifyContext, ptrType, sliceType, ptrType$1, ptrType$2, sliceType$1, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, sliceType$2, sliceType$3, sliceType$4, ptrType$11, sliceType$5, ptrType$12, sliceType$6, ptrType$13, ptrType$14, ptrType$15, ptrType$16, ptrType$17, ptrType$18, ptrType$19, ptrType$20, ptrType$21, ptrType$22, ptrType$23, ptrType$24, ptrType$25, ptrType$26, ptrType$27, ptrType$28, ptrType$29, ptrType$30, ptrType$31, ptrType$32, sliceType$7, ptrType$33, ptrType$34, ptrType$35, sliceType$8, ptrType$36, ptrType$37, ptrType$38, ptrType$39, ptrType$40, ptrType$41, ptrType$42, ptrType$43, ptrType$44, ptrType$45, ptrType$46, ptrType$47, sliceType$9, ptrType$48, Simplify, unwrapBlock, simpleAssign, ContainsCall; + fmt = $packages["fmt"]; + ast = $packages["go/ast"]; + constant = $packages["go/constant"]; + token = $packages["go/token"]; + types = $packages["go/types"]; + simplifyContext = $newType(0, $kindStruct, "astrewrite.simplifyContext", true, "github.com/neelance/astrewrite", false, function(info_, varCounter_, simplifyCalls_) { + this.$val = this; + if (arguments.length === 0) { + this.info = ptrType.nil; + this.varCounter = 0; + this.simplifyCalls = false; + return; + } + this.info = info_; + this.varCounter = varCounter_; + this.simplifyCalls = simplifyCalls_; + }); + $pkg.simplifyContext = simplifyContext; + $pkg.$finishSetup = function() { + ptrType = $ptrType(types.Info); + sliceType = $sliceType(ast.Decl); + ptrType$1 = $ptrType(ast.GenDecl); + ptrType$2 = $ptrType(ast.FuncDecl); + sliceType$1 = $sliceType(ast.Stmt); + ptrType$3 = $ptrType(sliceType$1); + ptrType$4 = $ptrType(ast.CommentGroup); + ptrType$5 = $ptrType(ast.FieldList); + ptrType$6 = $ptrType(ast.Ident); + ptrType$7 = $ptrType(ast.FuncType); + ptrType$8 = $ptrType(ast.BlockStmt); + ptrType$9 = $ptrType(ast.Scope); + ptrType$10 = $ptrType(ast.ImportSpec); + sliceType$2 = $sliceType(ptrType$10); + sliceType$3 = $sliceType(ptrType$6); + sliceType$4 = $sliceType(ptrType$4); + ptrType$11 = $ptrType(types.Scope); + sliceType$5 = $sliceType(ast.Spec); + ptrType$12 = $ptrType(ast.ValueSpec); + sliceType$6 = $sliceType(ast.Expr); + ptrType$13 = $ptrType(ast.ExprStmt); + ptrType$14 = $ptrType(ast.LabeledStmt); + ptrType$15 = $ptrType(ast.AssignStmt); + ptrType$16 = $ptrType(ast.DeclStmt); + ptrType$17 = $ptrType(ast.IfStmt); + ptrType$18 = $ptrType(ast.SwitchStmt); + ptrType$19 = $ptrType(ast.TypeSwitchStmt); + ptrType$20 = $ptrType(ast.ForStmt); + ptrType$21 = $ptrType(ast.RangeStmt); + ptrType$22 = $ptrType(ast.IncDecStmt); + ptrType$23 = $ptrType(ast.GoStmt); + ptrType$24 = $ptrType(ast.SelectStmt); + ptrType$25 = $ptrType(ast.DeferStmt); + ptrType$26 = $ptrType(ast.SendStmt); + ptrType$27 = $ptrType(ast.ReturnStmt); + ptrType$28 = $ptrType(ast.TypeAssertExpr); + ptrType$29 = $ptrType(ast.CaseClause); + ptrType$30 = $ptrType(types.Chan); + ptrType$31 = $ptrType(types.Package); + ptrType$32 = $ptrType(types.Var); + sliceType$7 = $sliceType(ptrType$32); + ptrType$33 = $ptrType(ast.CallExpr); + ptrType$34 = $ptrType(ast.CommClause); + ptrType$35 = $ptrType(ast.UnaryExpr); + sliceType$8 = $sliceType(ptrType$29); + ptrType$36 = $ptrType(ast.BranchStmt); + ptrType$37 = $ptrType(ast.FuncLit); + ptrType$38 = $ptrType(ast.CompositeLit); + ptrType$39 = $ptrType(ast.ParenExpr); + ptrType$40 = $ptrType(ast.SelectorExpr); + ptrType$41 = $ptrType(ast.IndexExpr); + ptrType$42 = $ptrType(ast.SliceExpr); + ptrType$43 = $ptrType(ast.StarExpr); + ptrType$44 = $ptrType(ast.BinaryExpr); + ptrType$45 = $ptrType(ast.KeyValueExpr); + ptrType$46 = $ptrType(types.Selection); + ptrType$47 = $ptrType(types.Tuple); + sliceType$9 = $sliceType($emptyInterface); + ptrType$48 = $ptrType(simplifyContext); + Simplify = function Simplify$1(file, info, simplifyCalls) { + var {_entry, _i, _key, _r, _r$1, _ref, _ref$1, c, decl, decl$1, decl$2, decls, file, i, info, newFile, simplifyCalls, $s, $r, $c} = $restore(this, {file, info, simplifyCalls}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = new simplifyContext.ptr(info, 0, simplifyCalls); + decls = $makeSlice(sliceType, file.Decls.$length); + _ref = file.Decls; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + decl = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + c.varCounter = 0; + _ref$1 = decl; + /* */ if ($assertType(_ref$1, ptrType$1, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref$1, ptrType$2, true)[1]) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if ($assertType(_ref$1, ptrType$1, true)[1]) { */ case 3: + decl$1 = _ref$1.$val; + _r = c.simplifyGenDecl(ptrType$3.nil, decl$1); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ((i < 0 || i >= decls.$length) ? ($throwRuntimeError("index out of range"), undefined) : decls.$array[decls.$offset + i] = _r); + $s = 5; continue; + /* } else if ($assertType(_ref$1, ptrType$2, true)[1]) { */ case 4: + decl$2 = _ref$1.$val; + _r$1 = c.simplifyBlock(decl$2.Body); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ((i < 0 || i >= decls.$length) ? ($throwRuntimeError("index out of range"), undefined) : decls.$array[decls.$offset + i] = new ast.FuncDecl.ptr(decl$2.Doc, decl$2.Recv, decl$2.Name, decl$2.Type, _r$1)); + /* } */ case 5: + _i++; + $s = 1; continue; + case 2: + newFile = new ast.File.ptr(file.Doc, file.Package, file.Name, decls, 0, 0, file.Scope, file.Imports, file.Unresolved, file.Comments); + _key = newFile; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: (_entry = $mapIndex(c.info.Scopes,ast.Node.keyFor(file)), _entry !== undefined ? _entry.v : ptrType$11.nil) }); + $s = -1; return newFile; + /* */ } return; } var $f = {$blk: Simplify$1, $c: true, $r, _entry, _i, _key, _r, _r$1, _ref, _ref$1, c, decl, decl$1, decl$2, decls, file, i, info, newFile, simplifyCalls, $s};return $f; + }; + $pkg.Simplify = Simplify; + $ptrType(simplifyContext).prototype.simplifyStmtList = function simplifyStmtList(stmts) { + var {_i, _ref, c, newStmts, s, stmts, $s, $r, $c} = $restore(this, {stmts}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + newStmts = [newStmts]; + c = this; + newStmts[0] = sliceType$1.nil; + _ref = stmts; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + s = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = c.simplifyStmt((newStmts.$ptr || (newStmts.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, newStmts))), s); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 1; continue; + case 2: + $s = -1; return newStmts[0]; + /* */ } return; } var $f = {$blk: simplifyStmtList, $c: true, $r, _i, _ref, c, newStmts, s, stmts, $s};return $f; + }; + $ptrType(simplifyContext).prototype.simplifyGenDecl = function simplifyGenDecl(stmts, decl) { + var {_i, _i$1, _i$2, _r, _ref, _ref$1, _ref$2, _ref$3, c, decl, i, initializer, j, spec, spec$1, spec$2, specs, stmts, v, v2, values, $s, $r, $c} = $restore(this, {stmts, decl}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if (!((decl.Tok === 85))) { + $s = -1; return decl; + } + specs = $makeSlice(sliceType$5, decl.Specs.$length); + _ref = decl.Specs; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + j = _i; + spec = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = spec; + /* */ if ($assertType(_ref$1, ptrType$12, true)[1]) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ($assertType(_ref$1, ptrType$12, true)[1]) { */ case 3: + spec$1 = _ref$1.$val; + values = sliceType$6.nil; + /* */ if (!(spec$1.Values === sliceType$6.nil)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!(spec$1.Values === sliceType$6.nil)) { */ case 6: + values = $makeSlice(sliceType$6, spec$1.Values.$length); + _ref$2 = spec$1.Values; + _i$1 = 0; + /* while (true) { */ case 8: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 9; continue; } + i = _i$1; + v = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + _r = c.simplifyExpr(stmts, v); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + v2 = _r; + _ref$3 = c.info.InitOrder; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$3.$length)) { break; } + initializer = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$2]); + if ($interfaceIsEqual(initializer.Rhs, v)) { + initializer.Rhs = v2; + } + _i$2++; + } + ((i < 0 || i >= values.$length) ? ($throwRuntimeError("index out of range"), undefined) : values.$array[values.$offset + i] = v2); + _i$1++; + $s = 8; continue; + case 9: + /* } */ case 7: + ((j < 0 || j >= specs.$length) ? ($throwRuntimeError("index out of range"), undefined) : specs.$array[specs.$offset + j] = new ast.ValueSpec.ptr(spec$1.Doc, spec$1.Names, spec$1.Type, values, spec$1.Comment)); + $s = 5; continue; + /* } else { */ case 4: + spec$2 = _ref$1; + ((j < 0 || j >= specs.$length) ? ($throwRuntimeError("index out of range"), undefined) : specs.$array[specs.$offset + j] = spec$2); + /* } */ case 5: + _i++; + $s = 1; continue; + case 2: + $s = -1; return new ast.GenDecl.ptr(decl.Doc, decl.TokPos, 85, decl.Lparen, specs, decl.Rparen); + /* */ } return; } var $f = {$blk: simplifyGenDecl, $c: true, $r, _i, _i$1, _i$2, _r, _ref, _ref$1, _ref$2, _ref$3, c, decl, i, initializer, j, spec, spec$1, spec$2, specs, stmts, v, v2, values, $s};return $f; + }; + $ptrType(simplifyContext).prototype.simplifyStmt = function simplifyStmt(stmts, s) { + var {_arg, _arg$1, _arg$2, _arg$3, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _key, _key$1, _key$2, _key$3, _key$4, _key$5, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tuple, a, a$1, a$2, assign, block, block$1, bodyPrefix, c, cc, cc$1, ccs, clauses, clauses$1, comm, comm$1, comm$2, comm$3, comm$4, entry, i, i$1, i$2, i$3, i$4, id, implicit, key, lhs, lhs$1, newCC, newClause, newComm, newS, newS$1, newS$2, newS$3, ok, okVar, recv, recv$1, rhs, s, s$1, s$10, s$11, s$12, s$13, s$14, s$15, s$16, s$17, s$2, s$3, s$4, s$5, s$6, s$7, s$8, s$9, simplifyLhs, stmts, t, t$1, ta, ta$1, tok, tok$1, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r, $c} = $restore(this, {stmts, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if ($interfaceIsEqual(s, $ifaceNil)) { + $s = -1; return; + } + _ref = s; + /* */ if ($assertType(_ref, ptrType$13, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$8, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$14, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$15, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$16, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$17, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$18, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$19, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$22, true)[1]) { $s = 11; continue; } + /* */ if ($assertType(_ref, ptrType$23, true)[1]) { $s = 12; continue; } + /* */ if ($assertType(_ref, ptrType$24, true)[1]) { $s = 13; continue; } + /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 14; continue; } + /* */ if ($assertType(_ref, ptrType$26, true)[1]) { $s = 15; continue; } + /* */ if ($assertType(_ref, ptrType$27, true)[1]) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if ($assertType(_ref, ptrType$13, true)[1]) { */ case 1: + s$1 = _ref.$val; + _r = c.simplifyExpr2(stmts, s$1.X, true); /* */ $s = 19; case 19: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + stmts.$set($append(stmts.$get(), new ast.ExprStmt.ptr(_r))); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$8, true)[1]) { */ case 2: + s$2 = _ref.$val; + _r$1 = c.simplifyBlock(s$2); /* */ $s = 20; case 20: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + stmts.$set($append(stmts.$get(), _r$1)); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$14, true)[1]) { */ case 3: + s$3 = _ref.$val; + $r = c.simplifyStmt(stmts, s$3.Stmt); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + (x$2 = stmts.$get(), x$3 = stmts.$get().$length - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$2.$array[x$2.$offset + x$3] = new ast.LabeledStmt.ptr(s$3.Label, s$3.Colon, (x = stmts.$get(), x$1 = stmts.$get().$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1]))))); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$15, true)[1]) { */ case 4: + s$4 = _ref.$val; + lhs = $makeSlice(sliceType$6, s$4.Lhs.$length); + _ref$1 = s$4.Lhs; + _i = 0; + /* while (true) { */ case 22: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 23; continue; } + i = _i; + x$4 = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _r$2 = c.simplifyExpr(stmts, x$4); /* */ $s = 24; case 24: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ((i < 0 || i >= lhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhs.$array[lhs.$offset + i] = _r$2); + _i++; + $s = 22; continue; + case 23: + rhs = $makeSlice(sliceType$6, s$4.Rhs.$length); + _ref$2 = s$4.Rhs; + _i$1 = 0; + /* while (true) { */ case 25: + /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 26; continue; } + i$1 = _i$1; + x$5 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$1]); + _r$3 = c.simplifyExpr2(stmts, x$5, true); /* */ $s = 27; case 27: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + ((i$1 < 0 || i$1 >= rhs.$length) ? ($throwRuntimeError("index out of range"), undefined) : rhs.$array[rhs.$offset + i$1] = _r$3); + _i$1++; + $s = 25; continue; + case 26: + stmts.$set($append(stmts.$get(), new ast.AssignStmt.ptr(lhs, s$4.TokPos, s$4.Tok, rhs))); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$16, true)[1]) { */ case 5: + s$5 = _ref.$val; + _r$4 = c.simplifyGenDecl(stmts, $assertType(s$5.Decl, ptrType$1)); /* */ $s = 28; case 28: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + stmts.$set($append(stmts.$get(), new ast.DeclStmt.ptr(_r$4))); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$17, true)[1]) { */ case 6: + s$6 = _ref.$val; + /* */ if (!($interfaceIsEqual(s$6.Init, $ifaceNil))) { $s = 29; continue; } + /* */ $s = 30; continue; + /* if (!($interfaceIsEqual(s$6.Init, $ifaceNil))) { */ case 29: + block = new ast.BlockStmt.ptr(0, sliceType$1.nil, 0); + stmts.$set($append(stmts.$get(), block)); + stmts = (block.$ptr_List || (block.$ptr_List = new ptrType$3(function() { return this.$target.List; }, function($v) { this.$target.List = $v; }, block))); + $r = c.simplifyStmt(stmts, s$6.Init); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 30: + _r$5 = c.simplifyExpr(stmts, s$6.Cond); /* */ $s = 32; case 32: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = c.simplifyBlock(s$6.Body); /* */ $s = 33; case 33: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = c.simplifyToStmtList(s$6.Else); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = c.toElseBranch(_r$7, (_entry = $mapIndex(c.info.Scopes,ast.Node.keyFor(s$6.Else)), _entry !== undefined ? _entry.v : ptrType$11.nil)); /* */ $s = 35; case 35: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + newS = new ast.IfStmt.ptr(s$6.If, $ifaceNil, _r$5, _r$6, _r$8); + _key = newS; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: (_entry$1 = $mapIndex(c.info.Scopes,ast.Node.keyFor(s$6)), _entry$1 !== undefined ? _entry$1.v : ptrType$11.nil) }); + stmts.$set($append(stmts.$get(), newS)); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$18, true)[1]) { */ case 7: + s$7 = _ref.$val; + $r = c.simplifySwitch(stmts, s$7); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$19, true)[1]) { */ case 8: + s$8 = _ref.$val; + /* */ if (!($interfaceIsEqual(s$8.Init, $ifaceNil))) { $s = 37; continue; } + /* */ $s = 38; continue; + /* if (!($interfaceIsEqual(s$8.Init, $ifaceNil))) { */ case 37: + block$1 = new ast.BlockStmt.ptr(0, sliceType$1.nil, 0); + stmts.$set($append(stmts.$get(), block$1)); + stmts = (block$1.$ptr_List || (block$1.$ptr_List = new ptrType$3(function() { return this.$target.List; }, function($v) { this.$target.List = $v; }, block$1))); + $r = c.simplifyStmt(stmts, s$8.Init); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 38: + assign = $ifaceNil; + _ref$3 = s$8.Assign; + /* */ if ($assertType(_ref$3, ptrType$13, true)[1]) { $s = 40; continue; } + /* */ if ($assertType(_ref$3, ptrType$15, true)[1]) { $s = 41; continue; } + /* */ $s = 42; continue; + /* if ($assertType(_ref$3, ptrType$13, true)[1]) { */ case 40: + a = _ref$3.$val; + ta = $assertType(a.X, ptrType$28); + _r$9 = c.simplifyExpr(stmts, ta.X); /* */ $s = 44; case 44: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + assign = new ast.ExprStmt.ptr(new ast.TypeAssertExpr.ptr(_r$9, ta.Lparen, ta.Type, ta.Rparen)); + $s = 43; continue; + /* } else if ($assertType(_ref$3, ptrType$15, true)[1]) { */ case 41: + a$1 = _ref$3.$val; + ta$1 = $assertType((x$6 = a$1.Rhs, (0 >= x$6.$length ? ($throwRuntimeError("index out of range"), undefined) : x$6.$array[x$6.$offset + 0])), ptrType$28); + _r$10 = c.simplifyExpr(stmts, ta$1.X); /* */ $s = 45; case 45: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + assign = new ast.AssignStmt.ptr(a$1.Lhs, a$1.TokPos, a$1.Tok, new sliceType$6([new ast.TypeAssertExpr.ptr(_r$10, ta$1.Lparen, ta$1.Type, ta$1.Rparen)])); + $s = 43; continue; + /* } else { */ case 42: + a$2 = _ref$3; + $panic(new $String("unexpected type switch assign")); + /* } */ case 43: + clauses = $makeSlice(sliceType$1, s$8.Body.List.$length); + _ref$4 = s$8.Body.List; + _i$2 = 0; + /* while (true) { */ case 46: + /* if (!(_i$2 < _ref$4.$length)) { break; } */ if(!(_i$2 < _ref$4.$length)) { $s = 47; continue; } + i$2 = _i$2; + ccs = ((_i$2 < 0 || _i$2 >= _ref$4.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$4.$array[_ref$4.$offset + _i$2]); + cc = $assertType(ccs, ptrType$29); + _r$11 = c.simplifyStmtList(cc.Body); /* */ $s = 48; case 48: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + newClause = new ast.CaseClause.ptr(cc.Case, cc.List, cc.Colon, _r$11); + _tuple = (_entry$2 = $mapIndex(c.info.Implicits,ast.Node.keyFor(cc)), _entry$2 !== undefined ? [_entry$2.v, true] : [$ifaceNil, false]); + implicit = _tuple[0]; + ok = _tuple[1]; + if (ok) { + _key$1 = newClause; (c.info.Implicits || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key$1), { k: _key$1, v: implicit }); + } + ((i$2 < 0 || i$2 >= clauses.$length) ? ($throwRuntimeError("index out of range"), undefined) : clauses.$array[clauses.$offset + i$2] = newClause); + _i$2++; + $s = 46; continue; + case 47: + newS$1 = new ast.TypeSwitchStmt.ptr(s$8.Switch, $ifaceNil, assign, new ast.BlockStmt.ptr(0, clauses, 0)); + _key$2 = newS$1; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key$2), { k: _key$2, v: (_entry$3 = $mapIndex(c.info.Scopes,ast.Node.keyFor(s$8)), _entry$3 !== undefined ? _entry$3.v : ptrType$11.nil) }); + stmts.$set($append(stmts.$get(), newS$1)); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$20, true)[1]) { */ case 9: + s$9 = _ref.$val; + _r$12 = c.simplifyBlock(s$9.Body); /* */ $s = 49; case 49: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + newS$2 = new ast.ForStmt.ptr(s$9.For, s$9.Init, s$9.Cond, s$9.Post, _r$12); + _key$3 = newS$2; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key$3), { k: _key$3, v: (_entry$4 = $mapIndex(c.info.Scopes,ast.Node.keyFor(s$9)), _entry$4 !== undefined ? _entry$4.v : ptrType$11.nil) }); + stmts.$set($append(stmts.$get(), newS$2)); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 10: + s$10 = _ref.$val; + newS$3 = $ifaceNil; + _r$13 = c.info.TypeOf(s$10.X); /* */ $s = 50; case 50: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + _r$14 = _r$13.Underlying(); /* */ $s = 51; case 51: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + _ref$5 = _r$14; + /* */ if ($assertType(_ref$5, ptrType$30, true)[1]) { $s = 52; continue; } + /* */ $s = 53; continue; + /* if ($assertType(_ref$5, ptrType$30, true)[1]) { */ case 52: + t = _ref$5.$val; + key = s$10.Key; + tok = s$10.Tok; + if ($interfaceIsEqual(key, $ifaceNil)) { + key = ast.NewIdent("_"); + tok = 47; + } + _r$15 = c.newIdent((x$7 = types.Typ, (1 >= x$7.$length ? ($throwRuntimeError("index out of range"), undefined) : x$7.$array[x$7.$offset + 1]))); /* */ $s = 55; case 55: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + okVar = _r$15; + if (s$10.Tok === 42) { + stmts.$set($append(stmts.$get(), new ast.DeclStmt.ptr(new ast.GenDecl.ptr(ptrType$4.nil, 0, 85, 0, new sliceType$5([new ast.ValueSpec.ptr(ptrType$4.nil, new sliceType$3([okVar]), ast.NewIdent("bool"), sliceType$6.nil, ptrType$4.nil)]), 0)))); + } + _r$16 = c.newVar(stmts, s$10.X); /* */ $s = 56; case 56: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + _r$17 = c.setType(new ast.UnaryExpr.ptr(0, 36, _r$16), types.NewTuple(new sliceType$7([types.NewVar(0, ptrType$31.nil, "", t.Elem()), types.NewVar(0, ptrType$31.nil, "", (x$8 = types.Typ, (1 >= x$8.$length ? ($throwRuntimeError("index out of range"), undefined) : x$8.$array[x$8.$offset + 1])))]))); /* */ $s = 57; case 57: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _arg = new sliceType$1([new ast.AssignStmt.ptr(new sliceType$6([key, okVar]), s$10.TokPos, tok, new sliceType$6([_r$17])), new ast.IfStmt.ptr(0, $ifaceNil, c.setType(new ast.UnaryExpr.ptr(0, 43, okVar), (x$9 = types.Typ, (1 >= x$9.$length ? ($throwRuntimeError("index out of range"), undefined) : x$9.$array[x$9.$offset + 1]))), new ast.BlockStmt.ptr(0, new sliceType$1([new ast.BranchStmt.ptr(0, 61, ptrType$6.nil)]), 0), $ifaceNil)]); + _r$18 = c.simplifyStmtList(s$10.Body.List); /* */ $s = 58; case 58: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + _arg$1 = _r$18; + newS$3 = new ast.ForStmt.ptr(s$10.For, $ifaceNil, $ifaceNil, $ifaceNil, new ast.BlockStmt.ptr(s$10.Body.Lbrace, $appendSlice(_arg, _arg$1), s$10.Body.Rbrace)); + $s = 54; continue; + /* } else { */ case 53: + t$1 = _ref$5; + _r$19 = c.simplifyBlock(s$10.Body); /* */ $s = 59; case 59: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + newS$3 = new ast.RangeStmt.ptr(s$10.For, s$10.Key, s$10.Value, s$10.TokPos, s$10.Tok, 0, s$10.X, _r$19); + /* } */ case 54: + _key$4 = newS$3; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key$4), { k: _key$4, v: (_entry$5 = $mapIndex(c.info.Scopes,ast.Node.keyFor(s$10)), _entry$5 !== undefined ? _entry$5.v : ptrType$11.nil) }); + stmts.$set($append(stmts.$get(), newS$3)); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$22, true)[1]) { */ case 11: + s$11 = _ref.$val; + _r$20 = c.simplifyExpr(stmts, s$11.X); /* */ $s = 60; case 60: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + stmts.$set($append(stmts.$get(), new ast.IncDecStmt.ptr(_r$20, s$11.TokPos, s$11.Tok))); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$23, true)[1]) { */ case 12: + s$12 = _ref.$val; + _r$21 = c.simplifyCall(stmts, s$12.Call); /* */ $s = 61; case 61: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; } + stmts.$set($append(stmts.$get(), new ast.GoStmt.ptr(s$12.Go, _r$21))); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$24, true)[1]) { */ case 13: + s$13 = _ref.$val; + clauses$1 = $makeSlice(sliceType$1, s$13.Body.List.$length); + _ref$6 = s$13.Body.List; + _i$3 = 0; + /* while (true) { */ case 62: + /* if (!(_i$3 < _ref$6.$length)) { break; } */ if(!(_i$3 < _ref$6.$length)) { $s = 63; continue; } + bodyPrefix = [bodyPrefix]; + i$3 = _i$3; + entry = ((_i$3 < 0 || _i$3 >= _ref$6.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$6.$array[_ref$6.$offset + _i$3]); + cc$1 = $assertType(entry, ptrType$34); + newComm = $ifaceNil; + bodyPrefix[0] = sliceType$1.nil; + _ref$7 = cc$1.Comm; + /* */ if ($assertType(_ref$7, ptrType$13, true)[1]) { $s = 64; continue; } + /* */ if ($assertType(_ref$7, ptrType$15, true)[1]) { $s = 65; continue; } + /* */ if ($assertType(_ref$7, ptrType$26, true)[1]) { $s = 66; continue; } + /* */ if (_ref$7 === $ifaceNil) { $s = 67; continue; } + /* */ $s = 68; continue; + /* if ($assertType(_ref$7, ptrType$13, true)[1]) { */ case 64: + comm = _ref$7.$val; + recv = $assertType(comm.X, ptrType$35); + if (!((recv.Op === 36))) { + $panic(new $String("unexpected comm clause")); + } + _r$22 = c.simplifyExpr(stmts, recv.X); /* */ $s = 70; case 70: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; } + newComm = new ast.ExprStmt.ptr(new ast.UnaryExpr.ptr(recv.OpPos, 36, _r$22)); + $s = 69; continue; + /* } else if ($assertType(_ref$7, ptrType$15, true)[1]) { */ case 65: + comm$1 = _ref$7.$val; + recv$1 = $assertType((x$10 = comm$1.Rhs, (0 >= x$10.$length ? ($throwRuntimeError("index out of range"), undefined) : x$10.$array[x$10.$offset + 0])), ptrType$35); + if (!((recv$1.Op === 36))) { + $panic(new $String("unexpected comm clause")); + } + simplifyLhs = false; + _ref$8 = comm$1.Lhs; + _i$4 = 0; + while (true) { + if (!(_i$4 < _ref$8.$length)) { break; } + x$11 = ((_i$4 < 0 || _i$4 >= _ref$8.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$8.$array[_ref$8.$offset + _i$4]); + if (c.simplifyCalls && ContainsCall(x$11)) { + simplifyLhs = true; + } + _i$4++; + } + lhs$1 = comm$1.Lhs; + tok$1 = comm$1.Tok; + /* */ if (simplifyLhs) { $s = 71; continue; } + /* */ $s = 72; continue; + /* if (simplifyLhs) { */ case 71: + _ref$9 = lhs$1; + _i$5 = 0; + /* while (true) { */ case 73: + /* if (!(_i$5 < _ref$9.$length)) { break; } */ if(!(_i$5 < _ref$9.$length)) { $s = 74; continue; } + i$4 = _i$5; + x$12 = ((_i$5 < 0 || _i$5 >= _ref$9.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$9.$array[_ref$9.$offset + _i$5]); + _r$23 = c.info.TypeOf(x$12); /* */ $s = 75; case 75: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; } + _r$24 = c.newIdent(_r$23); /* */ $s = 76; case 76: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; } + id = _r$24; + _r$25 = c.simplifyExpr((bodyPrefix.$ptr || (bodyPrefix.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, bodyPrefix))), x$12); /* */ $s = 77; case 77: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; } + _r$26 = simpleAssign(_r$25, comm$1.Tok, id); /* */ $s = 78; case 78: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; } + bodyPrefix[0] = $append(bodyPrefix[0], _r$26); + ((i$4 < 0 || i$4 >= lhs$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : lhs$1.$array[lhs$1.$offset + i$4] = id); + _i$5++; + $s = 73; continue; + case 74: + tok$1 = 47; + /* } */ case 72: + _r$27 = c.simplifyExpr(stmts, recv$1); /* */ $s = 79; case 79: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; } + newComm = new ast.AssignStmt.ptr(lhs$1, 0, tok$1, new sliceType$6([_r$27])); + $s = 69; continue; + /* } else if ($assertType(_ref$7, ptrType$26, true)[1]) { */ case 66: + comm$2 = _ref$7.$val; + _r$28 = c.simplifyExpr(stmts, comm$2.Chan); /* */ $s = 80; case 80: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; } + _r$29 = c.simplifyExpr(stmts, comm$2.Value); /* */ $s = 81; case 81: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; } + newComm = new ast.SendStmt.ptr(_r$28, comm$2.Arrow, _r$29); + $s = 69; continue; + /* } else if (_ref$7 === $ifaceNil) { */ case 67: + comm$3 = _ref$7; + newComm = $ifaceNil; + $s = 69; continue; + /* } else { */ case 68: + comm$4 = _ref$7; + $panic(new $String("unexpected comm clause")); + /* } */ case 69: + _arg$2 = bodyPrefix[0]; + _r$30 = c.simplifyStmtList(cc$1.Body); /* */ $s = 82; case 82: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; } + _arg$3 = _r$30; + newCC = new ast.CommClause.ptr(cc$1.Case, newComm, cc$1.Colon, $appendSlice(_arg$2, _arg$3)); + _key$5 = newCC; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key$5), { k: _key$5, v: (_entry$6 = $mapIndex(c.info.Scopes,ast.Node.keyFor(cc$1)), _entry$6 !== undefined ? _entry$6.v : ptrType$11.nil) }); + ((i$3 < 0 || i$3 >= clauses$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : clauses$1.$array[clauses$1.$offset + i$3] = newCC); + _i$3++; + $s = 62; continue; + case 63: + stmts.$set($append(stmts.$get(), new ast.SelectStmt.ptr(s$13.Select, new ast.BlockStmt.ptr(0, clauses$1, 0)))); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 14: + s$14 = _ref.$val; + _r$31 = c.simplifyCall(stmts, s$14.Call); /* */ $s = 83; case 83: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; } + stmts.$set($append(stmts.$get(), new ast.DeferStmt.ptr(s$14.Defer, _r$31))); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$26, true)[1]) { */ case 15: + s$15 = _ref.$val; + _r$32 = c.simplifyExpr(stmts, s$15.Chan); /* */ $s = 84; case 84: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; } + _r$33 = c.simplifyExpr(stmts, s$15.Value); /* */ $s = 85; case 85: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; } + stmts.$set($append(stmts.$get(), new ast.SendStmt.ptr(_r$32, s$15.Arrow, _r$33))); + $s = 18; continue; + /* } else if ($assertType(_ref, ptrType$27, true)[1]) { */ case 16: + s$16 = _ref.$val; + _r$34 = c.simplifyExprList(stmts, s$16.Results); /* */ $s = 86; case 86: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; } + stmts.$set($append(stmts.$get(), new ast.ReturnStmt.ptr(s$16.Return, _r$34))); + $s = 18; continue; + /* } else { */ case 17: + s$17 = _ref; + stmts.$set($append(stmts.$get(), s$17)); + /* } */ case 18: + $s = -1; return; + /* */ } return; } var $f = {$blk: simplifyStmt, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _key, _key$1, _key$2, _key$3, _key$4, _key$5, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _ref$9, _tuple, a, a$1, a$2, assign, block, block$1, bodyPrefix, c, cc, cc$1, ccs, clauses, clauses$1, comm, comm$1, comm$2, comm$3, comm$4, entry, i, i$1, i$2, i$3, i$4, id, implicit, key, lhs, lhs$1, newCC, newClause, newComm, newS, newS$1, newS$2, newS$3, ok, okVar, recv, recv$1, rhs, s, s$1, s$10, s$11, s$12, s$13, s$14, s$15, s$16, s$17, s$2, s$3, s$4, s$5, s$6, s$7, s$8, s$9, simplifyLhs, stmts, t, t$1, ta, ta$1, tok, tok$1, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s};return $f; + }; + $ptrType(simplifyContext).prototype.simplifyBlock = function simplifyBlock(s) { + var {_entry, _key, _r, c, newS, s, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if (s === ptrType$8.nil) { + $s = -1; return ptrType$8.nil; + } + _r = c.simplifyStmtList(s.List); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + newS = new ast.BlockStmt.ptr(s.Lbrace, _r, s.Rbrace); + _key = newS; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: (_entry = $mapIndex(c.info.Scopes,ast.Node.keyFor(s)), _entry !== undefined ? _entry.v : ptrType$11.nil) }); + $s = -1; return newS; + /* */ } return; } var $f = {$blk: simplifyBlock, $c: true, $r, _entry, _key, _r, c, newS, s, $s};return $f; + }; + $ptrType(simplifyContext).prototype.simplifySwitch = function simplifySwitch(stmts, s) { + var {_arg, _arg$1, _entry, _entry$1, _key, _key$1, _r, _r$1, _r$2, _tuple, c, defaultClause, newS, nonDefaultClauses, s, stmts, tag, wrapClause, $s, $r, $c} = $restore(this, {stmts, s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + wrapClause = new ast.CaseClause.ptr(0, sliceType$6.nil, 0, sliceType$1.nil); + newS = new ast.SwitchStmt.ptr(s.Switch, $ifaceNil, $ifaceNil, new ast.BlockStmt.ptr(0, new sliceType$1([wrapClause]), 0)); + _key = newS; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: (_entry = $mapIndex(c.info.Scopes,ast.Node.keyFor(s)), _entry !== undefined ? _entry.v : ptrType$11.nil) }); + _key$1 = wrapClause; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key$1), { k: _key$1, v: (_entry$1 = $mapIndex(c.info.Scopes,ast.Node.keyFor(s)), _entry$1 !== undefined ? _entry$1.v : ptrType$11.nil) }); + stmts.$set($append(stmts.$get(), newS)); + stmts = (wrapClause.$ptr_Body || (wrapClause.$ptr_Body = new ptrType$3(function() { return this.$target.Body; }, function($v) { this.$target.Body = $v; }, wrapClause))); + $r = c.simplifyStmt(stmts, s.Init); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _tuple = c.simplifyCaseClauses(s.Body.List); + nonDefaultClauses = _tuple[0]; + defaultClause = _tuple[1]; + _r = c.makeTag(stmts, s.Tag, !((nonDefaultClauses.$length === 0))); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + tag = _r; + _arg = stmts.$get(); + _r$1 = c.switchToIfElse(tag, nonDefaultClauses, defaultClause); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$2 = unwrapBlock(_r$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = _r$2; + stmts.$set($appendSlice(_arg, _arg$1)); + $s = -1; return; + /* */ } return; } var $f = {$blk: simplifySwitch, $c: true, $r, _arg, _arg$1, _entry, _entry$1, _key, _key$1, _r, _r$1, _r$2, _tuple, c, defaultClause, newS, nonDefaultClauses, s, stmts, tag, wrapClause, $s};return $f; + }; + $ptrType(simplifyContext).prototype.makeTag = function makeTag(stmts, tag, needsTag) { + var {$24r, _key, _r, c, id, needsTag, stmts, tag, x, $s, $r, $c} = $restore(this, {stmts, tag, needsTag}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if ($interfaceIsEqual(tag, $ifaceNil)) { + id = ast.NewIdent("true"); + _key = id; (c.info.Types || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(new types.TypeAndValue.ptr(0, (x = types.Typ, (1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1])), constant.MakeBool(true)), types.TypeAndValue) }); + $s = -1; return id; + } + if (!needsTag) { + stmts.$set($append(stmts.$get(), simpleAssign(ast.NewIdent("_"), 42, tag))); + $s = -1; return $ifaceNil; + } + _r = c.newVar(stmts, tag); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: makeTag, $c: true, $r, $24r, _key, _r, c, id, needsTag, stmts, tag, x, $s};return $f; + }; + $ptrType(simplifyContext).prototype.simplifyCaseClauses = function simplifyCaseClauses(clauses) { + var _entry, _i, _i$1, _key, _ref, _ref$1, _tuple, b, body, c, cc, clause, clauses, defaultClause, hasFallthrough, isBranchStmt, newClause, nonDefaultClauses, openClause, openClauses, x; + nonDefaultClauses = sliceType$8.nil; + defaultClause = ptrType$29.nil; + c = this; + openClauses = sliceType$8.nil; + _ref = clauses; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + cc = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + clause = $assertType(cc, ptrType$29); + newClause = new ast.CaseClause.ptr(clause.Case, clause.List, clause.Colon, sliceType$1.nil); + _key = newClause; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: (_entry = $mapIndex(c.info.Scopes,ast.Node.keyFor(clause)), _entry !== undefined ? _entry.v : ptrType$11.nil) }); + body = clause.Body; + hasFallthrough = false; + if (!((body.$length === 0))) { + _tuple = $assertType((x = body.$length - 1 >> 0, ((x < 0 || x >= body.$length) ? ($throwRuntimeError("index out of range"), undefined) : body.$array[body.$offset + x])), ptrType$36, true); + b = _tuple[0]; + isBranchStmt = _tuple[1]; + if (isBranchStmt && (b.Tok === 69)) { + body = $subslice(body, 0, (body.$length - 1 >> 0)); + hasFallthrough = true; + } + } + openClauses = $append(openClauses, newClause); + _ref$1 = openClauses; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + openClause = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + openClause.Body = $appendSlice(openClause.Body, body); + _i$1++; + } + if (!hasFallthrough) { + openClauses = sliceType$8.nil; + } + if (clause.List.$length === 0) { + defaultClause = newClause; + _i++; + continue; + } + nonDefaultClauses = $append(nonDefaultClauses, newClause); + _i++; + } + return [nonDefaultClauses, defaultClause]; + }; + $ptrType(simplifyContext).prototype.switchToIfElse = function switchToIfElse(tag, nonDefaultClauses, defaultClause) { + var {$24r, _arg, _arg$1, _entry, _entry$1, _entry$2, _i, _key, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, c, clause, cond, conds, defaultClause, i, ifStmt, nonDefaultClauses, stmts, tag, x, $s, $r, $c} = $restore(this, {tag, nonDefaultClauses, defaultClause}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + stmts = [stmts]; + c = this; + /* */ if (nonDefaultClauses.$length === 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (nonDefaultClauses.$length === 0) { */ case 1: + /* */ if (!(defaultClause === ptrType$29.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(defaultClause === ptrType$29.nil)) { */ case 3: + _r = c.simplifyStmtList(defaultClause.Body); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = c.toElseBranch(_r, (_entry = $mapIndex(c.info.Scopes,ast.Node.keyFor(defaultClause)), _entry !== undefined ? _entry.v : ptrType$11.nil)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 7; case 7: return $24r; + /* } */ case 4: + $s = -1; return $ifaceNil; + /* } */ case 2: + clause = (0 >= nonDefaultClauses.$length ? ($throwRuntimeError("index out of range"), undefined) : nonDefaultClauses.$array[nonDefaultClauses.$offset + 0]); + conds = $makeSlice(sliceType$6, clause.List.$length); + _ref = clause.List; + _i = 0; + /* while (true) { */ case 8: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 9; continue; } + i = _i; + cond = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _arg = new ast.ParenExpr.ptr(0, cond, 0); + _r$2 = c.info.TypeOf(cond); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$1 = _r$2; + _r$3 = c.setType(_arg, _arg$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _r$4 = c.setType(new ast.BinaryExpr.ptr(tag, 0, 39, _r$3), (x = types.Typ, (1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1]))); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + ((i < 0 || i >= conds.$length) ? ($throwRuntimeError("index out of range"), undefined) : conds.$array[conds.$offset + i] = _r$4); + _i++; + $s = 8; continue; + case 9: + stmts[0] = sliceType$1.nil; + _r$5 = c.simplifyExpr((stmts.$ptr || (stmts.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, stmts))), c.disjunction(conds)); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = c.simplifyStmtList(clause.Body); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + _r$7 = c.switchToIfElse(tag, $subslice(nonDefaultClauses, 1), defaultClause); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + ifStmt = new ast.IfStmt.ptr(clause.Case, $ifaceNil, _r$5, new ast.BlockStmt.ptr(0, _r$6, 0), _r$7); + _key = ifStmt; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: (_entry$1 = $mapIndex(c.info.Scopes,ast.Node.keyFor(clause)), _entry$1 !== undefined ? _entry$1.v : ptrType$11.nil) }); + stmts[0] = $append(stmts[0], ifStmt); + $s = -1; return c.toElseBranch(stmts[0], (_entry$2 = $mapIndex(c.info.Scopes,ast.Node.keyFor(clause)), _entry$2 !== undefined ? _entry$2.v : ptrType$11.nil)); + /* */ } return; } var $f = {$blk: switchToIfElse, $c: true, $r, $24r, _arg, _arg$1, _entry, _entry$1, _entry$2, _i, _key, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, c, clause, cond, conds, defaultClause, i, ifStmt, nonDefaultClauses, stmts, tag, x, $s};return $f; + }; + $ptrType(simplifyContext).prototype.disjunction = function disjunction(conds) { + var c, conds, x; + c = this; + if (conds.$length === 1) { + return (0 >= conds.$length ? ($throwRuntimeError("index out of range"), undefined) : conds.$array[conds.$offset + 0]); + } + return c.setType(new ast.BinaryExpr.ptr((0 >= conds.$length ? ($throwRuntimeError("index out of range"), undefined) : conds.$array[conds.$offset + 0]), 0, 35, c.disjunction($subslice(conds, 1))), (x = types.Typ, (1 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 1]))); + }; + $ptrType(simplifyContext).prototype.simplifyToStmtList = function simplifyToStmtList(s) { + var {c, s, stmts, $s, $r, $c} = $restore(this, {s}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + stmts = [stmts]; + stmts[0] = sliceType$1.nil; + c = this; + $r = c.simplifyStmt((stmts.$ptr || (stmts.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, stmts))), s); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return stmts[0]; + /* */ } return; } var $f = {$blk: simplifyToStmtList, $c: true, $r, c, s, stmts, $s};return $f; + }; + $ptrType(simplifyContext).prototype.toElseBranch = function toElseBranch(stmts, scope) { + var _key, _key$1, _ref, block, c, scope, stmt, stmts; + c = this; + if (stmts.$length === 0) { + return $ifaceNil; + } + if (stmts.$length === 1) { + _ref = (0 >= stmts.$length ? ($throwRuntimeError("index out of range"), undefined) : stmts.$array[stmts.$offset + 0]); + if ($assertType(_ref, ptrType$17, true)[1] || $assertType(_ref, ptrType$8, true)[1]) { + stmt = _ref; + _key = stmt; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key), { k: _key, v: scope }); + return stmt; + } + } + block = new ast.BlockStmt.ptr(0, stmts, 0); + _key$1 = block; (c.info.Scopes || $throwRuntimeError("assignment to entry in nil map")).set(ast.Node.keyFor(_key$1), { k: _key$1, v: scope }); + return block; + }; + unwrapBlock = function unwrapBlock$1(s) { + var _tuple, block, ok, s; + if ($interfaceIsEqual(s, $ifaceNil)) { + return sliceType$1.nil; + } + _tuple = $assertType(s, ptrType$8, true); + block = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return block.List; + } + return new sliceType$1([s]); + }; + $ptrType(simplifyContext).prototype.simplifyExpr = function simplifyExpr(stmts, x) { + var {$24r, _r, c, stmts, x, $s, $r, $c} = $restore(this, {stmts, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = c.simplifyExpr2(stmts, x, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: simplifyExpr, $c: true, $r, $24r, _r, c, stmts, x, $s};return $f; + }; + $ptrType(simplifyContext).prototype.simplifyExpr2 = function simplifyExpr2(stmts, x, callOK) { + var {_entry, _key, _r, _tuple, c, callOK, ok, stmts, t, x, x2, $s, $r, $c} = $restore(this, {stmts, x, callOK}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = c.simplifyExpr3(stmts, x, callOK); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + x2 = _r; + _tuple = (_entry = $mapIndex(c.info.Types,ast.Expr.keyFor(x)), _entry !== undefined ? [_entry.v, true] : [new types.TypeAndValue.ptr(0, $ifaceNil, $ifaceNil), false]); + t = $clone(_tuple[0], types.TypeAndValue); + ok = _tuple[1]; + if (ok) { + _key = x2; (c.info.Types || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(t, types.TypeAndValue) }); + } + $s = -1; return x2; + /* */ } return; } var $f = {$blk: simplifyExpr2, $c: true, $r, _entry, _key, _r, _tuple, c, callOK, ok, stmts, t, x, x2, $s};return $f; + }; + $ptrType(simplifyContext).prototype.simplifyExpr3 = function simplifyExpr3(stmts, x, callOK) { + var {$24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, _arg, _arg$1, _entry, _i, _key, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, c, call, callOK, cond, elt, elts, i, ifBody, kv, ok, ok$1, sel, selExpr, stmts, v, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r, $c} = $restore(this, {stmts, x, callOK}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + ifBody = [ifBody]; + c = this; + _ref = x; + /* */ if ($assertType(_ref, ptrType$37, true)[1]) { $s = 1; continue; } + /* */ if ($assertType(_ref, ptrType$38, true)[1]) { $s = 2; continue; } + /* */ if ($assertType(_ref, ptrType$39, true)[1]) { $s = 3; continue; } + /* */ if ($assertType(_ref, ptrType$40, true)[1]) { $s = 4; continue; } + /* */ if ($assertType(_ref, ptrType$41, true)[1]) { $s = 5; continue; } + /* */ if ($assertType(_ref, ptrType$42, true)[1]) { $s = 6; continue; } + /* */ if ($assertType(_ref, ptrType$28, true)[1]) { $s = 7; continue; } + /* */ if ($assertType(_ref, ptrType$33, true)[1]) { $s = 8; continue; } + /* */ if ($assertType(_ref, ptrType$43, true)[1]) { $s = 9; continue; } + /* */ if ($assertType(_ref, ptrType$35, true)[1]) { $s = 10; continue; } + /* */ if ($assertType(_ref, ptrType$44, true)[1]) { $s = 11; continue; } + /* */ $s = 12; continue; + /* if ($assertType(_ref, ptrType$37, true)[1]) { */ case 1: + x$1 = _ref.$val; + _r = c.simplifyStmtList(x$1.Body.List); /* */ $s = 14; case 14: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = new ast.FuncLit.ptr(x$1.Type, new ast.BlockStmt.ptr(0, _r, 0)); + $s = 15; case 15: return $24r; + /* } else if ($assertType(_ref, ptrType$38, true)[1]) { */ case 2: + x$2 = _ref.$val; + elts = $makeSlice(sliceType$6, x$2.Elts.$length); + _ref$1 = x$2.Elts; + _i = 0; + /* while (true) { */ case 16: + /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 17; continue; } + i = _i; + elt = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + _tuple = $assertType(elt, ptrType$45, true); + kv = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 18; continue; } + /* */ $s = 19; continue; + /* if (ok) { */ case 18: + _r$1 = c.simplifyExpr(stmts, kv.Value); /* */ $s = 20; case 20: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + ((i < 0 || i >= elts.$length) ? ($throwRuntimeError("index out of range"), undefined) : elts.$array[elts.$offset + i] = new ast.KeyValueExpr.ptr(kv.Key, kv.Colon, _r$1)); + _i++; + /* continue; */ $s = 16; continue; + /* } */ case 19: + _r$2 = c.simplifyExpr(stmts, elt); /* */ $s = 21; case 21: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ((i < 0 || i >= elts.$length) ? ($throwRuntimeError("index out of range"), undefined) : elts.$array[elts.$offset + i] = _r$2); + _i++; + $s = 16; continue; + case 17: + $s = -1; return new ast.CompositeLit.ptr(x$2.Type, x$2.Lbrace, elts, x$2.Rbrace, false); + /* } else if ($assertType(_ref, ptrType$39, true)[1]) { */ case 3: + x$3 = _ref.$val; + _r$3 = c.simplifyExpr(stmts, x$3.X); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r$1 = new ast.ParenExpr.ptr(x$3.Lparen, _r$3, x$3.Rparen); + $s = 23; case 23: return $24r$1; + /* } else if ($assertType(_ref, ptrType$40, true)[1]) { */ case 4: + x$4 = _ref.$val; + _r$4 = c.simplifyExpr(stmts, x$4.X); /* */ $s = 24; case 24: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + selExpr = new ast.SelectorExpr.ptr(_r$4, x$4.Sel); + _tuple$1 = (_entry = $mapIndex(c.info.Selections,ptrType$40.keyFor(x$4)), _entry !== undefined ? [_entry.v, true] : [ptrType$46.nil, false]); + sel = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + _key = selExpr; (c.info.Selections || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$40.keyFor(_key), { k: _key, v: sel }); + } + $s = -1; return selExpr; + /* } else if ($assertType(_ref, ptrType$41, true)[1]) { */ case 5: + x$5 = _ref.$val; + _r$5 = c.simplifyExpr(stmts, x$5.X); /* */ $s = 25; case 25: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _r$6 = c.simplifyExpr(stmts, x$5.Index); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + $24r$2 = new ast.IndexExpr.ptr(_r$5, x$5.Lbrack, _r$6, x$5.Rbrack); + $s = 27; case 27: return $24r$2; + /* } else if ($assertType(_ref, ptrType$42, true)[1]) { */ case 6: + x$6 = _ref.$val; + _r$7 = c.simplifyExpr(stmts, x$6.X); /* */ $s = 28; case 28: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _r$8 = c.simplifyExpr(stmts, x$6.Low); /* */ $s = 29; case 29: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + _r$9 = c.simplifyExpr(stmts, x$6.High); /* */ $s = 30; case 30: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + _r$10 = c.simplifyExpr(stmts, x$6.Max); /* */ $s = 31; case 31: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + $24r$3 = new ast.SliceExpr.ptr(_r$7, x$6.Lbrack, _r$8, _r$9, _r$10, x$6.Slice3, x$6.Rbrack); + $s = 32; case 32: return $24r$3; + /* } else if ($assertType(_ref, ptrType$28, true)[1]) { */ case 7: + x$7 = _ref.$val; + _r$11 = c.simplifyExpr(stmts, x$7.X); /* */ $s = 33; case 33: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + $24r$4 = new ast.TypeAssertExpr.ptr(_r$11, x$7.Lparen, x$7.Type, x$7.Rparen); + $s = 34; case 34: return $24r$4; + /* } else if ($assertType(_ref, ptrType$33, true)[1]) { */ case 8: + x$8 = _ref.$val; + _r$12 = c.simplifyCall(stmts, x$8); /* */ $s = 35; case 35: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + call = _r$12; + if (callOK || !c.simplifyCalls) { + $s = -1; return call; + } + _r$13 = c.newVar(stmts, call); /* */ $s = 36; case 36: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; } + $24r$5 = _r$13; + $s = 37; case 37: return $24r$5; + /* } else if ($assertType(_ref, ptrType$43, true)[1]) { */ case 9: + x$9 = _ref.$val; + _r$14 = c.simplifyExpr(stmts, x$9.X); /* */ $s = 38; case 38: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; } + $24r$6 = new ast.StarExpr.ptr(x$9.Star, _r$14); + $s = 39; case 39: return $24r$6; + /* } else if ($assertType(_ref, ptrType$35, true)[1]) { */ case 10: + x$10 = _ref.$val; + _r$15 = c.simplifyExpr(stmts, x$10.X); /* */ $s = 40; case 40: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; } + $24r$7 = new ast.UnaryExpr.ptr(x$10.OpPos, x$10.Op, _r$15); + $s = 41; case 41: return $24r$7; + /* } else if ($assertType(_ref, ptrType$44, true)[1]) { */ case 11: + x$11 = _ref.$val; + /* */ if (((x$11.Op === 34) || (x$11.Op === 35)) && c.simplifyCalls && ContainsCall(x$11.Y)) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (((x$11.Op === 34) || (x$11.Op === 35)) && c.simplifyCalls && ContainsCall(x$11.Y)) { */ case 42: + _r$16 = c.newVar(stmts, x$11.X); /* */ $s = 44; case 44: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; } + v = _r$16; + cond = v; + if (x$11.Op === 35) { + cond = new ast.UnaryExpr.ptr(0, 43, cond); + } + ifBody[0] = sliceType$1.nil; + _arg = v; + _r$17 = c.simplifyExpr2((ifBody.$ptr || (ifBody.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, ifBody))), x$11.Y, true); /* */ $s = 45; case 45: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; } + _arg$1 = _r$17; + _r$18 = simpleAssign(_arg, 42, _arg$1); /* */ $s = 46; case 46: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; } + ifBody[0] = $append(ifBody[0], _r$18); + stmts.$set($append(stmts.$get(), new ast.IfStmt.ptr(0, $ifaceNil, cond, new ast.BlockStmt.ptr(0, ifBody[0], 0), $ifaceNil))); + $s = -1; return v; + /* } */ case 43: + _r$19 = c.simplifyExpr(stmts, x$11.X); /* */ $s = 47; case 47: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; } + _r$20 = c.simplifyExpr(stmts, x$11.Y); /* */ $s = 48; case 48: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; } + $24r$8 = new ast.BinaryExpr.ptr(_r$19, x$11.OpPos, x$11.Op, _r$20); + $s = 49; case 49: return $24r$8; + /* } else { */ case 12: + x$12 = _ref; + $s = -1; return x$12; + /* } */ case 13: + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: simplifyExpr3, $c: true, $r, $24r, $24r$1, $24r$2, $24r$3, $24r$4, $24r$5, $24r$6, $24r$7, $24r$8, _arg, _arg$1, _entry, _i, _key, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, c, call, callOK, cond, elt, elts, i, ifBody, kv, ok, ok$1, sel, selExpr, stmts, v, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s};return $f; + }; + $ptrType(simplifyContext).prototype.simplifyCall = function simplifyCall(stmts, x) { + var {$24r, _r, _r$1, c, stmts, x, $s, $r, $c} = $restore(this, {stmts, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = c.simplifyExpr(stmts, x.Fun); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = c.simplifyArgs(stmts, x.Args); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = new ast.CallExpr.ptr(_r, x.Lparen, _r$1, x.Ellipsis, x.Rparen); + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: simplifyCall, $c: true, $r, $24r, _r, _r$1, c, stmts, x, $s};return $f; + }; + $ptrType(simplifyContext).prototype.simplifyArgs = function simplifyArgs(stmts, args) { + var {$24r, _i, _r, _r$1, _r$2, _r$3, _ref, _tuple, args, c, call, i, ok, stmts, tuple, vars, $s, $r, $c} = $restore(this, {stmts, args}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + /* */ if (args.$length === 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (args.$length === 1) { */ case 1: + _r = c.info.TypeOf((0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$47, true); + tuple = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok && c.simplifyCalls) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (ok && c.simplifyCalls) { */ case 4: + _r$1 = c.simplifyExpr2(stmts, (0 >= args.$length ? ($throwRuntimeError("index out of range"), undefined) : args.$array[args.$offset + 0]), true); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + call = _r$1; + vars = $makeSlice(sliceType$6, tuple.Len()); + _ref = vars; + _i = 0; + /* while (true) { */ case 7: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 8; continue; } + i = _i; + _r$2 = c.newIdent(tuple.At(i).object.Type()); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ((i < 0 || i >= vars.$length) ? ($throwRuntimeError("index out of range"), undefined) : vars.$array[vars.$offset + i] = _r$2); + _i++; + $s = 7; continue; + case 8: + stmts.$set($append(stmts.$get(), new ast.AssignStmt.ptr(vars, 0, 47, new sliceType$6([call])))); + $s = -1; return vars; + /* } */ case 5: + /* } */ case 2: + _r$3 = c.simplifyExprList(stmts, args); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + $24r = _r$3; + $s = 11; case 11: return $24r; + /* */ } return; } var $f = {$blk: simplifyArgs, $c: true, $r, $24r, _i, _r, _r$1, _r$2, _r$3, _ref, _tuple, args, c, call, i, ok, stmts, tuple, vars, $s};return $f; + }; + $ptrType(simplifyContext).prototype.simplifyExprList = function simplifyExprList(stmts, exprs) { + var {_i, _r, _ref, c, expr, exprs, i, simplifiedExprs, stmts, $s, $r, $c} = $restore(this, {stmts, exprs}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + if (exprs === sliceType$6.nil) { + $s = -1; return sliceType$6.nil; + } + simplifiedExprs = $makeSlice(sliceType$6, exprs.$length); + _ref = exprs; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + expr = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r = c.simplifyExpr(stmts, expr); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + ((i < 0 || i >= simplifiedExprs.$length) ? ($throwRuntimeError("index out of range"), undefined) : simplifiedExprs.$array[simplifiedExprs.$offset + i] = _r); + _i++; + $s = 1; continue; + case 2: + $s = -1; return simplifiedExprs; + /* */ } return; } var $f = {$blk: simplifyExprList, $c: true, $r, _i, _r, _ref, c, expr, exprs, i, simplifiedExprs, stmts, $s};return $f; + }; + $ptrType(simplifyContext).prototype.newVar = function newVar(stmts, x) { + var {_r, _r$1, c, id, stmts, x, $s, $r, $c} = $restore(this, {stmts, x}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + _r = c.info.TypeOf(x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = c.newIdent(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + id = _r$1; + stmts.$set($append(stmts.$get(), simpleAssign(id, 47, x))); + $s = -1; return id; + /* */ } return; } var $f = {$blk: newVar, $c: true, $r, _r, _r$1, c, id, stmts, x, $s};return $f; + }; + $ptrType(simplifyContext).prototype.newIdent = function newIdent(t) { + var {_key, _key$1, _r, _r$1, c, id, t, $s, $r, $c} = $restore(this, {t}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + c = this; + c.varCounter = c.varCounter + (1) >> 0; + _r = fmt.Sprintf("_%d", new sliceType$9([new $Int(c.varCounter)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = ast.NewIdent(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + id = _r$1; + _key = id; (c.info.Types || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(new types.TypeAndValue.ptr(0, t, $ifaceNil), types.TypeAndValue) }); + _key$1 = id; (c.info.Uses || $throwRuntimeError("assignment to entry in nil map")).set(ptrType$6.keyFor(_key$1), { k: _key$1, v: types.NewVar(0, ptrType$31.nil, id.Name, t) }); + $s = -1; return id; + /* */ } return; } var $f = {$blk: newIdent, $c: true, $r, _key, _key$1, _r, _r$1, c, id, t, $s};return $f; + }; + $ptrType(simplifyContext).prototype.setType = function setType(x, t) { + var _key, c, t, x; + c = this; + _key = x; (c.info.Types || $throwRuntimeError("assignment to entry in nil map")).set(ast.Expr.keyFor(_key), { k: _key, v: $clone(new types.TypeAndValue.ptr(0, t, $ifaceNil), types.TypeAndValue) }); + return x; + }; + simpleAssign = function simpleAssign$1(lhs, tok, rhs) { + var lhs, rhs, tok; + return new ast.AssignStmt.ptr(new sliceType$6([lhs]), 0, tok, new sliceType$6([rhs])); + }; + ContainsCall = function ContainsCall$1(x) { + var _i, _ref, _ref$1, elt, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + _ref = x; + if ($assertType(_ref, ptrType$33, true)[1]) { + x$1 = _ref.$val; + return true; + } else if ($assertType(_ref, ptrType$38, true)[1]) { + x$2 = _ref.$val; + _ref$1 = x$2.Elts; + _i = 0; + while (true) { + if (!(_i < _ref$1.$length)) { break; } + elt = ((_i < 0 || _i >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i]); + if (ContainsCall(elt)) { + return true; + } + _i++; + } + return false; + } else if ($assertType(_ref, ptrType$45, true)[1]) { + x$3 = _ref.$val; + return ContainsCall(x$3.Key) || ContainsCall(x$3.Value); + } else if ($assertType(_ref, ptrType$39, true)[1]) { + x$4 = _ref.$val; + return ContainsCall(x$4.X); + } else if ($assertType(_ref, ptrType$40, true)[1]) { + x$5 = _ref.$val; + return ContainsCall(x$5.X); + } else if ($assertType(_ref, ptrType$41, true)[1]) { + x$6 = _ref.$val; + return ContainsCall(x$6.X) || ContainsCall(x$6.Index); + } else if ($assertType(_ref, ptrType$42, true)[1]) { + x$7 = _ref.$val; + return ContainsCall(x$7.X) || ContainsCall(x$7.Low) || ContainsCall(x$7.High) || ContainsCall(x$7.Max); + } else if ($assertType(_ref, ptrType$28, true)[1]) { + x$8 = _ref.$val; + return ContainsCall(x$8.X); + } else if ($assertType(_ref, ptrType$43, true)[1]) { + x$9 = _ref.$val; + return ContainsCall(x$9.X); + } else if ($assertType(_ref, ptrType$35, true)[1]) { + x$10 = _ref.$val; + return ContainsCall(x$10.X); + } else if ($assertType(_ref, ptrType$44, true)[1]) { + x$11 = _ref.$val; + return ContainsCall(x$11.X) || ContainsCall(x$11.Y); + } else { + x$12 = _ref; + return false; + } + }; + $pkg.ContainsCall = ContainsCall; + ptrType$48.methods = [{prop: "simplifyStmtList", name: "simplifyStmtList", pkg: "github.com/neelance/astrewrite", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "simplifyGenDecl", name: "simplifyGenDecl", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$3, ptrType$1], [ptrType$1], false)}, {prop: "simplifyStmt", name: "simplifyStmt", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$3, ast.Stmt], [], false)}, {prop: "simplifyBlock", name: "simplifyBlock", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$8], [ptrType$8], false)}, {prop: "simplifySwitch", name: "simplifySwitch", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$3, ptrType$18], [], false)}, {prop: "makeTag", name: "makeTag", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$3, ast.Expr, $Bool], [ast.Expr], false)}, {prop: "simplifyCaseClauses", name: "simplifyCaseClauses", pkg: "github.com/neelance/astrewrite", typ: $funcType([sliceType$1], [sliceType$8, ptrType$29], false)}, {prop: "switchToIfElse", name: "switchToIfElse", pkg: "github.com/neelance/astrewrite", typ: $funcType([ast.Expr, sliceType$8, ptrType$29], [ast.Stmt], false)}, {prop: "disjunction", name: "disjunction", pkg: "github.com/neelance/astrewrite", typ: $funcType([sliceType$6], [ast.Expr], false)}, {prop: "simplifyToStmtList", name: "simplifyToStmtList", pkg: "github.com/neelance/astrewrite", typ: $funcType([ast.Stmt], [sliceType$1], false)}, {prop: "toElseBranch", name: "toElseBranch", pkg: "github.com/neelance/astrewrite", typ: $funcType([sliceType$1, ptrType$11], [ast.Stmt], false)}, {prop: "simplifyExpr", name: "simplifyExpr", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$3, ast.Expr], [ast.Expr], false)}, {prop: "simplifyExpr2", name: "simplifyExpr2", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$3, ast.Expr, $Bool], [ast.Expr], false)}, {prop: "simplifyExpr3", name: "simplifyExpr3", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$3, ast.Expr, $Bool], [ast.Expr], false)}, {prop: "simplifyCall", name: "simplifyCall", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$3, ptrType$33], [ptrType$33], false)}, {prop: "simplifyArgs", name: "simplifyArgs", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$3, sliceType$6], [sliceType$6], false)}, {prop: "simplifyExprList", name: "simplifyExprList", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$3, sliceType$6], [sliceType$6], false)}, {prop: "newVar", name: "newVar", pkg: "github.com/neelance/astrewrite", typ: $funcType([ptrType$3, ast.Expr], [ast.Expr], false)}, {prop: "newIdent", name: "newIdent", pkg: "github.com/neelance/astrewrite", typ: $funcType([types.Type], [ptrType$6], false)}, {prop: "setType", name: "setType", pkg: "github.com/neelance/astrewrite", typ: $funcType([ast.Expr, types.Type], [ast.Expr], false)}]; + simplifyContext.init("github.com/neelance/astrewrite", [{prop: "info", name: "info", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "varCounter", name: "varCounter", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "simplifyCalls", name: "simplifyCalls", embedded: false, exported: false, typ: $Bool, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = constant.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = types.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/gopherjs/gopherjs/compiler/sources"] = (function() { + var $pkg = {}, $init, gob, errlist, incjs, analysis, typeparams, linkname, astrewrite, ast, token, types, sort, strings, sync, Sources, Importer, packageImporter, ptrType, ptrType$1, ptrType$2, sliceType, ptrType$3, ptrType$4, ptrType$5, sliceType$1, ptrType$6, sliceType$2, ptrType$7, sliceType$3, ptrType$8, ptrType$9, ptrType$10, sliceType$4, ptrType$11, ptrType$12, sliceType$5, structType, sliceType$6, ptrType$13, sliceType$7, ptrType$14, ptrType$15, ptrType$16, sliceType$8, ptrType$17, ptrType$18, sliceType$9, sliceType$10, ptrType$19, ptrType$20, ptrType$21, funcType, ptrType$22, ptrType$23, prepareGob, SortedSourcesSlice, prepareFile, unpackFile; + gob = $packages["encoding/gob"]; + errlist = $packages["github.com/gopherjs/gopherjs/compiler/errlist"]; + incjs = $packages["github.com/gopherjs/gopherjs/compiler/incjs"]; + analysis = $packages["github.com/gopherjs/gopherjs/compiler/internal/analysis"]; + typeparams = $packages["github.com/gopherjs/gopherjs/compiler/internal/typeparams"]; + linkname = $packages["github.com/gopherjs/gopherjs/compiler/linkname"]; + astrewrite = $packages["github.com/neelance/astrewrite"]; + ast = $packages["go/ast"]; + token = $packages["go/token"]; + types = $packages["go/types"]; + sort = $packages["sort"]; + strings = $packages["strings"]; + sync = $packages["sync"]; + Sources = $newType(0, $kindStruct, "sources.Sources", true, "github.com/gopherjs/gopherjs/compiler/sources", true, function(ImportPath_, Dir_, Files_, FileSet_, JSFiles_, TypeInfo_, baseInfo_, Package_, GoLinknames_) { + this.$val = this; + if (arguments.length === 0) { + this.ImportPath = ""; + this.Dir = ""; + this.Files = sliceType$7.nil; + this.FileSet = ptrType$14.nil; + this.JSFiles = sliceType$8.nil; + this.TypeInfo = ptrType$12.nil; + this.baseInfo = ptrType$9.nil; + this.Package = ptrType$8.nil; + this.GoLinknames = sliceType$5.nil; + return; + } + this.ImportPath = ImportPath_; + this.Dir = Dir_; + this.Files = Files_; + this.FileSet = FileSet_; + this.JSFiles = JSFiles_; + this.TypeInfo = TypeInfo_; + this.baseInfo = baseInfo_; + this.Package = Package_; + this.GoLinknames = GoLinknames_; + }); + Importer = $newType(4, $kindFunc, "sources.Importer", true, "github.com/gopherjs/gopherjs/compiler/sources", true, null); + packageImporter = $newType(0, $kindStruct, "sources.packageImporter", true, "github.com/gopherjs/gopherjs/compiler/sources", false, function(srcDir_, importer_, sizes_, tContext_, Errors_) { + this.$val = this; + if (arguments.length === 0) { + this.srcDir = ""; + this.importer = $throwNilPointerError; + this.sizes = $ifaceNil; + this.tContext = ptrType$11.nil; + this.Errors = errlist.ErrorList.nil; + return; + } + this.srcDir = srcDir_; + this.importer = importer_; + this.sizes = sizes_; + this.tContext = tContext_; + this.Errors = Errors_; + }); + $pkg.Sources = Sources; + $pkg.Importer = Importer; + $pkg.packageImporter = packageImporter; + $pkg.$finishSetup = function() { + ptrType = $ptrType(ast.Object); + ptrType$1 = $ptrType(ast.FuncType); + ptrType$2 = $ptrType(ast.BlockStmt); + sliceType = $sliceType(ast.Expr); + ptrType$3 = $ptrType(ast.Ident); + ptrType$4 = $ptrType(ast.FieldList); + ptrType$5 = $ptrType(ast.CallExpr); + sliceType$1 = $sliceType(ast.Stmt); + ptrType$6 = $ptrType(ast.CommentGroup); + sliceType$2 = $sliceType(ast.Spec); + ptrType$7 = $ptrType(ast.BasicLit); + sliceType$3 = $sliceType(ptrType$3); + ptrType$8 = $ptrType(types.Package); + ptrType$9 = $ptrType(types.Info); + ptrType$10 = $ptrType(types.Initializer); + sliceType$4 = $sliceType(ptrType$10); + ptrType$11 = $ptrType(types.Context); + ptrType$12 = $ptrType(analysis.Info); + sliceType$5 = $sliceType(linkname.GoLinkname); + structType = $structType("", []); + sliceType$6 = $sliceType($String); + ptrType$13 = $ptrType(ast.File); + sliceType$7 = $sliceType(ptrType$13); + ptrType$14 = $ptrType(token.FileSet); + ptrType$15 = $ptrType($String); + ptrType$16 = $ptrType(sliceType$7); + sliceType$8 = $sliceType(incjs.File); + ptrType$17 = $ptrType(sliceType$8); + ptrType$18 = $ptrType(ast.ImportSpec); + sliceType$9 = $sliceType(ptrType$18); + sliceType$10 = $sliceType(ptrType$6); + ptrType$19 = $ptrType(ast.Scope); + ptrType$20 = $ptrType(typeparams.Collector); + ptrType$21 = $ptrType(typeparams.PackageInstanceSets); + funcType = $funcType([$emptyInterface], [$error], false); + ptrType$22 = $ptrType(Sources); + ptrType$23 = $ptrType(packageImporter); + $ptrType(Sources).prototype.Sort = function Sort() { + var {s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = [s]; + s[0] = this; + $r = sort.Slice(s[0].Files, (function(s) { return function Sources·Sort·func1(i, j) { + var {$24r, _r, _r$1, i, j, x, x$1, $s, $r, $c} = $restore(this, {i, j}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = s[0].getFileName((x = s[0].Files, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i]))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = s[0].getFileName((x$1 = s[0].Files, ((j < 0 || j >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + j]))); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r > _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Sources·Sort·func1, $c: true, $r, $24r, _r, _r$1, i, j, x, x$1, $s};return $f; + }; })(s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Sort, $c: true, $r, s, $s};return $f; + }; + $ptrType(Sources).prototype.getFileName = function getFileName(file) { + var {$24r, _r, _r$1, file, s, $s, $r, $c} = $restore(this, {file}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _r = s.FileSet.File(file.Pos()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = _r.Name(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: getFileName, $c: true, $r, $24r, _r, _r$1, file, s, $s};return $f; + }; + $ptrType(Sources).prototype.Simplify = function Simplify() { + var {_i, _r, _ref, file, i, s, x, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + _ref = s.Files; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + file = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r = astrewrite.Simplify(file, s.baseInfo, false); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + (x = s.Files, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i] = _r)); + _i++; + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Simplify, $c: true, $r, _i, _r, _ref, file, i, s, x, $s};return $f; + }; + $ptrType(Sources).prototype.TypeCheck = function TypeCheck(importer, sizes, tContext) { + var {_r, _tuple, config, err, importer, pkgImporter, s, sizes, tContext, typeErrs, typesInfo, typesPkg, $s, $r, $c} = $restore(this, {importer, sizes, tContext}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + typeErrs = [typeErrs]; + s = this; + if (!(s.Package === ptrType$8.nil) && !(s.baseInfo === ptrType$9.nil)) { + $s = -1; return $ifaceNil; + } + typesInfo = new types.Info.ptr(new $global.Map(), new $global.Map(), new $global.Map(), new $global.Map(), new $global.Map(), new $global.Map(), new $global.Map(), sliceType$4.nil); + typeErrs[0] = errlist.ErrorList.nil; + pkgImporter = new packageImporter.ptr(s.Dir, importer, sizes, tContext, errlist.ErrorList.nil); + config = new types.Config.ptr(tContext, "", false, false, false, (function(typeErrs) { return function Sources·TypeCheck·func1(err) { + var {_r, err, $s, $r, $c} = $restore(this, {err}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = typeErrs[0].AppendDistinct(err); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + typeErrs[0] = _r; + $s = -1; return; + /* */ } return; } var $f = {$blk: Sources·TypeCheck·func1, $c: true, $r, _r, err, $s};return $f; + }; })(typeErrs), pkgImporter, sizes, false, false); + _r = config.Check(s.ImportPath, s.FileSet, s.Files, typesInfo); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + typesPkg = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(pkgImporter.Errors.ErrOrNil(), $ifaceNil))) { + $s = -1; return pkgImporter.Errors.Trim(10).ErrOrNil(); + } + if (!($interfaceIsEqual(typeErrs[0].ErrOrNil(), $ifaceNil))) { + $s = -1; return typeErrs[0].Trim(10).ErrOrNil(); + } + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + s.baseInfo = typesInfo; + s.Package = typesPkg; + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: TypeCheck, $c: true, $r, _r, _tuple, config, err, importer, pkgImporter, s, sizes, tContext, typeErrs, typesInfo, typesPkg, $s};return $f; + }; + $ptrType(Sources).prototype.CollectInstances = function CollectInstances(tc) { + var {s, tc, $s, $r, $c} = $restore(this, {tc}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + $r = tc.Scan(s.baseInfo, s.Package, s.Files); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: CollectInstances, $c: true, $r, s, tc, $s};return $f; + }; + $ptrType(Sources).prototype.Analyze = function Analyze(importer, tContext, instances) { + var {_r, importer, infoImporter, instances, s, tContext, $s, $r, $c} = $restore(this, {importer, tContext, instances}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + importer = [importer]; + s = [s]; + s[0] = this; + infoImporter = (function(importer, s) { return function Sources·Analyze·func1(path) { + var {_r, _tuple, err, path, srcs, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = importer[0](path, s[0].Dir); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + srcs = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$12.nil, err]; + } + $s = -1; return [srcs.TypeInfo, $ifaceNil]; + /* */ } return; } var $f = {$blk: Sources·Analyze·func1, $c: true, $r, _r, _tuple, err, path, srcs, $s};return $f; + }; })(importer, s); + _r = analysis.AnalyzePkg(s[0].Files, s[0].FileSet, s[0].baseInfo, tContext, s[0].Package, instances, infoImporter); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + s[0].TypeInfo = _r; + $s = -1; return; + /* */ } return; } var $f = {$blk: Analyze, $c: true, $r, _r, importer, infoImporter, instances, s, tContext, $s};return $f; + }; + $ptrType(Sources).prototype.ParseGoLinknames = function ParseGoLinknames() { + var {_i, _r, _ref, _tuple, err, err$1, errs, file, found, goLinknames, s, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + goLinknames = new sliceType$5([]); + errs = errlist.ErrorList.nil; + _ref = s.Files; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + file = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r = linkname.ParseGoLinknames(s.FileSet, s.ImportPath, file); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + found = _tuple[0]; + err = _tuple[1]; + errs = errs.Append(err); + goLinknames = $appendSlice(goLinknames, found); + _i++; + $s = 1; continue; + case 2: + err$1 = errs.ErrOrNil(); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + s.GoLinknames = goLinknames; + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: ParseGoLinknames, $c: true, $r, _i, _r, _ref, _tuple, err, err$1, errs, file, found, goLinknames, s, $s};return $f; + }; + $ptrType(Sources).prototype.UnresolvedImports = function UnresolvedImports(skip) { + var {_entry, _i, _i$1, _i$2, _key, _key$1, _ref, _ref$1, _ref$2, _tuple, file, imp, imports, ok, path, s, seen, sk, skip, $s, $r, $c} = $restore(this, {skip}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + seen = new $global.Map(); + _ref = skip; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sk = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _key = sk; (seen || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: $clone(new structType.ptr(), structType) }); + _i++; + } + imports = new sliceType$6([]); + _ref$1 = s.Files; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + file = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + _ref$2 = file.Imports; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + imp = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + path = strings.Trim(imp.Path.Value, "\""); + _tuple = (_entry = $mapIndex(seen,$String.keyFor(path)), _entry !== undefined ? [_entry.v, true] : [new structType.ptr(), false]); + ok = _tuple[1]; + if (!ok) { + if (!strings.HasSuffix(path, "_test")) { + imports = $append(imports, path); + } + _key$1 = path; (seen || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$1), { k: _key$1, v: $clone(new structType.ptr(), structType) }); + } + _i$2++; + } + _i$1++; + } + $r = sort.Strings(imports); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return imports; + /* */ } return; } var $f = {$blk: UnresolvedImports, $c: true, $r, _entry, _i, _i$1, _i$2, _key, _key$1, _ref, _ref$1, _ref$2, _tuple, file, imp, imports, ok, path, s, seen, sk, skip, $s};return $f; + }; + $ptrType(packageImporter).prototype.Import = function Import(path) { + var {_r, _r$1, _r$2, _r$3, _tuple, err, path, pi, srcs, $s, $r, $c} = $restore(this, {path}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + pi = this; + if (path === "unsafe") { + $s = -1; return [types.Unsafe, $ifaceNil]; + } + _r = pi.importer(path, pi.srcDir); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + srcs = _tuple[0]; + err = _tuple[1]; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2: + _r$1 = pi.Errors.AppendDistinct(err); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + pi.Errors = _r$1; + $s = -1; return [ptrType$8.nil, err]; + /* } */ case 3: + _r$2 = srcs.TypeCheck(pi.importer, pi.sizes, pi.tContext); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + err = _r$2; + /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6: + _r$3 = pi.Errors.AppendDistinct(err); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + pi.Errors = _r$3; + $s = -1; return [ptrType$8.nil, err]; + /* } */ case 7: + $s = -1; return [srcs.Package, $ifaceNil]; + /* */ } return; } var $f = {$blk: Import, $c: true, $r, _r, _r$1, _r$2, _r$3, _tuple, err, path, pi, srcs, $s};return $f; + }; + SortedSourcesSlice = function SortedSourcesSlice$1(sourcesSlice) { + var {sourcesSlice, $s, $r, $c} = $restore(this, {sourcesSlice}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + sourcesSlice = [sourcesSlice]; + $r = sort.Slice(sourcesSlice[0], (function(sourcesSlice) { return function SortedSourcesSlice·func1(i, j) { + var i, j; + return ((i < 0 || i >= sourcesSlice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : sourcesSlice[0].$array[sourcesSlice[0].$offset + i]).ImportPath < ((j < 0 || j >= sourcesSlice[0].$length) ? ($throwRuntimeError("index out of range"), undefined) : sourcesSlice[0].$array[sourcesSlice[0].$offset + j]).ImportPath; + }; })(sourcesSlice)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: SortedSourcesSlice$1, $c: true, $r, sourcesSlice, $s};return $f; + }; + $pkg.SortedSourcesSlice = SortedSourcesSlice; + $ptrType(Sources).prototype.Write = function Write(encode) { + var {_i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, encode, err, err$1, err$2, err$3, err$4, f, files, fs, i, s, $s, $r, $c} = $restore(this, {encode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + $r = prepareGob(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = encode(new $String(s.ImportPath)); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$1 = encode(new $String(s.Dir)); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err$1 = _r$1; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + files = $makeSlice(sliceType$7, s.Files.$length); + _ref = s.Files; + _i = 0; + /* while (true) { */ case 4: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; } + i = _i; + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _r$2 = prepareFile(f); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + ((i < 0 || i >= files.$length) ? ($throwRuntimeError("index out of range"), undefined) : files.$array[files.$offset + i] = _r$2); + _i++; + $s = 4; continue; + case 5: + _r$3 = encode(files); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err$2 = _r$3; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + $s = -1; return err$2; + } + fs = s.FileSet; + if (fs === ptrType$14.nil) { + fs = token.NewFileSet(); + } + _r$4 = fs.Write(encode); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + err$3 = _r$4; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + $s = -1; return err$3; + } + _r$5 = encode(s.JSFiles); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + err$4 = _r$5; + if (!($interfaceIsEqual(err$4, $ifaceNil))) { + $s = -1; return err$4; + } + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: Write, $c: true, $r, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, encode, err, err$1, err$2, err$3, err$4, f, files, fs, i, s, $s};return $f; + }; + $ptrType(Sources).prototype.Read = function Read(decode) { + var {$24r, _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, decode, err, err$1, err$2, err$3, f, s, $s, $r, $c} = $restore(this, {decode}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + $r = prepareGob(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _r = decode((s.$ptr_ImportPath || (s.$ptr_ImportPath = new ptrType$15(function() { return this.$target.ImportPath; }, function($v) { this.$target.ImportPath = $v; }, s)))); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + _r$1 = decode((s.$ptr_Dir || (s.$ptr_Dir = new ptrType$15(function() { return this.$target.Dir; }, function($v) { this.$target.Dir = $v; }, s)))); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + err$1 = _r$1; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return err$1; + } + _r$2 = decode((s.$ptr_Files || (s.$ptr_Files = new ptrType$16(function() { return this.$target.Files; }, function($v) { this.$target.Files = $v; }, s)))); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + err$2 = _r$2; + if (!($interfaceIsEqual(err$2, $ifaceNil))) { + $s = -1; return err$2; + } + _ref = s.Files; + _i = 0; + /* while (true) { */ case 5: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 6; continue; } + f = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + $r = unpackFile(f); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _i++; + $s = 5; continue; + case 6: + if (s.FileSet === ptrType$14.nil) { + s.FileSet = token.NewFileSet(); + } + _r$3 = s.FileSet.Read(decode); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + err$3 = _r$3; + if (!($interfaceIsEqual(err$3, $ifaceNil))) { + $s = -1; return err$3; + } + _r$4 = decode((s.$ptr_JSFiles || (s.$ptr_JSFiles = new ptrType$17(function() { return this.$target.JSFiles; }, function($v) { this.$target.JSFiles = $v; }, s)))); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r = _r$4; + $s = 10; case 10: return $24r; + /* */ } return; } var $f = {$blk: Read, $c: true, $r, $24r, _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, decode, err, err$1, err$2, err$3, f, s, $s};return $f; + }; + prepareFile = function prepareFile$1(file) { + var {copy, file, $s, $r, $c} = $restore(this, {file}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + copy = [copy]; + copy[0] = $clone(file, ast.File); + file = copy[0]; + file.Imports = sliceType$9.nil; + file.Comments = sliceType$10.nil; + file.Scope = ptrType$19.nil; + file.Unresolved = sliceType$3.nil; + $r = ast.Inspect(file, (function(copy) { return function prepareFile·func1(n) { + var _tuple, id, n, ok; + _tuple = $assertType(n, ptrType$3, true); + id = _tuple[0]; + ok = _tuple[1]; + if (ok) { + id.Obj = ptrType.nil; + } + return true; + }; })(copy)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return file; + /* */ } return; } var $f = {$blk: prepareFile$1, $c: true, $r, copy, file, $s};return $f; + }; + unpackFile = function unpackFile$1(file) { + var {comments, file, imports, $s, $r, $c} = $restore(this, {file}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + comments = [comments]; + imports = [imports]; + imports[0] = sliceType$9.nil; + comments[0] = sliceType$10.nil; + $r = ast.Inspect(file, (function(comments, imports) { return function unpackFile·func1(n) { + var _tuple, _tuple$1, cg, im, n, ok, ok$1; + _tuple = $assertType(n, ptrType$18, true); + im = _tuple[0]; + ok = _tuple[1]; + if (ok) { + imports[0] = $append(imports[0], im); + } + _tuple$1 = $assertType(n, ptrType$6, true); + cg = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + comments[0] = $append(comments[0], cg); + } + return true; + }; })(comments, imports)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + file.Imports = imports[0]; + file.Comments = comments[0]; + $s = -1; return; + /* */ } return; } var $f = {$blk: unpackFile$1, $c: true, $r, comments, file, imports, $s};return $f; + }; + ptrType$22.methods = [{prop: "Sort", name: "Sort", pkg: "", typ: $funcType([], [], false)}, {prop: "getFileName", name: "getFileName", pkg: "github.com/gopherjs/gopherjs/compiler/sources", typ: $funcType([ptrType$13], [$String], false)}, {prop: "Simplify", name: "Simplify", pkg: "", typ: $funcType([], [], false)}, {prop: "TypeCheck", name: "TypeCheck", pkg: "", typ: $funcType([Importer, types.Sizes, ptrType$11], [$error], false)}, {prop: "CollectInstances", name: "CollectInstances", pkg: "", typ: $funcType([ptrType$20], [], false)}, {prop: "Analyze", name: "Analyze", pkg: "", typ: $funcType([Importer, ptrType$11, ptrType$21], [], false)}, {prop: "ParseGoLinknames", name: "ParseGoLinknames", pkg: "", typ: $funcType([], [$error], false)}, {prop: "UnresolvedImports", name: "UnresolvedImports", pkg: "", typ: $funcType([sliceType$6], [sliceType$6], true)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([funcType], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([funcType], [$error], false)}]; + ptrType$23.methods = [{prop: "Import", name: "Import", pkg: "", typ: $funcType([$String], [ptrType$8, $error], false)}]; + Sources.init("github.com/gopherjs/gopherjs/compiler/sources", [{prop: "ImportPath", name: "ImportPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Dir", name: "Dir", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Files", name: "Files", embedded: false, exported: true, typ: sliceType$7, tag: ""}, {prop: "FileSet", name: "FileSet", embedded: false, exported: true, typ: ptrType$14, tag: ""}, {prop: "JSFiles", name: "JSFiles", embedded: false, exported: true, typ: sliceType$8, tag: ""}, {prop: "TypeInfo", name: "TypeInfo", embedded: false, exported: true, typ: ptrType$12, tag: ""}, {prop: "baseInfo", name: "baseInfo", embedded: false, exported: false, typ: ptrType$9, tag: ""}, {prop: "Package", name: "Package", embedded: false, exported: true, typ: ptrType$8, tag: ""}, {prop: "GoLinknames", name: "GoLinknames", embedded: false, exported: true, typ: sliceType$5, tag: ""}]); + Importer.init([$String, $String], [ptrType$22, $error], false); + packageImporter.init("github.com/gopherjs/gopherjs/compiler/sources", [{prop: "srcDir", name: "srcDir", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "importer", name: "importer", embedded: false, exported: false, typ: Importer, tag: ""}, {prop: "sizes", name: "sizes", embedded: false, exported: false, typ: types.Sizes, tag: ""}, {prop: "tContext", name: "tContext", embedded: false, exported: false, typ: ptrType$11, tag: ""}, {prop: "Errors", name: "Errors", embedded: false, exported: true, typ: errlist.ErrorList, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = gob.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errlist.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = incjs.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = analysis.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = typeparams.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = linkname.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = astrewrite.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ast.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = token.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = types.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + prepareGob = (function func1() { + var once, registerTypes; + registerTypes = (function func1·func1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = gob.Register(new ast.BadExpr.ptr(0, 0)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.Ident.ptr(0, "", ptrType.nil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.Ellipsis.ptr(0, $ifaceNil)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.BasicLit.ptr(0, 0, "")); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.FuncLit.ptr(ptrType$1.nil, ptrType$2.nil)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.CompositeLit.ptr($ifaceNil, 0, sliceType.nil, 0, false)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.ParenExpr.ptr(0, $ifaceNil, 0)); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.SelectorExpr.ptr($ifaceNil, ptrType$3.nil)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.IndexExpr.ptr($ifaceNil, 0, $ifaceNil, 0)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.IndexListExpr.ptr($ifaceNil, 0, sliceType.nil, 0)); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.SliceExpr.ptr($ifaceNil, 0, $ifaceNil, $ifaceNil, $ifaceNil, false, 0)); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.TypeAssertExpr.ptr($ifaceNil, 0, $ifaceNil, 0)); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.CallExpr.ptr($ifaceNil, 0, sliceType.nil, 0, 0)); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.StarExpr.ptr(0, $ifaceNil)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.UnaryExpr.ptr(0, 0, $ifaceNil)); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.BinaryExpr.ptr($ifaceNil, 0, 0, $ifaceNil)); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.KeyValueExpr.ptr($ifaceNil, 0, $ifaceNil)); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.ArrayType.ptr(0, $ifaceNil, $ifaceNil)); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.StructType.ptr(0, ptrType$4.nil, false)); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.FuncType.ptr(0, ptrType$4.nil, ptrType$4.nil, ptrType$4.nil)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.InterfaceType.ptr(0, ptrType$4.nil, false)); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.MapType.ptr(0, $ifaceNil, $ifaceNil)); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.ChanType.ptr(0, 0, 0, $ifaceNil)); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.BadStmt.ptr(0, 0)); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.DeclStmt.ptr($ifaceNil)); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.EmptyStmt.ptr(0, false)); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.LabeledStmt.ptr(ptrType$3.nil, 0, $ifaceNil)); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.ExprStmt.ptr($ifaceNil)); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.SendStmt.ptr($ifaceNil, 0, $ifaceNil)); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.IncDecStmt.ptr($ifaceNil, 0, 0)); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.AssignStmt.ptr(sliceType.nil, 0, 0, sliceType.nil)); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.GoStmt.ptr(0, ptrType$5.nil)); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.DeferStmt.ptr(0, ptrType$5.nil)); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.ReturnStmt.ptr(0, sliceType.nil)); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.BranchStmt.ptr(0, 0, ptrType$3.nil)); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.BlockStmt.ptr(0, sliceType$1.nil, 0)); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.IfStmt.ptr(0, $ifaceNil, $ifaceNil, ptrType$2.nil, $ifaceNil)); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.CaseClause.ptr(0, sliceType.nil, 0, sliceType$1.nil)); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.SwitchStmt.ptr(0, $ifaceNil, $ifaceNil, ptrType$2.nil)); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.TypeSwitchStmt.ptr(0, $ifaceNil, $ifaceNil, ptrType$2.nil)); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.CommClause.ptr(0, $ifaceNil, 0, sliceType$1.nil)); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.SelectStmt.ptr(0, ptrType$2.nil)); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.ForStmt.ptr(0, $ifaceNil, $ifaceNil, $ifaceNil, ptrType$2.nil)); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.RangeStmt.ptr(0, $ifaceNil, $ifaceNil, 0, 0, 0, $ifaceNil, ptrType$2.nil)); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.BadDecl.ptr(0, 0)); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.GenDecl.ptr(ptrType$6.nil, 0, 0, 0, sliceType$2.nil, 0)); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.FuncDecl.ptr(ptrType$6.nil, ptrType$4.nil, ptrType$3.nil, ptrType$1.nil, ptrType$2.nil)); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.ImportSpec.ptr(ptrType$6.nil, ptrType$3.nil, ptrType$7.nil, ptrType$6.nil, 0)); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.ValueSpec.ptr(ptrType$6.nil, sliceType$3.nil, $ifaceNil, sliceType.nil, ptrType$6.nil)); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = gob.Register(new ast.TypeSpec.ptr(ptrType$6.nil, ptrType$3.nil, ptrType$4.nil, 0, $ifaceNil, ptrType$6.nil)); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: func1·func1, $c: true, $r, $s};return $f; + }); + once = new sync.Once.ptr(0, new sync.Mutex.ptr(0, 0)); + return (function func1·func2() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = once.Do(registerTypes); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: func1·func2, $c: true, $r, $s};return $f; + }); + })(); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["encoding/base64"] = (function() { + var $pkg = {}, $init, binary, io, strconv, Encoding, encoder, CorruptInputError, arrayType, arrayType$1, sliceType, ptrType, arrayType$2, arrayType$3, arrayType$4, ptrType$1, NewEncoding, NewEncoder, assemble32, assemble64; + binary = $packages["encoding/binary"]; + io = $packages["io"]; + strconv = $packages["strconv"]; + Encoding = $newType(0, $kindStruct, "base64.Encoding", true, "encoding/base64", true, function(encode_, decodeMap_, padChar_, strict_) { + this.$val = this; + if (arguments.length === 0) { + this.encode = arrayType.zero(); + this.decodeMap = arrayType$1.zero(); + this.padChar = 0; + this.strict = false; + return; + } + this.encode = encode_; + this.decodeMap = decodeMap_; + this.padChar = padChar_; + this.strict = strict_; + }); + encoder = $newType(0, $kindStruct, "base64.encoder", true, "encoding/base64", false, function(err_, enc_, w_, buf_, nbuf_, out_) { + this.$val = this; + if (arguments.length === 0) { + this.err = $ifaceNil; + this.enc = ptrType.nil; + this.w = $ifaceNil; + this.buf = arrayType$2.zero(); + this.nbuf = 0; + this.out = arrayType$3.zero(); + return; + } + this.err = err_; + this.enc = enc_; + this.w = w_; + this.buf = buf_; + this.nbuf = nbuf_; + this.out = out_; + }); + CorruptInputError = $newType(8, $kindInt64, "base64.CorruptInputError", true, "encoding/base64", true, null); + $pkg.Encoding = Encoding; + $pkg.encoder = encoder; + $pkg.CorruptInputError = CorruptInputError; + $pkg.$finishSetup = function() { + arrayType = $arrayType($Uint8, 64); + arrayType$1 = $arrayType($Uint8, 256); + sliceType = $sliceType($Uint8); + ptrType = $ptrType(Encoding); + arrayType$2 = $arrayType($Uint8, 3); + arrayType$3 = $arrayType($Uint8, 1024); + arrayType$4 = $arrayType($Uint8, 4); + ptrType$1 = $ptrType(encoder); + NewEncoding = function NewEncoding$1(encoder$1) { + var e, encoder$1, i, i$1, x, x$1; + if (!((encoder$1.length === 64))) { + $panic(new $String("encoding alphabet is not 64-bytes long")); + } + i = 0; + while (true) { + if (!(i < encoder$1.length)) { break; } + if ((encoder$1.charCodeAt(i) === 10) || (encoder$1.charCodeAt(i) === 13)) { + $panic(new $String("encoding alphabet contains newline character")); + } + i = i + (1) >> 0; + } + e = new Encoding.ptr(arrayType.zero(), arrayType$1.zero(), 0, false); + e.padChar = 61; + $copyString(new sliceType(e.encode), encoder$1); + $copyString(new sliceType(e.decodeMap), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"); + i$1 = 0; + while (true) { + if (!(i$1 < encoder$1.length)) { break; } + (x = e.decodeMap, x$1 = encoder$1.charCodeAt(i$1), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1] = ((i$1 << 24 >>> 24)))); + i$1 = i$1 + (1) >> 0; + } + return e; + }; + $pkg.NewEncoding = NewEncoding; + $ptrType(Encoding).prototype.WithPadding = function WithPadding(padding) { + var enc, i, padding, x; + enc = this; + if ((padding === 13) || (padding === 10) || padding > 255) { + $panic(new $String("invalid padding")); + } + i = 0; + while (true) { + if (!(i < 64)) { break; } + if ((((x = enc.encode, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])) >> 0)) === padding) { + $panic(new $String("padding contained in alphabet")); + } + i = i + (1) >> 0; + } + enc.padChar = padding; + return enc; + }; + Encoding.prototype.WithPadding = function(...$args) { return this.$val.WithPadding(...$args); }; + $ptrType(Encoding).prototype.Strict = function Strict() { + var enc; + enc = this; + enc.strict = true; + return enc; + }; + Encoding.prototype.Strict = function(...$args) { return this.$val.Strict(...$args); }; + $ptrType(Encoding).prototype.Encode = function Encode(dst, src) { + var _1, _q, _tmp, _tmp$1, di, dst, enc, n, remain, si, src, val, val$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + enc = this; + if (src.$length === 0) { + return; + } + $unused(enc.encode); + _tmp = 0; + _tmp$1 = 0; + di = _tmp; + si = _tmp$1; + n = $imul(((_q = src.$length / 3, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), 3); + while (true) { + if (!(si < n)) { break; } + val = (((((((x = si + 0 >> 0, ((x < 0 || x >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x])) >>> 0)) << 16 >>> 0) | ((((x$1 = si + 1 >> 0, ((x$1 < 0 || x$1 >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x$1])) >>> 0)) << 8 >>> 0)) >>> 0) | (((x$2 = si + 2 >> 0, ((x$2 < 0 || x$2 >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x$2])) >>> 0))) >>> 0; + (x$5 = di + 0 >> 0, ((x$5 < 0 || x$5 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$5] = (x$3 = enc.encode, x$4 = ((val >>> 18 >>> 0) & 63) >>> 0, ((x$4 < 0 || x$4 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[x$4])))); + (x$8 = di + 1 >> 0, ((x$8 < 0 || x$8 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$8] = (x$6 = enc.encode, x$7 = ((val >>> 12 >>> 0) & 63) >>> 0, ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7])))); + (x$11 = di + 2 >> 0, ((x$11 < 0 || x$11 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$11] = (x$9 = enc.encode, x$10 = ((val >>> 6 >>> 0) & 63) >>> 0, ((x$10 < 0 || x$10 >= x$9.length) ? ($throwRuntimeError("index out of range"), undefined) : x$9[x$10])))); + (x$14 = di + 3 >> 0, ((x$14 < 0 || x$14 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$14] = (x$12 = enc.encode, x$13 = (val & 63) >>> 0, ((x$13 < 0 || x$13 >= x$12.length) ? ($throwRuntimeError("index out of range"), undefined) : x$12[x$13])))); + si = si + (3) >> 0; + di = di + (4) >> 0; + } + remain = src.$length - si >> 0; + if (remain === 0) { + return; + } + val$1 = (((x$15 = si + 0 >> 0, ((x$15 < 0 || x$15 >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x$15])) >>> 0)) << 16 >>> 0; + if (remain === 2) { + val$1 = (val$1 | (((((x$16 = si + 1 >> 0, ((x$16 < 0 || x$16 >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + x$16])) >>> 0)) << 8 >>> 0))) >>> 0; + } + (x$19 = di + 0 >> 0, ((x$19 < 0 || x$19 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$19] = (x$17 = enc.encode, x$18 = ((val$1 >>> 18 >>> 0) & 63) >>> 0, ((x$18 < 0 || x$18 >= x$17.length) ? ($throwRuntimeError("index out of range"), undefined) : x$17[x$18])))); + (x$22 = di + 1 >> 0, ((x$22 < 0 || x$22 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$22] = (x$20 = enc.encode, x$21 = ((val$1 >>> 12 >>> 0) & 63) >>> 0, ((x$21 < 0 || x$21 >= x$20.length) ? ($throwRuntimeError("index out of range"), undefined) : x$20[x$21])))); + _1 = remain; + if (_1 === (2)) { + (x$25 = di + 2 >> 0, ((x$25 < 0 || x$25 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$25] = (x$23 = enc.encode, x$24 = ((val$1 >>> 6 >>> 0) & 63) >>> 0, ((x$24 < 0 || x$24 >= x$23.length) ? ($throwRuntimeError("index out of range"), undefined) : x$23[x$24])))); + if (!((enc.padChar === -1))) { + (x$26 = di + 3 >> 0, ((x$26 < 0 || x$26 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$26] = ((enc.padChar << 24 >>> 24)))); + } + } else if (_1 === (1)) { + if (!((enc.padChar === -1))) { + (x$27 = di + 2 >> 0, ((x$27 < 0 || x$27 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$27] = ((enc.padChar << 24 >>> 24)))); + (x$28 = di + 3 >> 0, ((x$28 < 0 || x$28 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$28] = ((enc.padChar << 24 >>> 24)))); + } + } + }; + $ptrType(Encoding).prototype.EncodeToString = function EncodeToString(src) { + var buf, enc, src; + enc = this; + buf = $makeSlice(sliceType, enc.EncodedLen(src.$length)); + enc.Encode(buf, src); + return ($bytesToString(buf)); + }; + $ptrType(encoder).prototype.Write = function Write(p) { + var {_q, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, e, err, i, n, nn, p, x, x$1, $s, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + n = 0; + err = $ifaceNil; + e = this; + if (!($interfaceIsEqual(e.err, $ifaceNil))) { + _tmp = 0; + _tmp$1 = e.err; + n = _tmp; + err = _tmp$1; + $s = -1; return [n, err]; + } + /* */ if (e.nbuf > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (e.nbuf > 0) { */ case 1: + i = 0; + i = 0; + while (true) { + if (!(i < p.$length && e.nbuf < 3)) { break; } + (x = e.buf, x$1 = e.nbuf, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1] = ((i < 0 || i >= p.$length) ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + i]))); + e.nbuf = e.nbuf + (1) >> 0; + i = i + (1) >> 0; + } + n = n + (i) >> 0; + p = $subslice(p, i); + if (e.nbuf < 3) { + $s = -1; return [n, err]; + } + e.enc.Encode(new sliceType(e.out), new sliceType(e.buf)); + _r = e.w.Write($subslice(new sliceType(e.out), 0, 4)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + e.err = _tuple[1]; + if (!($interfaceIsEqual(e.err, $ifaceNil))) { + _tmp$2 = n; + _tmp$3 = e.err; + n = _tmp$2; + err = _tmp$3; + $s = -1; return [n, err]; + } + e.nbuf = 0; + /* } */ case 2: + /* while (true) { */ case 4: + /* if (!(p.$length >= 3)) { break; } */ if(!(p.$length >= 3)) { $s = 5; continue; } + nn = 768; + if (nn > p.$length) { + nn = p.$length; + nn = nn - ((_r$1 = nn % 3, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero"))) >> 0; + } + e.enc.Encode(new sliceType(e.out), $subslice(p, 0, nn)); + _r$2 = e.w.Write($subslice(new sliceType(e.out), 0, ($imul((_q = nn / 3, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 4)))); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _tuple$1 = _r$2; + e.err = _tuple$1[1]; + if (!($interfaceIsEqual(e.err, $ifaceNil))) { + _tmp$4 = n; + _tmp$5 = e.err; + n = _tmp$4; + err = _tmp$5; + $s = -1; return [n, err]; + } + n = n + (nn) >> 0; + p = $subslice(p, nn); + $s = 4; continue; + case 5: + $copySlice(new sliceType(e.buf), p); + e.nbuf = p.$length; + n = n + (p.$length) >> 0; + $s = -1; return [n, err]; + /* */ } return; } var $f = {$blk: Write, $c: true, $r, _q, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, e, err, i, n, nn, p, x, x$1, $s};return $f; + }; + $ptrType(encoder).prototype.Close = function Close() { + var {_r, _tuple, e, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + /* */ if ($interfaceIsEqual(e.err, $ifaceNil) && e.nbuf > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if ($interfaceIsEqual(e.err, $ifaceNil) && e.nbuf > 0) { */ case 1: + e.enc.Encode(new sliceType(e.out), $subslice(new sliceType(e.buf), 0, e.nbuf)); + _r = e.w.Write($subslice(new sliceType(e.out), 0, e.enc.EncodedLen(e.nbuf))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + e.err = _tuple[1]; + e.nbuf = 0; + /* } */ case 2: + $s = -1; return e.err; + /* */ } return; } var $f = {$blk: Close, $c: true, $r, _r, _tuple, e, $s};return $f; + }; + NewEncoder = function NewEncoder$1(enc, w) { + var enc, w; + return new encoder.ptr($ifaceNil, enc, w, arrayType$2.zero(), 0, arrayType$3.zero()); + }; + $pkg.NewEncoder = NewEncoder; + $ptrType(Encoding).prototype.EncodedLen = function EncodedLen(n) { + var _q, _q$1, enc, n; + enc = this; + if (enc.padChar === -1) { + return (_q = ((($imul(n, 8)) + 5 >> 0)) / 6, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + } + return $imul((_q$1 = ((n + 2 >> 0)) / 3, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 4); + }; + CorruptInputError.prototype.Error = function Error() { + var e; + e = this; + return "illegal base64 data at input byte " + strconv.FormatInt((new $Int64(e.$high, e.$low)), 10); + }; + $ptrType(CorruptInputError).prototype.Error = function(...$args) { return this.$get().Error(...$args); }; + $ptrType(Encoding).prototype.decodeQuantum = function decodeQuantum(dst, src, si) { + var _1, _2, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, dbuf, dlen, dst, enc, err, in$1, j, n, nsi, out, si, src, val, x; + nsi = 0; + n = 0; + err = $ifaceNil; + enc = this; + dbuf = arrayType$4.zero(); + dlen = 4; + $unused(enc.decodeMap); + j = 0; + while (true) { + if (!(j < 4)) { break; } + if (src.$length === si) { + if ((j === 0)) { + _tmp = si; + _tmp$1 = 0; + _tmp$2 = $ifaceNil; + nsi = _tmp; + n = _tmp$1; + err = _tmp$2; + return [nsi, n, err]; + } else if (((j === 1)) || (!((enc.padChar === -1)))) { + _tmp$3 = si; + _tmp$4 = 0; + _tmp$5 = (new CorruptInputError(0, (si - j >> 0))); + nsi = _tmp$3; + n = _tmp$4; + err = _tmp$5; + return [nsi, n, err]; + } + dlen = j; + break; + } + in$1 = ((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]); + si = si + (1) >> 0; + out = (x = enc.decodeMap, ((in$1 < 0 || in$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[in$1])); + if (!((out === 255))) { + ((j < 0 || j >= dbuf.length) ? ($throwRuntimeError("index out of range"), undefined) : dbuf[j] = out); + j = j + (1) >> 0; + continue; + } + if ((in$1 === 10) || (in$1 === 13)) { + j = j - (1) >> 0; + j = j + (1) >> 0; + continue; + } + if (!((((in$1 >> 0)) === enc.padChar))) { + _tmp$6 = si; + _tmp$7 = 0; + _tmp$8 = (new CorruptInputError(0, (si - 1 >> 0))); + nsi = _tmp$6; + n = _tmp$7; + err = _tmp$8; + return [nsi, n, err]; + } + _1 = j; + if ((_1 === (0)) || (_1 === (1))) { + _tmp$9 = si; + _tmp$10 = 0; + _tmp$11 = (new CorruptInputError(0, (si - 1 >> 0))); + nsi = _tmp$9; + n = _tmp$10; + err = _tmp$11; + return [nsi, n, err]; + } else if (_1 === (2)) { + while (true) { + if (!(si < src.$length && ((((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]) === 10) || (((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]) === 13)))) { break; } + si = si + (1) >> 0; + } + if (si === src.$length) { + _tmp$12 = si; + _tmp$13 = 0; + _tmp$14 = (new CorruptInputError(0, src.$length)); + nsi = _tmp$12; + n = _tmp$13; + err = _tmp$14; + return [nsi, n, err]; + } + if (!((((((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]) >> 0)) === enc.padChar))) { + _tmp$15 = si; + _tmp$16 = 0; + _tmp$17 = (new CorruptInputError(0, (si - 1 >> 0))); + nsi = _tmp$15; + n = _tmp$16; + err = _tmp$17; + return [nsi, n, err]; + } + si = si + (1) >> 0; + } + while (true) { + if (!(si < src.$length && ((((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]) === 10) || (((si < 0 || si >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + si]) === 13)))) { break; } + si = si + (1) >> 0; + } + if (si < src.$length) { + err = (new CorruptInputError(0, si)); + } + dlen = j; + break; + } + val = ((((((((dbuf[0] >>> 0)) << 18 >>> 0) | (((dbuf[1] >>> 0)) << 12 >>> 0)) >>> 0) | (((dbuf[2] >>> 0)) << 6 >>> 0)) >>> 0) | ((dbuf[3] >>> 0))) >>> 0; + _tmp$18 = (((val >>> 0 >>> 0) << 24 >>> 24)); + _tmp$19 = (((val >>> 8 >>> 0) << 24 >>> 24)); + _tmp$20 = (((val >>> 16 >>> 0) << 24 >>> 24)); + dbuf[2] = _tmp$18; + dbuf[1] = _tmp$19; + dbuf[0] = _tmp$20; + _2 = dlen; + if (_2 === (4)) { + (2 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 2] = dbuf[2]); + dbuf[2] = 0; + (1 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 1] = dbuf[1]); + if (enc.strict && !((dbuf[2] === 0))) { + _tmp$21 = si; + _tmp$22 = 0; + _tmp$23 = (new CorruptInputError(0, (si - 1 >> 0))); + nsi = _tmp$21; + n = _tmp$22; + err = _tmp$23; + return [nsi, n, err]; + } + dbuf[1] = 0; + (0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = dbuf[0]); + if (enc.strict && (!((dbuf[1] === 0)) || !((dbuf[2] === 0)))) { + _tmp$24 = si; + _tmp$25 = 0; + _tmp$26 = (new CorruptInputError(0, (si - 2 >> 0))); + nsi = _tmp$24; + n = _tmp$25; + err = _tmp$26; + return [nsi, n, err]; + } + } else if (_2 === (3)) { + (1 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 1] = dbuf[1]); + if (enc.strict && !((dbuf[2] === 0))) { + _tmp$27 = si; + _tmp$28 = 0; + _tmp$29 = (new CorruptInputError(0, (si - 1 >> 0))); + nsi = _tmp$27; + n = _tmp$28; + err = _tmp$29; + return [nsi, n, err]; + } + dbuf[1] = 0; + (0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = dbuf[0]); + if (enc.strict && (!((dbuf[1] === 0)) || !((dbuf[2] === 0)))) { + _tmp$30 = si; + _tmp$31 = 0; + _tmp$32 = (new CorruptInputError(0, (si - 2 >> 0))); + nsi = _tmp$30; + n = _tmp$31; + err = _tmp$32; + return [nsi, n, err]; + } + } else if (_2 === (2)) { + (0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = dbuf[0]); + if (enc.strict && (!((dbuf[1] === 0)) || !((dbuf[2] === 0)))) { + _tmp$33 = si; + _tmp$34 = 0; + _tmp$35 = (new CorruptInputError(0, (si - 2 >> 0))); + nsi = _tmp$33; + n = _tmp$34; + err = _tmp$35; + return [nsi, n, err]; + } + } + _tmp$36 = si; + _tmp$37 = dlen - 1 >> 0; + _tmp$38 = err; + nsi = _tmp$36; + n = _tmp$37; + err = _tmp$38; + return [nsi, n, err]; + }; + $ptrType(Encoding).prototype.DecodeString = function DecodeString(s) { + var _tuple, dbuf, enc, err, n, s; + enc = this; + dbuf = $makeSlice(sliceType, enc.DecodedLen(s.length)); + _tuple = enc.Decode(dbuf, (new sliceType($stringToBytes(s)))); + n = _tuple[0]; + err = _tuple[1]; + return [$subslice(dbuf, 0, n), err]; + }; + $ptrType(Encoding).prototype.Decode = function Decode(dst, src) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, dn, dn$1, dst, enc, err, n, ninc, ninc$1, ninc$2, ok, ok$1, si, src, src2, src2$1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + n = 0; + err = $ifaceNil; + enc = this; + if (src.$length === 0) { + _tmp = 0; + _tmp$1 = $ifaceNil; + n = _tmp; + err = _tmp$1; + return [n, err]; + } + $unused(enc.decodeMap); + si = 0; + while (true) { + if (!(false && (src.$length - si >> 0) >= 8 && (dst.$length - n >> 0) >= 8)) { break; } + src2 = $subslice(src, si, (si + 8 >> 0)); + _tuple = assemble64((x = enc.decodeMap, x$1 = (0 >= src2.$length ? ($throwRuntimeError("index out of range"), undefined) : src2.$array[src2.$offset + 0]), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1])), (x$2 = enc.decodeMap, x$3 = (1 >= src2.$length ? ($throwRuntimeError("index out of range"), undefined) : src2.$array[src2.$offset + 1]), ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3])), (x$4 = enc.decodeMap, x$5 = (2 >= src2.$length ? ($throwRuntimeError("index out of range"), undefined) : src2.$array[src2.$offset + 2]), ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5])), (x$6 = enc.decodeMap, x$7 = (3 >= src2.$length ? ($throwRuntimeError("index out of range"), undefined) : src2.$array[src2.$offset + 3]), ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7])), (x$8 = enc.decodeMap, x$9 = (4 >= src2.$length ? ($throwRuntimeError("index out of range"), undefined) : src2.$array[src2.$offset + 4]), ((x$9 < 0 || x$9 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[x$9])), (x$10 = enc.decodeMap, x$11 = (5 >= src2.$length ? ($throwRuntimeError("index out of range"), undefined) : src2.$array[src2.$offset + 5]), ((x$11 < 0 || x$11 >= x$10.length) ? ($throwRuntimeError("index out of range"), undefined) : x$10[x$11])), (x$12 = enc.decodeMap, x$13 = (6 >= src2.$length ? ($throwRuntimeError("index out of range"), undefined) : src2.$array[src2.$offset + 6]), ((x$13 < 0 || x$13 >= x$12.length) ? ($throwRuntimeError("index out of range"), undefined) : x$12[x$13])), (x$14 = enc.decodeMap, x$15 = (7 >= src2.$length ? ($throwRuntimeError("index out of range"), undefined) : src2.$array[src2.$offset + 7]), ((x$15 < 0 || x$15 >= x$14.length) ? ($throwRuntimeError("index out of range"), undefined) : x$14[x$15]))); + dn = _tuple[0]; + ok = _tuple[1]; + if (ok) { + $clone(binary.BigEndian, binary.bigEndian).PutUint64($subslice(dst, n), dn); + n = n + (6) >> 0; + si = si + (8) >> 0; + } else { + ninc = 0; + _tuple$1 = enc.decodeQuantum($subslice(dst, n), src, si); + si = _tuple$1[0]; + ninc = _tuple$1[1]; + err = _tuple$1[2]; + n = n + (ninc) >> 0; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$2 = n; + _tmp$3 = err; + n = _tmp$2; + err = _tmp$3; + return [n, err]; + } + } + } + while (true) { + if (!((src.$length - si >> 0) >= 4 && (dst.$length - n >> 0) >= 4)) { break; } + src2$1 = $subslice(src, si, (si + 4 >> 0)); + _tuple$2 = assemble32((x$16 = enc.decodeMap, x$17 = (0 >= src2$1.$length ? ($throwRuntimeError("index out of range"), undefined) : src2$1.$array[src2$1.$offset + 0]), ((x$17 < 0 || x$17 >= x$16.length) ? ($throwRuntimeError("index out of range"), undefined) : x$16[x$17])), (x$18 = enc.decodeMap, x$19 = (1 >= src2$1.$length ? ($throwRuntimeError("index out of range"), undefined) : src2$1.$array[src2$1.$offset + 1]), ((x$19 < 0 || x$19 >= x$18.length) ? ($throwRuntimeError("index out of range"), undefined) : x$18[x$19])), (x$20 = enc.decodeMap, x$21 = (2 >= src2$1.$length ? ($throwRuntimeError("index out of range"), undefined) : src2$1.$array[src2$1.$offset + 2]), ((x$21 < 0 || x$21 >= x$20.length) ? ($throwRuntimeError("index out of range"), undefined) : x$20[x$21])), (x$22 = enc.decodeMap, x$23 = (3 >= src2$1.$length ? ($throwRuntimeError("index out of range"), undefined) : src2$1.$array[src2$1.$offset + 3]), ((x$23 < 0 || x$23 >= x$22.length) ? ($throwRuntimeError("index out of range"), undefined) : x$22[x$23]))); + dn$1 = _tuple$2[0]; + ok$1 = _tuple$2[1]; + if (ok$1) { + $clone(binary.BigEndian, binary.bigEndian).PutUint32($subslice(dst, n), dn$1); + n = n + (3) >> 0; + si = si + (4) >> 0; + } else { + ninc$1 = 0; + _tuple$3 = enc.decodeQuantum($subslice(dst, n), src, si); + si = _tuple$3[0]; + ninc$1 = _tuple$3[1]; + err = _tuple$3[2]; + n = n + (ninc$1) >> 0; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$4 = n; + _tmp$5 = err; + n = _tmp$4; + err = _tmp$5; + return [n, err]; + } + } + } + while (true) { + if (!(si < src.$length)) { break; } + ninc$2 = 0; + _tuple$4 = enc.decodeQuantum($subslice(dst, n), src, si); + si = _tuple$4[0]; + ninc$2 = _tuple$4[1]; + err = _tuple$4[2]; + n = n + (ninc$2) >> 0; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$6 = n; + _tmp$7 = err; + n = _tmp$6; + err = _tmp$7; + return [n, err]; + } + } + _tmp$8 = n; + _tmp$9 = err; + n = _tmp$8; + err = _tmp$9; + return [n, err]; + }; + assemble32 = function assemble32$1(n1, n2, n3, n4) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, dn, n1, n2, n3, n4, ok; + dn = 0; + ok = false; + if (((((((n1 | n2) >>> 0) | n3) >>> 0) | n4) >>> 0) === 255) { + _tmp = 0; + _tmp$1 = false; + dn = _tmp; + ok = _tmp$1; + return [dn, ok]; + } + _tmp$2 = ((((((((n1 >>> 0)) << 26 >>> 0) | (((n2 >>> 0)) << 20 >>> 0)) >>> 0) | (((n3 >>> 0)) << 14 >>> 0)) >>> 0) | (((n4 >>> 0)) << 8 >>> 0)) >>> 0; + _tmp$3 = true; + dn = _tmp$2; + ok = _tmp$3; + return [dn, ok]; + }; + assemble64 = function assemble64$1(n1, n2, n3, n4, n5, n6, n7, n8) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, dn, n1, n2, n3, n4, n5, n6, n7, n8, ok, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + dn = new $Uint64(0, 0); + ok = false; + if (((((((((((((((n1 | n2) >>> 0) | n3) >>> 0) | n4) >>> 0) | n5) >>> 0) | n6) >>> 0) | n7) >>> 0) | n8) >>> 0) === 255) { + _tmp = new $Uint64(0, 0); + _tmp$1 = false; + dn = _tmp; + ok = _tmp$1; + return [dn, ok]; + } + _tmp$2 = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = $shiftLeft64((new $Uint64(0, n1)), 58), x$7 = $shiftLeft64((new $Uint64(0, n2)), 52), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64((new $Uint64(0, n3)), 46), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64((new $Uint64(0, n4)), 40), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64((new $Uint64(0, n5)), 34), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64((new $Uint64(0, n6)), 28), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64((new $Uint64(0, n7)), 22), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64((new $Uint64(0, n8)), 16), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0)); + _tmp$3 = true; + dn = _tmp$2; + ok = _tmp$3; + return [dn, ok]; + }; + $ptrType(Encoding).prototype.DecodedLen = function DecodedLen(n) { + var _q, _q$1, enc, n; + enc = this; + if (enc.padChar === -1) { + return (_q = ($imul(n, 6)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + } + return $imul((_q$1 = n / 4, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 3); + }; + Encoding.methods = [{prop: "WithPadding", name: "WithPadding", pkg: "", typ: $funcType([$Int32], [ptrType], false)}, {prop: "Strict", name: "Strict", pkg: "", typ: $funcType([], [ptrType], false)}]; + ptrType.methods = [{prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}, {prop: "EncodeToString", name: "EncodeToString", pkg: "", typ: $funcType([sliceType], [$String], false)}, {prop: "EncodedLen", name: "EncodedLen", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "decodeQuantum", name: "decodeQuantum", pkg: "encoding/base64", typ: $funcType([sliceType, sliceType, $Int], [$Int, $Int, $error], false)}, {prop: "DecodeString", name: "DecodeString", pkg: "", typ: $funcType([$String], [sliceType, $error], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType, sliceType], [$Int, $error], false)}, {prop: "DecodedLen", name: "DecodedLen", pkg: "", typ: $funcType([$Int], [$Int], false)}]; + ptrType$1.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; + CorruptInputError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + Encoding.init("encoding/base64", [{prop: "encode", name: "encode", embedded: false, exported: false, typ: arrayType, tag: ""}, {prop: "decodeMap", name: "decodeMap", embedded: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "padChar", name: "padChar", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "strict", name: "strict", embedded: false, exported: false, typ: $Bool, tag: ""}]); + encoder.init("encoding/base64", [{prop: "err", name: "err", embedded: false, exported: false, typ: $error, tag: ""}, {prop: "enc", name: "enc", embedded: false, exported: false, typ: ptrType, tag: ""}, {prop: "w", name: "w", embedded: false, exported: false, typ: io.Writer, tag: ""}, {prop: "buf", name: "buf", embedded: false, exported: false, typ: arrayType$2, tag: ""}, {prop: "nbuf", name: "nbuf", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "out", name: "out", embedded: false, exported: false, typ: arrayType$3, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.StdEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"); + $pkg.URLEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"); + $pkg.RawStdEncoding = $clone($pkg.StdEncoding, Encoding).WithPadding(-1); + $pkg.RawURLEncoding = $clone($pkg.URLEncoding, Encoding).WithPadding(-1); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/evanw/esbuild/internal/api_helpers"] = (function() { + var $pkg = {}, $init; + $pkg.$finishSetup = function() { + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $pkg.UseTimer = false; + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["archive/zip"] = (function() { + var $pkg = {}, $init, bufio, flate, binary, errors, hash, crc32, godebug, io, fs, os, path, filepath, sort, strings, sync, time, utf8, nopCloser, Compressor, Decompressor, pooledFlateWriter, pooledFlateReader, sliceType, ptrType, sliceType$2, ptrType$9, ptrType$17, ptrType$18, flateWriterPool, flateReaderPool, compressors, decompressors, errLongName, errLongExtra, zipinsecurepath, newFlateWriter, newFlateReader, init; + bufio = $packages["bufio"]; + flate = $packages["compress/flate"]; + binary = $packages["encoding/binary"]; + errors = $packages["errors"]; + hash = $packages["hash"]; + crc32 = $packages["hash/crc32"]; + godebug = $packages["internal/godebug"]; + io = $packages["io"]; + fs = $packages["io/fs"]; + os = $packages["os"]; + path = $packages["path"]; + filepath = $packages["path/filepath"]; + sort = $packages["sort"]; + strings = $packages["strings"]; + sync = $packages["sync"]; + time = $packages["time"]; + utf8 = $packages["unicode/utf8"]; + nopCloser = $newType(0, $kindStruct, "zip.nopCloser", true, "archive/zip", false, function(Writer_) { + this.$val = this; + if (arguments.length === 0) { + this.Writer = $ifaceNil; + return; + } + this.Writer = Writer_; + }); + Compressor = $newType(4, $kindFunc, "zip.Compressor", true, "archive/zip", true, null); + Decompressor = $newType(4, $kindFunc, "zip.Decompressor", true, "archive/zip", true, null); + pooledFlateWriter = $newType(0, $kindStruct, "zip.pooledFlateWriter", true, "archive/zip", false, function(mu_, fw_) { + this.$val = this; + if (arguments.length === 0) { + this.mu = new sync.Mutex.ptr(0, 0); + this.fw = ptrType$9.nil; + return; + } + this.mu = mu_; + this.fw = fw_; + }); + pooledFlateReader = $newType(0, $kindStruct, "zip.pooledFlateReader", true, "archive/zip", false, function(mu_, fr_) { + this.$val = this; + if (arguments.length === 0) { + this.mu = new sync.Mutex.ptr(0, 0); + this.fr = $ifaceNil; + return; + } + this.mu = mu_; + this.fr = fr_; + }); + $pkg.nopCloser = nopCloser; + $pkg.Compressor = Compressor; + $pkg.Decompressor = Decompressor; + $pkg.pooledFlateWriter = pooledFlateWriter; + $pkg.pooledFlateReader = pooledFlateReader; + $pkg.$finishSetup = function() { + sliceType = $sliceType($emptyInterface); + ptrType = $ptrType(sync.readOnly); + sliceType$2 = $sliceType($Uint8); + ptrType$9 = $ptrType(flate.Writer); + ptrType$17 = $ptrType(pooledFlateWriter); + ptrType$18 = $ptrType(pooledFlateReader); + $ptrType(nopCloser).prototype.Close = function Close$1() { + var w; + w = this; + return $ifaceNil; + }; + nopCloser.prototype.Close = function(...$args) { return this.$val.Close(...$args); }; + newFlateWriter = function newFlateWriter$1(w) { + var {_r, _r$1, _tuple, _tuple$1, fw, ok, w, $s, $r, $c} = $restore(this, {w}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = flateWriterPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, ptrType$9, true); + fw = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok) { */ case 2: + $r = fw.Reset(w); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 4; continue; + /* } else { */ case 3: + _r$1 = flate.NewWriter(w, 5); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + fw = _tuple$1[0]; + /* } */ case 4: + $s = -1; return new pooledFlateWriter.ptr(new sync.Mutex.ptr(0, 0), fw); + /* */ } return; } var $f = {$blk: newFlateWriter$1, $c: true, $r, _r, _r$1, _tuple, _tuple$1, fw, ok, w, $s};return $f; + }; + $ptrType(pooledFlateWriter).prototype.Write = function Write$3(p) { + var {$24r, $24r$1, _r, _tmp, _tmp$1, _tuple, err, n, p, w, $s, $deferred, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + n = 0; + err = $ifaceNil; + w = this; + $r = w.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(w.mu, "Unlock"), []]); + /* */ if (w.fw === ptrType$9.nil) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (w.fw === ptrType$9.nil) { */ case 2: + _tmp = 0; + _tmp$1 = errors.New("Write after Close"); + n = _tmp; + err = _tmp$1; + $24r = [n, err]; + $s = 4; case 4: return $24r; + /* } */ case 3: + _r = w.fw.Write(p); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r$1 = [n, err]; + $s = 6; case 6: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { var $f = {$blk: Write$3, $c: true, $r, $24r, $24r$1, _r, _tmp, _tmp$1, _tuple, err, n, p, w, $s, $deferred};return $f; } } + }; + $ptrType(pooledFlateWriter).prototype.Close = function Close$2() { + var {$24r, _r, err, w, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + w = this; + $r = w.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(w.mu, "Unlock"), []]); + err = $ifaceNil; + /* */ if (!(w.fw === ptrType$9.nil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!(w.fw === ptrType$9.nil)) { */ case 2: + _r = w.fw.Close(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + flateWriterPool.Put(w.fw); + w.fw = ptrType$9.nil; + /* } */ case 3: + $24r = err; + $s = 5; case 5: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Close$2, $c: true, $r, $24r, _r, err, w, $s, $deferred};return $f; } } + }; + newFlateReader = function newFlateReader$1(r) { + var {_r, _r$1, _r$2, _tuple, fr, ok, r, $s, $r, $c} = $restore(this, {r}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = flateReaderPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = $assertType(_r, io.ReadCloser, true); + fr = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (ok) { */ case 2: + _r$1 = $assertType(fr, flate.Resetter).Reset(r, sliceType$2.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + $s = 4; continue; + /* } else { */ case 3: + _r$2 = flate.NewReader(r); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + fr = _r$2; + /* } */ case 4: + $s = -1; return new pooledFlateReader.ptr(new sync.Mutex.ptr(0, 0), fr); + /* */ } return; } var $f = {$blk: newFlateReader$1, $c: true, $r, _r, _r$1, _r$2, _tuple, fr, ok, r, $s};return $f; + }; + $ptrType(pooledFlateReader).prototype.Read = function Read(p) { + var {$24r, $24r$1, _r, _tmp, _tmp$1, _tuple, err, n, p, r, $s, $deferred, $r, $c} = $restore(this, {p}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + n = 0; + err = $ifaceNil; + r = this; + $r = r.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r.mu, "Unlock"), []]); + /* */ if ($interfaceIsEqual(r.fr, $ifaceNil)) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if ($interfaceIsEqual(r.fr, $ifaceNil)) { */ case 2: + _tmp = 0; + _tmp$1 = errors.New("Read after Close"); + n = _tmp; + err = _tmp$1; + $24r = [n, err]; + $s = 4; case 4: return $24r; + /* } */ case 3: + _r = r.fr.Read(p); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + n = _tuple[0]; + err = _tuple[1]; + $24r$1 = [n, err]; + $s = 6; case 6: return $24r$1; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { var $f = {$blk: Read, $c: true, $r, $24r, $24r$1, _r, _tmp, _tmp$1, _tuple, err, n, p, r, $s, $deferred};return $f; } } + }; + $ptrType(pooledFlateReader).prototype.Close = function Close$3() { + var {$24r, _r, err, r, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + r = this; + $r = r.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(r.mu, "Unlock"), []]); + err = $ifaceNil; + /* */ if (!($interfaceIsEqual(r.fr, $ifaceNil))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!($interfaceIsEqual(r.fr, $ifaceNil))) { */ case 2: + _r = r.fr.Close(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + flateReaderPool.Put(r.fr); + r.fr = $ifaceNil; + /* } */ case 3: + $24r = err; + $s = 5; case 5: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Close$3, $c: true, $r, $24r, _r, err, r, $s, $deferred};return $f; } } + }; + init = function init$1() { + var {$s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + $r = compressors.Store(new $Uint16(0), new Compressor(((function init·func1(w) { + var w; + return [new nopCloser.ptr(w), $ifaceNil]; + })))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = compressors.Store(new $Uint16(8), new Compressor(((function init·func2(w) { + var {$24r, _r, w, $s, $r, $c} = $restore(this, {w}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = newFlateWriter(w); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = [_r, $ifaceNil]; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: init·func2, $c: true, $r, $24r, _r, w, $s};return $f; + })))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = decompressors.Store(new $Uint16(0), new Decompressor((io.NopCloser))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = decompressors.Store(new $Uint16(8), new Decompressor((newFlateReader))); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: init$1, $c: true, $r, $s};return $f; + }; + nopCloser.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; + ptrType$17.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; + ptrType$18.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; + nopCloser.init("", [{prop: "Writer", name: "Writer", embedded: true, exported: true, typ: io.Writer, tag: ""}]); + Compressor.init([io.Writer], [io.WriteCloser, $error], false); + Decompressor.init([io.Reader], [io.ReadCloser], false); + pooledFlateWriter.init("archive/zip", [{prop: "mu", name: "mu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "fw", name: "fw", embedded: false, exported: false, typ: ptrType$9, tag: ""}]); + pooledFlateReader.init("archive/zip", [{prop: "mu", name: "mu", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "fr", name: "fr", embedded: false, exported: false, typ: io.ReadCloser, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = flate.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = binary.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = hash.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = crc32.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = godebug.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fs.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = path.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = filepath.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + flateWriterPool = new sync.Pool.ptr(sliceType.nil, $throwNilPointerError); + flateReaderPool = new sync.Pool.ptr(sliceType.nil, $throwNilPointerError); + compressors = new sync.Map.ptr(new sync.Mutex.ptr(0, 0), new $packages["sync/atomic"].Pointer[20 /* sync.readOnly */].ptr(ptrType.nil), false, 0); + decompressors = new sync.Map.ptr(new sync.Mutex.ptr(0, 0), new $packages["sync/atomic"].Pointer[20 /* sync.readOnly */].ptr(ptrType.nil), false, 0); + errLongName = errors.New("zip: FileHeader.Name too long"); + errLongExtra = errors.New("zip: FileHeader.Extra too long"); + zipinsecurepath = godebug.New("zipinsecurepath"); + $pkg.ErrFormat = errors.New("zip: not a valid zip file"); + $pkg.ErrAlgorithm = errors.New("zip: unsupported compression algorithm"); + $pkg.ErrChecksum = errors.New("zip: checksum error"); + $pkg.ErrInsecurePath = errors.New("zip: insecure file path"); + $r = init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/evanw/esbuild/internal/fs"] = (function() { + var $pkg = {}, $init, zip, errors, fmt, io, ioutil, os, path, sort, strconv, strings, sync, syscall, time, MockKind, mockFS, EntryKind, Entry, accessedEntries, DirEntries, DifferentCase, OpenedFile, InMemoryOpenedFile, FS, WatchData, ModKey, sliceType, ptrType$4, sliceType$2, ptrType$9, ptrType$10, ptrType$15, mapType$6, mapType$7, mapType$8, mapType$9, ptrType$16, funcType, mapType$10, modKeyUnusable, fileOpenLimit, ParseYarnPnPVirtualPath, MockFS, win2unix, unix2win, splitOnSlash, MakeEmptyDirEntries; + zip = $packages["archive/zip"]; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + io = $packages["io"]; + ioutil = $packages["io/ioutil"]; + os = $packages["os"]; + path = $packages["path"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + sync = $packages["sync"]; + syscall = $packages["syscall"]; + time = $packages["time"]; + MockKind = $newType(1, $kindUint8, "fs.MockKind", true, "github.com/evanw/esbuild/internal/fs", true, null); + mockFS = $newType(0, $kindStruct, "fs.mockFS", true, "github.com/evanw/esbuild/internal/fs", false, function(dirs_, files_, absWorkingDir_, Kind_) { + this.$val = this; + if (arguments.length === 0) { + this.dirs = false; + this.files = false; + this.absWorkingDir = ""; + this.Kind = 0; + return; + } + this.dirs = dirs_; + this.files = files_; + this.absWorkingDir = absWorkingDir_; + this.Kind = Kind_; + }); + EntryKind = $newType(1, $kindUint8, "fs.EntryKind", true, "github.com/evanw/esbuild/internal/fs", true, null); + Entry = $newType(0, $kindStruct, "fs.Entry", true, "github.com/evanw/esbuild/internal/fs", true, function(symlink_, dir_, base_, mutex_, kind_, needStat_) { + this.$val = this; + if (arguments.length === 0) { + this.symlink = ""; + this.dir = ""; + this.base = ""; + this.mutex = new sync.Mutex.ptr(0, 0); + this.kind = 0; + this.needStat = false; + return; + } + this.symlink = symlink_; + this.dir = dir_; + this.base = base_; + this.mutex = mutex_; + this.kind = kind_; + this.needStat = needStat_; + }); + accessedEntries = $newType(0, $kindStruct, "fs.accessedEntries", true, "github.com/evanw/esbuild/internal/fs", false, function(wasPresent_, allEntries_, mutex_) { + this.$val = this; + if (arguments.length === 0) { + this.wasPresent = false; + this.allEntries = sliceType.nil; + this.mutex = new sync.Mutex.ptr(0, 0); + return; + } + this.wasPresent = wasPresent_; + this.allEntries = allEntries_; + this.mutex = mutex_; + }); + DirEntries = $newType(0, $kindStruct, "fs.DirEntries", true, "github.com/evanw/esbuild/internal/fs", true, function(data_, accessedEntries_, dir_) { + this.$val = this; + if (arguments.length === 0) { + this.data = false; + this.accessedEntries = ptrType$4.nil; + this.dir = ""; + return; + } + this.data = data_; + this.accessedEntries = accessedEntries_; + this.dir = dir_; + }); + DifferentCase = $newType(0, $kindStruct, "fs.DifferentCase", true, "github.com/evanw/esbuild/internal/fs", true, function(Dir_, Query_, Actual_) { + this.$val = this; + if (arguments.length === 0) { + this.Dir = ""; + this.Query = ""; + this.Actual = ""; + return; + } + this.Dir = Dir_; + this.Query = Query_; + this.Actual = Actual_; + }); + OpenedFile = $newType(8, $kindInterface, "fs.OpenedFile", true, "github.com/evanw/esbuild/internal/fs", true, null); + InMemoryOpenedFile = $newType(0, $kindStruct, "fs.InMemoryOpenedFile", true, "github.com/evanw/esbuild/internal/fs", true, function(Contents_) { + this.$val = this; + if (arguments.length === 0) { + this.Contents = sliceType$2.nil; + return; + } + this.Contents = Contents_; + }); + FS = $newType(8, $kindInterface, "fs.FS", true, "github.com/evanw/esbuild/internal/fs", true, null); + WatchData = $newType(0, $kindStruct, "fs.WatchData", true, "github.com/evanw/esbuild/internal/fs", true, function(Paths_) { + this.$val = this; + if (arguments.length === 0) { + this.Paths = false; + return; + } + this.Paths = Paths_; + }); + ModKey = $newType(0, $kindStruct, "fs.ModKey", true, "github.com/evanw/esbuild/internal/fs", true, function(inode_, size_, mtime_sec_, mtime_nsec_, mode_, uid_) { + this.$val = this; + if (arguments.length === 0) { + this.inode = new $Uint64(0, 0); + this.size = new $Int64(0, 0); + this.mtime_sec = new $Int64(0, 0); + this.mtime_nsec = new $Int64(0, 0); + this.mode = 0; + this.uid = 0; + return; + } + this.inode = inode_; + this.size = size_; + this.mtime_sec = mtime_sec_; + this.mtime_nsec = mtime_nsec_; + this.mode = mode_; + this.uid = uid_; + }); + $pkg.MockKind = MockKind; + $pkg.mockFS = mockFS; + $pkg.EntryKind = EntryKind; + $pkg.Entry = Entry; + $pkg.accessedEntries = accessedEntries; + $pkg.DirEntries = DirEntries; + $pkg.DifferentCase = DifferentCase; + $pkg.OpenedFile = OpenedFile; + $pkg.InMemoryOpenedFile = InMemoryOpenedFile; + $pkg.FS = FS; + $pkg.WatchData = WatchData; + $pkg.ModKey = ModKey; + $pkg.$finishSetup = function() { + sliceType = $sliceType($String); + ptrType$4 = $ptrType(accessedEntries); + sliceType$2 = $sliceType($Uint8); + ptrType$9 = $ptrType(Entry); + ptrType$10 = $ptrType(DifferentCase); + ptrType$15 = $ptrType(mockFS); + mapType$6 = $mapType($String, DirEntries); + mapType$7 = $mapType($String, $String); + mapType$8 = $mapType($String, $Bool); + mapType$9 = $mapType($String, ptrType$9); + ptrType$16 = $ptrType(InMemoryOpenedFile); + funcType = $funcType([], [$String], false); + mapType$10 = $mapType($String, funcType); + ParseYarnPnPVirtualPath = function ParseYarnPnPVirtualPath$1(path$1) { + var _tuple, count, err, i, j, n, path$1, prefix, segment, slash, slash$1, slash$2, slash$3, start, suffix, x; + i = 0; + while (true) { + start = i; + slash = strings.IndexAny($substring(path$1, i), "/\\"); + if (slash === -1) { + break; + } + i = i + ((slash + 1 >> 0)) >> 0; + segment = $substring(path$1, start, (i - 1 >> 0)); + if (segment === "__virtual__" || segment === "$$virtual") { + slash$1 = strings.IndexAny($substring(path$1, i), "/\\"); + if (!((slash$1 === -1))) { + count = ""; + suffix = ""; + j = (i + slash$1 >> 0) + 1 >> 0; + slash$2 = strings.IndexAny($substring(path$1, j), "/\\"); + if (!((slash$2 === -1))) { + count = $substring(path$1, j, (j + slash$2 >> 0)); + suffix = $substring(path$1, (j + slash$2 >> 0)); + } else { + count = $substring(path$1, j); + } + _tuple = strconv.ParseInt(count, 10, 64); + n = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil)) { + prefix = $substring(path$1, 0, start); + while (true) { + if (!((n.$high > 0 || (n.$high === 0 && n.$low > 0)) && (strings.HasSuffix(prefix, "/") || strings.HasSuffix(prefix, "\\")))) { break; } + slash$3 = strings.LastIndexAny($substring(prefix, 0, (prefix.length - 1 >> 0)), "/\\"); + if (slash$3 === -1) { + break; + } + prefix = $substring(prefix, 0, (slash$3 + 1 >> 0)); + n = (x = new $Int64(0, 1), new $Int64(n.$high - x.$high, n.$low - x.$low)); + } + if (suffix === "" && !((strings.IndexAny(prefix, "/\\") === strings.LastIndexAny(prefix, "/\\")))) { + prefix = $substring(prefix, 0, (prefix.length - 1 >> 0)); + } else if (prefix === "") { + prefix = "."; + } else if (strings.HasPrefix(suffix, "/") || strings.HasPrefix(suffix, "\\")) { + suffix = $substring(suffix, 1); + } + return [prefix, suffix, true]; + } + } + } + } + return ["", "", false]; + }; + $pkg.ParseYarnPnPVirtualPath = ParseYarnPnPVirtualPath; + MockFS = function MockFS$1(input, kind$2, absWorkingDir) { + var {_entry, _entry$1, _i, _key, _key$1, _key$2, _key$3, _key$4, _keys, _r, _r$1, _ref, _size, _tuple, absWorkingDir, base, dir, dirs, files, input, k, kDir, key, key$1, kind$2, ok, original, v, $s, $r, $c} = $restore(this, {input, kind$2, absWorkingDir}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + dirs = new $global.Map(); + files = new $global.Map(); + _ref = input; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + /* while (true) { */ case 1: + /* if (!(_i < _size)) { break; } */ if(!(_i < _size)) { $s = 2; continue; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + /* continue; */ $s = 1; continue; + } + k = _entry.k; + v = _entry.v; + key = k; + if (kind$2 === 1) { + key = "C:" + strings.ReplaceAll(key, "/", "\\"); + } + _key$1 = key; (files || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$1), { k: _key$1, v: v }); + original = k; + /* while (true) { */ case 3: + kDir = path.Dir(k); + key$1 = kDir; + if (kind$2 === 1) { + key$1 = "C:" + strings.ReplaceAll(key$1, "/", "\\"); + } + _tuple = (_entry$1 = $mapIndex(dirs,$String.keyFor(key$1)), _entry$1 !== undefined ? [_entry$1.v, true] : [new DirEntries.ptr(false, ptrType$4.nil, ""), false]); + dir = $clone(_tuple[0], DirEntries); + ok = _tuple[1]; + if (!ok) { + DirEntries.copy(dir, new DirEntries.ptr(new $global.Map(), ptrType$4.nil, key$1)); + _key$2 = key$1; (dirs || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$2), { k: _key$2, v: $clone(dir, DirEntries) }); + } + if (kDir === k) { + /* break; */ $s = 4; continue; + } + base = path.Base(k); + /* */ if (k === original) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (k === original) { */ case 5: + _r = strings.ToLower(base); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _key$3 = _r; (dir.data || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$3), { k: _key$3, v: new Entry.ptr("", "", base, new sync.Mutex.ptr(0, 0), 2, false) }); + $s = 7; continue; + /* } else { */ case 6: + _r$1 = strings.ToLower(base); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _key$4 = _r$1; (dir.data || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key$4), { k: _key$4, v: new Entry.ptr("", "", base, new sync.Mutex.ptr(0, 0), 1, false) }); + /* } */ case 7: + k = kDir; + $s = 3; continue; + case 4: + _i++; + $s = 1; continue; + case 2: + $s = -1; return new mockFS.ptr(dirs, files, absWorkingDir, kind$2); + /* */ } return; } var $f = {$blk: MockFS$1, $c: true, $r, _entry, _entry$1, _i, _key, _key$1, _key$2, _key$3, _key$4, _keys, _r, _r$1, _ref, _size, _tuple, absWorkingDir, base, dir, dirs, files, input, k, kDir, key, key$1, kind$2, ok, original, v, $s};return $f; + }; + $pkg.MockFS = MockFS; + $ptrType(mockFS).prototype.ReadDirectory = function ReadDirectory$2(path$1) { + var _entry, _tuple, dir, firstSlash, fs, i, ok, path$1, slash; + fs = this; + if (fs.Kind === 1) { + path$1 = strings.ReplaceAll(path$1, "/", "\\"); + } + slash = 47; + if (fs.Kind === 1) { + slash = 92; + } + firstSlash = strings.IndexByte(path$1, slash); + while (true) { + i = strings.LastIndexByte(path$1, slash); + if (!((i === (path$1.length - 1 >> 0))) || i <= firstSlash) { + break; + } + path$1 = $substring(path$1, 0, i); + } + _tuple = (_entry = $mapIndex(fs.dirs,$String.keyFor(path$1)), _entry !== undefined ? [_entry.v, true] : [new DirEntries.ptr(false, ptrType$4.nil, ""), false]); + dir = $clone(_tuple[0], DirEntries); + ok = _tuple[1]; + if (ok) { + return [dir, $ifaceNil, $ifaceNil]; + } + return [new DirEntries.ptr(false, ptrType$4.nil, ""), new syscall.Errno(2), new syscall.Errno(2)]; + }; + $ptrType(mockFS).prototype.ReadFile = function ReadFile$2(path$1) { + var _entry, _tuple, contents, fs, ok, path$1; + fs = this; + if (fs.Kind === 1) { + path$1 = strings.ReplaceAll(path$1, "/", "\\"); + } + _tuple = (_entry = $mapIndex(fs.files,$String.keyFor(path$1)), _entry !== undefined ? [_entry.v, true] : ["", false]); + contents = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return [contents, $ifaceNil, $ifaceNil]; + } + return ["", new syscall.Errno(2), new syscall.Errno(2)]; + }; + $ptrType(mockFS).prototype.OpenFile = function OpenFile$2(path$1) { + var _entry, _tuple, contents, fs, ok, path$1; + fs = this; + if (fs.Kind === 1) { + path$1 = strings.ReplaceAll(path$1, "/", "\\"); + } + _tuple = (_entry = $mapIndex(fs.files,$String.keyFor(path$1)), _entry !== undefined ? [_entry.v, true] : ["", false]); + contents = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return [new InMemoryOpenedFile.ptr((new sliceType$2($stringToBytes(contents)))), $ifaceNil, $ifaceNil]; + } + return [$ifaceNil, new syscall.Errno(2), new syscall.Errno(2)]; + }; + $ptrType(mockFS).prototype.ModKey = function ModKey$3(path$1) { + var fs, path$1; + fs = this; + return [new ModKey.ptr(new $Uint64(0, 0), new $Int64(0, 0), new $Int64(0, 0), new $Int64(0, 0), 0, 0), errors.New("This is not available during tests")]; + }; + win2unix = function win2unix$1(p) { + var p; + if (strings.HasPrefix(p, "C:\\") || strings.HasPrefix(p, "c:\\")) { + p = $substring(p, 2); + } + p = strings.ReplaceAll(p, "\\", "/"); + return p; + }; + unix2win = function unix2win$1(p) { + var p; + p = strings.ReplaceAll(p, "/", "\\"); + if (strings.HasPrefix(p, "\\")) { + p = "C:" + p; + } + return p; + }; + $ptrType(mockFS).prototype.IsAbs = function IsAbs$2(p) { + var fs, p; + fs = this; + if (fs.Kind === 1) { + p = win2unix(p); + } + return path.IsAbs(p); + }; + $ptrType(mockFS).prototype.Abs = function Abs$2(p) { + var fs, p; + fs = this; + if (fs.Kind === 1) { + p = win2unix(p); + } + p = path.Clean(path.Join(new sliceType(["/", p]))); + if (fs.Kind === 1) { + p = unix2win(p); + } + return [p, true]; + }; + $ptrType(mockFS).prototype.Dir = function Dir$2(p) { + var fs, p; + fs = this; + if (fs.Kind === 1) { + p = win2unix(p); + } + p = path.Dir(p); + if (fs.Kind === 1) { + p = unix2win(p); + } + return p; + }; + $ptrType(mockFS).prototype.Base = function Base$2(p) { + var fs, p; + fs = this; + if (fs.Kind === 1) { + p = win2unix(p); + } + p = path.Base(p); + if ((fs.Kind === 1) && p === "/") { + p = "\\"; + } + return p; + }; + $ptrType(mockFS).prototype.Ext = function Ext$2(p) { + var fs, p; + fs = this; + if (fs.Kind === 1) { + p = win2unix(p); + } + return path.Ext(p); + }; + $ptrType(mockFS).prototype.Join = function Join$2(parts) { + var _i, _ref, converted, fs, i, p, part, parts; + fs = this; + if (fs.Kind === 1) { + converted = $makeSlice(sliceType, parts.$length); + _ref = parts; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + part = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + ((i < 0 || i >= converted.$length) ? ($throwRuntimeError("index out of range"), undefined) : converted.$array[converted.$offset + i] = win2unix(part)); + _i++; + } + parts = converted; + } + p = path.Clean(path.Join(parts)); + if (fs.Kind === 1) { + p = unix2win(p); + } + return p; + }; + $ptrType(mockFS).prototype.Cwd = function Cwd$2() { + var fs; + fs = this; + return fs.absWorkingDir; + }; + splitOnSlash = function splitOnSlash$1(path$1) { + var path$1, slash; + slash = strings.IndexByte(path$1, 47); + if (!((slash === -1))) { + return [$substring(path$1, 0, slash), $substring(path$1, (slash + 1 >> 0))]; + } + return [path$1, ""]; + }; + $ptrType(mockFS).prototype.Rel = function Rel$2(base, target) { + var _tuple, _tuple$1, bHead, bTail, base, commonParent, fs, tHead, tTail, target; + fs = this; + if (fs.Kind === 1) { + base = win2unix(base); + target = win2unix(target); + } + base = path.Clean(base); + target = path.Clean(target); + if (base === target) { + return [".", true]; + } + if (base === ".") { + base = ""; + } + if (!((base.length > 0 && (base.charCodeAt(0) === 47)) === (target.length > 0 && (target.charCodeAt(0) === 47)))) { + return ["", false]; + } + while (true) { + _tuple = splitOnSlash(base); + bHead = _tuple[0]; + bTail = _tuple[1]; + _tuple$1 = splitOnSlash(target); + tHead = _tuple$1[0]; + tTail = _tuple$1[1]; + if (!(bHead === tHead)) { + break; + } + base = bTail; + target = tTail; + } + if (base === "") { + if (fs.Kind === 1) { + target = unix2win(target); + } + return [target, true]; + } + commonParent = strings.Repeat("../", strings.Count(base, "/") + 1 >> 0); + if (target === "") { + target = $substring(commonParent, 0, (commonParent.length - 1 >> 0)); + if (fs.Kind === 1) { + target = unix2win(target); + } + return [target, true]; + } + target = commonParent + target; + if (fs.Kind === 1) { + target = unix2win(target); + } + return [target, true]; + }; + $ptrType(mockFS).prototype.EvalSymlinks = function EvalSymlinks$2(path$1) { + var fs, path$1; + fs = this; + return ["", false]; + }; + $ptrType(mockFS).prototype.kind = function kind$2(dir, base) { + var base, dir, fs, kind$3, symlink; + symlink = ""; + kind$3 = 0; + fs = this; + $panic(new $String("This should never be called")); + }; + $ptrType(mockFS).prototype.WatchData = function WatchData$3() { + var fs; + fs = this; + $panic(new $String("This should never be called")); + }; + $ptrType(Entry).prototype.Kind = function Kind(fs) { + var {$24r, _r, _tuple, e, fs, $s, $deferred, $r, $c} = $restore(this, {fs}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + e = this; + $r = e.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(e.mutex, "Unlock"), []]); + /* */ if (e.needStat) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (e.needStat) { */ case 2: + e.needStat = false; + _r = fs.kind(e.dir, e.base); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + e.symlink = _tuple[0]; + e.kind = _tuple[1]; + /* } */ case 3: + $24r = e.kind; + $s = 5; case 5: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return 0; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Kind, $c: true, $r, $24r, _r, _tuple, e, fs, $s, $deferred};return $f; } } + }; + $ptrType(Entry).prototype.Symlink = function Symlink(fs) { + var {$24r, _r, _tuple, e, fs, $s, $deferred, $r, $c} = $restore(this, {fs}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + e = this; + $r = e.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(e.mutex, "Unlock"), []]); + /* */ if (e.needStat) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (e.needStat) { */ case 2: + e.needStat = false; + _r = fs.kind(e.dir, e.base); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + e.symlink = _tuple[0]; + e.kind = _tuple[1]; + /* } */ case 3: + $24r = e.symlink; + $s = 5; case 5: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return ""; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Symlink, $c: true, $r, $24r, _r, _tuple, e, fs, $s, $deferred};return $f; } } + }; + MakeEmptyDirEntries = function MakeEmptyDirEntries$1(dir) { + var dir; + return new DirEntries.ptr(new $global.Map(), ptrType$4.nil, dir); + }; + $pkg.MakeEmptyDirEntries = MakeEmptyDirEntries; + $ptrType(DirEntries).prototype.Get = function Get(query) { + var {_entry, _key, _r, accessed, entries, entry, key, query, $s, $r, $c} = $restore(this, {query}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + entries = this; + /* */ if (!(entries.data === false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(entries.data === false)) { */ case 1: + _r = strings.ToLower(query); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + key = _r; + entry = (_entry = $mapIndex(entries.data,$String.keyFor(key)), _entry !== undefined ? _entry.v : ptrType$9.nil); + accessed = entries.accessedEntries; + /* */ if (!(accessed === ptrType$4.nil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(accessed === ptrType$4.nil)) { */ case 4: + $r = accessed.mutex.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _key = key; (accessed.wasPresent || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: !(entry === ptrType$9.nil) }); + $r = accessed.mutex.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + if (!(entry === ptrType$9.nil)) { + if (!(entry.base === query)) { + $s = -1; return [entry, new DifferentCase.ptr(entries.dir, query, entry.base)]; + } + $s = -1; return [entry, ptrType$10.nil]; + } + /* } */ case 2: + $s = -1; return [ptrType$9.nil, ptrType$10.nil]; + /* */ } return; } var $f = {$blk: Get, $c: true, $r, _entry, _key, _r, accessed, entries, entry, key, query, $s};return $f; + }; + DirEntries.prototype.Get = function(...$args) { return this.$val.Get(...$args); }; + $ptrType(DirEntries).prototype.PeekEntryCount = function PeekEntryCount() { + var entries; + entries = this; + if (!(entries.data === false)) { + return (entries.data ? entries.data.size : 0); + } + return 0; + }; + DirEntries.prototype.PeekEntryCount = function(...$args) { return this.$val.PeekEntryCount(...$args); }; + $ptrType(DirEntries).prototype.SortedKeys = function SortedKeys() { + var {_entry, _i, _key, _keys, _ref, _size, entries, entry, keys, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + keys = sliceType.nil; + entries = this; + /* */ if (!(entries.data === false)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(entries.data === false)) { */ case 1: + keys = $makeSlice(sliceType, 0, (entries.data ? entries.data.size : 0)); + _ref = entries.data; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + entry = _entry.v; + keys = $append(keys, entry.base); + _i++; + } + $r = sort.Strings(keys); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ if (!(entries.accessedEntries === ptrType$4.nil)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!(entries.accessedEntries === ptrType$4.nil)) { */ case 4: + $r = entries.accessedEntries.mutex.Lock(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + entries.accessedEntries.allEntries = keys; + $r = entries.accessedEntries.mutex.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 5: + keys = keys; + $s = -1; return keys; + /* } */ case 2: + $s = -1; return keys; + /* */ } return; } var $f = {$blk: SortedKeys, $c: true, $r, _entry, _i, _key, _keys, _ref, _size, entries, entry, keys, $s};return $f; + }; + DirEntries.prototype.SortedKeys = function(...$args) { return this.$val.SortedKeys(...$args); }; + $ptrType(InMemoryOpenedFile).prototype.Len = function Len$1() { + var f; + f = this; + return f.Contents.$length; + }; + $ptrType(InMemoryOpenedFile).prototype.Read = function Read$1(start, end) { + var end, f, start; + f = this; + return [($subslice(f.Contents, start, end)), $ifaceNil]; + }; + $ptrType(InMemoryOpenedFile).prototype.Close = function Close$1() { + var f; + f = this; + return $ifaceNil; + }; + ptrType$15.methods = [{prop: "ReadDirectory", name: "ReadDirectory", pkg: "", typ: $funcType([$String], [DirEntries, $error, $error], false)}, {prop: "ReadFile", name: "ReadFile", pkg: "", typ: $funcType([$String], [$String, $error, $error], false)}, {prop: "OpenFile", name: "OpenFile", pkg: "", typ: $funcType([$String], [OpenedFile, $error, $error], false)}, {prop: "ModKey", name: "ModKey", pkg: "", typ: $funcType([$String], [ModKey, $error], false)}, {prop: "IsAbs", name: "IsAbs", pkg: "", typ: $funcType([$String], [$Bool], false)}, {prop: "Abs", name: "Abs", pkg: "", typ: $funcType([$String], [$String, $Bool], false)}, {prop: "Dir", name: "Dir", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Base", name: "Base", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Ext", name: "Ext", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Join", name: "Join", pkg: "", typ: $funcType([sliceType], [$String], true)}, {prop: "Cwd", name: "Cwd", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Rel", name: "Rel", pkg: "", typ: $funcType([$String, $String], [$String, $Bool], false)}, {prop: "EvalSymlinks", name: "EvalSymlinks", pkg: "", typ: $funcType([$String], [$String, $Bool], false)}, {prop: "kind", name: "kind", pkg: "github.com/evanw/esbuild/internal/fs", typ: $funcType([$String, $String], [$String, EntryKind], false)}, {prop: "WatchData", name: "WatchData", pkg: "", typ: $funcType([], [WatchData], false)}]; + ptrType$9.methods = [{prop: "Kind", name: "Kind", pkg: "", typ: $funcType([FS], [EntryKind], false)}, {prop: "Symlink", name: "Symlink", pkg: "", typ: $funcType([FS], [$String], false)}]; + DirEntries.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType$9, ptrType$10], false)}, {prop: "PeekEntryCount", name: "PeekEntryCount", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SortedKeys", name: "SortedKeys", pkg: "", typ: $funcType([], [sliceType], false)}]; + ptrType$16.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([$Int, $Int], [sliceType$2, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]; + mockFS.init("github.com/evanw/esbuild/internal/fs", [{prop: "dirs", name: "dirs", embedded: false, exported: false, typ: mapType$6, tag: ""}, {prop: "files", name: "files", embedded: false, exported: false, typ: mapType$7, tag: ""}, {prop: "absWorkingDir", name: "absWorkingDir", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "Kind", name: "Kind", embedded: false, exported: true, typ: MockKind, tag: ""}]); + Entry.init("github.com/evanw/esbuild/internal/fs", [{prop: "symlink", name: "symlink", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "dir", name: "dir", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "base", name: "base", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "kind", name: "kind", embedded: false, exported: false, typ: EntryKind, tag: ""}, {prop: "needStat", name: "needStat", embedded: false, exported: false, typ: $Bool, tag: ""}]); + accessedEntries.init("github.com/evanw/esbuild/internal/fs", [{prop: "wasPresent", name: "wasPresent", embedded: false, exported: false, typ: mapType$8, tag: ""}, {prop: "allEntries", name: "allEntries", embedded: false, exported: false, typ: sliceType, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}]); + DirEntries.init("github.com/evanw/esbuild/internal/fs", [{prop: "data", name: "data", embedded: false, exported: false, typ: mapType$9, tag: ""}, {prop: "accessedEntries", name: "accessedEntries", embedded: false, exported: false, typ: ptrType$4, tag: ""}, {prop: "dir", name: "dir", embedded: false, exported: false, typ: $String, tag: ""}]); + DifferentCase.init("", [{prop: "Dir", name: "Dir", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Query", name: "Query", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Actual", name: "Actual", embedded: false, exported: true, typ: $String, tag: ""}]); + OpenedFile.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([$Int, $Int], [sliceType$2, $error], false)}]); + InMemoryOpenedFile.init("", [{prop: "Contents", name: "Contents", embedded: false, exported: true, typ: sliceType$2, tag: ""}]); + FS.init([{prop: "Abs", name: "Abs", pkg: "", typ: $funcType([$String], [$String, $Bool], false)}, {prop: "Base", name: "Base", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Cwd", name: "Cwd", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Dir", name: "Dir", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "EvalSymlinks", name: "EvalSymlinks", pkg: "", typ: $funcType([$String], [$String, $Bool], false)}, {prop: "Ext", name: "Ext", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "IsAbs", name: "IsAbs", pkg: "", typ: $funcType([$String], [$Bool], false)}, {prop: "Join", name: "Join", pkg: "", typ: $funcType([sliceType], [$String], true)}, {prop: "ModKey", name: "ModKey", pkg: "", typ: $funcType([$String], [ModKey, $error], false)}, {prop: "OpenFile", name: "OpenFile", pkg: "", typ: $funcType([$String], [OpenedFile, $error, $error], false)}, {prop: "ReadDirectory", name: "ReadDirectory", pkg: "", typ: $funcType([$String], [DirEntries, $error, $error], false)}, {prop: "ReadFile", name: "ReadFile", pkg: "", typ: $funcType([$String], [$String, $error, $error], false)}, {prop: "Rel", name: "Rel", pkg: "", typ: $funcType([$String, $String], [$String, $Bool], false)}, {prop: "WatchData", name: "WatchData", pkg: "", typ: $funcType([], [WatchData], false)}, {prop: "kind", name: "kind", pkg: "github.com/evanw/esbuild/internal/fs", typ: $funcType([$String, $String], [$String, EntryKind], false)}]); + WatchData.init("", [{prop: "Paths", name: "Paths", embedded: false, exported: true, typ: mapType$10, tag: ""}]); + ModKey.init("github.com/evanw/esbuild/internal/fs", [{prop: "inode", name: "inode", embedded: false, exported: false, typ: $Uint64, tag: ""}, {prop: "size", name: "size", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "mtime_sec", name: "mtime_sec", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "mtime_nsec", name: "mtime_nsec", embedded: false, exported: false, typ: $Int64, tag: ""}, {prop: "mode", name: "mode", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "uid", name: "uid", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = zip.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = ioutil.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = path.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = syscall.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + modKeyUnusable = errors.New("The modification key is unusable"); + fileOpenLimit = new $Chan($Bool, 32); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/evanw/esbuild/internal/logger"] = (function() { + var $pkg = {}, $init, binary, fmt, os, runtime, sort, strings, sync, time, utf8, Log, LogLevel, MsgKind, Msg, MsgData, MsgLocation, Loc, Range, Span, SortableMsgs, Path, ImportAttributes, ImportAttribute, PathFlags, Source, TerminalInfo, Colors, UseColor, OutputOptions, MsgDetail, LineColumnTracker, StringInJSTableEntry, structType, ptrType, sliceType, sliceType$1, sliceType$2, ptrType$1, arrayType, sliceType$3, sliceType$4, sliceType$5, ptrType$3, ptrType$4, sliceType$6, funcType, funcType$1, funcType$2, mapType, ptrType$5, mapType$1, windowsCommandPrompt, StringToMsgIDs, MsgIDToString, GetTerminalInfo, writeStringWithColor, isProbablyWindowsCommandPrompt, EncodeImportAttributes, PlatformIndependentPathDirBaseExt, plural, errorAndWarningSummary, NewStderrLog, NewDeferLog, marginWithLineText, emptyMarginText, msgString, linkifyText, wrapWordsInString, MakeLineColumnTracker, detailStruct, estimateWidthInTerminal, renderTabStops, allowOverride, GenerateStringInJSTable, RemapStringInJSLoc, NewStringInJSLog; + binary = $packages["encoding/binary"]; + fmt = $packages["fmt"]; + os = $packages["os"]; + runtime = $packages["runtime"]; + sort = $packages["sort"]; + strings = $packages["strings"]; + sync = $packages["sync"]; + time = $packages["time"]; + utf8 = $packages["unicode/utf8"]; + Log = $newType(0, $kindStruct, "logger.Log", true, "github.com/evanw/esbuild/internal/logger", true, function(AddMsg_, HasErrors_, Peek_, Done_, Level_, Overrides_) { + this.$val = this; + if (arguments.length === 0) { + this.AddMsg = $throwNilPointerError; + this.HasErrors = $throwNilPointerError; + this.Peek = $throwNilPointerError; + this.Done = $throwNilPointerError; + this.Level = 0; + this.Overrides = false; + return; + } + this.AddMsg = AddMsg_; + this.HasErrors = HasErrors_; + this.Peek = Peek_; + this.Done = Done_; + this.Level = Level_; + this.Overrides = Overrides_; + }); + LogLevel = $newType(1, $kindInt8, "logger.LogLevel", true, "github.com/evanw/esbuild/internal/logger", true, null); + MsgKind = $newType(1, $kindUint8, "logger.MsgKind", true, "github.com/evanw/esbuild/internal/logger", true, null); + Msg = $newType(0, $kindStruct, "logger.Msg", true, "github.com/evanw/esbuild/internal/logger", true, function(Notes_, PluginName_, Data_, Kind_, ID_) { + this.$val = this; + if (arguments.length === 0) { + this.Notes = sliceType$5.nil; + this.PluginName = ""; + this.Data = new MsgData.ptr($ifaceNil, ptrType.nil, "", false); + this.Kind = 0; + this.ID = 0; + return; + } + this.Notes = Notes_; + this.PluginName = PluginName_; + this.Data = Data_; + this.Kind = Kind_; + this.ID = ID_; + }); + MsgData = $newType(0, $kindStruct, "logger.MsgData", true, "github.com/evanw/esbuild/internal/logger", true, function(UserDetail_, Location_, Text_, DisableMaximumWidth_) { + this.$val = this; + if (arguments.length === 0) { + this.UserDetail = $ifaceNil; + this.Location = ptrType.nil; + this.Text = ""; + this.DisableMaximumWidth = false; + return; + } + this.UserDetail = UserDetail_; + this.Location = Location_; + this.Text = Text_; + this.DisableMaximumWidth = DisableMaximumWidth_; + }); + MsgLocation = $newType(0, $kindStruct, "logger.MsgLocation", true, "github.com/evanw/esbuild/internal/logger", true, function(File_, Namespace_, LineText_, Suggestion_, Line_, Column_, Length_) { + this.$val = this; + if (arguments.length === 0) { + this.File = ""; + this.Namespace = ""; + this.LineText = ""; + this.Suggestion = ""; + this.Line = 0; + this.Column = 0; + this.Length = 0; + return; + } + this.File = File_; + this.Namespace = Namespace_; + this.LineText = LineText_; + this.Suggestion = Suggestion_; + this.Line = Line_; + this.Column = Column_; + this.Length = Length_; + }); + Loc = $newType(0, $kindStruct, "logger.Loc", true, "github.com/evanw/esbuild/internal/logger", true, function(Start_) { + this.$val = this; + if (arguments.length === 0) { + this.Start = 0; + return; + } + this.Start = Start_; + }); + Range = $newType(0, $kindStruct, "logger.Range", true, "github.com/evanw/esbuild/internal/logger", true, function(Loc_, Len_) { + this.$val = this; + if (arguments.length === 0) { + this.Loc = new Loc.ptr(0); + this.Len = 0; + return; + } + this.Loc = Loc_; + this.Len = Len_; + }); + Span = $newType(0, $kindStruct, "logger.Span", true, "github.com/evanw/esbuild/internal/logger", true, function(Text_, Range_) { + this.$val = this; + if (arguments.length === 0) { + this.Text = ""; + this.Range = new Range.ptr(new Loc.ptr(0), 0); + return; + } + this.Text = Text_; + this.Range = Range_; + }); + SortableMsgs = $newType(12, $kindSlice, "logger.SortableMsgs", true, "github.com/evanw/esbuild/internal/logger", true, null); + Path = $newType(0, $kindStruct, "logger.Path", true, "github.com/evanw/esbuild/internal/logger", true, function(Text_, Namespace_, IgnoredSuffix_, ImportAttributes_, Flags_) { + this.$val = this; + if (arguments.length === 0) { + this.Text = ""; + this.Namespace = ""; + this.IgnoredSuffix = ""; + this.ImportAttributes = new ImportAttributes.ptr(""); + this.Flags = 0; + return; + } + this.Text = Text_; + this.Namespace = Namespace_; + this.IgnoredSuffix = IgnoredSuffix_; + this.ImportAttributes = ImportAttributes_; + this.Flags = Flags_; + }); + ImportAttributes = $newType(0, $kindStruct, "logger.ImportAttributes", true, "github.com/evanw/esbuild/internal/logger", true, function(packedData_) { + this.$val = this; + if (arguments.length === 0) { + this.packedData = ""; + return; + } + this.packedData = packedData_; + }); + ImportAttribute = $newType(0, $kindStruct, "logger.ImportAttribute", true, "github.com/evanw/esbuild/internal/logger", true, function(Key_, Value_) { + this.$val = this; + if (arguments.length === 0) { + this.Key = ""; + this.Value = ""; + return; + } + this.Key = Key_; + this.Value = Value_; + }); + PathFlags = $newType(1, $kindUint8, "logger.PathFlags", true, "github.com/evanw/esbuild/internal/logger", true, null); + Source = $newType(0, $kindStruct, "logger.Source", true, "github.com/evanw/esbuild/internal/logger", true, function(PrettyPath_, IdentifierName_, Contents_, KeyPath_, Index_) { + this.$val = this; + if (arguments.length === 0) { + this.PrettyPath = ""; + this.IdentifierName = ""; + this.Contents = ""; + this.KeyPath = new Path.ptr("", "", "", new ImportAttributes.ptr(""), 0); + this.Index = 0; + return; + } + this.PrettyPath = PrettyPath_; + this.IdentifierName = IdentifierName_; + this.Contents = Contents_; + this.KeyPath = KeyPath_; + this.Index = Index_; + }); + TerminalInfo = $newType(0, $kindStruct, "logger.TerminalInfo", true, "github.com/evanw/esbuild/internal/logger", true, function(IsTTY_, UseColorEscapes_, Width_, Height_) { + this.$val = this; + if (arguments.length === 0) { + this.IsTTY = false; + this.UseColorEscapes = false; + this.Width = 0; + this.Height = 0; + return; + } + this.IsTTY = IsTTY_; + this.UseColorEscapes = UseColorEscapes_; + this.Width = Width_; + this.Height = Height_; + }); + Colors = $newType(0, $kindStruct, "logger.Colors", true, "github.com/evanw/esbuild/internal/logger", true, function(Reset_, Bold_, Dim_, Underline_, Red_, Green_, Blue_, Cyan_, Magenta_, Yellow_, RedBgRed_, RedBgWhite_, GreenBgGreen_, GreenBgWhite_, BlueBgBlue_, BlueBgWhite_, CyanBgCyan_, CyanBgBlack_, MagentaBgMagenta_, MagentaBgBlack_, YellowBgYellow_, YellowBgBlack_) { + this.$val = this; + if (arguments.length === 0) { + this.Reset = ""; + this.Bold = ""; + this.Dim = ""; + this.Underline = ""; + this.Red = ""; + this.Green = ""; + this.Blue = ""; + this.Cyan = ""; + this.Magenta = ""; + this.Yellow = ""; + this.RedBgRed = ""; + this.RedBgWhite = ""; + this.GreenBgGreen = ""; + this.GreenBgWhite = ""; + this.BlueBgBlue = ""; + this.BlueBgWhite = ""; + this.CyanBgCyan = ""; + this.CyanBgBlack = ""; + this.MagentaBgMagenta = ""; + this.MagentaBgBlack = ""; + this.YellowBgYellow = ""; + this.YellowBgBlack = ""; + return; + } + this.Reset = Reset_; + this.Bold = Bold_; + this.Dim = Dim_; + this.Underline = Underline_; + this.Red = Red_; + this.Green = Green_; + this.Blue = Blue_; + this.Cyan = Cyan_; + this.Magenta = Magenta_; + this.Yellow = Yellow_; + this.RedBgRed = RedBgRed_; + this.RedBgWhite = RedBgWhite_; + this.GreenBgGreen = GreenBgGreen_; + this.GreenBgWhite = GreenBgWhite_; + this.BlueBgBlue = BlueBgBlue_; + this.BlueBgWhite = BlueBgWhite_; + this.CyanBgCyan = CyanBgCyan_; + this.CyanBgBlack = CyanBgBlack_; + this.MagentaBgMagenta = MagentaBgMagenta_; + this.MagentaBgBlack = MagentaBgBlack_; + this.YellowBgYellow = YellowBgYellow_; + this.YellowBgBlack = YellowBgBlack_; + }); + UseColor = $newType(1, $kindUint8, "logger.UseColor", true, "github.com/evanw/esbuild/internal/logger", true, null); + OutputOptions = $newType(0, $kindStruct, "logger.OutputOptions", true, "github.com/evanw/esbuild/internal/logger", true, function(MessageLimit_, IncludeSource_, Color_, LogLevel_, Overrides_) { + this.$val = this; + if (arguments.length === 0) { + this.MessageLimit = 0; + this.IncludeSource = false; + this.Color = 0; + this.LogLevel = 0; + this.Overrides = false; + return; + } + this.MessageLimit = MessageLimit_; + this.IncludeSource = IncludeSource_; + this.Color = Color_; + this.LogLevel = LogLevel_; + this.Overrides = Overrides_; + }); + MsgDetail = $newType(0, $kindStruct, "logger.MsgDetail", true, "github.com/evanw/esbuild/internal/logger", true, function(SourceBefore_, SourceMarked_, SourceAfter_, Indent_, Marker_, Suggestion_, ContentAfter_, Path_, Line_, Column_) { + this.$val = this; + if (arguments.length === 0) { + this.SourceBefore = ""; + this.SourceMarked = ""; + this.SourceAfter = ""; + this.Indent = ""; + this.Marker = ""; + this.Suggestion = ""; + this.ContentAfter = ""; + this.Path = ""; + this.Line = 0; + this.Column = 0; + return; + } + this.SourceBefore = SourceBefore_; + this.SourceMarked = SourceMarked_; + this.SourceAfter = SourceAfter_; + this.Indent = Indent_; + this.Marker = Marker_; + this.Suggestion = Suggestion_; + this.ContentAfter = ContentAfter_; + this.Path = Path_; + this.Line = Line_; + this.Column = Column_; + }); + LineColumnTracker = $newType(0, $kindStruct, "logger.LineColumnTracker", true, "github.com/evanw/esbuild/internal/logger", true, function(contents_, prettyPath_, offset_, line_, lineStart_, lineEnd_, hasLineStart_, hasLineEnd_, hasSource_) { + this.$val = this; + if (arguments.length === 0) { + this.contents = ""; + this.prettyPath = ""; + this.offset = 0; + this.line = 0; + this.lineStart = 0; + this.lineEnd = 0; + this.hasLineStart = false; + this.hasLineEnd = false; + this.hasSource = false; + return; + } + this.contents = contents_; + this.prettyPath = prettyPath_; + this.offset = offset_; + this.line = line_; + this.lineStart = lineStart_; + this.lineEnd = lineEnd_; + this.hasLineStart = hasLineStart_; + this.hasLineEnd = hasLineEnd_; + this.hasSource = hasSource_; + }); + StringInJSTableEntry = $newType(0, $kindStruct, "logger.StringInJSTableEntry", true, "github.com/evanw/esbuild/internal/logger", true, function(innerLine_, innerColumn_, innerLoc_, outerLoc_) { + this.$val = this; + if (arguments.length === 0) { + this.innerLine = 0; + this.innerColumn = 0; + this.innerLoc = new Loc.ptr(0); + this.outerLoc = new Loc.ptr(0); + return; + } + this.innerLine = innerLine_; + this.innerColumn = innerColumn_; + this.innerLoc = innerLoc_; + this.outerLoc = outerLoc_; + }); + $pkg.Log = Log; + $pkg.LogLevel = LogLevel; + $pkg.MsgKind = MsgKind; + $pkg.Msg = Msg; + $pkg.MsgData = MsgData; + $pkg.MsgLocation = MsgLocation; + $pkg.Loc = Loc; + $pkg.Range = Range; + $pkg.Span = Span; + $pkg.SortableMsgs = SortableMsgs; + $pkg.Path = Path; + $pkg.ImportAttributes = ImportAttributes; + $pkg.ImportAttribute = ImportAttribute; + $pkg.PathFlags = PathFlags; + $pkg.Source = Source; + $pkg.TerminalInfo = TerminalInfo; + $pkg.Colors = Colors; + $pkg.UseColor = UseColor; + $pkg.OutputOptions = OutputOptions; + $pkg.MsgDetail = MsgDetail; + $pkg.LineColumnTracker = LineColumnTracker; + $pkg.StringInJSTableEntry = StringInJSTableEntry; + $pkg.$finishSetup = function() { + structType = $structType("github.com/evanw/esbuild/internal/logger", [{prop: "mutex", name: "mutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}, {prop: "once", name: "once", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "isProbablyCMD", name: "isProbablyCMD", embedded: false, exported: false, typ: $Bool, tag: ""}]); + ptrType = $ptrType(MsgLocation); + sliceType = $sliceType(ImportAttribute); + sliceType$1 = $sliceType($Uint8); + sliceType$2 = $sliceType($String); + ptrType$1 = $ptrType(strings.Builder); + arrayType = $arrayType($Uint8, 4); + sliceType$3 = $sliceType($emptyInterface); + sliceType$4 = $sliceType(Msg); + sliceType$5 = $sliceType(MsgData); + ptrType$3 = $ptrType(Source); + ptrType$4 = $ptrType(LineColumnTracker); + sliceType$6 = $sliceType(StringInJSTableEntry); + funcType = $funcType([Msg], [], false); + funcType$1 = $funcType([], [$Bool], false); + funcType$2 = $funcType([], [sliceType$4], false); + mapType = $mapType($Uint8, LogLevel); + ptrType$5 = $ptrType(Range); + mapType$1 = $mapType($String, $String); + StringToMsgIDs = function StringToMsgIDs$1(str, logLevel, overrides) { + var _1, _key, _key$1, _key$10, _key$11, _key$12, _key$13, _key$14, _key$15, _key$16, _key$17, _key$18, _key$19, _key$2, _key$20, _key$21, _key$22, _key$23, _key$24, _key$25, _key$26, _key$27, _key$28, _key$29, _key$3, _key$30, _key$31, _key$32, _key$33, _key$34, _key$35, _key$36, _key$37, _key$38, _key$39, _key$4, _key$40, _key$41, _key$42, _key$43, _key$44, _key$45, _key$46, _key$47, _key$48, _key$49, _key$5, _key$50, _key$51, _key$52, _key$53, _key$54, _key$6, _key$7, _key$8, _key$9, i, i$1, logLevel, overrides, str; + _1 = str; + if (_1 === ("assert-to-with")) { + _key = 1; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key), { k: _key, v: logLevel }); + } else if (_1 === ("assert-type-json")) { + _key$1 = 2; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$1), { k: _key$1, v: logLevel }); + } else if (_1 === ("assign-to-constant")) { + _key$2 = 3; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$2), { k: _key$2, v: logLevel }); + } else if (_1 === ("assign-to-define")) { + _key$3 = 4; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$3), { k: _key$3, v: logLevel }); + } else if (_1 === ("assign-to-import")) { + _key$4 = 5; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$4), { k: _key$4, v: logLevel }); + } else if (_1 === ("bigint")) { + _key$5 = 6; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$5), { k: _key$5, v: logLevel }); + } else if (_1 === ("call-import-namespace")) { + _key$6 = 7; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$6), { k: _key$6, v: logLevel }); + } else if (_1 === ("class-name-will-throw")) { + _key$7 = 8; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$7), { k: _key$7, v: logLevel }); + } else if (_1 === ("commonjs-variable-in-esm")) { + _key$8 = 9; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$8), { k: _key$8, v: logLevel }); + } else if (_1 === ("delete-super-property")) { + _key$9 = 10; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$9), { k: _key$9, v: logLevel }); + } else if (_1 === ("direct-eval")) { + _key$10 = 11; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$10), { k: _key$10, v: logLevel }); + } else if (_1 === ("duplicate-case")) { + _key$11 = 12; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$11), { k: _key$11, v: logLevel }); + } else if (_1 === ("duplicate-class-member")) { + _key$12 = 13; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$12), { k: _key$12, v: logLevel }); + } else if (_1 === ("duplicate-object-key")) { + _key$13 = 14; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$13), { k: _key$13, v: logLevel }); + } else if (_1 === ("empty-import-meta")) { + _key$14 = 15; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$14), { k: _key$14, v: logLevel }); + } else if (_1 === ("equals-nan")) { + _key$15 = 16; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$15), { k: _key$15, v: logLevel }); + } else if (_1 === ("equals-negative-zero")) { + _key$16 = 17; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$16), { k: _key$16, v: logLevel }); + } else if (_1 === ("equals-new-object")) { + _key$17 = 18; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$17), { k: _key$17, v: logLevel }); + } else if (_1 === ("html-comment-in-js")) { + _key$18 = 19; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$18), { k: _key$18, v: logLevel }); + } else if (_1 === ("impossible-typeof")) { + _key$19 = 20; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$19), { k: _key$19, v: logLevel }); + } else if (_1 === ("indirect-require")) { + _key$20 = 21; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$20), { k: _key$20, v: logLevel }); + } else if (_1 === ("private-name-will-throw")) { + _key$21 = 22; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$21), { k: _key$21, v: logLevel }); + } else if (_1 === ("semicolon-after-return")) { + _key$22 = 23; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$22), { k: _key$22, v: logLevel }); + } else if (_1 === ("suspicious-boolean-not")) { + _key$23 = 24; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$23), { k: _key$23, v: logLevel }); + } else if (_1 === ("suspicious-define")) { + _key$24 = 25; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$24), { k: _key$24, v: logLevel }); + } else if (_1 === ("suspicious-logical-operator")) { + _key$25 = 26; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$25), { k: _key$25, v: logLevel }); + } else if (_1 === ("suspicious-nullish-coalescing")) { + _key$26 = 27; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$26), { k: _key$26, v: logLevel }); + } else if (_1 === ("this-is-undefined-in-esm")) { + _key$27 = 28; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$27), { k: _key$27, v: logLevel }); + } else if (_1 === ("unsupported-dynamic-import")) { + _key$28 = 29; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$28), { k: _key$28, v: logLevel }); + } else if (_1 === ("unsupported-jsx-comment")) { + _key$29 = 30; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$29), { k: _key$29, v: logLevel }); + } else if (_1 === ("unsupported-regexp")) { + _key$30 = 31; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$30), { k: _key$30, v: logLevel }); + } else if (_1 === ("unsupported-require-call")) { + _key$31 = 32; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$31), { k: _key$31, v: logLevel }); + } else if (_1 === ("css-syntax-error")) { + _key$32 = 33; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$32), { k: _key$32, v: logLevel }); + } else if (_1 === ("invalid-@charset")) { + _key$33 = 34; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$33), { k: _key$33, v: logLevel }); + } else if (_1 === ("invalid-@import")) { + _key$34 = 35; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$34), { k: _key$34, v: logLevel }); + } else if (_1 === ("invalid-@layer")) { + _key$35 = 36; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$35), { k: _key$35, v: logLevel }); + } else if (_1 === ("invalid-calc")) { + _key$36 = 37; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$36), { k: _key$36, v: logLevel }); + } else if (_1 === ("js-comment-in-css")) { + _key$37 = 38; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$37), { k: _key$37, v: logLevel }); + } else if (_1 === ("undefined-composes-from")) { + _key$38 = 39; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$38), { k: _key$38, v: logLevel }); + } else if (_1 === ("unsupported-@charset")) { + _key$39 = 40; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$39), { k: _key$39, v: logLevel }); + } else if (_1 === ("unsupported-@namespace")) { + _key$40 = 41; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$40), { k: _key$40, v: logLevel }); + } else if (_1 === ("unsupported-css-property")) { + _key$41 = 42; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$41), { k: _key$41, v: logLevel }); + } else if (_1 === ("unsupported-css-nesting")) { + _key$42 = 43; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$42), { k: _key$42, v: logLevel }); + } else if (_1 === ("ambiguous-reexport")) { + _key$43 = 44; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$43), { k: _key$43, v: logLevel }); + } else if (_1 === ("different-path-case")) { + _key$44 = 45; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$44), { k: _key$44, v: logLevel }); + } else if (_1 === ("empty-glob")) { + _key$45 = 46; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$45), { k: _key$45, v: logLevel }); + } else if (_1 === ("ignored-bare-import")) { + _key$46 = 47; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$46), { k: _key$46, v: logLevel }); + } else if (_1 === ("ignored-dynamic-import")) { + _key$47 = 48; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$47), { k: _key$47, v: logLevel }); + } else if (_1 === ("import-is-undefined")) { + _key$48 = 49; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$48), { k: _key$48, v: logLevel }); + } else if (_1 === ("require-resolve-not-external")) { + _key$49 = 50; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$49), { k: _key$49, v: logLevel }); + } else if (_1 === ("invalid-source-mappings")) { + _key$50 = 51; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$50), { k: _key$50, v: logLevel }); + } else if (_1 === ("missing-source-map")) { + _key$51 = 52; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$51), { k: _key$51, v: logLevel }); + } else if (_1 === ("unsupported-source-map-comment")) { + _key$52 = 53; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$52), { k: _key$52, v: logLevel }); + } else if (_1 === ("package.json")) { + i = 54; + while (true) { + if (!(i <= 60)) { break; } + _key$53 = i; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$53), { k: _key$53, v: logLevel }); + i = i + (1) << 24 >>> 24; + } + } else if (_1 === ("tsconfig.json")) { + i$1 = 61; + while (true) { + if (!(i$1 <= 69)) { break; } + _key$54 = i$1; (overrides || $throwRuntimeError("assignment to entry in nil map")).set($Uint8.keyFor(_key$54), { k: _key$54, v: logLevel }); + i$1 = i$1 + (1) << 24 >>> 24; + } + } + }; + $pkg.StringToMsgIDs = StringToMsgIDs; + MsgIDToString = function MsgIDToString$1(id) { + var _1, id; + _1 = id; + if (_1 === (1)) { + return "assert-to-with"; + } else if (_1 === (2)) { + return "assert-type-json"; + } else if (_1 === (3)) { + return "assign-to-constant"; + } else if (_1 === (4)) { + return "assign-to-define"; + } else if (_1 === (5)) { + return "assign-to-import"; + } else if (_1 === (6)) { + return "bigint"; + } else if (_1 === (7)) { + return "call-import-namespace"; + } else if (_1 === (8)) { + return "class-name-will-throw"; + } else if (_1 === (9)) { + return "commonjs-variable-in-esm"; + } else if (_1 === (10)) { + return "delete-super-property"; + } else if (_1 === (11)) { + return "direct-eval"; + } else if (_1 === (12)) { + return "duplicate-case"; + } else if (_1 === (13)) { + return "duplicate-class-member"; + } else if (_1 === (14)) { + return "duplicate-object-key"; + } else if (_1 === (15)) { + return "empty-import-meta"; + } else if (_1 === (16)) { + return "equals-nan"; + } else if (_1 === (17)) { + return "equals-negative-zero"; + } else if (_1 === (18)) { + return "equals-new-object"; + } else if (_1 === (19)) { + return "html-comment-in-js"; + } else if (_1 === (20)) { + return "impossible-typeof"; + } else if (_1 === (21)) { + return "indirect-require"; + } else if (_1 === (22)) { + return "private-name-will-throw"; + } else if (_1 === (23)) { + return "semicolon-after-return"; + } else if (_1 === (24)) { + return "suspicious-boolean-not"; + } else if (_1 === (25)) { + return "suspicious-define"; + } else if (_1 === (26)) { + return "suspicious-logical-operator"; + } else if (_1 === (27)) { + return "suspicious-nullish-coalescing"; + } else if (_1 === (28)) { + return "this-is-undefined-in-esm"; + } else if (_1 === (29)) { + return "unsupported-dynamic-import"; + } else if (_1 === (30)) { + return "unsupported-jsx-comment"; + } else if (_1 === (31)) { + return "unsupported-regexp"; + } else if (_1 === (32)) { + return "unsupported-require-call"; + } else if (_1 === (33)) { + return "css-syntax-error"; + } else if (_1 === (34)) { + return "invalid-@charset"; + } else if (_1 === (35)) { + return "invalid-@import"; + } else if (_1 === (36)) { + return "invalid-@layer"; + } else if (_1 === (37)) { + return "invalid-calc"; + } else if (_1 === (38)) { + return "js-comment-in-css"; + } else if (_1 === (39)) { + return "undefined-composes-from"; + } else if (_1 === (40)) { + return "unsupported-@charset"; + } else if (_1 === (41)) { + return "unsupported-@namespace"; + } else if (_1 === (42)) { + return "unsupported-css-property"; + } else if (_1 === (43)) { + return "unsupported-css-nesting"; + } else if (_1 === (44)) { + return "ambiguous-reexport"; + } else if (_1 === (45)) { + return "different-path-case"; + } else if (_1 === (46)) { + return "empty-glob"; + } else if (_1 === (47)) { + return "ignored-bare-import"; + } else if (_1 === (48)) { + return "ignored-dynamic-import"; + } else if (_1 === (49)) { + return "import-is-undefined"; + } else if (_1 === (50)) { + return "require-resolve-not-external"; + } else if (_1 === (51)) { + return "invalid-source-mappings"; + } else if (_1 === (52)) { + return "missing-source-map"; + } else if (_1 === (53)) { + return "unsupported-source-map-comment"; + } else { + if (id >= 54 && id <= 60) { + return "package.json"; + } + if (id >= 61 && id <= 69) { + return "tsconfig.json"; + } + } + return ""; + }; + $pkg.MsgIDToString = MsgIDToString; + GetTerminalInfo = function GetTerminalInfo$1(param) { + var param; + return new TerminalInfo.ptr(false, false, 0, 0); + }; + $pkg.GetTerminalInfo = GetTerminalInfo; + writeStringWithColor = function writeStringWithColor$1(file, text) { + var {_r, file, text, $s, $r, $c} = $restore(this, {file, text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = file.WriteString(text); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r; + $s = -1; return; + /* */ } return; } var $f = {$blk: writeStringWithColor$1, $c: true, $r, _r, file, text, $s};return $f; + }; + MsgKind.prototype.String = function String() { + var _1, kind; + kind = this.$val; + _1 = kind; + if (_1 === (0)) { + return "ERROR"; + } else if (_1 === (1)) { + return "WARNING"; + } else if (_1 === (2)) { + return "INFO"; + } else if (_1 === (3)) { + return "NOTE"; + } else if (_1 === (4)) { + return "DEBUG"; + } else if (_1 === (5)) { + return "VERBOSE"; + } else { + $panic(new $String("Internal error")); + } + }; + $ptrType(MsgKind).prototype.String = function(...$args) { return new MsgKind(this.$get()).String(...$args); }; + MsgKind.prototype.Icon = function Icon() { + var {_1, _2, _r, kind, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + kind = this.$val; + _r = isProbablyWindowsCommandPrompt(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + /* */ if (_r) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (_r) { */ case 1: + _1 = kind; + if (_1 === (0)) { + $s = -1; return "X"; + } else if (_1 === (1)) { + $s = -1; return "\xE2\x96\xB2"; + } else if (_1 === (2)) { + $s = -1; return "\xE2\x96\xBA"; + } else if (_1 === (3)) { + $s = -1; return "\xE2\x86\x92"; + } else if (_1 === (4)) { + $s = -1; return "\xE2\x97\x8F"; + } else if (_1 === (5)) { + $s = -1; return "\xE2\x99\xA6"; + } else { + $panic(new $String("Internal error")); + } + /* } */ case 2: + _2 = kind; + if (_2 === (0)) { + $s = -1; return "\xE2\x9C\x98"; + } else if (_2 === (1)) { + $s = -1; return "\xE2\x96\xB2"; + } else if (_2 === (2)) { + $s = -1; return "\xE2\x96\xB6"; + } else if (_2 === (3)) { + $s = -1; return "\xE2\x86\x92"; + } else if (_2 === (4)) { + $s = -1; return "\xE2\x97\x8F"; + } else if (_2 === (5)) { + $s = -1; return "\xE2\xAC\xA5"; + } else { + $panic(new $String("Internal error")); + } + $s = -1; return ""; + /* */ } return; } var $f = {$blk: Icon, $c: true, $r, _1, _2, _r, kind, $s};return $f; + }; + $ptrType(MsgKind).prototype.Icon = function(...$args) { return new MsgKind(this.$get()).Icon(...$args); }; + isProbablyWindowsCommandPrompt = function isProbablyWindowsCommandPrompt$1() { + var {$24r, _r, _tuple, ok, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + $r = windowsCommandPrompt.mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(windowsCommandPrompt.mutex, "Unlock"), []]); + /* */ if (!windowsCommandPrompt.once) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!windowsCommandPrompt.once) { */ case 2: + windowsCommandPrompt.once = true; + /* */ if (false) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (false) { */ case 4: + windowsCommandPrompt.isProbablyCMD = true; + _r = os.LookupEnv("WT_SESSION"); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + ok = _tuple[1]; + if (ok) { + windowsCommandPrompt.isProbablyCMD = false; + } + /* } */ case 5: + /* } */ case 3: + $24r = windowsCommandPrompt.isProbablyCMD; + $s = 7; case 7: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: isProbablyWindowsCommandPrompt$1, $c: true, $r, $24r, _r, _tuple, ok, $s, $deferred};return $f; } } + }; + $ptrType(Range).prototype.End = function End() { + var r; + r = this; + return r.Loc.Start + r.Len >> 0; + }; + Range.prototype.End = function(...$args) { return this.$val.End(...$args); }; + $ptrType(Range).prototype.ExpandBy = function ExpandBy(b) { + var a, b, end, n; + a = this; + if (a.Len === 0) { + Range.copy(a, b); + } else { + end = $clone(a, Range).End(); + n = $clone(b, Range).End(); + if (n > end) { + end = n; + } + if (b.Loc.Start < a.Loc.Start) { + a.Loc.Start = b.Loc.Start; + } + a.Len = end - a.Loc.Start >> 0; + } + }; + SortableMsgs.prototype.Len = function Len() { + var a; + a = this; + return a.$length; + }; + $ptrType(SortableMsgs).prototype.Len = function(...$args) { return this.$get().Len(...$args); }; + SortableMsgs.prototype.Swap = function Swap(i, j) { + var _tmp, _tmp$1, a, i, j; + a = this; + _tmp = $clone(((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]), Msg); + _tmp$1 = $clone(((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]), Msg); + Msg.copy(((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]), _tmp); + Msg.copy(((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]), _tmp$1); + }; + $ptrType(SortableMsgs).prototype.Swap = function(...$args) { return this.$get().Swap(...$args); }; + SortableMsgs.prototype.Less = function Less(i, j) { + var a, ai, aiLoc, aj, ajLoc, i, j; + a = this; + ai = $clone(((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]), Msg); + aj = $clone(((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]), Msg); + aiLoc = ai.Data.Location; + ajLoc = aj.Data.Location; + if (aiLoc === ptrType.nil || ajLoc === ptrType.nil) { + return aiLoc === ptrType.nil && !(ajLoc === ptrType.nil); + } + if (!(aiLoc.File === ajLoc.File)) { + return aiLoc.File < ajLoc.File; + } + if (!((aiLoc.Line === ajLoc.Line))) { + return aiLoc.Line < ajLoc.Line; + } + if (!((aiLoc.Column === ajLoc.Column))) { + return aiLoc.Column < ajLoc.Column; + } + if (!((ai.Kind === aj.Kind))) { + return ai.Kind < aj.Kind; + } + return ai.Data.Text < aj.Data.Text; + }; + $ptrType(SortableMsgs).prototype.Less = function(...$args) { return this.$get().Less(...$args); }; + $ptrType(ImportAttributes).prototype.DecodeIntoArray = function DecodeIntoArray() { + var attrs, bytes, k, kn, result, v, vn; + result = sliceType.nil; + attrs = this; + if (attrs.packedData === "") { + result = sliceType.nil; + return result; + } + bytes = (new sliceType$1($stringToBytes(attrs.packedData))); + while (true) { + if (!(bytes.$length > 0)) { break; } + kn = 4 + $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(bytes, 0, 4)) >>> 0; + k = ($bytesToString($subslice(bytes, 4, kn))); + bytes = $subslice(bytes, kn); + vn = 4 + $clone(binary.LittleEndian, binary.littleEndian).Uint32($subslice(bytes, 0, 4)) >>> 0; + v = ($bytesToString($subslice(bytes, 4, vn))); + bytes = $subslice(bytes, vn); + result = $append(result, new ImportAttribute.ptr(k, v)); + } + result = result; + return result; + }; + ImportAttributes.prototype.DecodeIntoArray = function(...$args) { return this.$val.DecodeIntoArray(...$args); }; + $ptrType(ImportAttributes).prototype.DecodeIntoMap = function DecodeIntoMap() { + var _i, _key, _ref, array, attr, attrs, result, x; + result = false; + attrs = this; + array = $clone(attrs, ImportAttributes).DecodeIntoArray(); + if (array.$length > 0) { + result = (x = array.$length, ((x < 0 || x > 2147483647) ? $throwRuntimeError("makemap: size out of range") : new $global.Map())); + _ref = array; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + attr = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), ImportAttribute); + _key = attr.Key; (result || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: attr.Value }); + _i++; + } + } + return result; + }; + ImportAttributes.prototype.DecodeIntoMap = function(...$args) { return this.$val.DecodeIntoMap(...$args); }; + EncodeImportAttributes = function EncodeImportAttributes$1(value) { + var {_entry, _entry$1, _i, _i$1, _key, _keys, _ref, _ref$1, _size, k, k$1, keys, n, sb, v, value, $s, $r, $c} = $restore(this, {value}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if ((value ? value.size : 0) === 0) { + $s = -1; return new ImportAttributes.ptr(""); + } + keys = $makeSlice(sliceType$2, 0, (value ? value.size : 0)); + _ref = value; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + k = _entry.k; + keys = $append(keys, k); + _i++; + } + $r = sort.Strings(keys); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + sb = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + n = arrayType.zero(); + _ref$1 = keys; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + k$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + v = (_entry$1 = $mapIndex(value,$String.keyFor(k$1)), _entry$1 !== undefined ? _entry$1.v : ""); + $clone(binary.LittleEndian, binary.littleEndian).PutUint32(new sliceType$1(n), ((k$1.length >>> 0))); + sb.Write(new sliceType$1(n)); + sb.WriteString(k$1); + $clone(binary.LittleEndian, binary.littleEndian).PutUint32(new sliceType$1(n), ((v.length >>> 0))); + sb.Write(new sliceType$1(n)); + sb.WriteString(v); + _i$1++; + } + $s = -1; return new ImportAttributes.ptr(sb.String()); + /* */ } return; } var $f = {$blk: EncodeImportAttributes$1, $c: true, $r, _entry, _entry$1, _i, _i$1, _key, _keys, _ref, _ref$1, _size, k, k$1, keys, n, sb, v, value, $s};return $f; + }; + $pkg.EncodeImportAttributes = EncodeImportAttributes; + $ptrType(Path).prototype.IsDisabled = function IsDisabled() { + var p; + p = this; + return !(((((p.Flags & 1) >>> 0)) === 0)); + }; + Path.prototype.IsDisabled = function(...$args) { return this.$val.IsDisabled(...$args); }; + PlatformIndependentPathDirBaseExt = function PlatformIndependentPathDirBaseExt$1(path) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, absRootSlash, base, c, dir, dot, dot2, ext, i, path; + dir = ""; + base = ""; + ext = ""; + absRootSlash = -1; + if (path.length > 0 && ((path.charCodeAt(0) === 47) || (path.charCodeAt(0) === 92))) { + absRootSlash = 0; + } else if (path.length > 2 && (path.charCodeAt(1) === 58) && ((path.charCodeAt(2) === 47) || (path.charCodeAt(2) === 92))) { + c = path.charCodeAt(0); + if ((c >= 97 && c < 122) || (c >= 65 && c <= 90)) { + absRootSlash = 2; + } + } + while (true) { + i = strings.LastIndexAny(path, "/\\"); + if (i < 0) { + base = path; + break; + } + if (i === absRootSlash) { + _tmp = $substring(path, 0, (i + 1 >> 0)); + _tmp$1 = $substring(path, (i + 1 >> 0)); + dir = _tmp; + base = _tmp$1; + break; + } + if (!(((i + 1 >> 0) === path.length))) { + _tmp$2 = $substring(path, 0, i); + _tmp$3 = $substring(path, (i + 1 >> 0)); + dir = _tmp$2; + base = _tmp$3; + break; + } + path = $substring(path, 0, i); + } + dot = strings.LastIndexByte(base, 46); + if (dot >= 0) { + ext = $substring(base, dot); + if (ext === ".css") { + dot2 = strings.LastIndexByte($substring(base, 0, dot), 46); + if (dot2 >= 0 && $substring(base, dot2) === ".module.css") { + dot = dot2; + ext = $substring(base, dot); + } + } + base = $substring(base, 0, dot); + } + return [dir, base, ext]; + }; + $pkg.PlatformIndependentPathDirBaseExt = PlatformIndependentPathDirBaseExt; + $ptrType(Source).prototype.TextForRange = function TextForRange(r) { + var r, s; + s = this; + return $substring(s.Contents, r.Loc.Start, (r.Loc.Start + r.Len >> 0)); + }; + $ptrType(Source).prototype.LocBeforeWhitespace = function LocBeforeWhitespace(loc) { + var _tuple, c, loc, s, width; + s = this; + while (true) { + if (!(loc.Start > 0)) { break; } + _tuple = utf8.DecodeLastRuneInString($substring(s.Contents, 0, loc.Start)); + c = _tuple[0]; + width = _tuple[1]; + if (!((c === 32)) && !((c === 9)) && !((c === 13)) && !((c === 10))) { + break; + } + loc.Start = loc.Start - (((width >> 0))) >> 0; + } + return loc; + }; + $ptrType(Source).prototype.RangeOfOperatorBefore = function RangeOfOperatorBefore(loc, op) { + var index, loc, op, s, text; + s = this; + text = $substring(s.Contents, 0, loc.Start); + index = strings.LastIndex(text, op); + if (index >= 0) { + return new Range.ptr($clone(new Loc.ptr(((index >> 0))), Loc), ((op.length >> 0))); + } + return new Range.ptr($clone(loc, Loc), 0); + }; + $ptrType(Source).prototype.RangeOfOperatorAfter = function RangeOfOperatorAfter(loc, op) { + var index, loc, op, s, text; + s = this; + text = $substring(s.Contents, loc.Start); + index = strings.Index(text, op); + if (index >= 0) { + return new Range.ptr($clone(new Loc.ptr(loc.Start + ((index >> 0)) >> 0), Loc), ((op.length >> 0))); + } + return new Range.ptr($clone(loc, Loc), 0); + }; + $ptrType(Source).prototype.RangeOfString = function RangeOfString(loc) { + var c, c$1, i, i$1, loc, quote, s, text; + s = this; + text = $substring(s.Contents, loc.Start); + if (text.length === 0) { + return new Range.ptr($clone(loc, Loc), 0); + } + quote = text.charCodeAt(0); + if ((quote === 34) || (quote === 39)) { + i = 1; + while (true) { + if (!(i < text.length)) { break; } + c = text.charCodeAt(i); + if (c === quote) { + return new Range.ptr($clone(loc, Loc), (((i + 1 >> 0) >> 0))); + } else if (c === 92) { + i = i + (1) >> 0; + } + i = i + (1) >> 0; + } + } + if (quote === 96) { + i$1 = 1; + while (true) { + if (!(i$1 < text.length)) { break; } + c$1 = text.charCodeAt(i$1); + if (c$1 === quote) { + return new Range.ptr($clone(loc, Loc), (((i$1 + 1 >> 0) >> 0))); + } else if (c$1 === 92) { + i$1 = i$1 + (1) >> 0; + } else if ((c$1 === 36) && (i$1 + 1 >> 0) < text.length && (text.charCodeAt((i$1 + 1 >> 0)) === 123)) { + break; + } + i$1 = i$1 + (1) >> 0; + } + } + return new Range.ptr($clone(loc, Loc), 0); + }; + $ptrType(Source).prototype.RangeOfNumber = function RangeOfNumber(loc) { + var c, c$1, loc, r, s, text; + r = new Range.ptr(new Loc.ptr(0), 0); + s = this; + text = $substring(s.Contents, loc.Start); + Range.copy(r, new Range.ptr($clone(loc, Loc), 0)); + if (text.length > 0) { + c = text.charCodeAt(0); + if (c >= 48 && c <= 57) { + r.Len = 1; + while (true) { + if (!(((r.Len >> 0)) < text.length)) { break; } + c$1 = text.charCodeAt(r.Len); + if ((c$1 < 48 || c$1 > 57) && (c$1 < 97 || c$1 > 122) && (c$1 < 65 || c$1 > 90) && !((c$1 === 46)) && !((c$1 === 95))) { + break; + } + r.Len = r.Len + (1) >> 0; + } + } + } + return r; + }; + $ptrType(Source).prototype.RangeOfLegacyOctalEscape = function RangeOfLegacyOctalEscape(loc) { + var c, loc, r, s, text; + r = new Range.ptr(new Loc.ptr(0), 0); + s = this; + text = $substring(s.Contents, loc.Start); + Range.copy(r, new Range.ptr($clone(loc, Loc), 0)); + if (text.length >= 2 && (text.charCodeAt(0) === 92)) { + r.Len = 2; + while (true) { + if (!(r.Len < 4 && ((r.Len >> 0)) < text.length)) { break; } + c = text.charCodeAt(r.Len); + if (c < 48 || c > 57) { + break; + } + r.Len = r.Len + (1) >> 0; + } + } + return r; + }; + $ptrType(Source).prototype.CommentTextWithoutIndent = function CommentTextWithoutIndent(r) { + var _1, _2, _i, _i$1, _i$2, _i$3, _ref, _ref$1, _ref$2, _ref$3, _rune, _rune$1, _tuple, c, c$1, c$2, i, i$1, indent, line, line$1, lineIndent, lines, prefix, r, s, size, start, text; + s = this; + text = $substring(s.Contents, r.Loc.Start, $clone(r, Range).End()); + if (text.length < 2 || !strings.HasPrefix(text, "/*")) { + return text; + } + prefix = $substring(s.Contents, 0, r.Loc.Start); + indent = 0; + seekBackwardToNewline: + while (true) { + if (!(prefix.length > 0)) { break; } + _tuple = utf8.DecodeLastRuneInString(prefix); + c = _tuple[0]; + size = _tuple[1]; + _1 = c; + if ((_1 === (13)) || (_1 === (10)) || (_1 === (8232)) || (_1 === (8233))) { + break seekBackwardToNewline; + } + prefix = $substring(prefix, 0, (prefix.length - size >> 0)); + indent = indent + (1) >> 0; + } + lines = sliceType$2.nil; + start = 0; + _ref = text; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + c$1 = _rune[0]; + _2 = c$1; + if ((_2 === (13)) || (_2 === (10))) { + if (start <= i) { + lines = $append(lines, $substring(text, start, i)); + } + start = i + 1 >> 0; + if ((c$1 === 13) && start < text.length && (text.charCodeAt(start) === 10)) { + start = start + (1) >> 0; + } + } else if ((_2 === (8232)) || (_2 === (8233))) { + lines = $append(lines, $substring(text, start, i)); + start = i + 3 >> 0; + } + _i += _rune[1]; + } + lines = $append(lines, $substring(text, start)); + _ref$1 = $subslice(lines, 1); + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + line = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + lineIndent = 0; + _ref$2 = line; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.length)) { break; } + _rune$1 = $decodeRune(_ref$2, _i$2); + c$2 = _rune$1[0]; + if (!((c$2 === 32)) && !((c$2 === 9))) { + break; + } + lineIndent = lineIndent + (1) >> 0; + _i$2 += _rune$1[1]; + } + if (indent > lineIndent) { + indent = lineIndent; + } + _i$1++; + } + _ref$3 = lines; + _i$3 = 0; + while (true) { + if (!(_i$3 < _ref$3.$length)) { break; } + i$1 = _i$3; + line$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$3.$array[_ref$3.$offset + _i$3]); + if (i$1 > 0) { + ((i$1 < 0 || i$1 >= lines.$length) ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + i$1] = $substring(line$1, indent)); + } + _i$3++; + } + return strings.Join(lines, "\n"); + }; + plural = function plural$1(prefix, count, shown, someAreMissing) { + var {_r, _r$1, _r$2, count, prefix, shown, someAreMissing, text, $s, $r, $c} = $restore(this, {prefix, count, shown, someAreMissing}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + text = ""; + /* */ if (count === 1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (count === 1) { */ case 1: + _r = fmt.Sprintf("%d %s", new sliceType$3([new $Int(count), new $String(prefix)])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + text = _r; + $s = 3; continue; + /* } else { */ case 2: + _r$1 = fmt.Sprintf("%d %ss", new sliceType$3([new $Int(count), new $String(prefix)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + text = _r$1; + /* } */ case 3: + /* */ if (shown < count) { $s = 6; continue; } + /* */ if (someAreMissing && count > 1) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (shown < count) { */ case 6: + _r$2 = fmt.Sprintf("%d of %s", new sliceType$3([new $Int(shown), new $String(text)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + text = _r$2; + $s = 8; continue; + /* } else if (someAreMissing && count > 1) { */ case 7: + text = "all " + text; + /* } */ case 8: + $s = -1; return text; + /* */ } return; } var $f = {$blk: plural$1, $c: true, $r, _r, _r$1, _r$2, count, prefix, shown, someAreMissing, text, $s};return $f; + }; + errorAndWarningSummary = function errorAndWarningSummary$1(errors, warnings, shownErrors, shownWarnings) { + var {$24r, $24r$1, $24r$2, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, errors, shownErrors, shownWarnings, someAreMissing, warnings, $s, $r, $c} = $restore(this, {errors, warnings, shownErrors, shownWarnings}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + someAreMissing = shownWarnings < warnings || shownErrors < errors; + /* */ if ((errors === 0)) { $s = 2; continue; } + /* */ if ((warnings === 0)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((errors === 0)) { */ case 2: + _r = plural("warning", warnings, shownWarnings, someAreMissing); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 7; case 7: return $24r; + /* } else if ((warnings === 0)) { */ case 3: + _r$1 = plural("error", errors, shownErrors, someAreMissing); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 9; case 9: return $24r$1; + /* } else { */ case 4: + _r$2 = plural("warning", warnings, shownWarnings, someAreMissing); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg = new $String(_r$2); + _r$3 = plural("error", errors, shownErrors, someAreMissing); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$1 = new $String(_r$3); + _r$4 = fmt.Sprintf("%s and %s", new sliceType$3([_arg, _arg$1])); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + $24r$2 = _r$4; + $s = 13; case 13: return $24r$2; + /* } */ case 5: + case 1: + $s = -1; return ""; + /* */ } return; } var $f = {$blk: errorAndWarningSummary$1, $c: true, $r, $24r, $24r$1, $24r$2, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, errors, shownErrors, shownWarnings, someAreMissing, warnings, $s};return $f; + }; + NewStderrLog = function NewStderrLog$1(options) { + var _1, deferredWarnings, errors, finalizeLog, hasErrors, msgs, mutex, options, remainingMessagesBeforeLimit, shownErrors, shownWarnings, terminalInfo, warnings; + mutex = new sync.Mutex.ptr(0, 0); + msgs = SortableMsgs.nil; + terminalInfo = $clone(GetTerminalInfo(os.Stderr), TerminalInfo); + errors = 0; + warnings = 0; + shownErrors = 0; + shownWarnings = 0; + hasErrors = false; + remainingMessagesBeforeLimit = options.MessageLimit; + if (remainingMessagesBeforeLimit === 0) { + remainingMessagesBeforeLimit = 2147483647; + } + deferredWarnings = sliceType$4.nil; + finalizeLog = (function NewStderrLog·func1() { + var {_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r, _r$1, _r$2, _r$3, _r$4, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* while (true) { */ case 1: + /* if (!(remainingMessagesBeforeLimit > 0 && deferredWarnings.$length > 0)) { break; } */ if(!(remainingMessagesBeforeLimit > 0 && deferredWarnings.$length > 0)) { $s = 2; continue; } + shownWarnings = shownWarnings + (1) >> 0; + _arg = os.Stderr; + _r = $clone((0 >= deferredWarnings.$length ? ($throwRuntimeError("index out of range"), undefined) : deferredWarnings.$array[deferredWarnings.$offset + 0]), Msg).String($clone(options, OutputOptions), $clone(terminalInfo, TerminalInfo)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + $r = writeStringWithColor(_arg, _arg$1); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + deferredWarnings = $subslice(deferredWarnings, 1); + remainingMessagesBeforeLimit = remainingMessagesBeforeLimit - (1) >> 0; + $s = 1; continue; + case 2: + /* */ if (options.MessageLimit > 0 && (errors + warnings >> 0) > options.MessageLimit) { $s = 5; continue; } + /* */ if (options.LogLevel <= 3 && (!((warnings === 0)) || !((errors === 0)))) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (options.MessageLimit > 0 && (errors + warnings >> 0) > options.MessageLimit) { */ case 5: + _arg$2 = os.Stderr; + _r$1 = errorAndWarningSummary(errors, warnings, shownErrors, shownWarnings); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$3 = new $String(_r$1); + _r$2 = fmt.Sprintf("%s shown (disable the message limit with --log-limit=0)\n", new sliceType$3([_arg$3])); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$4 = _r$2; + $r = writeStringWithColor(_arg$2, _arg$4); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 7; continue; + /* } else if (options.LogLevel <= 3 && (!((warnings === 0)) || !((errors === 0)))) { */ case 6: + _arg$5 = os.Stderr; + _r$3 = errorAndWarningSummary(errors, warnings, shownErrors, shownWarnings); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$6 = new $String(_r$3); + _r$4 = fmt.Sprintf("%s\n", new sliceType$3([_arg$6])); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$7 = _r$4; + $r = writeStringWithColor(_arg$5, _arg$7); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 7: + $s = -1; return; + /* */ } return; } var $f = {$blk: NewStderrLog·func1, $c: true, $r, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _r, _r$1, _r$2, _r$3, _r$4, $s};return $f; + }); + _1 = options.Color; + if (_1 === (1)) { + terminalInfo.UseColorEscapes = false; + } else if (_1 === (2)) { + terminalInfo.UseColorEscapes = false; + } + return new Log.ptr((function NewStderrLog·func2(msg) { + var {_2, _3, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _q, _r, _r$1, _r$2, _r$3, _r$4, msg, $s, $deferred, $r, $c} = $restore(this, {msg}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + $r = mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(mutex, "Unlock"), []]); + msgs = $append(msgs, msg); + _2 = msg.Kind; + /* */ if (_2 === (5)) { $s = 3; continue; } + /* */ if (_2 === (4)) { $s = 4; continue; } + /* */ if (_2 === (2)) { $s = 5; continue; } + /* */ if (_2 === (0)) { $s = 6; continue; } + /* */ if (_2 === (1)) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (_2 === (5)) { */ case 3: + /* */ if (options.LogLevel <= 1) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (options.LogLevel <= 1) { */ case 9: + _arg = os.Stderr; + _r = $clone(msg, Msg).String($clone(options, OutputOptions), $clone(terminalInfo, TerminalInfo)); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _arg$1 = _r; + $r = writeStringWithColor(_arg, _arg$1); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 10: + $s = 8; continue; + /* } else if (_2 === (4)) { */ case 4: + /* */ if (options.LogLevel <= 2) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (options.LogLevel <= 2) { */ case 13: + _arg$2 = os.Stderr; + _r$1 = $clone(msg, Msg).String($clone(options, OutputOptions), $clone(terminalInfo, TerminalInfo)); /* */ $s = 15; case 15: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _arg$3 = _r$1; + $r = writeStringWithColor(_arg$2, _arg$3); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 14: + $s = 8; continue; + /* } else if (_2 === (2)) { */ case 5: + /* */ if (options.LogLevel <= 3) { $s = 17; continue; } + /* */ $s = 18; continue; + /* if (options.LogLevel <= 3) { */ case 17: + _arg$4 = os.Stderr; + _r$2 = $clone(msg, Msg).String($clone(options, OutputOptions), $clone(terminalInfo, TerminalInfo)); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + _arg$5 = _r$2; + $r = writeStringWithColor(_arg$4, _arg$5); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 18: + $s = 8; continue; + /* } else if (_2 === (0)) { */ case 6: + hasErrors = true; + if (options.LogLevel <= 5) { + errors = errors + (1) >> 0; + } + $s = 8; continue; + /* } else if (_2 === (1)) { */ case 7: + if (options.LogLevel <= 4) { + warnings = warnings + (1) >> 0; + } + /* } */ case 8: + case 2: + /* */ if (remainingMessagesBeforeLimit === 0) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (remainingMessagesBeforeLimit === 0) { */ case 21: + $s = 23; case 23: return; + /* } */ case 22: + _3 = msg.Kind; + /* */ if (_3 === (0)) { $s = 25; continue; } + /* */ if (_3 === (1)) { $s = 26; continue; } + /* */ $s = 27; continue; + /* if (_3 === (0)) { */ case 25: + /* */ if (options.LogLevel <= 5) { $s = 28; continue; } + /* */ $s = 29; continue; + /* if (options.LogLevel <= 5) { */ case 28: + shownErrors = shownErrors + (1) >> 0; + _arg$6 = os.Stderr; + _r$3 = $clone(msg, Msg).String($clone(options, OutputOptions), $clone(terminalInfo, TerminalInfo)); /* */ $s = 30; case 30: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + _arg$7 = _r$3; + $r = writeStringWithColor(_arg$6, _arg$7); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + remainingMessagesBeforeLimit = remainingMessagesBeforeLimit - (1) >> 0; + /* } */ case 29: + $s = 27; continue; + /* } else if (_3 === (1)) { */ case 26: + /* */ if (options.LogLevel <= 4) { $s = 32; continue; } + /* */ $s = 33; continue; + /* if (options.LogLevel <= 4) { */ case 32: + /* */ if (remainingMessagesBeforeLimit > (_q = ((options.MessageLimit + 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (remainingMessagesBeforeLimit > (_q = ((options.MessageLimit + 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))) { */ case 34: + shownWarnings = shownWarnings + (1) >> 0; + _arg$8 = os.Stderr; + _r$4 = $clone(msg, Msg).String($clone(options, OutputOptions), $clone(terminalInfo, TerminalInfo)); /* */ $s = 37; case 37: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$9 = _r$4; + $r = writeStringWithColor(_arg$8, _arg$9); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + remainingMessagesBeforeLimit = remainingMessagesBeforeLimit - (1) >> 0; + $s = 36; continue; + /* } else { */ case 35: + deferredWarnings = $append(deferredWarnings, msg); + /* } */ case 36: + /* } */ case 33: + /* } */ case 27: + case 24: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NewStderrLog·func2, $c: true, $r, _2, _3, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _q, _r, _r$1, _r$2, _r$3, _r$4, msg, $s, $deferred};return $f; } } + }), (function NewStderrLog·func3() { + var {$24r, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + $r = mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(mutex, "Unlock"), []]); + $24r = hasErrors; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NewStderrLog·func3, $c: true, $r, $24r, $s, $deferred};return $f; } } + }), (function NewStderrLog·func4() { + var {$24r, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + $r = mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(mutex, "Unlock"), []]); + $r = sort.Stable(msgs); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r = $appendSlice(new sliceType$4([]), $convertSliceType(msgs, sliceType$4)); + $s = 3; case 3: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$4.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NewStderrLog·func4, $c: true, $r, $24r, $s, $deferred};return $f; } } + }), (function NewStderrLog·func5() { + var {$24r, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + $r = mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(mutex, "Unlock"), []]); + $r = finalizeLog(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.Stable(msgs); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r = $convertSliceType(msgs, sliceType$4); + $s = 4; case 4: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$4.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NewStderrLog·func5, $c: true, $r, $24r, $s, $deferred};return $f; } } + }), options.LogLevel, options.Overrides); + }; + $pkg.NewStderrLog = NewStderrLog; + NewDeferLog = function NewDeferLog$1(kind, overrides) { + var hasErrors, kind, msgs, mutex, overrides; + msgs = SortableMsgs.nil; + mutex = new sync.Mutex.ptr(0, 0); + hasErrors = false; + return new Log.ptr((function NewDeferLog·func1(msg) { + var {msg, $s, $deferred, $r, $c} = $restore(this, {msg}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + if ((kind === 1) && ((msg.Kind === 5) || (msg.Kind === 4))) { + $s = -1; return; + } + $r = mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(mutex, "Unlock"), []]); + if (msg.Kind === 0) { + hasErrors = true; + } + msgs = $append(msgs, msg); + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NewDeferLog·func1, $c: true, $r, msg, $s, $deferred};return $f; } } + }), (function NewDeferLog·func2() { + var {$24r, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + $r = mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(mutex, "Unlock"), []]); + $24r = hasErrors; + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NewDeferLog·func2, $c: true, $r, $24r, $s, $deferred};return $f; } } + }), (function NewDeferLog·func3() { + var {$24r, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + $r = mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(mutex, "Unlock"), []]); + $24r = $appendSlice(new sliceType$4([]), $convertSliceType(msgs, sliceType$4)); + $s = 2; case 2: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$4.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NewDeferLog·func3, $c: true, $r, $24r, $s, $deferred};return $f; } } + }), (function NewDeferLog·func4() { + var {$24r, $s, $deferred, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + $r = mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(mutex, "Unlock"), []]); + $r = sort.Stable(msgs); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $24r = $convertSliceType(msgs, sliceType$4); + $s = 3; case 3: return $24r; + /* */ } return; } } catch(err) { $err = err; $s = -1; return sliceType$4.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: NewDeferLog·func4, $c: true, $r, $24r, $s, $deferred};return $f; } } + }), 3, overrides); + }; + $pkg.NewDeferLog = NewDeferLog; + $ptrType(Msg).prototype.String = function String$1(options, terminalInfo) { + var {_i, _r, _r$1, _ref, i, msg, note, oldData, options, terminalInfo, text, $s, $r, $c} = $restore(this, {options, terminalInfo}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + msg = this; + _r = msgString(options.IncludeSource, $clone(terminalInfo, TerminalInfo), msg.ID, msg.Kind, $clone(msg.Data, MsgData), msg.PluginName); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + text = _r; + oldData = new MsgData.ptr($ifaceNil, ptrType.nil, "", false); + _ref = msg.Notes; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + i = _i; + note = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), MsgData); + if (options.IncludeSource && ((i === 0) || strings.IndexByte(oldData.Text, 10) >= 0 || !(oldData.Location === ptrType.nil))) { + text = text + ("\n"); + } + _r$1 = msgString(options.IncludeSource, $clone(terminalInfo, TerminalInfo), 0, 3, $clone(note, MsgData), ""); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + text = text + (_r$1); + MsgData.copy(oldData, note); + _i++; + $s = 2; continue; + case 3: + if (options.IncludeSource) { + text = text + ("\n"); + } + $s = -1; return text; + /* */ } return; } var $f = {$blk: String$1, $c: true, $r, _i, _r, _r$1, _ref, i, msg, note, oldData, options, terminalInfo, text, $s};return $f; + }; + Msg.prototype.String = function(...$args) { return this.$val.String(...$args); }; + marginWithLineText = function marginWithLineText$1(maxMargin, line) { + var {$24r, _r, _r$1, line, maxMargin, number, $s, $r, $c} = $restore(this, {maxMargin, line}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = fmt.Sprintf("%d", new sliceType$3([new $Int(line)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + number = _r; + _r$1 = fmt.Sprintf(" %s%s \xE2\x94\x82 ", new sliceType$3([new $String(strings.Repeat(" ", maxMargin - number.length >> 0)), new $String(number)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r = _r$1; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: marginWithLineText$1, $c: true, $r, $24r, _r, _r$1, line, maxMargin, number, $s};return $f; + }; + emptyMarginText = function emptyMarginText$1(maxMargin, isLast) { + var {$24r, $24r$1, _r, _r$1, isLast, maxMargin, space, $s, $r, $c} = $restore(this, {maxMargin, isLast}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + space = strings.Repeat(" ", maxMargin); + /* */ if (isLast) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (isLast) { */ case 1: + _r = fmt.Sprintf(" %s \xE2\x95\xB5 ", new sliceType$3([new $String(space)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 4; case 4: return $24r; + /* } */ case 2: + _r$1 = fmt.Sprintf(" %s \xE2\x94\x82 ", new sliceType$3([new $String(space)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 6; case 6: return $24r$1; + /* */ } return; } var $f = {$blk: emptyMarginText$1, $c: true, $r, $24r, $24r$1, _r, _r$1, isLast, maxMargin, space, $s};return $f; + }; + msgString = function msgString$1(includeSource, terminalInfo, id, kind, data, pluginName) { + var {$24r, $24r$1, $24r$2, _1, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$16, _arg$17, _arg$18, _arg$19, _arg$2, _arg$20, _arg$21, _arg$22, _arg$23, _arg$24, _arg$25, _arg$26, _arg$27, _arg$28, _arg$29, _arg$3, _arg$30, _arg$31, _arg$32, _arg$33, _arg$34, _arg$35, _arg$36, _arg$37, _arg$38, _arg$39, _arg$4, _arg$40, _arg$41, _arg$42, _arg$43, _arg$44, _arg$45, _arg$46, _arg$47, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, colors, d, data, iconColor, id, includeSource, kind, kindColorBrackets, kindColorText, line, loc, location, maxMargin, msgID, pluginName, run, sb, terminalInfo, wrapWidth, $s, $r, $c} = $restore(this, {includeSource, terminalInfo, id, kind, data, pluginName}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (!includeSource) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!includeSource) { */ case 1: + loc = data.Location; + /* */ if (!(loc === ptrType.nil)) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!(loc === ptrType.nil)) { */ case 3: + _r = fmt.Sprintf("%s: %s: %s\n", new sliceType$3([new $String(loc.File), new $String(new MsgKind(kind).String()), new $String(data.Text)])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 6; case 6: return $24r; + /* } */ case 4: + _r$1 = fmt.Sprintf("%s: %s\n", new sliceType$3([new $String(new MsgKind(kind).String()), new $String(data.Text)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = _r$1; + $s = 8; case 8: return $24r$1; + /* } */ case 2: + colors = new Colors.ptr("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""); + if (terminalInfo.UseColorEscapes) { + Colors.copy(colors, $pkg.TerminalColors); + } + iconColor = ""; + kindColorBrackets = ""; + kindColorText = ""; + location = ""; + /* */ if (!(data.Location === ptrType.nil)) { $s = 9; continue; } + /* */ $s = 10; continue; + /* if (!(data.Location === ptrType.nil)) { */ case 9: + _r$2 = fmt.Sprintf("%d", new sliceType$3([new $Int(data.Location.Line)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + maxMargin = _r$2.length; + _r$3 = detailStruct($clone(data, MsgData), $clone(terminalInfo, TerminalInfo), maxMargin); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + d = $clone(_r$3, MsgDetail); + /* */ if (!(d.Suggestion === "")) { $s = 13; continue; } + /* */ $s = 14; continue; + /* if (!(d.Suggestion === "")) { */ case 13: + _arg = new $String(d.Path); + _arg$1 = new $Int(d.Line); + _arg$2 = new $Int(d.Column); + _arg$3 = new $String(colors.Dim); + _arg$4 = new $String(d.SourceBefore); + _arg$5 = new $String(colors.Green); + _arg$6 = new $String(d.SourceMarked); + _arg$7 = new $String(colors.Dim); + _arg$8 = new $String(d.SourceAfter); + _r$4 = emptyMarginText(maxMargin, false); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; } + _arg$9 = new $String(_r$4); + _arg$10 = new $String(d.Indent); + _arg$11 = new $String(colors.Green); + _arg$12 = new $String(d.Marker); + _arg$13 = new $String(colors.Dim); + _r$5 = emptyMarginText(maxMargin, true); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; } + _arg$14 = new $String(_r$5); + _arg$15 = new $String(d.Indent); + _arg$16 = new $String(colors.Green); + _arg$17 = new $String(d.Suggestion); + _arg$18 = new $String(colors.Reset); + _arg$19 = new $String(d.ContentAfter); + _r$6 = fmt.Sprintf("\n %s:%d:%d:\n%s%s%s%s%s%s\n%s%s%s%s%s\n%s%s%s%s%s\n%s", new sliceType$3([_arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$16, _arg$17, _arg$18, _arg$19])); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; } + location = _r$6; + $s = 15; continue; + /* } else { */ case 14: + _arg$20 = new $String(d.Path); + _arg$21 = new $Int(d.Line); + _arg$22 = new $Int(d.Column); + _arg$23 = new $String(colors.Dim); + _arg$24 = new $String(d.SourceBefore); + _arg$25 = new $String(colors.Green); + _arg$26 = new $String(d.SourceMarked); + _arg$27 = new $String(colors.Dim); + _arg$28 = new $String(d.SourceAfter); + _r$7 = emptyMarginText(maxMargin, true); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; } + _arg$29 = new $String(_r$7); + _arg$30 = new $String(d.Indent); + _arg$31 = new $String(colors.Green); + _arg$32 = new $String(d.Marker); + _arg$33 = new $String(colors.Reset); + _arg$34 = new $String(d.ContentAfter); + _r$8 = fmt.Sprintf("\n %s:%d:%d:\n%s%s%s%s%s%s\n%s%s%s%s%s\n%s", new sliceType$3([_arg$20, _arg$21, _arg$22, _arg$23, _arg$24, _arg$25, _arg$26, _arg$27, _arg$28, _arg$29, _arg$30, _arg$31, _arg$32, _arg$33, _arg$34])); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; } + location = _r$8; + /* } */ case 15: + /* } */ case 10: + _1 = kind; + if (_1 === (5)) { + iconColor = colors.Cyan; + kindColorBrackets = colors.CyanBgCyan; + kindColorText = colors.CyanBgBlack; + } else if (_1 === (4)) { + iconColor = colors.Green; + kindColorBrackets = colors.GreenBgGreen; + kindColorText = colors.GreenBgWhite; + } else if (_1 === (2)) { + iconColor = colors.Blue; + kindColorBrackets = colors.BlueBgBlue; + kindColorText = colors.BlueBgWhite; + } else if (_1 === (0)) { + iconColor = colors.Red; + kindColorBrackets = colors.RedBgRed; + kindColorText = colors.RedBgWhite; + } else if (_1 === (1)) { + iconColor = colors.Yellow; + kindColorBrackets = colors.YellowBgYellow; + kindColorText = colors.YellowBgBlack; + } else if (_1 === (3)) { + sb = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + _ref = strings.Split(data.Text, "\n"); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + line = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + wrapWidth = terminalInfo.Width; + if (wrapWidth > 2) { + if (!data.DisableMaximumWidth && wrapWidth > 100) { + wrapWidth = 100; + } + _ref$1 = wrapWordsInString(line, wrapWidth - 2 >> 0); + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + run = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + sb.WriteString(" "); + sb.WriteString(linkifyText(run, colors.Underline, colors.Reset)); + sb.WriteByte(10); + _i$1++; + } + _i++; + continue; + } + sb.WriteString(" "); + sb.WriteString(linkifyText(line, colors.Underline, colors.Reset)); + sb.WriteByte(10); + _i++; + } + sb.WriteString(location); + $s = -1; return sb.String(); + } + /* */ if (!(pluginName === "")) { $s = 21; continue; } + /* */ $s = 22; continue; + /* if (!(pluginName === "")) { */ case 21: + _r$9 = fmt.Sprintf(" %s%s[plugin %s]%s", new sliceType$3([new $String(colors.Bold), new $String(colors.Magenta), new $String(pluginName), new $String(colors.Reset)])); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; } + pluginName = _r$9; + /* } */ case 22: + msgID = MsgIDToString(id); + /* */ if (!(msgID === "")) { $s = 24; continue; } + /* */ $s = 25; continue; + /* if (!(msgID === "")) { */ case 24: + _r$10 = fmt.Sprintf(" [%s]", new sliceType$3([new $String(msgID)])); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; } + msgID = _r$10; + /* } */ case 25: + _arg$35 = new $String(iconColor); + _r$11 = new MsgKind(kind).Icon(); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; } + _arg$36 = new $String(_r$11); + _arg$37 = new $String(kindColorBrackets); + _arg$38 = new $String(kindColorText); + _arg$39 = new $String(new MsgKind(kind).String()); + _arg$40 = new $String(kindColorBrackets); + _arg$41 = new $String(colors.Reset); + _arg$42 = new $String(colors.Bold); + _arg$43 = new $String(data.Text); + _arg$44 = new $String(colors.Reset); + _arg$45 = new $String(pluginName); + _arg$46 = new $String(msgID); + _arg$47 = new $String(location); + _r$12 = fmt.Sprintf("%s%s %s[%s%s%s]%s %s%s%s%s%s\n%s", new sliceType$3([_arg$35, _arg$36, _arg$37, _arg$38, _arg$39, _arg$40, _arg$41, _arg$42, _arg$43, _arg$44, _arg$45, _arg$46, _arg$47])); /* */ $s = 28; case 28: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; } + $24r$2 = _r$12; + $s = 29; case 29: return $24r$2; + /* */ } return; } var $f = {$blk: msgString$1, $c: true, $r, $24r, $24r$1, $24r$2, _1, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$16, _arg$17, _arg$18, _arg$19, _arg$2, _arg$20, _arg$21, _arg$22, _arg$23, _arg$24, _arg$25, _arg$26, _arg$27, _arg$28, _arg$29, _arg$3, _arg$30, _arg$31, _arg$32, _arg$33, _arg$34, _arg$35, _arg$36, _arg$37, _arg$38, _arg$39, _arg$4, _arg$40, _arg$41, _arg$42, _arg$43, _arg$44, _arg$45, _arg$46, _arg$47, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, colors, d, data, iconColor, id, includeSource, kind, kindColorBrackets, kindColorText, line, loc, location, maxMargin, msgID, pluginName, run, sb, terminalInfo, wrapWidth, $s};return $f; + }; + linkifyText = function linkifyText$1(text, underline, reset) { + var _1, end, https, https$1, reset, sb, text, underline; + if (underline === "") { + return text; + } + https = strings.Index(text, "https://"); + if (https === -1) { + return text; + } + sb = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + while (true) { + https$1 = strings.Index(text, "https://"); + if (https$1 === -1) { + break; + } + end = strings.IndexByte($substring(text, https$1), 32); + if (end === -1) { + end = text.length; + } else { + end = end + (https$1) >> 0; + } + if (end > https$1) { + _1 = text.charCodeAt((end - 1 >> 0)); + if ((_1 === (46)) || (_1 === (44)) || (_1 === (63)) || (_1 === (33)) || (_1 === (41)) || (_1 === (93)) || (_1 === (125))) { + end = end - (1) >> 0; + } + } + sb.WriteString($substring(text, 0, https$1)); + sb.WriteString(underline); + sb.WriteString($substring(text, https$1, end)); + sb.WriteString(reset); + text = $substring(text, end); + } + sb.WriteString(text); + return sb.String(); + }; + wrapWordsInString = function wrapWordsInString$1(text, width) { + var _tuple, c, i, oldWordEndI, runs, text, width, width$1, wordEndI, wordStartI, x; + runs = new sliceType$2([]); + outer: + while (true) { + if (!(!(text === ""))) { break; } + i = 0; + x = 0; + wordEndI = 0; + while (true) { + if (!(i < text.length && (text.charCodeAt(i) === 32))) { break; } + i = i + (1) >> 0; + x = x + (1) >> 0; + } + while (true) { + if (!(i < text.length)) { break; } + oldWordEndI = wordEndI; + wordStartI = i; + while (true) { + if (!(i < text.length)) { break; } + _tuple = utf8.DecodeRuneInString($substring(text, i)); + c = _tuple[0]; + width$1 = _tuple[1]; + if (c === 32) { + break; + } + i = i + (width$1) >> 0; + x = x + (1) >> 0; + } + wordEndI = i; + if (wordStartI > 0 && x > width) { + runs = $append(runs, $substring(text, 0, oldWordEndI)); + text = $substring(text, wordStartI); + continue outer; + } + while (true) { + if (!(i < text.length && (text.charCodeAt(i) === 32))) { break; } + i = i + (1) >> 0; + x = x + (1) >> 0; + } + } + break; + } + while (true) { + if (!(text.length > 0 && (text.charCodeAt((text.length - 1 >> 0)) === 32))) { break; } + text = $substring(text, 0, (text.length - 1 >> 0)); + } + runs = $append(runs, text); + return runs; + }; + MakeLineColumnTracker = function MakeLineColumnTracker$1(source) { + var source; + if (source === ptrType$3.nil) { + return new LineColumnTracker.ptr("", "", 0, 0, 0, 0, false, false, false); + } + return new LineColumnTracker.ptr(source.Contents, source.PrettyPath, 0, 0, 0, 0, true, false, true); + }; + $pkg.MakeLineColumnTracker = MakeLineColumnTracker; + $ptrType(LineColumnTracker).prototype.MsgData = function MsgData$1(r, text) { + var r, text, tracker; + tracker = this; + return new MsgData.ptr($ifaceNil, tracker.MsgLocationOrNil($clone(r, Range)), text, false); + }; + $ptrType(LineColumnTracker).prototype.scanTo = function scanTo(offset) { + var _1, _2, _tuple, _tuple$1, contents, i, offset, r, r$1, size, size$1, t; + t = this; + contents = t.contents; + i = t.offset; + if (i < offset) { + while (true) { + _tuple = utf8.DecodeRuneInString($substring(contents, i)); + r = _tuple[0]; + size = _tuple[1]; + i = i + (((size >> 0))) >> 0; + _1 = r; + if (_1 === (10)) { + t.hasLineStart = true; + t.hasLineEnd = false; + t.lineStart = i; + if ((i === ((size >> 0))) || !((contents.charCodeAt(((i - ((size >> 0)) >> 0) - 1 >> 0)) === 13))) { + t.line = t.line + (1) >> 0; + } + } else if ((_1 === (13)) || (_1 === (8232)) || (_1 === (8233))) { + t.hasLineStart = true; + t.hasLineEnd = false; + t.lineStart = i; + t.line = t.line + (1) >> 0; + } + if (i >= offset) { + t.offset = i; + return; + } + } + } + if (i > offset) { + while (true) { + _tuple$1 = utf8.DecodeLastRuneInString($substring(contents, 0, i)); + r$1 = _tuple$1[0]; + size$1 = _tuple$1[1]; + i = i - (((size$1 >> 0))) >> 0; + _2 = r$1; + if (_2 === (10)) { + t.hasLineStart = false; + t.hasLineEnd = true; + t.lineEnd = i; + if ((i === 0) || !((contents.charCodeAt((i - 1 >> 0)) === 13))) { + t.line = t.line - (1) >> 0; + } + } else if ((_2 === (13)) || (_2 === (8232)) || (_2 === (8233))) { + t.hasLineStart = false; + t.hasLineEnd = true; + t.lineEnd = i; + t.line = t.line - (1) >> 0; + } + if (i <= offset) { + t.offset = i; + return; + } + } + } + }; + $ptrType(LineColumnTracker).prototype.computeLineAndColumn = function computeLineAndColumn(offset) { + var _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, columnCount, contents, contents$1, i, i$1, lineCount, lineEnd, lineStart, n, offset, r, r$1, size, size$1, t; + lineCount = 0; + columnCount = 0; + lineStart = 0; + lineEnd = 0; + t = this; + t.scanTo(((offset >> 0))); + if (!t.hasLineStart) { + contents = t.contents; + i = t.offset; + while (true) { + if (!(i > 0)) { break; } + _tuple = utf8.DecodeLastRuneInString($substring(contents, 0, i)); + r = _tuple[0]; + size = _tuple[1]; + if ((r === 10) || (r === 13) || (r === 8232) || (r === 8233)) { + break; + } + i = i - (((size >> 0))) >> 0; + } + t.hasLineStart = true; + t.lineStart = i; + } + if (!t.hasLineEnd) { + contents$1 = t.contents; + i$1 = t.offset; + n = ((contents$1.length >> 0)); + while (true) { + if (!(i$1 < n)) { break; } + _tuple$1 = utf8.DecodeRuneInString($substring(contents$1, i$1)); + r$1 = _tuple$1[0]; + size$1 = _tuple$1[1]; + if ((r$1 === 10) || (r$1 === 13) || (r$1 === 8232) || (r$1 === 8233)) { + break; + } + i$1 = i$1 + (((size$1 >> 0))) >> 0; + } + t.hasLineEnd = true; + t.lineEnd = i$1; + } + _tmp = ((t.line >> 0)); + _tmp$1 = offset - ((t.lineStart >> 0)) >> 0; + _tmp$2 = ((t.lineStart >> 0)); + _tmp$3 = ((t.lineEnd >> 0)); + lineCount = _tmp; + columnCount = _tmp$1; + lineStart = _tmp$2; + lineEnd = _tmp$3; + return [lineCount, columnCount, lineStart, lineEnd]; + }; + $ptrType(LineColumnTracker).prototype.MsgLocationOrNil = function MsgLocationOrNil(r) { + var _tuple, columnCount, lineCount, lineEnd, lineStart, r, tracker; + tracker = this; + if (tracker === ptrType$4.nil || !tracker.hasSource) { + return ptrType.nil; + } + _tuple = tracker.computeLineAndColumn(((r.Loc.Start >> 0))); + lineCount = _tuple[0]; + columnCount = _tuple[1]; + lineStart = _tuple[2]; + lineEnd = _tuple[3]; + return new MsgLocation.ptr(tracker.prettyPath, "", $substring(tracker.contents, lineStart, lineEnd), "", lineCount + 1 >> 0, columnCount, ((r.Len >> 0))); + }; + detailStruct = function detailStruct$1(data, terminalInfo, maxMargin) { + var {_q, _q$1, _q$2, _r, afterFirstLine, data, endOfFirstLine, firstLine, i, indent, lineText, loc, margin, marker, markerEnd, markerStart, maxMargin, sliceEnd, sliceStart, slicedLine, spacesPerTab, terminalInfo, textUpToLoc, width, $s, $r, $c} = $restore(this, {data, terminalInfo, maxMargin}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + loc = $clone(data.Location, MsgLocation); + endOfFirstLine = loc.LineText.length; + i = strings.IndexByte(loc.LineText, 10); + if (i >= 0) { + endOfFirstLine = i; + } + firstLine = $substring(loc.LineText, 0, endOfFirstLine); + afterFirstLine = $substring(loc.LineText, endOfFirstLine); + if (!(afterFirstLine === "") && !strings.HasSuffix(afterFirstLine, "\n")) { + afterFirstLine = afterFirstLine + ("\n"); + } + if (loc.Line < 0) { + loc.Line = 0; + } + if (loc.Column < 0) { + loc.Column = 0; + } + if (loc.Length < 0) { + loc.Length = 0; + } + if (loc.Column > endOfFirstLine) { + loc.Column = endOfFirstLine; + } + if (loc.Length > (endOfFirstLine - loc.Column >> 0)) { + loc.Length = endOfFirstLine - loc.Column >> 0; + } + spacesPerTab = 2; + lineText = renderTabStops(firstLine, spacesPerTab); + textUpToLoc = renderTabStops($substring(firstLine, 0, loc.Column), spacesPerTab); + markerStart = textUpToLoc.length; + markerEnd = markerStart; + indent = strings.Repeat(" ", estimateWidthInTerminal(textUpToLoc)); + marker = "^"; + if (loc.Length > 0) { + markerEnd = renderTabStops($substring(firstLine, 0, (loc.Column + loc.Length >> 0)), spacesPerTab).length; + } + if (markerStart > lineText.length) { + markerStart = lineText.length; + } + if (markerEnd > lineText.length) { + markerEnd = lineText.length; + } + if (markerEnd < markerStart) { + markerEnd = markerStart; + } + width = terminalInfo.Width; + if (width < 1) { + width = 80; + } + width = width - ((maxMargin + 9 >> 0)) >> 0; + if (width < 1) { + width = 1; + } + if (loc.Column === endOfFirstLine) { + width = width - (1) >> 0; + } + if (lineText.length > width) { + sliceStart = (_q = (((markerStart + markerEnd >> 0) - width >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + if (sliceStart > (markerStart - (_q$1 = width / 5, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0)) { + sliceStart = markerStart - (_q$2 = width / 5, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0; + } + if (sliceStart < 0) { + sliceStart = 0; + } + if (sliceStart > (lineText.length - width >> 0)) { + sliceStart = lineText.length - width >> 0; + } + sliceEnd = sliceStart + width >> 0; + slicedLine = $substring(lineText, sliceStart, sliceEnd); + markerStart = markerStart - (sliceStart) >> 0; + markerEnd = markerEnd - (sliceStart) >> 0; + if (markerStart < 0) { + markerStart = 0; + } + if (markerEnd > slicedLine.length) { + markerEnd = slicedLine.length; + } + if (slicedLine.length > 3 && sliceStart > 0) { + slicedLine = "..." + $substring(slicedLine, 3); + if (markerStart < 3) { + markerStart = 3; + } + } + if (slicedLine.length > 3 && sliceEnd < lineText.length) { + slicedLine = $substring(slicedLine, 0, (slicedLine.length - 3 >> 0)) + "..."; + if (markerEnd > (slicedLine.length - 3 >> 0)) { + markerEnd = slicedLine.length - 3 >> 0; + } + if (markerEnd < markerStart) { + markerEnd = markerStart; + } + } + lineText = slicedLine; + indent = strings.Repeat(" ", estimateWidthInTerminal($substring(lineText, 0, markerStart))); + } + if ((markerEnd - markerStart >> 0) > 1) { + marker = strings.Repeat("~", estimateWidthInTerminal($substring(lineText, markerStart, markerEnd))); + } + _r = marginWithLineText(maxMargin, loc.Line); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + margin = _r; + $s = -1; return new MsgDetail.ptr(margin + $substring(lineText, 0, markerStart), $substring(lineText, markerStart, markerEnd), $substring(lineText, markerEnd), indent, marker, loc.Suggestion, afterFirstLine, loc.File, loc.Line, loc.Column); + /* */ } return; } var $f = {$blk: detailStruct$1, $c: true, $r, _q, _q$1, _q$2, _r, afterFirstLine, data, endOfFirstLine, firstLine, i, indent, lineText, loc, margin, marker, markerEnd, markerStart, maxMargin, sliceEnd, sliceStart, slicedLine, spacesPerTab, terminalInfo, textUpToLoc, width, $s};return $f; + }; + estimateWidthInTerminal = function estimateWidthInTerminal$1(text) { + var _tuple, c, size, text, width; + width = 0; + while (true) { + if (!(!(text === ""))) { break; } + _tuple = utf8.DecodeRuneInString(text); + c = _tuple[0]; + size = _tuple[1]; + text = $substring(text, size); + if (!((c === 65279))) { + width = width + (1) >> 0; + } + } + return width; + }; + renderTabStops = function renderTabStops$1(withTabs, spacesPerTab) { + var _i, _r, _ref, _rune, c, count, i, spaces, spacesPerTab, withTabs, withoutTabs; + if (!strings.ContainsRune(withTabs, 9)) { + return withTabs; + } + withoutTabs = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + count = 0; + _ref = withTabs; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + c = _rune[0]; + if (c === 9) { + spaces = spacesPerTab - (_r = count % spacesPerTab, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >> 0; + i = 0; + while (true) { + if (!(i < spaces)) { break; } + withoutTabs.WriteRune(32); + count = count + (1) >> 0; + i = i + (1) >> 0; + } + } else { + withoutTabs.WriteRune(c); + count = count + (1) >> 0; + } + _i += _rune[1]; + } + return withoutTabs.String(); + }; + $ptrType(Log).prototype.AddError = function AddError(tracker, r, text) { + var {log, r, text, tracker, $s, $r, $c} = $restore(this, {tracker, r, text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + log = this; + $r = log.AddMsg($clone(new Msg.ptr(sliceType$5.nil, "", $clone(tracker.MsgData($clone(r, Range), text), MsgData), 0, 0), Msg)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: AddError, $c: true, $r, log, r, text, tracker, $s};return $f; + }; + Log.prototype.AddError = function(...$args) { return this.$val.AddError(...$args); }; + $ptrType(Log).prototype.AddID = function AddID(id, kind, tracker, r, text) { + var {_tuple, id, kind, log, ok, override, r, text, tracker, $s, $r, $c} = $restore(this, {id, kind, tracker, r, text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + log = this; + _tuple = allowOverride(log.Overrides, id, kind); + override = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + $r = log.AddMsg($clone(new Msg.ptr(sliceType$5.nil, "", $clone(tracker.MsgData($clone(r, Range), text), MsgData), override, id), Msg)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: AddID, $c: true, $r, _tuple, id, kind, log, ok, override, r, text, tracker, $s};return $f; + }; + Log.prototype.AddID = function(...$args) { return this.$val.AddID(...$args); }; + $ptrType(Log).prototype.AddErrorWithNotes = function AddErrorWithNotes(tracker, r, text, notes) { + var {log, notes, r, text, tracker, $s, $r, $c} = $restore(this, {tracker, r, text, notes}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + log = this; + $r = log.AddMsg($clone(new Msg.ptr(notes, "", $clone(tracker.MsgData($clone(r, Range), text), MsgData), 0, 0), Msg)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: AddErrorWithNotes, $c: true, $r, log, notes, r, text, tracker, $s};return $f; + }; + Log.prototype.AddErrorWithNotes = function(...$args) { return this.$val.AddErrorWithNotes(...$args); }; + $ptrType(Log).prototype.AddIDWithNotes = function AddIDWithNotes(id, kind, tracker, r, text, notes) { + var {_tuple, id, kind, log, notes, ok, override, r, text, tracker, $s, $r, $c} = $restore(this, {id, kind, tracker, r, text, notes}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + log = this; + _tuple = allowOverride(log.Overrides, id, kind); + override = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + $r = log.AddMsg($clone(new Msg.ptr(notes, "", $clone(tracker.MsgData($clone(r, Range), text), MsgData), override, id), Msg)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: AddIDWithNotes, $c: true, $r, _tuple, id, kind, log, notes, ok, override, r, text, tracker, $s};return $f; + }; + Log.prototype.AddIDWithNotes = function(...$args) { return this.$val.AddIDWithNotes(...$args); }; + $ptrType(Log).prototype.AddMsgID = function AddMsgID(id, msg) { + var {_tuple, id, log, msg, ok, override, $s, $r, $c} = $restore(this, {id, msg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + log = this; + _tuple = allowOverride(log.Overrides, id, msg.Kind); + override = _tuple[0]; + ok = _tuple[1]; + /* */ if (ok) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (ok) { */ case 1: + msg.ID = id; + msg.Kind = override; + $r = log.AddMsg($clone(msg, Msg)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: AddMsgID, $c: true, $r, _tuple, id, log, msg, ok, override, $s};return $f; + }; + Log.prototype.AddMsgID = function(...$args) { return this.$val.AddMsgID(...$args); }; + allowOverride = function allowOverride$1(overrides, id, kind) { + var _1, _entry, _tuple, id, kind, logLevel, ok, overrides; + _tuple = (_entry = $mapIndex(overrides,$Uint8.keyFor(id)), _entry !== undefined ? [_entry.v, true] : [0, false]); + logLevel = _tuple[0]; + ok = _tuple[1]; + if (ok) { + _1 = logLevel; + if (_1 === (1)) { + return [5, true]; + } else if (_1 === (2)) { + return [4, true]; + } else if (_1 === (3)) { + return [2, true]; + } else if (_1 === (4)) { + return [1, true]; + } else if (_1 === (5)) { + return [0, true]; + } else { + return [0, false]; + } + } + return [kind, true]; + }; + GenerateStringInJSTable = function GenerateStringInJSTable$1(outerContents, outerStringLiteralLoc, innerContents) { + var _1, _2, _3, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, c, c$1, c$2, column, i, innerContents, last, line, loc, n, outerContents, outerStringLiteralLoc, table, width, width$1, x; + table = sliceType$6.nil; + i = 0; + n = ((innerContents.length >> 0)); + line = 1; + column = 0; + loc = new Loc.ptr(outerStringLiteralLoc.Start + 1 >> 0); + while (true) { + if (!(i < n)) { break; } + while (true) { + _tuple = utf8.DecodeRuneInString($substring(outerContents, loc.Start)); + c = _tuple[0]; + if (!((c === 92))) { + break; + } + _tuple$1 = utf8.DecodeRuneInString($substring(outerContents, (loc.Start + 1 >> 0))); + c$1 = _tuple$1[0]; + width = _tuple$1[1]; + _1 = c$1; + if ((_1 === (10)) || (_1 === (13)) || (_1 === (8232)) || (_1 === (8233))) { + loc.Start = loc.Start + ((1 + ((width >> 0)) >> 0)) >> 0; + if ((c$1 === 13) && (outerContents.charCodeAt(loc.Start) === 10)) { + loc.Start = loc.Start + (1) >> 0; + } + continue; + } + break; + } + _tuple$2 = utf8.DecodeRuneInString($substring(innerContents, i)); + c$2 = _tuple$2[0]; + width$1 = _tuple$2[1]; + table = $append(table, new StringInJSTableEntry.ptr(line, column, $clone(new Loc.ptr(i), Loc), $clone(loc, Loc))); + if (table.$length > 1) { + last = $clone((x = table.$length - 2 >> 0, ((x < 0 || x >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x])), StringInJSTableEntry); + if ((line === last.innerLine) && ((loc.Start - column >> 0) === (last.outerLoc.Start - last.innerColumn >> 0))) { + table = $subslice(table, 0, (table.$length - 1 >> 0)); + } + } + _2 = c$2; + if ((_2 === (10)) || (_2 === (13)) || (_2 === (8232)) || (_2 === (8233))) { + line = line + (1) >> 0; + column = 0; + if ((c$2 === 13) && (i + 1 >> 0) < n && (innerContents.charCodeAt((i + 1 >> 0)) === 10)) { + i = i + (1) >> 0; + } + } else { + column = column + (((width$1 >> 0))) >> 0; + } + i = i + (((width$1 >> 0))) >> 0; + _tuple$3 = utf8.DecodeRuneInString($substring(outerContents, loc.Start)); + c$2 = _tuple$3[0]; + width$1 = _tuple$3[1]; + if ((c$2 === 13) && (outerContents.charCodeAt((loc.Start + 1 >> 0)) === 10)) { + loc.Start = loc.Start + (2) >> 0; + } else if (!((c$2 === 92))) { + loc.Start = loc.Start + (((width$1 >> 0))) >> 0; + } else { + _tuple$4 = utf8.DecodeRuneInString($substring(outerContents, (loc.Start + 1 >> 0))); + c$2 = _tuple$4[0]; + width$1 = _tuple$4[1]; + switch (0) { default: + _3 = c$2; + if (_3 === (120)) { + loc.Start = loc.Start + (3) >> 0; + } else if (_3 === (117)) { + loc.Start = loc.Start + (1) >> 0; + if (outerContents.charCodeAt(loc.Start) === 123) { + while (true) { + if (!(!((outerContents.charCodeAt(loc.Start) === 125)))) { break; } + loc.Start = loc.Start + (1) >> 0; + } + loc.Start = loc.Start + (1) >> 0; + } else { + loc.Start = loc.Start + (4) >> 0; + } + } else if ((_3 === (10)) || (_3 === (13)) || (_3 === (8232)) || (_3 === (8233))) { + break; + } else { + loc.Start = loc.Start + ((1 + ((width$1 >> 0)) >> 0)) >> 0; + } + } + } + } + return table; + }; + $pkg.GenerateStringInJSTable = GenerateStringInJSTable; + RemapStringInJSLoc = function RemapStringInJSLoc$1(table, innerLoc) { + var _q, count, entry, entry$1, i, index, innerLoc, step, table, x; + count = table.$length; + index = 0; + while (true) { + if (!(count > 0)) { break; } + step = (_q = count / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + i = index + step >> 0; + if ((i + 1 >> 0) < table.$length) { + entry = $clone((x = i + 1 >> 0, ((x < 0 || x >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x])), StringInJSTableEntry); + if (entry.innerLoc.Start < innerLoc.Start) { + index = i + 1 >> 0; + count = count - ((step + 1 >> 0)) >> 0; + continue; + } + } + count = step; + } + entry$1 = $clone(((index < 0 || index >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + index]), StringInJSTableEntry); + entry$1.outerLoc.Start = entry$1.outerLoc.Start + ((innerLoc.Start - entry$1.innerLoc.Start >> 0)) >> 0; + return entry$1.outerLoc; + }; + $pkg.RemapStringInJSLoc = RemapStringInJSLoc; + NewStringInJSLog = function NewStringInJSLog$1(log, outerTracker, table) { + var log, oldAddMsg, outerTracker, remapData, remapLineAndColumnToLoc, table; + oldAddMsg = log.AddMsg; + remapLineAndColumnToLoc = (function NewStringInJSLog·func1(line, column) { + var _q, column, count, entry, entry$1, i, index, line, step, x; + count = table.$length; + index = 0; + while (true) { + if (!(count > 0)) { break; } + step = (_q = count / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + i = index + step >> 0; + if ((i + 1 >> 0) < table.$length) { + entry = $clone((x = i + 1 >> 0, ((x < 0 || x >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + x])), StringInJSTableEntry); + if (entry.innerLine < line || ((entry.innerLine === line) && entry.innerColumn < column)) { + index = i + 1 >> 0; + count = count - ((step + 1 >> 0)) >> 0; + continue; + } + } + count = step; + } + entry$1 = $clone(((index < 0 || index >= table.$length) ? ($throwRuntimeError("index out of range"), undefined) : table.$array[table.$offset + index]), StringInJSTableEntry); + entry$1.outerLoc.Start = entry$1.outerLoc.Start + ((column - entry$1.innerColumn >> 0)) >> 0; + return entry$1.outerLoc; + }); + remapData = (function NewStringInJSLog·func2(data) { + var {_r, _r$1, data, location, r, $s, $r, $c} = $restore(this, {data}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + if (data.Location === ptrType.nil) { + $s = -1; return data; + } + _r = remapLineAndColumnToLoc(((data.Location.Line >> 0)), ((data.Location.Column >> 0))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + r = new Range.ptr($clone(_r, Loc), 0); + /* */ if (!((data.Location.Length === 0))) { $s = 2; continue; } + /* */ $s = 3; continue; + /* if (!((data.Location.Length === 0))) { */ case 2: + _r$1 = remapLineAndColumnToLoc(((data.Location.Line >> 0)), (((data.Location.Column + data.Location.Length >> 0) >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + r.Len = _r$1.Start - r.Loc.Start >> 0; + /* } */ case 3: + location = outerTracker.MsgData($clone(r, Range), data.Text).Location; + location.Suggestion = data.Location.Suggestion; + data.Location = location; + $s = -1; return data; + /* */ } return; } var $f = {$blk: NewStringInJSLog·func2, $c: true, $r, _r, _r$1, data, location, r, $s};return $f; + }); + log.AddMsg = (function NewStringInJSLog·func3(msg) { + var {_i, _r, _r$1, _ref, i, msg, note, x, $s, $r, $c} = $restore(this, {msg}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = remapData($clone(msg.Data, MsgData)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + MsgData.copy(msg.Data, _r); + _ref = msg.Notes; + _i = 0; + /* while (true) { */ case 2: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; } + i = _i; + note = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), MsgData); + _r$1 = remapData($clone(note, MsgData)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + MsgData.copy((x = msg.Notes, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])), _r$1); + _i++; + $s = 2; continue; + case 3: + $r = oldAddMsg($clone(msg, Msg)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: NewStringInJSLog·func3, $c: true, $r, _i, _r, _r$1, _ref, i, msg, note, x, $s};return $f; + }); + return log; + }; + $pkg.NewStringInJSLog = NewStringInJSLog; + Log.methods = [{prop: "AddError", name: "AddError", pkg: "", typ: $funcType([ptrType$4, Range, $String], [], false)}, {prop: "AddID", name: "AddID", pkg: "", typ: $funcType([$Uint8, MsgKind, ptrType$4, Range, $String], [], false)}, {prop: "AddErrorWithNotes", name: "AddErrorWithNotes", pkg: "", typ: $funcType([ptrType$4, Range, $String, sliceType$5], [], false)}, {prop: "AddIDWithNotes", name: "AddIDWithNotes", pkg: "", typ: $funcType([$Uint8, MsgKind, ptrType$4, Range, $String, sliceType$5], [], false)}, {prop: "AddMsgID", name: "AddMsgID", pkg: "", typ: $funcType([$Uint8, Msg], [], false)}]; + MsgKind.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Icon", name: "Icon", pkg: "", typ: $funcType([], [$String], false)}]; + Msg.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([OutputOptions, TerminalInfo], [$String], false)}]; + Range.methods = [{prop: "End", name: "End", pkg: "", typ: $funcType([], [$Int32], false)}]; + ptrType$5.methods = [{prop: "ExpandBy", name: "ExpandBy", pkg: "", typ: $funcType([Range], [], false)}]; + SortableMsgs.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}]; + Path.methods = [{prop: "IsDisabled", name: "IsDisabled", pkg: "", typ: $funcType([], [$Bool], false)}]; + ImportAttributes.methods = [{prop: "DecodeIntoArray", name: "DecodeIntoArray", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "DecodeIntoMap", name: "DecodeIntoMap", pkg: "", typ: $funcType([], [mapType$1], false)}]; + ptrType$3.methods = [{prop: "TextForRange", name: "TextForRange", pkg: "", typ: $funcType([Range], [$String], false)}, {prop: "LocBeforeWhitespace", name: "LocBeforeWhitespace", pkg: "", typ: $funcType([Loc], [Loc], false)}, {prop: "RangeOfOperatorBefore", name: "RangeOfOperatorBefore", pkg: "", typ: $funcType([Loc, $String], [Range], false)}, {prop: "RangeOfOperatorAfter", name: "RangeOfOperatorAfter", pkg: "", typ: $funcType([Loc, $String], [Range], false)}, {prop: "RangeOfString", name: "RangeOfString", pkg: "", typ: $funcType([Loc], [Range], false)}, {prop: "RangeOfNumber", name: "RangeOfNumber", pkg: "", typ: $funcType([Loc], [Range], false)}, {prop: "RangeOfLegacyOctalEscape", name: "RangeOfLegacyOctalEscape", pkg: "", typ: $funcType([Loc], [Range], false)}, {prop: "CommentTextWithoutIndent", name: "CommentTextWithoutIndent", pkg: "", typ: $funcType([Range], [$String], false)}]; + ptrType$4.methods = [{prop: "MsgData", name: "MsgData", pkg: "", typ: $funcType([Range, $String], [MsgData], false)}, {prop: "scanTo", name: "scanTo", pkg: "github.com/evanw/esbuild/internal/logger", typ: $funcType([$Int32], [], false)}, {prop: "computeLineAndColumn", name: "computeLineAndColumn", pkg: "github.com/evanw/esbuild/internal/logger", typ: $funcType([$Int], [$Int, $Int, $Int, $Int], false)}, {prop: "MsgLocationOrNil", name: "MsgLocationOrNil", pkg: "", typ: $funcType([Range], [ptrType], false)}]; + Log.init("", [{prop: "AddMsg", name: "AddMsg", embedded: false, exported: true, typ: funcType, tag: ""}, {prop: "HasErrors", name: "HasErrors", embedded: false, exported: true, typ: funcType$1, tag: ""}, {prop: "Peek", name: "Peek", embedded: false, exported: true, typ: funcType$2, tag: ""}, {prop: "Done", name: "Done", embedded: false, exported: true, typ: funcType$2, tag: ""}, {prop: "Level", name: "Level", embedded: false, exported: true, typ: LogLevel, tag: ""}, {prop: "Overrides", name: "Overrides", embedded: false, exported: true, typ: mapType, tag: ""}]); + Msg.init("", [{prop: "Notes", name: "Notes", embedded: false, exported: true, typ: sliceType$5, tag: ""}, {prop: "PluginName", name: "PluginName", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Data", name: "Data", embedded: false, exported: true, typ: MsgData, tag: ""}, {prop: "Kind", name: "Kind", embedded: false, exported: true, typ: MsgKind, tag: ""}, {prop: "ID", name: "ID", embedded: false, exported: true, typ: $Uint8, tag: ""}]); + MsgData.init("", [{prop: "UserDetail", name: "UserDetail", embedded: false, exported: true, typ: $emptyInterface, tag: ""}, {prop: "Location", name: "Location", embedded: false, exported: true, typ: ptrType, tag: ""}, {prop: "Text", name: "Text", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "DisableMaximumWidth", name: "DisableMaximumWidth", embedded: false, exported: true, typ: $Bool, tag: ""}]); + MsgLocation.init("", [{prop: "File", name: "File", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Namespace", name: "Namespace", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "LineText", name: "LineText", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Suggestion", name: "Suggestion", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Line", name: "Line", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Column", name: "Column", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Length", name: "Length", embedded: false, exported: true, typ: $Int, tag: ""}]); + Loc.init("", [{prop: "Start", name: "Start", embedded: false, exported: true, typ: $Int32, tag: ""}]); + Range.init("", [{prop: "Loc", name: "Loc", embedded: false, exported: true, typ: Loc, tag: ""}, {prop: "Len", name: "Len", embedded: false, exported: true, typ: $Int32, tag: ""}]); + Span.init("", [{prop: "Text", name: "Text", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Range", name: "Range", embedded: false, exported: true, typ: Range, tag: ""}]); + SortableMsgs.init(Msg); + Path.init("", [{prop: "Text", name: "Text", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Namespace", name: "Namespace", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "IgnoredSuffix", name: "IgnoredSuffix", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ImportAttributes", name: "ImportAttributes", embedded: false, exported: true, typ: ImportAttributes, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: PathFlags, tag: ""}]); + ImportAttributes.init("github.com/evanw/esbuild/internal/logger", [{prop: "packedData", name: "packedData", embedded: false, exported: false, typ: $String, tag: ""}]); + ImportAttribute.init("", [{prop: "Key", name: "Key", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: $String, tag: ""}]); + Source.init("", [{prop: "PrettyPath", name: "PrettyPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "IdentifierName", name: "IdentifierName", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Contents", name: "Contents", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "KeyPath", name: "KeyPath", embedded: false, exported: true, typ: Path, tag: ""}, {prop: "Index", name: "Index", embedded: false, exported: true, typ: $Uint32, tag: ""}]); + TerminalInfo.init("", [{prop: "IsTTY", name: "IsTTY", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "UseColorEscapes", name: "UseColorEscapes", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Width", name: "Width", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Height", name: "Height", embedded: false, exported: true, typ: $Int, tag: ""}]); + Colors.init("", [{prop: "Reset", name: "Reset", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Bold", name: "Bold", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Dim", name: "Dim", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Underline", name: "Underline", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Red", name: "Red", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Green", name: "Green", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Blue", name: "Blue", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Cyan", name: "Cyan", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Magenta", name: "Magenta", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Yellow", name: "Yellow", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "RedBgRed", name: "RedBgRed", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "RedBgWhite", name: "RedBgWhite", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "GreenBgGreen", name: "GreenBgGreen", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "GreenBgWhite", name: "GreenBgWhite", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "BlueBgBlue", name: "BlueBgBlue", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "BlueBgWhite", name: "BlueBgWhite", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "CyanBgCyan", name: "CyanBgCyan", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "CyanBgBlack", name: "CyanBgBlack", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "MagentaBgMagenta", name: "MagentaBgMagenta", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "MagentaBgBlack", name: "MagentaBgBlack", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "YellowBgYellow", name: "YellowBgYellow", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "YellowBgBlack", name: "YellowBgBlack", embedded: false, exported: true, typ: $String, tag: ""}]); + OutputOptions.init("", [{prop: "MessageLimit", name: "MessageLimit", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "IncludeSource", name: "IncludeSource", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "Color", name: "Color", embedded: false, exported: true, typ: UseColor, tag: ""}, {prop: "LogLevel", name: "LogLevel", embedded: false, exported: true, typ: LogLevel, tag: ""}, {prop: "Overrides", name: "Overrides", embedded: false, exported: true, typ: mapType, tag: ""}]); + MsgDetail.init("", [{prop: "SourceBefore", name: "SourceBefore", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "SourceMarked", name: "SourceMarked", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "SourceAfter", name: "SourceAfter", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Indent", name: "Indent", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Marker", name: "Marker", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Suggestion", name: "Suggestion", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "ContentAfter", name: "ContentAfter", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Line", name: "Line", embedded: false, exported: true, typ: $Int, tag: ""}, {prop: "Column", name: "Column", embedded: false, exported: true, typ: $Int, tag: ""}]); + LineColumnTracker.init("github.com/evanw/esbuild/internal/logger", [{prop: "contents", name: "contents", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "prettyPath", name: "prettyPath", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "line", name: "line", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "lineStart", name: "lineStart", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "lineEnd", name: "lineEnd", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "hasLineStart", name: "hasLineStart", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "hasLineEnd", name: "hasLineEnd", embedded: false, exported: false, typ: $Bool, tag: ""}, {prop: "hasSource", name: "hasSource", embedded: false, exported: false, typ: $Bool, tag: ""}]); + StringInJSTableEntry.init("github.com/evanw/esbuild/internal/logger", [{prop: "innerLine", name: "innerLine", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "innerColumn", name: "innerColumn", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "innerLoc", name: "innerLoc", embedded: false, exported: false, typ: Loc, tag: ""}, {prop: "outerLoc", name: "outerLoc", embedded: false, exported: false, typ: Loc, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = os.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + windowsCommandPrompt = new structType.ptr(new sync.Mutex.ptr(0, 0), false, false); + $pkg.API = 0; + $pkg.TerminalColors = new Colors.ptr("\x1B[0m", "\x1B[1m", "\x1B[37m", "\x1B[4m", "\x1B[31m", "\x1B[32m", "\x1B[34m", "\x1B[36m", "\x1B[35m", "\x1B[33m", "\x1B[41;31m", "\x1B[41;97m", "\x1B[42;32m", "\x1B[42;97m", "\x1B[44;34m", "\x1B[44;97m", "\x1B[46;36m", "\x1B[46;30m", "\x1B[45;35m", "\x1B[45;30m", "\x1B[43;33m", "\x1B[43;30m"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["net/url"] = (function() { + var $pkg = {}, $init, errors, fmt, path, sort, strconv, strings, Error, EscapeError, InvalidHostError, URL, Userinfo, Values, sliceType, interfaceType, interfaceType$1, ptrType, sliceType$1, arrayType, ptrType$1, ptrType$2, sliceType$2, ptrType$3, ishex, unhex, shouldEscape, QueryUnescape, PathUnescape, unescape, QueryEscape, escape, User, UserPassword, getScheme, Parse, ParseRequestURI, parse, parseAuthority, parseHost, validEncoded, validOptionalPort, ParseQuery, parseQuery, resolvePath, splitHostPort, validUserinfo, stringContainsCTLByte; + errors = $packages["errors"]; + fmt = $packages["fmt"]; + path = $packages["path"]; + sort = $packages["sort"]; + strconv = $packages["strconv"]; + strings = $packages["strings"]; + Error = $newType(0, $kindStruct, "url.Error", true, "net/url", true, function(Op_, URL_, Err_) { + this.$val = this; + if (arguments.length === 0) { + this.Op = ""; + this.URL = ""; + this.Err = $ifaceNil; + return; + } + this.Op = Op_; + this.URL = URL_; + this.Err = Err_; + }); + EscapeError = $newType(8, $kindString, "url.EscapeError", true, "net/url", true, null); + InvalidHostError = $newType(8, $kindString, "url.InvalidHostError", true, "net/url", true, null); + URL = $newType(0, $kindStruct, "url.URL", true, "net/url", true, function(Scheme_, Opaque_, User_, Host_, Path_, RawPath_, OmitHost_, ForceQuery_, RawQuery_, Fragment_, RawFragment_) { + this.$val = this; + if (arguments.length === 0) { + this.Scheme = ""; + this.Opaque = ""; + this.User = ptrType$1.nil; + this.Host = ""; + this.Path = ""; + this.RawPath = ""; + this.OmitHost = false; + this.ForceQuery = false; + this.RawQuery = ""; + this.Fragment = ""; + this.RawFragment = ""; + return; + } + this.Scheme = Scheme_; + this.Opaque = Opaque_; + this.User = User_; + this.Host = Host_; + this.Path = Path_; + this.RawPath = RawPath_; + this.OmitHost = OmitHost_; + this.ForceQuery = ForceQuery_; + this.RawQuery = RawQuery_; + this.Fragment = Fragment_; + this.RawFragment = RawFragment_; + }); + Userinfo = $newType(0, $kindStruct, "url.Userinfo", true, "net/url", true, function(username_, password_, passwordSet_) { + this.$val = this; + if (arguments.length === 0) { + this.username = ""; + this.password = ""; + this.passwordSet = false; + return; + } + this.username = username_; + this.password = password_; + this.passwordSet = passwordSet_; + }); + Values = $newType(4, $kindMap, "url.Values", true, "net/url", true, null); + $pkg.Error = Error; + $pkg.EscapeError = EscapeError; + $pkg.InvalidHostError = InvalidHostError; + $pkg.URL = URL; + $pkg.Userinfo = Userinfo; + $pkg.Values = Values; + $pkg.$finishSetup = function() { + sliceType = $sliceType($emptyInterface); + interfaceType = $interfaceType([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]); + interfaceType$1 = $interfaceType([{prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]); + ptrType = $ptrType(strings.Builder); + sliceType$1 = $sliceType($Uint8); + arrayType = $arrayType($Uint8, 64); + ptrType$1 = $ptrType(Userinfo); + ptrType$2 = $ptrType(URL); + sliceType$2 = $sliceType($String); + ptrType$3 = $ptrType(Error); + $ptrType(Error).prototype.Unwrap = function Unwrap() { + var e; + e = this; + return e.Err; + }; + $ptrType(Error).prototype.Error = function Error$1() { + var {$24r, _r, e, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _r = fmt.Sprintf("%s %q: %s", new sliceType([new $String(e.Op), new $String(e.URL), e.Err])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 2; case 2: return $24r; + /* */ } return; } var $f = {$blk: Error$1, $c: true, $r, $24r, _r, e, $s};return $f; + }; + $ptrType(Error).prototype.Timeout = function Timeout() { + var {$24r, _r, _tuple, _v, e, ok, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _tuple = $assertType(e.Err, interfaceType, true); + t = _tuple[0]; + ok = _tuple[1]; + if (!(ok)) { _v = false; $s = 1; continue s; } + _r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 1: + $24r = _v; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Timeout, $c: true, $r, $24r, _r, _tuple, _v, e, ok, t, $s};return $f; + }; + $ptrType(Error).prototype.Temporary = function Temporary() { + var {$24r, _r, _tuple, _v, e, ok, t, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + e = this; + _tuple = $assertType(e.Err, interfaceType$1, true); + t = _tuple[0]; + ok = _tuple[1]; + if (!(ok)) { _v = false; $s = 1; continue s; } + _r = t.Temporary(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _v = _r; case 1: + $24r = _v; + $s = 3; case 3: return $24r; + /* */ } return; } var $f = {$blk: Temporary, $c: true, $r, $24r, _r, _tuple, _v, e, ok, t, $s};return $f; + }; + ishex = function ishex$1(c) { + var c; + if (48 <= c && c <= 57) { + return true; + } else if (97 <= c && c <= 102) { + return true; + } else if (65 <= c && c <= 70) { + return true; + } + return false; + }; + unhex = function unhex$1(c) { + var c; + if (48 <= c && c <= 57) { + return c - 48 << 24 >>> 24; + } else if (97 <= c && c <= 102) { + return (c - 97 << 24 >>> 24) + 10 << 24 >>> 24; + } else if (65 <= c && c <= 70) { + return (c - 65 << 24 >>> 24) + 10 << 24 >>> 24; + } + return 0; + }; + EscapeError.prototype.Error = function Error$2() { + var e; + e = this.$val; + return "invalid URL escape " + strconv.Quote((e)); + }; + $ptrType(EscapeError).prototype.Error = function(...$args) { return new EscapeError(this.$get()).Error(...$args); }; + InvalidHostError.prototype.Error = function Error$3() { + var e; + e = this.$val; + return "invalid character " + strconv.Quote((e)) + " in host name"; + }; + $ptrType(InvalidHostError).prototype.Error = function(...$args) { return new InvalidHostError(this.$get()).Error(...$args); }; + shouldEscape = function shouldEscape$1(c, mode) { + var _1, _2, _3, _4, c, mode; + if (97 <= c && c <= 122 || 65 <= c && c <= 90 || 48 <= c && c <= 57) { + return false; + } + if ((mode === 3) || (mode === 4)) { + _1 = c; + if ((_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (58)) || (_1 === (91)) || (_1 === (93)) || (_1 === (60)) || (_1 === (62)) || (_1 === (34))) { + return false; + } + } + _2 = c; + if ((_2 === (45)) || (_2 === (95)) || (_2 === (46)) || (_2 === (126))) { + return false; + } else if ((_2 === (36)) || (_2 === (38)) || (_2 === (43)) || (_2 === (44)) || (_2 === (47)) || (_2 === (58)) || (_2 === (59)) || (_2 === (61)) || (_2 === (63)) || (_2 === (64))) { + _3 = mode; + if (_3 === (1)) { + return c === 63; + } else if (_3 === (2)) { + return (c === 47) || (c === 59) || (c === 44) || (c === 63); + } else if (_3 === (5)) { + return (c === 64) || (c === 47) || (c === 63) || (c === 58); + } else if (_3 === (6)) { + return true; + } else if (_3 === (7)) { + return false; + } + } + if (mode === 7) { + _4 = c; + if ((_4 === (33)) || (_4 === (40)) || (_4 === (41)) || (_4 === (42))) { + return false; + } + } + return true; + }; + QueryUnescape = function QueryUnescape$1(s) { + var s; + return unescape(s, 6); + }; + $pkg.QueryUnescape = QueryUnescape; + PathUnescape = function PathUnescape$1(s) { + var s; + return unescape(s, 2); + }; + $pkg.PathUnescape = PathUnescape; + unescape = function unescape$1(s, mode) { + var _1, _2, hasPlus, i, i$1, mode, n, s, t, v; + n = 0; + hasPlus = false; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + _1 = s.charCodeAt(i); + if (_1 === (37)) { + n = n + (1) >> 0; + if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) { + s = $substring(s, i); + if (s.length > 3) { + s = $substring(s, 0, 3); + } + return ["", new EscapeError((s))]; + } + if ((mode === 3) && unhex(s.charCodeAt((i + 1 >> 0))) < 8 && !($substring(s, i, (i + 3 >> 0)) === "%25")) { + return ["", new EscapeError(($substring(s, i, (i + 3 >> 0))))]; + } + if (mode === 4) { + v = ((unhex(s.charCodeAt((i + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i + 2 >> 0)))) >>> 0; + if (!($substring(s, i, (i + 3 >> 0)) === "%25") && !((v === 32)) && shouldEscape(v, 3)) { + return ["", new EscapeError(($substring(s, i, (i + 3 >> 0))))]; + } + } + i = i + (3) >> 0; + } else if (_1 === (43)) { + hasPlus = mode === 6; + i = i + (1) >> 0; + } else { + if (((mode === 3) || (mode === 4)) && s.charCodeAt(i) < 128 && shouldEscape(s.charCodeAt(i), mode)) { + return ["", new InvalidHostError(($substring(s, i, (i + 1 >> 0))))]; + } + i = i + (1) >> 0; + } + } + if ((n === 0) && !hasPlus) { + return [s, $ifaceNil]; + } + t = new strings.Builder.ptr(ptrType.nil, sliceType$1.nil); + t.Grow(s.length - ($imul(2, n)) >> 0); + i$1 = 0; + while (true) { + if (!(i$1 < s.length)) { break; } + _2 = s.charCodeAt(i$1); + if (_2 === (37)) { + t.WriteByte(((unhex(s.charCodeAt((i$1 + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i$1 + 2 >> 0)))) >>> 0); + i$1 = i$1 + (2) >> 0; + } else if (_2 === (43)) { + if (mode === 6) { + t.WriteByte(32); + } else { + t.WriteByte(43); + } + } else { + t.WriteByte(s.charCodeAt(i$1)); + } + i$1 = i$1 + (1) >> 0; + } + return [t.String(), $ifaceNil]; + }; + QueryEscape = function QueryEscape$1(s) { + var s; + return escape(s, 6); + }; + $pkg.QueryEscape = QueryEscape; + escape = function escape$1(s, mode) { + var _tmp, _tmp$1, buf, c, c$1, hexCount, i, i$1, i$2, j, mode, required, s, spaceCount, t, x, x$1; + _tmp = 0; + _tmp$1 = 0; + spaceCount = _tmp; + hexCount = _tmp$1; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + c = s.charCodeAt(i); + if (shouldEscape(c, mode)) { + if ((c === 32) && (mode === 6)) { + spaceCount = spaceCount + (1) >> 0; + } else { + hexCount = hexCount + (1) >> 0; + } + } + i = i + (1) >> 0; + } + if ((spaceCount === 0) && (hexCount === 0)) { + return s; + } + buf = arrayType.zero(); + t = sliceType$1.nil; + required = s.length + ($imul(2, hexCount)) >> 0; + if (required <= 64) { + t = $subslice(new sliceType$1(buf), 0, required); + } else { + t = $makeSlice(sliceType$1, required); + } + if (hexCount === 0) { + $copyString(t, s); + i$1 = 0; + while (true) { + if (!(i$1 < s.length)) { break; } + if (s.charCodeAt(i$1) === 32) { + ((i$1 < 0 || i$1 >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + i$1] = 43); + } + i$1 = i$1 + (1) >> 0; + } + return ($bytesToString(t)); + } + j = 0; + i$2 = 0; + while (true) { + if (!(i$2 < s.length)) { break; } + c$1 = s.charCodeAt(i$2); + if ((c$1 === 32) && (mode === 6)) { + ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 43); + j = j + (1) >> 0; + } else if (shouldEscape(c$1, mode)) { + ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = 37); + (x = j + 1 >> 0, ((x < 0 || x >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x] = "0123456789ABCDEF".charCodeAt((c$1 >>> 4 << 24 >>> 24)))); + (x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + x$1] = "0123456789ABCDEF".charCodeAt(((c$1 & 15) >>> 0)))); + j = j + (3) >> 0; + } else { + ((j < 0 || j >= t.$length) ? ($throwRuntimeError("index out of range"), undefined) : t.$array[t.$offset + j] = s.charCodeAt(i$2)); + j = j + (1) >> 0; + } + i$2 = i$2 + (1) >> 0; + } + return ($bytesToString(t)); + }; + User = function User$1(username) { + var username; + return new Userinfo.ptr(username, "", false); + }; + $pkg.User = User; + UserPassword = function UserPassword$1(username, password) { + var password, username; + return new Userinfo.ptr(username, password, true); + }; + $pkg.UserPassword = UserPassword; + $ptrType(Userinfo).prototype.Username = function Username() { + var u; + u = this; + if (u === ptrType$1.nil) { + return ""; + } + return u.username; + }; + $ptrType(Userinfo).prototype.Password = function Password() { + var u; + u = this; + if (u === ptrType$1.nil) { + return ["", false]; + } + return [u.password, u.passwordSet]; + }; + $ptrType(Userinfo).prototype.String = function String() { + var s, u; + u = this; + if (u === ptrType$1.nil) { + return ""; + } + s = escape(u.username, 5); + if (u.passwordSet) { + s = s + (":" + escape(u.password, 5)); + } + return s; + }; + getScheme = function getScheme$1(rawURL) { + var _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, err, i, path$1, rawURL, scheme; + scheme = ""; + path$1 = ""; + err = $ifaceNil; + i = 0; + while (true) { + if (!(i < rawURL.length)) { break; } + c = rawURL.charCodeAt(i); + if (97 <= c && c <= 122 || 65 <= c && c <= 90) { + } else if (48 <= c && c <= 57 || (c === 43) || (c === 45) || (c === 46)) { + if (i === 0) { + _tmp = ""; + _tmp$1 = rawURL; + _tmp$2 = $ifaceNil; + scheme = _tmp; + path$1 = _tmp$1; + err = _tmp$2; + return [scheme, path$1, err]; + } + } else if ((c === 58)) { + if (i === 0) { + _tmp$3 = ""; + _tmp$4 = ""; + _tmp$5 = errors.New("missing protocol scheme"); + scheme = _tmp$3; + path$1 = _tmp$4; + err = _tmp$5; + return [scheme, path$1, err]; + } + _tmp$6 = $substring(rawURL, 0, i); + _tmp$7 = $substring(rawURL, (i + 1 >> 0)); + _tmp$8 = $ifaceNil; + scheme = _tmp$6; + path$1 = _tmp$7; + err = _tmp$8; + return [scheme, path$1, err]; + } else { + _tmp$9 = ""; + _tmp$10 = rawURL; + _tmp$11 = $ifaceNil; + scheme = _tmp$9; + path$1 = _tmp$10; + err = _tmp$11; + return [scheme, path$1, err]; + } + i = i + (1) >> 0; + } + _tmp$12 = ""; + _tmp$13 = rawURL; + _tmp$14 = $ifaceNil; + scheme = _tmp$12; + path$1 = _tmp$13; + err = _tmp$14; + return [scheme, path$1, err]; + }; + Parse = function Parse$1(rawURL) { + var {_r, _tuple, _tuple$1, err, frag, rawURL, u, url, $s, $r, $c} = $restore(this, {rawURL}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _tuple = strings.Cut(rawURL, "#"); + u = _tuple[0]; + frag = _tuple[1]; + _r = parse(u, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple$1 = _r; + url = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, new Error.ptr("parse", u, err)]; + } + if (frag === "") { + $s = -1; return [url, $ifaceNil]; + } + err = url.setFragment(frag); + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, new Error.ptr("parse", rawURL, err)]; + } + $s = -1; return [url, $ifaceNil]; + /* */ } return; } var $f = {$blk: Parse$1, $c: true, $r, _r, _tuple, _tuple$1, err, frag, rawURL, u, url, $s};return $f; + }; + $pkg.Parse = Parse; + ParseRequestURI = function ParseRequestURI$1(rawURL) { + var {_r, _tuple, err, rawURL, url, $s, $r, $c} = $restore(this, {rawURL}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = parse(rawURL, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + url = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, new Error.ptr("parse", rawURL, err)]; + } + $s = -1; return [url, $ifaceNil]; + /* */ } return; } var $f = {$blk: ParseRequestURI$1, $c: true, $r, _r, _tuple, err, rawURL, url, $s};return $f; + }; + $pkg.ParseRequestURI = ParseRequestURI; + parse = function parse$1(rawURL, viaRequest) { + var {_r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, _tuple$3, authority, err, err$1, i, rawURL, rest, segment, url, viaRequest, $s, $r, $c} = $restore(this, {rawURL, viaRequest}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + rest = ""; + err = $ifaceNil; + if (stringContainsCTLByte(rawURL)) { + $s = -1; return [ptrType$2.nil, errors.New("net/url: invalid control character in URL")]; + } + if (rawURL === "" && viaRequest) { + $s = -1; return [ptrType$2.nil, errors.New("empty url")]; + } + url = new URL.ptr("", "", ptrType$1.nil, "", "", "", false, false, "", "", ""); + if (rawURL === "*") { + url.Path = "*"; + $s = -1; return [url, $ifaceNil]; + } + _tuple = getScheme(rawURL); + url.Scheme = _tuple[0]; + rest = _tuple[1]; + err = _tuple[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, err]; + } + _r = strings.ToLower(url.Scheme); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + url.Scheme = _r; + if (strings.HasSuffix(rest, "?") && (strings.Count(rest, "?") === 1)) { + url.ForceQuery = true; + rest = $substring(rest, 0, (rest.length - 1 >> 0)); + } else { + _tuple$1 = strings.Cut(rest, "?"); + rest = _tuple$1[0]; + url.RawQuery = _tuple$1[1]; + } + if (!strings.HasPrefix(rest, "/")) { + if (!(url.Scheme === "")) { + url.Opaque = rest; + $s = -1; return [url, $ifaceNil]; + } + if (viaRequest) { + $s = -1; return [ptrType$2.nil, errors.New("invalid URI for request")]; + } + _tuple$2 = strings.Cut(rest, "/"); + segment = _tuple$2[0]; + if (strings.Contains(segment, ":")) { + $s = -1; return [ptrType$2.nil, errors.New("first path segment in URL cannot contain colon")]; + } + } + /* */ if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { $s = 2; continue; } + /* */ if (!(url.Scheme === "") && strings.HasPrefix(rest, "/")) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { */ case 2: + authority = ""; + _tmp = $substring(rest, 2); + _tmp$1 = ""; + authority = _tmp; + rest = _tmp$1; + i = strings.Index(authority, "/"); + if (i >= 0) { + _tmp$2 = $substring(authority, 0, i); + _tmp$3 = $substring(authority, i); + authority = _tmp$2; + rest = _tmp$3; + } + _r$1 = parseAuthority(authority); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$3 = _r$1; + url.User = _tuple$3[0]; + url.Host = _tuple$3[1]; + err = _tuple$3[2]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, err]; + } + $s = 4; continue; + /* } else if (!(url.Scheme === "") && strings.HasPrefix(rest, "/")) { */ case 3: + url.OmitHost = true; + /* } */ case 4: + err$1 = url.setPath(rest); + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, err$1]; + } + $s = -1; return [url, $ifaceNil]; + /* */ } return; } var $f = {$blk: parse$1, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, _tuple$3, authority, err, err$1, i, rawURL, rest, segment, url, viaRequest, $s};return $f; + }; + parseAuthority = function parseAuthority$1(authority) { + var {_r, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, authority, err, host, i, password, user, userinfo, username, $s, $r, $c} = $restore(this, {authority}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + user = ptrType$1.nil; + host = ""; + err = $ifaceNil; + i = strings.LastIndex(authority, "@"); + /* */ if (i < 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (i < 0) { */ case 1: + _r = parseHost(authority); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + host = _tuple[0]; + err = _tuple[1]; + $s = 3; continue; + /* } else { */ case 2: + _r$1 = parseHost($substring(authority, (i + 1 >> 0))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _tuple$1 = _r$1; + host = _tuple$1[0]; + err = _tuple$1[1]; + /* } */ case 3: + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp = ptrType$1.nil; + _tmp$1 = ""; + _tmp$2 = err; + user = _tmp; + host = _tmp$1; + err = _tmp$2; + $s = -1; return [user, host, err]; + } + if (i < 0) { + _tmp$3 = ptrType$1.nil; + _tmp$4 = host; + _tmp$5 = $ifaceNil; + user = _tmp$3; + host = _tmp$4; + err = _tmp$5; + $s = -1; return [user, host, err]; + } + userinfo = $substring(authority, 0, i); + if (!validUserinfo(userinfo)) { + _tmp$6 = ptrType$1.nil; + _tmp$7 = ""; + _tmp$8 = errors.New("net/url: invalid userinfo"); + user = _tmp$6; + host = _tmp$7; + err = _tmp$8; + $s = -1; return [user, host, err]; + } + if (!strings.Contains(userinfo, ":")) { + _tuple$2 = unescape(userinfo, 5); + userinfo = _tuple$2[0]; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$9 = ptrType$1.nil; + _tmp$10 = ""; + _tmp$11 = err; + user = _tmp$9; + host = _tmp$10; + err = _tmp$11; + $s = -1; return [user, host, err]; + } + user = User(userinfo); + } else { + _tuple$3 = strings.Cut(userinfo, ":"); + username = _tuple$3[0]; + password = _tuple$3[1]; + _tuple$4 = unescape(username, 5); + username = _tuple$4[0]; + err = _tuple$4[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$12 = ptrType$1.nil; + _tmp$13 = ""; + _tmp$14 = err; + user = _tmp$12; + host = _tmp$13; + err = _tmp$14; + $s = -1; return [user, host, err]; + } + _tuple$5 = unescape(password, 5); + password = _tuple$5[0]; + err = _tuple$5[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + _tmp$15 = ptrType$1.nil; + _tmp$16 = ""; + _tmp$17 = err; + user = _tmp$15; + host = _tmp$16; + err = _tmp$17; + $s = -1; return [user, host, err]; + } + user = UserPassword(username, password); + } + _tmp$18 = user; + _tmp$19 = host; + _tmp$20 = $ifaceNil; + user = _tmp$18; + host = _tmp$19; + err = _tmp$20; + $s = -1; return [user, host, err]; + /* */ } return; } var $f = {$blk: parseAuthority$1, $c: true, $r, _r, _r$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, authority, err, host, i, password, user, userinfo, username, $s};return $f; + }; + parseHost = function parseHost$1(host) { + var {$24r, $24r$1, _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, colonPort, colonPort$1, err, err$1, host, host1, host2, host3, i, i$1, zone, $s, $r, $c} = $restore(this, {host}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + /* */ if (strings.HasPrefix(host, "[")) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (strings.HasPrefix(host, "[")) { */ case 1: + i = strings.LastIndex(host, "]"); + if (i < 0) { + $s = -1; return ["", errors.New("missing ']' in host")]; + } + colonPort = $substring(host, (i + 1 >> 0)); + /* */ if (!validOptionalPort(colonPort)) { $s = 4; continue; } + /* */ $s = 5; continue; + /* if (!validOptionalPort(colonPort)) { */ case 4: + _r = fmt.Errorf("invalid port %q after host", new sliceType([new $String(colonPort)])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = ["", _r]; + $s = 7; case 7: return $24r; + /* } */ case 5: + zone = strings.Index($substring(host, 0, i), "%25"); + if (zone >= 0) { + _tuple = unescape($substring(host, 0, zone), 3); + host1 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return ["", err]; + } + _tuple$1 = unescape($substring(host, zone, i), 4); + host2 = _tuple$1[0]; + err = _tuple$1[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return ["", err]; + } + _tuple$2 = unescape($substring(host, i), 3); + host3 = _tuple$2[0]; + err = _tuple$2[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return ["", err]; + } + $s = -1; return [host1 + host2 + host3, $ifaceNil]; + } + $s = 3; continue; + /* } else { */ case 2: + i$1 = strings.LastIndex(host, ":"); + /* */ if (!((i$1 === -1))) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (!((i$1 === -1))) { */ case 8: + colonPort$1 = $substring(host, i$1); + /* */ if (!validOptionalPort(colonPort$1)) { $s = 10; continue; } + /* */ $s = 11; continue; + /* if (!validOptionalPort(colonPort$1)) { */ case 10: + _r$1 = fmt.Errorf("invalid port %q after host", new sliceType([new $String(colonPort$1)])); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + $24r$1 = ["", _r$1]; + $s = 13; case 13: return $24r$1; + /* } */ case 11: + /* } */ case 9: + /* } */ case 3: + err$1 = $ifaceNil; + _tuple$3 = unescape(host, 3); + host = _tuple$3[0]; + err$1 = _tuple$3[1]; + if (!($interfaceIsEqual(err$1, $ifaceNil))) { + $s = -1; return ["", err$1]; + } + $s = -1; return [host, $ifaceNil]; + /* */ } return; } var $f = {$blk: parseHost$1, $c: true, $r, $24r, $24r$1, _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, colonPort, colonPort$1, err, err$1, host, host1, host2, host3, i, i$1, zone, $s};return $f; + }; + $ptrType(URL).prototype.setPath = function setPath(p) { + var _tuple, err, escp, p, path$1, u; + u = this; + _tuple = unescape(p, 1); + path$1 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return err; + } + u.Path = path$1; + escp = escape(path$1, 1); + if (p === escp) { + u.RawPath = ""; + } else { + u.RawPath = p; + } + return $ifaceNil; + }; + $ptrType(URL).prototype.EscapedPath = function EscapedPath() { + var _tuple, err, p, u; + u = this; + if (!(u.RawPath === "") && validEncoded(u.RawPath, 1)) { + _tuple = unescape(u.RawPath, 1); + p = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil) && p === u.Path) { + return u.RawPath; + } + } + if (u.Path === "*") { + return "*"; + } + return escape(u.Path, 1); + }; + validEncoded = function validEncoded$1(s, mode) { + var _1, i, mode, s; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + _1 = s.charCodeAt(i); + if ((_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (58)) || (_1 === (64))) { + } else if ((_1 === (91)) || (_1 === (93))) { + } else if (_1 === (37)) { + } else if (shouldEscape(s.charCodeAt(i), mode)) { + return false; + } + i = i + (1) >> 0; + } + return true; + }; + $ptrType(URL).prototype.setFragment = function setFragment(f) { + var _tuple, err, escf, f, frag, u; + u = this; + _tuple = unescape(f, 7); + frag = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + return err; + } + u.Fragment = frag; + escf = escape(frag, 7); + if (f === escf) { + u.RawFragment = ""; + } else { + u.RawFragment = f; + } + return $ifaceNil; + }; + $ptrType(URL).prototype.EscapedFragment = function EscapedFragment() { + var _tuple, err, f, u; + u = this; + if (!(u.RawFragment === "") && validEncoded(u.RawFragment, 7)) { + _tuple = unescape(u.RawFragment, 7); + f = _tuple[0]; + err = _tuple[1]; + if ($interfaceIsEqual(err, $ifaceNil) && f === u.Fragment) { + return u.RawFragment; + } + } + return escape(u.Fragment, 7); + }; + validOptionalPort = function validOptionalPort$1(port) { + var _i, _ref, _rune, b, port; + if (port === "") { + return true; + } + if (!((port.charCodeAt(0) === 58))) { + return false; + } + _ref = $substring(port, 1); + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + b = _rune[0]; + if (b < 48 || b > 57) { + return false; + } + _i += _rune[1]; + } + return true; + }; + $ptrType(URL).prototype.String = function String$1() { + var _tuple, buf, h, path$1, segment, u, ui; + u = this; + buf = new strings.Builder.ptr(ptrType.nil, sliceType$1.nil); + if (!(u.Scheme === "")) { + buf.WriteString(u.Scheme); + buf.WriteByte(58); + } + if (!(u.Opaque === "")) { + buf.WriteString(u.Opaque); + } else { + if (!(u.Scheme === "") || !(u.Host === "") || !(u.User === ptrType$1.nil)) { + if (u.OmitHost && u.Host === "" && u.User === ptrType$1.nil) { + } else { + if (!(u.Host === "") || !(u.Path === "") || !(u.User === ptrType$1.nil)) { + buf.WriteString("//"); + } + ui = u.User; + if (!(ui === ptrType$1.nil)) { + buf.WriteString(ui.String()); + buf.WriteByte(64); + } + h = u.Host; + if (!(h === "")) { + buf.WriteString(escape(h, 3)); + } + } + } + path$1 = u.EscapedPath(); + if (!(path$1 === "") && !((path$1.charCodeAt(0) === 47)) && !(u.Host === "")) { + buf.WriteByte(47); + } + if (buf.Len() === 0) { + _tuple = strings.Cut(path$1, "/"); + segment = _tuple[0]; + if (strings.Contains(segment, ":")) { + buf.WriteString("./"); + } + } + buf.WriteString(path$1); + } + if (u.ForceQuery || !(u.RawQuery === "")) { + buf.WriteByte(63); + buf.WriteString(u.RawQuery); + } + if (!(u.Fragment === "")) { + buf.WriteByte(35); + buf.WriteString(u.EscapedFragment()); + } + return buf.String(); + }; + $ptrType(URL).prototype.Redacted = function Redacted() { + var _tuple, has, ru, u; + u = this; + if (u === ptrType$2.nil) { + return ""; + } + ru = $clone(u, URL); + _tuple = ru.User.Password(); + has = _tuple[1]; + if (has) { + ru.User = UserPassword(ru.User.Username(), "xxxxx"); + } + return ru.String(); + }; + Values.prototype.Get = function Get(key) { + var _entry, key, v, vs; + v = this.$val; + if (v === false) { + return ""; + } + vs = (_entry = $mapIndex(v,$String.keyFor(key)), _entry !== undefined ? _entry.v : sliceType$2.nil); + if (vs.$length === 0) { + return ""; + } + return (0 >= vs.$length ? ($throwRuntimeError("index out of range"), undefined) : vs.$array[vs.$offset + 0]); + }; + $ptrType(Values).prototype.Get = function(...$args) { return new Values(this.$get()).Get(...$args); }; + Values.prototype.Set = function Set(key, value) { + var _key, key, v, value; + v = this.$val; + _key = key; (v || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: new sliceType$2([value]) }); + }; + $ptrType(Values).prototype.Set = function(...$args) { return new Values(this.$get()).Set(...$args); }; + Values.prototype.Add = function Add(key, value) { + var _entry, _key, key, v, value; + v = this.$val; + _key = key; (v || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: $append((_entry = $mapIndex(v,$String.keyFor(key)), _entry !== undefined ? _entry.v : sliceType$2.nil), value) }); + }; + $ptrType(Values).prototype.Add = function(...$args) { return new Values(this.$get()).Add(...$args); }; + Values.prototype.Del = function Del(key) { + var key, v; + v = this.$val; + $mapDelete(v, $String.keyFor(key)); + }; + $ptrType(Values).prototype.Del = function(...$args) { return new Values(this.$get()).Del(...$args); }; + Values.prototype.Has = function Has(key) { + var _entry, _tuple, key, ok, v; + v = this.$val; + _tuple = (_entry = $mapIndex(v,$String.keyFor(key)), _entry !== undefined ? [_entry.v, true] : [sliceType$2.nil, false]); + ok = _tuple[1]; + return ok; + }; + $ptrType(Values).prototype.Has = function(...$args) { return new Values(this.$get()).Has(...$args); }; + ParseQuery = function ParseQuery$1(query) { + var {_r, err, m, query, $s, $r, $c} = $restore(this, {query}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + m = new $global.Map(); + _r = parseQuery(m, query); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + $s = -1; return [m, err]; + /* */ } return; } var $f = {$blk: ParseQuery$1, $c: true, $r, _r, err, m, query, $s};return $f; + }; + $pkg.ParseQuery = ParseQuery; + parseQuery = function parseQuery$1(m, query) { + var {_entry, _key, _r, _tuple, _tuple$1, _tuple$2, _tuple$3, err, err1, key, m, query, value, $s, $r, $c} = $restore(this, {m, query}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + err = $ifaceNil; + /* while (true) { */ case 1: + /* if (!(!(query === ""))) { break; } */ if(!(!(query === ""))) { $s = 2; continue; } + key = ""; + _tuple = strings.Cut(query, "&"); + key = _tuple[0]; + query = _tuple[1]; + /* */ if (strings.Contains(key, ";")) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (strings.Contains(key, ";")) { */ case 3: + _r = fmt.Errorf("invalid semicolon separator in query", sliceType.nil); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + err = _r; + /* continue; */ $s = 1; continue; + /* } */ case 4: + if (key === "") { + /* continue; */ $s = 1; continue; + } + _tuple$1 = strings.Cut(key, "="); + key = _tuple$1[0]; + value = _tuple$1[1]; + _tuple$2 = QueryUnescape(key); + key = _tuple$2[0]; + err1 = _tuple$2[1]; + if (!($interfaceIsEqual(err1, $ifaceNil))) { + if ($interfaceIsEqual(err, $ifaceNil)) { + err = err1; + } + /* continue; */ $s = 1; continue; + } + _tuple$3 = QueryUnescape(value); + value = _tuple$3[0]; + err1 = _tuple$3[1]; + if (!($interfaceIsEqual(err1, $ifaceNil))) { + if ($interfaceIsEqual(err, $ifaceNil)) { + err = err1; + } + /* continue; */ $s = 1; continue; + } + _key = key; (m || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: $append((_entry = $mapIndex(m,$String.keyFor(key)), _entry !== undefined ? _entry.v : sliceType$2.nil), value) }); + $s = 1; continue; + case 2: + err = err; + $s = -1; return err; + /* */ } return; } var $f = {$blk: parseQuery$1, $c: true, $r, _entry, _key, _r, _tuple, _tuple$1, _tuple$2, _tuple$3, err, err1, key, m, query, value, $s};return $f; + }; + Values.prototype.Encode = function Encode() { + var {_entry, _entry$1, _i, _i$1, _i$2, _key, _keys, _ref, _ref$1, _ref$2, _size, buf, k, k$1, keyEscaped, keys, v, v$1, vs, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + v = this.$val; + if (v === false) { + $s = -1; return ""; + } + buf = new strings.Builder.ptr(ptrType.nil, sliceType$1.nil); + keys = $makeSlice(sliceType$2, 0, (v ? v.size : 0)); + _ref = v; + _i = 0; + _keys = _ref ? _ref.keys() : undefined; + _size = _ref ? _ref.size : 0; + while (true) { + if (!(_i < _size)) { break; } + _key = _keys.next().value; + _entry = _ref.get(_key); + if (_entry === undefined) { + _i++; + continue; + } + k = _entry.k; + keys = $append(keys, k); + _i++; + } + $r = sort.Strings(keys); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + _ref$1 = keys; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + k$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]); + vs = (_entry$1 = $mapIndex(v,$String.keyFor(k$1)), _entry$1 !== undefined ? _entry$1.v : sliceType$2.nil); + keyEscaped = QueryEscape(k$1); + _ref$2 = vs; + _i$2 = 0; + while (true) { + if (!(_i$2 < _ref$2.$length)) { break; } + v$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$2.$array[_ref$2.$offset + _i$2]); + if (buf.Len() > 0) { + buf.WriteByte(38); + } + buf.WriteString(keyEscaped); + buf.WriteByte(61); + buf.WriteString(QueryEscape(v$1)); + _i$2++; + } + _i$1++; + } + $s = -1; return buf.String(); + /* */ } return; } var $f = {$blk: Encode, $c: true, $r, _entry, _entry$1, _i, _i$1, _i$2, _key, _keys, _ref, _ref$1, _ref$2, _size, buf, k, k$1, keyEscaped, keys, v, v$1, vs, $s};return $f; + }; + $ptrType(Values).prototype.Encode = function(...$args) { return new Values(this.$get()).Encode(...$args); }; + resolvePath = function resolvePath$1(base, ref) { + var _tuple, base, dst, elem, first, found, full, i, index, r, ref, remaining, str; + full = ""; + if (ref === "") { + full = base; + } else if (!((ref.charCodeAt(0) === 47))) { + i = strings.LastIndex(base, "/"); + full = $substring(base, 0, (i + 1 >> 0)) + ref; + } else { + full = ref; + } + if (full === "") { + return ""; + } + elem = ""; + dst = new strings.Builder.ptr(ptrType.nil, sliceType$1.nil); + first = true; + remaining = full; + dst.WriteByte(47); + found = true; + while (true) { + if (!(found)) { break; } + _tuple = strings.Cut(remaining, "/"); + elem = _tuple[0]; + remaining = _tuple[1]; + found = _tuple[2]; + if (elem === ".") { + first = false; + continue; + } + if (elem === "..") { + str = $substring(dst.String(), 1); + index = strings.LastIndexByte(str, 47); + dst.Reset(); + dst.WriteByte(47); + if (index === -1) { + first = true; + } else { + dst.WriteString($substring(str, 0, index)); + } + } else { + if (!first) { + dst.WriteByte(47); + } + dst.WriteString(elem); + first = false; + } + } + if (elem === "." || elem === "..") { + dst.WriteByte(47); + } + r = dst.String(); + if (r.length > 1 && (r.charCodeAt(1) === 47)) { + r = $substring(r, 1); + } + return r; + }; + $ptrType(URL).prototype.IsAbs = function IsAbs() { + var u; + u = this; + return !(u.Scheme === ""); + }; + $ptrType(URL).prototype.Parse = function Parse$2(ref) { + var {_r, _tuple, err, ref, refURL, u, $s, $r, $c} = $restore(this, {ref}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + u = this; + _r = Parse(ref); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + refURL = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return [ptrType$2.nil, err]; + } + $s = -1; return [u.ResolveReference(refURL), $ifaceNil]; + /* */ } return; } var $f = {$blk: Parse$2, $c: true, $r, _r, _tuple, err, ref, refURL, u, $s};return $f; + }; + $ptrType(URL).prototype.ResolveReference = function ResolveReference(ref) { + var ref, u, url; + u = this; + url = $clone(ref, URL); + if (ref.Scheme === "") { + url.Scheme = u.Scheme; + } + if (!(ref.Scheme === "") || !(ref.Host === "") || !(ref.User === ptrType$1.nil)) { + url.setPath(resolvePath(ref.EscapedPath(), "")); + return url; + } + if (!(ref.Opaque === "")) { + url.User = ptrType$1.nil; + url.Host = ""; + url.Path = ""; + return url; + } + if (ref.Path === "" && !ref.ForceQuery && ref.RawQuery === "") { + url.RawQuery = u.RawQuery; + if (ref.Fragment === "") { + url.Fragment = u.Fragment; + url.RawFragment = u.RawFragment; + } + } + url.Host = u.Host; + url.User = u.User; + url.setPath(resolvePath(u.EscapedPath(), ref.EscapedPath())); + return url; + }; + $ptrType(URL).prototype.Query = function Query() { + var {_r, _tuple, u, v, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + u = this; + _r = ParseQuery(u.RawQuery); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + v = _tuple[0]; + $s = -1; return v; + /* */ } return; } var $f = {$blk: Query, $c: true, $r, _r, _tuple, u, v, $s};return $f; + }; + $ptrType(URL).prototype.RequestURI = function RequestURI() { + var result, u; + u = this; + result = u.Opaque; + if (result === "") { + result = u.EscapedPath(); + if (result === "") { + result = "/"; + } + } else { + if (strings.HasPrefix(result, "//")) { + result = u.Scheme + ":" + result; + } + } + if (u.ForceQuery || !(u.RawQuery === "")) { + result = result + ("?" + u.RawQuery); + } + return result; + }; + $ptrType(URL).prototype.Hostname = function Hostname() { + var _tuple, host, u; + u = this; + _tuple = splitHostPort(u.Host); + host = _tuple[0]; + return host; + }; + $ptrType(URL).prototype.Port = function Port() { + var _tuple, port, u; + u = this; + _tuple = splitHostPort(u.Host); + port = _tuple[1]; + return port; + }; + splitHostPort = function splitHostPort$1(hostPort) { + var _tmp, _tmp$1, colon, host, hostPort, port; + host = ""; + port = ""; + host = hostPort; + colon = strings.LastIndexByte(host, 58); + if (!((colon === -1)) && validOptionalPort($substring(host, colon))) { + _tmp = $substring(host, 0, colon); + _tmp$1 = $substring(host, (colon + 1 >> 0)); + host = _tmp; + port = _tmp$1; + } + if (strings.HasPrefix(host, "[") && strings.HasSuffix(host, "]")) { + host = $substring(host, 1, (host.length - 1 >> 0)); + } + return [host, port]; + }; + $ptrType(URL).prototype.MarshalBinary = function MarshalBinary() { + var _tmp, _tmp$1, err, text, u; + text = sliceType$1.nil; + err = $ifaceNil; + u = this; + _tmp = (new sliceType$1($stringToBytes(u.String()))); + _tmp$1 = $ifaceNil; + text = _tmp; + err = _tmp$1; + return [text, err]; + }; + $ptrType(URL).prototype.UnmarshalBinary = function UnmarshalBinary(text) { + var {_r, _tuple, err, text, u, u1, $s, $r, $c} = $restore(this, {text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + u = this; + _r = Parse(($bytesToString(text))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _tuple = _r; + u1 = _tuple[0]; + err = _tuple[1]; + if (!($interfaceIsEqual(err, $ifaceNil))) { + $s = -1; return err; + } + URL.copy(u, u1); + $s = -1; return $ifaceNil; + /* */ } return; } var $f = {$blk: UnmarshalBinary, $c: true, $r, _r, _tuple, err, text, u, u1, $s};return $f; + }; + $ptrType(URL).prototype.JoinPath = function JoinPath$1(elem) { + var elem, p, u, url, x; + u = this; + elem = $appendSlice(new sliceType$2([u.EscapedPath()]), elem); + p = ""; + if (!strings.HasPrefix((0 >= elem.$length ? ($throwRuntimeError("index out of range"), undefined) : elem.$array[elem.$offset + 0]), "/")) { + (0 >= elem.$length ? ($throwRuntimeError("index out of range"), undefined) : elem.$array[elem.$offset + 0] = "/" + (0 >= elem.$length ? ($throwRuntimeError("index out of range"), undefined) : elem.$array[elem.$offset + 0])); + p = $substring(path.Join(elem), 1); + } else { + p = path.Join(elem); + } + if (strings.HasSuffix((x = elem.$length - 1 >> 0, ((x < 0 || x >= elem.$length) ? ($throwRuntimeError("index out of range"), undefined) : elem.$array[elem.$offset + x])), "/") && !strings.HasSuffix(p, "/")) { + p = p + ("/"); + } + url = $clone(u, URL); + url.setPath(p); + return url; + }; + validUserinfo = function validUserinfo$1(s) { + var _1, _i, _ref, _rune, r, s; + _ref = s; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + r = _rune[0]; + if (65 <= r && r <= 90) { + _i += _rune[1]; + continue; + } + if (97 <= r && r <= 122) { + _i += _rune[1]; + continue; + } + if (48 <= r && r <= 57) { + _i += _rune[1]; + continue; + } + _1 = r; + if ((_1 === (45)) || (_1 === (46)) || (_1 === (95)) || (_1 === (58)) || (_1 === (126)) || (_1 === (33)) || (_1 === (36)) || (_1 === (38)) || (_1 === (39)) || (_1 === (40)) || (_1 === (41)) || (_1 === (42)) || (_1 === (43)) || (_1 === (44)) || (_1 === (59)) || (_1 === (61)) || (_1 === (37)) || (_1 === (64))) { + _i += _rune[1]; + continue; + } else { + return false; + } + _i += _rune[1]; + } + return true; + }; + stringContainsCTLByte = function stringContainsCTLByte$1(s) { + var b, i, s; + i = 0; + while (true) { + if (!(i < s.length)) { break; } + b = s.charCodeAt(i); + if (b < 32 || (b === 127)) { + return true; + } + i = i + (1) >> 0; + } + return false; + }; + ptrType$3.methods = [{prop: "Unwrap", name: "Unwrap", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]; + EscapeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + InvalidHostError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + ptrType$2.methods = [{prop: "setPath", name: "setPath", pkg: "net/url", typ: $funcType([$String], [$error], false)}, {prop: "EscapedPath", name: "EscapedPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "setFragment", name: "setFragment", pkg: "net/url", typ: $funcType([$String], [$error], false)}, {prop: "EscapedFragment", name: "EscapedFragment", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Redacted", name: "Redacted", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsAbs", name: "IsAbs", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Parse", name: "Parse", pkg: "", typ: $funcType([$String], [ptrType$2, $error], false)}, {prop: "ResolveReference", name: "ResolveReference", pkg: "", typ: $funcType([ptrType$2], [ptrType$2], false)}, {prop: "Query", name: "Query", pkg: "", typ: $funcType([], [Values], false)}, {prop: "RequestURI", name: "RequestURI", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Hostname", name: "Hostname", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Port", name: "Port", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType$1], [$error], false)}, {prop: "JoinPath", name: "JoinPath", pkg: "", typ: $funcType([sliceType$2], [ptrType$2], true)}]; + ptrType$1.methods = [{prop: "Username", name: "Username", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Password", name: "Password", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + Values.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Del", name: "Del", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Has", name: "Has", pkg: "", typ: $funcType([$String], [$Bool], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([], [$String], false)}]; + Error.init("", [{prop: "Op", name: "Op", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "URL", name: "URL", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Err", name: "Err", embedded: false, exported: true, typ: $error, tag: ""}]); + URL.init("", [{prop: "Scheme", name: "Scheme", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Opaque", name: "Opaque", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "User", name: "User", embedded: false, exported: true, typ: ptrType$1, tag: ""}, {prop: "Host", name: "Host", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Path", name: "Path", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "RawPath", name: "RawPath", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "OmitHost", name: "OmitHost", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "ForceQuery", name: "ForceQuery", embedded: false, exported: true, typ: $Bool, tag: ""}, {prop: "RawQuery", name: "RawQuery", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Fragment", name: "Fragment", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "RawFragment", name: "RawFragment", embedded: false, exported: true, typ: $String, tag: ""}]); + Userinfo.init("net/url", [{prop: "username", name: "username", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "password", name: "password", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "passwordSet", name: "passwordSet", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Values.init($String, sliceType$2); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = path.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/evanw/esbuild/internal/helpers"] = (function() { + var $pkg = {}, $init, bytes, base64, fmt, fs, logger, math, url, debug, strings, sync, atomic, time, utf8, TypoDetector, Timer, timerData, Serializer, Joiner, joinerString, joinerBytes, GlobWildcard, GlobPart, F64, BitSet, pair, sliceType, arrayType, ptrType$1, sliceType$1, ptrType$2, ptrType$3, sliceType$2, sliceType$3, sliceType$4, ptrType$4, sliceType$5, ptrType$5, sliceType$6, ptrType$6, sliceType$7, mapType, ptrType$8, sliceType$8, sliceType$9, ptrType$9, builtinTypesLower, ContainsNonBMPCodePoint, ContainsNonBMPCodePointUTF16, StringToUTF16, UTF16ToString, UTF16ToStringWithValidation, UTF16EqualsString, UTF16EqualsUTF16, encodeWTF8Rune, DecodeWTF8Rune, MakeTypoDetector, StringArraysEqual, StringArrayArraysEqual, StringArrayToQuotedCommaSeparatedString, PrettyPrintedStack, MakeSerializer, canPrintWithoutEscape, QuoteSingle, QuoteForJSON, internalQuote, IsInsideNodeModules, IsFileURL, FileURLFromFilePath, FilePathFromFileURL, MimeTypeByExtension, HashCombine, HashCombineString, ParseGlobPattern, GlobPatternToString, NewF64, Min2, Max2, Min3, Max3, Lerp, EncodeStringAsShortestDataURL, EncodeStringAsPercentEscapedDataURL, isHex, EscapeClosingTag, NewBitSet; + bytes = $packages["bytes"]; + base64 = $packages["encoding/base64"]; + fmt = $packages["fmt"]; + fs = $packages["github.com/evanw/esbuild/internal/fs"]; + logger = $packages["github.com/evanw/esbuild/internal/logger"]; + math = $packages["math"]; + url = $packages["net/url"]; + debug = $packages["runtime/debug"]; + strings = $packages["strings"]; + sync = $packages["sync"]; + atomic = $packages["sync/atomic"]; + time = $packages["time"]; + utf8 = $packages["unicode/utf8"]; + TypoDetector = $newType(0, $kindStruct, "helpers.TypoDetector", true, "github.com/evanw/esbuild/internal/helpers", true, function(oneCharTypos_) { + this.$val = this; + if (arguments.length === 0) { + this.oneCharTypos = false; + return; + } + this.oneCharTypos = oneCharTypos_; + }); + Timer = $newType(0, $kindStruct, "helpers.Timer", true, "github.com/evanw/esbuild/internal/helpers", true, function(data_, mutex_) { + this.$val = this; + if (arguments.length === 0) { + this.data = sliceType$2.nil; + this.mutex = new sync.Mutex.ptr(0, 0); + return; + } + this.data = data_; + this.mutex = mutex_; + }); + timerData = $newType(0, $kindStruct, "helpers.timerData", true, "github.com/evanw/esbuild/internal/helpers", false, function(time_, name_, isEnd_) { + this.$val = this; + if (arguments.length === 0) { + this.time = new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$3.nil); + this.name = ""; + this.isEnd = false; + return; + } + this.time = time_; + this.name = name_; + this.isEnd = isEnd_; + }); + Serializer = $newType(0, $kindStruct, "helpers.Serializer", true, "github.com/evanw/esbuild/internal/helpers", true, function(flags_) { + this.$val = this; + if (arguments.length === 0) { + this.flags = sliceType$6.nil; + return; + } + this.flags = flags_; + }); + Joiner = $newType(0, $kindStruct, "helpers.Joiner", true, "github.com/evanw/esbuild/internal/helpers", true, function(strings_, bytes_, length_, lastByte_) { + this.$val = this; + if (arguments.length === 0) { + this.strings = sliceType$8.nil; + this.bytes = sliceType$9.nil; + this.length = 0; + this.lastByte = 0; + return; + } + this.strings = strings_; + this.bytes = bytes_; + this.length = length_; + this.lastByte = lastByte_; + }); + joinerString = $newType(0, $kindStruct, "helpers.joinerString", true, "github.com/evanw/esbuild/internal/helpers", false, function(data_, offset_) { + this.$val = this; + if (arguments.length === 0) { + this.data = ""; + this.offset = 0; + return; + } + this.data = data_; + this.offset = offset_; + }); + joinerBytes = $newType(0, $kindStruct, "helpers.joinerBytes", true, "github.com/evanw/esbuild/internal/helpers", false, function(data_, offset_) { + this.$val = this; + if (arguments.length === 0) { + this.data = sliceType$1.nil; + this.offset = 0; + return; + } + this.data = data_; + this.offset = offset_; + }); + GlobWildcard = $newType(1, $kindUint8, "helpers.GlobWildcard", true, "github.com/evanw/esbuild/internal/helpers", true, null); + GlobPart = $newType(0, $kindStruct, "helpers.GlobPart", true, "github.com/evanw/esbuild/internal/helpers", true, function(Prefix_, Wildcard_) { + this.$val = this; + if (arguments.length === 0) { + this.Prefix = ""; + this.Wildcard = 0; + return; + } + this.Prefix = Prefix_; + this.Wildcard = Wildcard_; + }); + F64 = $newType(0, $kindStruct, "helpers.F64", true, "github.com/evanw/esbuild/internal/helpers", true, function(value_) { + this.$val = this; + if (arguments.length === 0) { + this.value = 0; + return; + } + this.value = value_; + }); + BitSet = $newType(0, $kindStruct, "helpers.BitSet", true, "github.com/evanw/esbuild/internal/helpers", true, function(entries_) { + this.$val = this; + if (arguments.length === 0) { + this.entries = sliceType$1.nil; + return; + } + this.entries = entries_; + }); + pair = $newType(0, $kindStruct, "helpers.pair", true, "github.com/evanw/esbuild/internal/helpers", false, function(timerData_, index_) { + this.$val = this; + if (arguments.length === 0) { + this.timerData = new timerData.ptr(new time.Time.ptr(new $Uint64(0, 0), new $Int64(0, 0), ptrType$3.nil), "", false); + this.index = 0; + return; + } + this.timerData = timerData_; + this.index = index_; + }); + $pkg.TypoDetector = TypoDetector; + $pkg.Timer = Timer; + $pkg.timerData = timerData; + $pkg.Serializer = Serializer; + $pkg.Joiner = Joiner; + $pkg.joinerString = joinerString; + $pkg.joinerBytes = joinerBytes; + $pkg.GlobWildcard = GlobWildcard; + $pkg.GlobPart = GlobPart; + $pkg.F64 = F64; + $pkg.BitSet = BitSet; + $pkg.pair = pair; + $pkg.$finishSetup = function() { + sliceType = $sliceType($Uint16); + arrayType = $arrayType($Uint8, 4); + ptrType$1 = $ptrType(strings.Builder); + sliceType$1 = $sliceType($Uint8); + ptrType$2 = $ptrType(Timer); + ptrType$3 = $ptrType(time.Location); + sliceType$2 = $sliceType(timerData); + sliceType$3 = $sliceType(logger.MsgData); + sliceType$4 = $sliceType(pair); + ptrType$4 = $ptrType(logger.MsgLocation); + sliceType$5 = $sliceType($emptyInterface); + ptrType$5 = $ptrType(logger.LineColumnTracker); + sliceType$6 = $sliceType(sync.WaitGroup); + ptrType$6 = $ptrType(url.Userinfo); + sliceType$7 = $sliceType(GlobPart); + mapType = $mapType($String, $String); + ptrType$8 = $ptrType(Serializer); + sliceType$8 = $sliceType(joinerString); + sliceType$9 = $sliceType(joinerBytes); + ptrType$9 = $ptrType(Joiner); + ContainsNonBMPCodePoint = function ContainsNonBMPCodePoint$1(text) { + var _i, _ref, _rune, c, text; + _ref = text; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + c = _rune[0]; + if (c > 65535) { + return true; + } + _i += _rune[1]; + } + return false; + }; + $pkg.ContainsNonBMPCodePoint = ContainsNonBMPCodePoint; + ContainsNonBMPCodePointUTF16 = function ContainsNonBMPCodePointUTF16$1(text) { + var _i, _ref, c, c2, i, n, text, x; + n = text.$length; + if (n > 0) { + _ref = $subslice(text, 0, (n - 1 >> 0)); + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (c >= 55296 && c <= 56319) { + c2 = (x = i + 1 >> 0, ((x < 0 || x >= text.$length) ? ($throwRuntimeError("index out of range"), undefined) : text.$array[text.$offset + x])); + if (c2 >= 56320 && c2 <= 57343) { + return true; + } + } + _i++; + } + } + return false; + }; + $pkg.ContainsNonBMPCodePointUTF16 = ContainsNonBMPCodePointUTF16; + StringToUTF16 = function StringToUTF16$1(text) { + var _i, _ref, _rune, c, decoded, text; + decoded = $makeSlice(sliceType, 0, text.length); + _ref = text; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + c = _rune[0]; + if (c <= 65535) { + decoded = $append(decoded, ((c << 16 >>> 16))); + } else { + c = c - (65536) >> 0; + decoded = $append(decoded, (((55296 + ((((c >> 10 >> 0)) & 1023)) >> 0) << 16 >>> 16)), (((56320 + ((c & 1023)) >> 0) << 16 >>> 16))); + } + _i += _rune[1]; + } + return decoded; + }; + $pkg.StringToUTF16 = StringToUTF16; + UTF16ToString = function UTF16ToString$1(text) { + var b, i, n, r1, r2, temp, text, width, x; + temp = arrayType.zero(); + b = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + n = text.$length; + i = 0; + while (true) { + if (!(i < n)) { break; } + r1 = ((((i < 0 || i >= text.$length) ? ($throwRuntimeError("index out of range"), undefined) : text.$array[text.$offset + i]) >> 0)); + if (r1 >= 55296 && r1 <= 56319 && (i + 1 >> 0) < n) { + r2 = (((x = i + 1 >> 0, ((x < 0 || x >= text.$length) ? ($throwRuntimeError("index out of range"), undefined) : text.$array[text.$offset + x])) >> 0)); + if (r2 >= 56320 && r2 <= 57343) { + r1 = ((((r1 - 55296 >> 0)) << 10 >> 0) | ((r2 - 56320 >> 0))) + 65536 >> 0; + i = i + (1) >> 0; + } + } + width = encodeWTF8Rune(new sliceType$1(temp), r1); + b.Write($subslice(new sliceType$1(temp), 0, width)); + i = i + (1) >> 0; + } + return b.String(); + }; + $pkg.UTF16ToString = UTF16ToString; + UTF16ToStringWithValidation = function UTF16ToStringWithValidation$1(text) { + var b, i, n, r1, r2, temp, text, width, x; + temp = arrayType.zero(); + b = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + n = text.$length; + i = 0; + while (true) { + if (!(i < n)) { break; } + r1 = ((((i < 0 || i >= text.$length) ? ($throwRuntimeError("index out of range"), undefined) : text.$array[text.$offset + i]) >> 0)); + if (r1 >= 55296 && r1 <= 56319) { + if ((i + 1 >> 0) < n) { + r2 = (((x = i + 1 >> 0, ((x < 0 || x >= text.$length) ? ($throwRuntimeError("index out of range"), undefined) : text.$array[text.$offset + x])) >> 0)); + if (r2 >= 56320 && r2 <= 57343) { + r1 = ((((r1 - 55296 >> 0)) << 10 >> 0) | ((r2 - 56320 >> 0))) + 65536 >> 0; + i = i + (1) >> 0; + } else { + return ["", ((r1 << 16 >>> 16)), false]; + } + } else { + return ["", ((r1 << 16 >>> 16)), false]; + } + } else if (r1 >= 56320 && r1 <= 57343) { + return ["", ((r1 << 16 >>> 16)), false]; + } + width = encodeWTF8Rune(new sliceType$1(temp), r1); + b.Write($subslice(new sliceType$1(temp), 0, width)); + i = i + (1) >> 0; + } + return [b.String(), 0, true]; + }; + $pkg.UTF16ToStringWithValidation = UTF16ToStringWithValidation; + UTF16EqualsString = function UTF16EqualsString$1(text, str) { + var i, j, k, n, r1, r2, str, temp, text, width, x; + if (text.$length > str.length) { + return false; + } + temp = arrayType.zero(); + n = text.$length; + j = 0; + i = 0; + while (true) { + if (!(i < n)) { break; } + r1 = ((((i < 0 || i >= text.$length) ? ($throwRuntimeError("index out of range"), undefined) : text.$array[text.$offset + i]) >> 0)); + if (r1 >= 55296 && r1 <= 56319 && (i + 1 >> 0) < n) { + r2 = (((x = i + 1 >> 0, ((x < 0 || x >= text.$length) ? ($throwRuntimeError("index out of range"), undefined) : text.$array[text.$offset + x])) >> 0)); + if (r2 >= 56320 && r2 <= 57343) { + r1 = ((((r1 - 55296 >> 0)) << 10 >> 0) | ((r2 - 56320 >> 0))) + 65536 >> 0; + i = i + (1) >> 0; + } + } + width = encodeWTF8Rune(new sliceType$1(temp), r1); + if ((j + width >> 0) > str.length) { + return false; + } + k = 0; + while (true) { + if (!(k < width)) { break; } + if (!((((k < 0 || k >= temp.length) ? ($throwRuntimeError("index out of range"), undefined) : temp[k]) === str.charCodeAt(j)))) { + return false; + } + j = j + (1) >> 0; + k = k + (1) >> 0; + } + i = i + (1) >> 0; + } + return j === str.length; + }; + $pkg.UTF16EqualsString = UTF16EqualsString; + UTF16EqualsUTF16 = function UTF16EqualsUTF16$1(a, b) { + var _i, _ref, a, b, c, i; + if (a.$length === b.$length) { + _ref = a; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + c = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!((c === ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i])))) { + return false; + } + _i++; + } + return true; + } + return false; + }; + $pkg.UTF16EqualsUTF16 = UTF16EqualsUTF16; + encodeWTF8Rune = function encodeWTF8Rune$1(p, r) { + var i, p, r; + i = ((r >>> 0)); + if (i <= 127) { + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((r << 24 >>> 24))); + return 1; + } else if (i <= 2047) { + $unused((1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((192 | (((r >> 6 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 2; + } else if (i > 1114111) { + r = 65533; + $unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 3; + } else if (i <= 65535) { + $unused((2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((224 | (((r >> 12 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 3; + } else { + $unused((3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3])); + (0 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 0] = ((240 | (((r >> 18 >> 0) << 24 >>> 24))) >>> 0)); + (1 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 1] = ((128 | (((((r >> 12 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (2 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 2] = ((128 | (((((r >> 6 >> 0) << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + (3 >= p.$length ? ($throwRuntimeError("index out of range"), undefined) : p.$array[p.$offset + 3] = ((128 | ((((r << 24 >>> 24)) & 63) >>> 0)) >>> 0)); + return 4; + } + }; + DecodeWTF8Rune = function DecodeWTF8Rune$1(s) { + var cp, cp$1, cp$2, n, s, s0, s1, s2, s3, sz; + n = s.length; + if (n < 1) { + return [65533, 0]; + } + s0 = s.charCodeAt(0); + if (s0 < 128) { + return [((s0 >> 0)), 1]; + } + sz = 0; + if ((((s0 & 224) >>> 0)) === 192) { + sz = 2; + } else if ((((s0 & 240) >>> 0)) === 224) { + sz = 3; + } else if ((((s0 & 248) >>> 0)) === 240) { + sz = 4; + } else { + return [65533, 1]; + } + if (n < sz) { + return [65533, 0]; + } + s1 = s.charCodeAt(1); + if (!(((((s1 & 192) >>> 0)) === 128))) { + return [65533, 1]; + } + if (sz === 2) { + cp = (((((s0 & 31) >>> 0) >> 0)) << 6 >> 0) | ((((s1 & 63) >>> 0) >> 0)); + if (cp < 128) { + return [65533, 1]; + } + return [cp, 2]; + } + s2 = s.charCodeAt(2); + if (!(((((s2 & 192) >>> 0)) === 128))) { + return [65533, 1]; + } + if (sz === 3) { + cp$1 = ((((((s0 & 15) >>> 0) >> 0)) << 12 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s2 & 63) >>> 0) >> 0)); + if (cp$1 < 2048) { + return [65533, 1]; + } + return [cp$1, 3]; + } + s3 = s.charCodeAt(3); + if (!(((((s3 & 192) >>> 0)) === 128))) { + return [65533, 1]; + } + cp$2 = (((((((s0 & 7) >>> 0) >> 0)) << 18 >> 0) | (((((s1 & 63) >>> 0) >> 0)) << 12 >> 0)) | (((((s2 & 63) >>> 0) >> 0)) << 6 >> 0)) | ((((s3 & 63) >>> 0) >> 0)); + if (cp$2 < 65536 || cp$2 > 1114111) { + return [65533, 1]; + } + return [cp$2, 4]; + }; + $pkg.DecodeWTF8Rune = DecodeWTF8Rune; + MakeTypoDetector = function MakeTypoDetector$1(valid) { + var _i, _i$1, _key, _ref, _ref$1, _rune, ch, correct, detector, i, valid; + detector = new TypoDetector.ptr(new $global.Map()); + _ref = valid; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + correct = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (correct.length > 3) { + _ref$1 = correct; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.length)) { break; } + _rune = $decodeRune(_ref$1, _i$1); + i = _i$1; + ch = _rune[0]; + _key = $substring(correct, 0, i) + $substring(correct, (i + utf8.RuneLen(ch) >> 0)); (detector.oneCharTypos || $throwRuntimeError("assignment to entry in nil map")).set($String.keyFor(_key), { k: _key, v: correct }); + _i$1 += _rune[1]; + } + } + _i++; + } + return detector; + }; + $pkg.MakeTypoDetector = MakeTypoDetector; + $ptrType(TypoDetector).prototype.MaybeCorrectTypo = function MaybeCorrectTypo(typo) { + var _entry, _entry$1, _i, _ref, _rune, _tuple, _tuple$1, ch, corrected, corrected$1, detector, i, ok, ok$1, typo; + detector = this; + _tuple = (_entry = $mapIndex(detector.oneCharTypos,$String.keyFor(typo)), _entry !== undefined ? [_entry.v, true] : ["", false]); + corrected = _tuple[0]; + ok = _tuple[1]; + if (ok) { + return [corrected, true]; + } + _ref = typo; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + ch = _rune[0]; + _tuple$1 = (_entry$1 = $mapIndex(detector.oneCharTypos,$String.keyFor($substring(typo, 0, i) + $substring(typo, (i + utf8.RuneLen(ch) >> 0)))), _entry$1 !== undefined ? [_entry$1.v, true] : ["", false]); + corrected$1 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + return [corrected$1, true]; + } + _i += _rune[1]; + } + return ["", false]; + }; + TypoDetector.prototype.MaybeCorrectTypo = function(...$args) { return this.$val.MaybeCorrectTypo(...$args); }; + $ptrType(Timer).prototype.Begin = function Begin(name) { + var {_r, name, t, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + /* */ if (!(t === ptrType$2.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(t === ptrType$2.nil)) { */ case 1: + _r = time.Now(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + t.data = $append(t.data, new timerData.ptr($clone(_r, time.Time), name, false)); + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Begin, $c: true, $r, _r, name, t, $s};return $f; + }; + $ptrType(Timer).prototype.End = function End(name) { + var {_r, name, t, $s, $r, $c} = $restore(this, {name}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + /* */ if (!(t === ptrType$2.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(t === ptrType$2.nil)) { */ case 1: + _r = time.Now(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + t.data = $append(t.data, new timerData.ptr($clone(_r, time.Time), name, true)); + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: End, $c: true, $r, _r, name, t, $s};return $f; + }; + $ptrType(Timer).prototype.Fork = function Fork() { + var t; + t = this; + if (!(t === ptrType$2.nil)) { + return new Timer.ptr(sliceType$2.nil, new sync.Mutex.ptr(0, 0)); + } + return ptrType$2.nil; + }; + $ptrType(Timer).prototype.Join = function Join(other) { + var {other, t, $s, $deferred, $r, $c} = $restore(this, {other}); + /* */ $s = $s || 0; var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $curGoroutine.deferStack.push($deferred); + t = this; + /* */ if (!(t === ptrType$2.nil) && !(other === ptrType$2.nil)) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!(t === ptrType$2.nil) && !(other === ptrType$2.nil)) { */ case 1: + $r = t.mutex.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $deferred.push([$methodVal(t.mutex, "Unlock"), []]); + t.data = $appendSlice(t.data, other.data); + /* } */ case 2: + $s = -1; return; + /* */ } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { var $f = {$blk: Join, $c: true, $r, other, t, $s, $deferred};return $f; } } + }; + $ptrType(Timer).prototype.Log = function Log(log) { + var {_i, _r, _ref, indent, item, last, log, notes, stack, t, top, top$1, x, $s, $r, $c} = $restore(this, {log}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + t = this; + if (t === ptrType$2.nil) { + $s = -1; return; + } + notes = sliceType$3.nil; + stack = sliceType$4.nil; + indent = 0; + _ref = t.data; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + item = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), timerData); + /* */ if (!item.isEnd) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (!item.isEnd) { */ case 3: + top = new pair.ptr($clone(item, timerData), ((notes.$length >>> 0))); + notes = $append(notes, new logger.MsgData.ptr($ifaceNil, ptrType$4.nil, "", true)); + stack = $append(stack, top); + indent = indent + (1) >> 0; + $s = 5; continue; + /* } else { */ case 4: + indent = indent - (1) >> 0; + last = stack.$length - 1 >> 0; + top$1 = $clone(((last < 0 || last >= stack.$length) ? ($throwRuntimeError("index out of range"), undefined) : stack.$array[stack.$offset + last]), pair); + stack = $subslice(stack, 0, last); + if (!(item.name === top$1.timerData.name)) { + $panic(new $String("Internal error")); + } + _r = fmt.Sprintf("%s%s: %dms", new sliceType$5([new $String(strings.Repeat(" ", indent)), new $String(top$1.timerData.name), $clone(item.time, time.Time).Sub($clone(top$1.timerData.time, time.Time)).Milliseconds()])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + (x = top$1.index, ((x < 0 || x >= notes.$length) ? ($throwRuntimeError("index out of range"), undefined) : notes.$array[notes.$offset + x])).Text = _r; + /* } */ case 5: + _i++; + $s = 1; continue; + case 2: + $r = $clone(log, logger.Log).AddIDWithNotes(0, 2, ptrType$5.nil, $clone(new logger.Range.ptr(new logger.Loc.ptr(0), 0), logger.Range), "Timing information (times may not nest hierarchically due to parallelism)", notes); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* */ } return; } var $f = {$blk: Log, $c: true, $r, _i, _r, _ref, indent, item, last, log, notes, stack, t, top, top$1, x, $s};return $f; + }; + StringArraysEqual = function StringArraysEqual$1(a, b) { + var _i, _ref, a, b, i, x; + if (!((a.$length === b.$length))) { + return false; + } + _ref = a; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!(x === ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]))) { + return false; + } + _i++; + } + return true; + }; + $pkg.StringArraysEqual = StringArraysEqual; + StringArrayArraysEqual = function StringArrayArraysEqual$1(a, b) { + var _i, _ref, a, b, i, x; + if (!((a.$length === b.$length))) { + return false; + } + _ref = a; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + i = _i; + x = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (!StringArraysEqual(x, ((i < 0 || i >= b.$length) ? ($throwRuntimeError("index out of range"), undefined) : b.$array[b.$offset + i]))) { + return false; + } + _i++; + } + return true; + }; + $pkg.StringArrayArraysEqual = StringArrayArraysEqual; + StringArrayToQuotedCommaSeparatedString = function StringArrayToQuotedCommaSeparatedString$1(a) { + var {_i, _r, _r$1, _ref, a, i, sb, str, $s, $r, $c} = $restore(this, {a}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + sb = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + _ref = a; + _i = 0; + /* while (true) { */ case 1: + /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; } + i = _i; + str = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (i > 0) { + sb.WriteString(", "); + } + _r = fmt.Sprintf("%q", new sliceType$5([new $String(str)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = sb.WriteString(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + _r$1; + _i++; + $s = 1; continue; + case 2: + $s = -1; return sb.String(); + /* */ } return; } var $f = {$blk: StringArrayToQuotedCommaSeparatedString$1, $c: true, $r, _i, _r, _r$1, _ref, a, i, sb, str, $s};return $f; + }; + $pkg.StringArrayToQuotedCommaSeparatedString = StringArrayToQuotedCommaSeparatedString; + PrettyPrintedStack = function PrettyPrintedStack$1() { + var {_i, _r, _r$1, _ref, first, line, lines, offset, paren, sb, slash, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + _r = strings.TrimSpace(($bytesToString(debug.Stack()))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = strings.Split(_r, "\n"); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + lines = _r$1; + if (lines.$length > 0) { + first = (0 >= lines.$length ? ($throwRuntimeError("index out of range"), undefined) : lines.$array[lines.$offset + 0]); + if (strings.HasPrefix(first, "goroutine ") && strings.HasSuffix(first, ":")) { + lines = $subslice(lines, 1); + } + } + sb = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + _ref = lines; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + line = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if (strings.HasPrefix(line, "\t")) { + line = $substring(line, 1); + line = strings.TrimPrefix(line, "github.com/evanw/esbuild/"); + offset = strings.LastIndex(line, " +0x"); + if (!((offset === -1))) { + line = $substring(line, 0, offset); + } + sb.WriteString(" ("); + sb.WriteString(line); + sb.WriteString(")"); + _i++; + continue; + } + if (sb.Len() > 0) { + sb.WriteByte(10); + } + if (strings.HasSuffix(line, ")")) { + paren = strings.LastIndexByte(line, 40); + if (!((paren === -1))) { + line = $substring(line, 0, paren); + } + } + slash = strings.LastIndexByte(line, 47); + if (!((slash === -1))) { + line = $substring(line, (slash + 1 >> 0)); + } + sb.WriteString(line); + _i++; + } + $s = -1; return sb.String(); + /* */ } return; } var $f = {$blk: PrettyPrintedStack$1, $c: true, $r, _i, _r, _r$1, _ref, first, line, lines, offset, paren, sb, slash, $s};return $f; + }; + $pkg.PrettyPrintedStack = PrettyPrintedStack; + MakeSerializer = function MakeSerializer$1(count) { + var count, flags, i; + flags = $makeSlice(sliceType$6, count); + i = 0; + while (true) { + if (!(i < count)) { break; } + ((i < 0 || i >= flags.$length) ? ($throwRuntimeError("index out of range"), undefined) : flags.$array[flags.$offset + i]).Add(1); + i = i + (1) >> 0; + } + return new Serializer.ptr(flags); + }; + $pkg.MakeSerializer = MakeSerializer; + $ptrType(Serializer).prototype.Enter = function Enter(i) { + var {i, s, x, x$1, $s, $r, $c} = $restore(this, {i}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + s = this; + /* */ if (i > 0) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (i > 0) { */ case 1: + $r = (x = s.flags, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])).Wait(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: Enter, $c: true, $r, i, s, x, x$1, $s};return $f; + }; + $ptrType(Serializer).prototype.Leave = function Leave(i) { + var i, s, x; + s = this; + (x = s.flags, ((i < 0 || i >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + i])).Done(); + }; + canPrintWithoutEscape = function canPrintWithoutEscape$1(c, asciiOnly) { + var asciiOnly, c; + if (c <= 126) { + return c >= 32 && !((c === 92)) && !((c === 34)); + } else { + return !asciiOnly && !((c === 65279)) && (c < 55296 || c > 57343); + } + }; + QuoteSingle = function QuoteSingle$1(text, asciiOnly) { + var asciiOnly, text; + return internalQuote(text, asciiOnly, 39); + }; + $pkg.QuoteSingle = QuoteSingle; + QuoteForJSON = function QuoteForJSON$1(text, asciiOnly) { + var asciiOnly, text; + return internalQuote(text, asciiOnly, 34); + }; + $pkg.QuoteForJSON = QuoteForJSON; + internalQuote = function internalQuote$1(text, asciiOnly, quoteChar) { + var _1, _2, _i, _ref, _rune, _tuple, _tuple$1, asciiOnly, bytes$1, c, c$1, hi, i, lenEstimate, lo, n, quoteChar, start, text, width; + lenEstimate = 2; + _ref = text; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + c = _rune[0]; + if (canPrintWithoutEscape(c, asciiOnly)) { + lenEstimate = lenEstimate + (utf8.RuneLen(c)) >> 0; + } else { + _1 = c; + if ((_1 === (8)) || (_1 === (12)) || (_1 === (10)) || (_1 === (13)) || (_1 === (9)) || (_1 === (92))) { + lenEstimate = lenEstimate + (2) >> 0; + } else if (_1 === (34)) { + if (quoteChar === 34) { + lenEstimate = lenEstimate + (2) >> 0; + } + } else if (_1 === (39)) { + if (quoteChar === 39) { + lenEstimate = lenEstimate + (2) >> 0; + } + } else if (c <= 65535) { + lenEstimate = lenEstimate + (6) >> 0; + } else { + lenEstimate = lenEstimate + (12) >> 0; + } + } + _i += _rune[1]; + } + bytes$1 = $makeSlice(sliceType$1, 0, lenEstimate); + i = 0; + n = text.length; + bytes$1 = $append(bytes$1, quoteChar); + while (true) { + if (!(i < n)) { break; } + _tuple = DecodeWTF8Rune($substring(text, i)); + c$1 = _tuple[0]; + width = _tuple[1]; + if (canPrintWithoutEscape(c$1, asciiOnly)) { + start = i; + i = i + (width) >> 0; + while (true) { + if (!(i < n)) { break; } + _tuple$1 = DecodeWTF8Rune($substring(text, i)); + c$1 = _tuple$1[0]; + width = _tuple$1[1]; + if (!canPrintWithoutEscape(c$1, asciiOnly)) { + break; + } + i = i + (width) >> 0; + } + bytes$1 = $appendSlice(bytes$1, $substring(text, start, i)); + continue; + } + _2 = c$1; + if (_2 === (8)) { + bytes$1 = $appendSlice(bytes$1, "\\b"); + i = i + (1) >> 0; + } else if (_2 === (12)) { + bytes$1 = $appendSlice(bytes$1, "\\f"); + i = i + (1) >> 0; + } else if (_2 === (10)) { + bytes$1 = $appendSlice(bytes$1, "\\n"); + i = i + (1) >> 0; + } else if (_2 === (13)) { + bytes$1 = $appendSlice(bytes$1, "\\r"); + i = i + (1) >> 0; + } else if (_2 === (9)) { + bytes$1 = $appendSlice(bytes$1, "\\t"); + i = i + (1) >> 0; + } else if (_2 === (92)) { + bytes$1 = $appendSlice(bytes$1, "\\\\"); + i = i + (1) >> 0; + } else if (_2 === (34)) { + if (quoteChar === 34) { + bytes$1 = $appendSlice(bytes$1, "\\\""); + } else { + bytes$1 = $append(bytes$1, 34); + } + i = i + (1) >> 0; + } else if (_2 === (39)) { + if (quoteChar === 39) { + bytes$1 = $appendSlice(bytes$1, "\\'"); + } else { + bytes$1 = $append(bytes$1, 39); + } + i = i + (1) >> 0; + } else { + i = i + (width) >> 0; + if (c$1 <= 65535) { + bytes$1 = $append(bytes$1, 92, 117, "0123456789ABCDEF".charCodeAt((c$1 >> 12 >> 0)), "0123456789ABCDEF".charCodeAt((((c$1 >> 8 >> 0)) & 15)), "0123456789ABCDEF".charCodeAt((((c$1 >> 4 >> 0)) & 15)), "0123456789ABCDEF".charCodeAt((c$1 & 15))); + } else { + c$1 = c$1 - (65536) >> 0; + lo = 55296 + ((((c$1 >> 10 >> 0)) & 1023)) >> 0; + hi = 56320 + ((c$1 & 1023)) >> 0; + bytes$1 = $append(bytes$1, 92, 117, "0123456789ABCDEF".charCodeAt((lo >> 12 >> 0)), "0123456789ABCDEF".charCodeAt((((lo >> 8 >> 0)) & 15)), "0123456789ABCDEF".charCodeAt((((lo >> 4 >> 0)) & 15)), "0123456789ABCDEF".charCodeAt((lo & 15)), 92, 117, "0123456789ABCDEF".charCodeAt((hi >> 12 >> 0)), "0123456789ABCDEF".charCodeAt((((hi >> 8 >> 0)) & 15)), "0123456789ABCDEF".charCodeAt((((hi >> 4 >> 0)) & 15)), "0123456789ABCDEF".charCodeAt((hi & 15))); + } + } + } + return $append(bytes$1, quoteChar); + }; + IsInsideNodeModules = function IsInsideNodeModules$1(path) { + var _tmp, _tmp$1, base, dir, path, slash; + while (true) { + slash = strings.LastIndexAny(path, "/\\"); + if (slash === -1) { + return false; + } + _tmp = $substring(path, 0, slash); + _tmp$1 = $substring(path, (slash + 1 >> 0)); + dir = _tmp; + base = _tmp$1; + if (base === "node_modules") { + return true; + } + path = dir; + } + }; + $pkg.IsInsideNodeModules = IsInsideNodeModules; + IsFileURL = function IsFileURL$1(fileURL) { + var fileURL; + return fileURL.Scheme === "file" && (fileURL.Host === "" || fileURL.Host === "localhost") && strings.HasPrefix(fileURL.Path, "/"); + }; + $pkg.IsFileURL = IsFileURL; + FileURLFromFilePath = function FileURLFromFilePath$1(filePath) { + var filePath; + filePath = strings.ReplaceAll(filePath, "\\", "/"); + if (!strings.HasPrefix(filePath, "/")) { + filePath = "/" + filePath; + } + return new url.URL.ptr("file", "", ptrType$6.nil, "", filePath, "", false, false, "", "", ""); + }; + $pkg.FileURLFromFilePath = FileURLFromFilePath; + FilePathFromFileURL = function FilePathFromFileURL$1(fs$1, fileURL) { + var {_r, _r$1, fileURL, fs$1, path, $s, $r, $c} = $restore(this, {fs$1, fileURL}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + path = fileURL.Path; + _r = fs$1.Cwd(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + _r$1 = strings.HasPrefix(_r, "/"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + /* */ if (!_r$1) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (!_r$1) { */ case 1: + path = strings.TrimPrefix(path, "/"); + path = strings.ReplaceAll(path, "/", "\\"); + /* } */ case 2: + $s = -1; return path; + /* */ } return; } var $f = {$blk: FilePathFromFileURL$1, $c: true, $r, _r, _r$1, fileURL, fs$1, path, $s};return $f; + }; + $pkg.FilePathFromFileURL = FilePathFromFileURL; + MimeTypeByExtension = function MimeTypeByExtension$1(ext) { + var {_entry, _entry$1, _r, contentType, ext, $s, $r, $c} = $restore(this, {ext}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + contentType = (_entry = $mapIndex(builtinTypesLower,$String.keyFor(ext)), _entry !== undefined ? _entry.v : ""); + /* */ if (contentType === "") { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (contentType === "") { */ case 1: + _r = strings.ToLower(ext); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + contentType = (_entry$1 = $mapIndex(builtinTypesLower,$String.keyFor(_r)), _entry$1 !== undefined ? _entry$1.v : ""); + /* } */ case 2: + $s = -1; return contentType; + /* */ } return; } var $f = {$blk: MimeTypeByExtension$1, $c: true, $r, _entry, _entry$1, _r, contentType, ext, $s};return $f; + }; + $pkg.MimeTypeByExtension = MimeTypeByExtension; + $ptrType(Joiner).prototype.AddString = function AddString(data) { + var data, j; + j = this; + if (data.length > 0) { + j.lastByte = data.charCodeAt((data.length - 1 >> 0)); + } + j.strings = $append(j.strings, new joinerString.ptr(data, j.length)); + j.length = j.length + (((data.length >>> 0))) >>> 0; + }; + $ptrType(Joiner).prototype.AddBytes = function AddBytes(data) { + var data, j, x; + j = this; + if (data.$length > 0) { + j.lastByte = (x = data.$length - 1 >> 0, ((x < 0 || x >= data.$length) ? ($throwRuntimeError("index out of range"), undefined) : data.$array[data.$offset + x])); + } + j.bytes = $append(j.bytes, new joinerBytes.ptr(data, j.length)); + j.length = j.length + (((data.$length >>> 0))) >>> 0; + }; + $ptrType(Joiner).prototype.LastByte = function LastByte() { + var j; + j = this; + return j.lastByte; + }; + $ptrType(Joiner).prototype.Length = function Length() { + var j; + j = this; + return j.length; + }; + $ptrType(Joiner).prototype.EnsureNewlineAtEnd = function EnsureNewlineAtEnd() { + var j; + j = this; + if (j.length > 0 && !((j.lastByte === 10))) { + j.AddString("\n"); + } + }; + $ptrType(Joiner).prototype.Done = function Done$1() { + var _i, _i$1, _ref, _ref$1, buffer, item, item$1, j, x, x$1; + j = this; + if ((j.strings.$length === 0) && (j.bytes.$length === 1) && ((x = j.bytes, (0 >= x.$length ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + 0])).offset === 0)) { + return (x$1 = j.bytes, (0 >= x$1.$length ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + 0])).data; + } + buffer = $makeSlice(sliceType$1, j.length); + _ref = j.strings; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + item = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), joinerString); + $copyString($subslice(buffer, item.offset), item.data); + _i++; + } + _ref$1 = j.bytes; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + item$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), joinerBytes); + $copySlice($subslice(buffer, item$1.offset), item$1.data); + _i$1++; + } + return buffer; + }; + $ptrType(Joiner).prototype.Contains = function Contains(s, b) { + var _i, _i$1, _ref, _ref$1, b, item, item$1, j, s; + j = this; + _ref = j.strings; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + item = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), joinerString); + if (strings.Contains(item.data, s)) { + return true; + } + _i++; + } + _ref$1 = j.bytes; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + item$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), joinerBytes); + if (bytes.Contains(item$1.data, b)) { + return true; + } + _i$1++; + } + return false; + }; + HashCombine = function HashCombine$1(seed, hash) { + var hash, seed; + return (seed ^ ((((hash + 2654435769 >>> 0) + ((seed << 6 >>> 0)) >>> 0) + ((seed >>> 2 >>> 0)) >>> 0))) >>> 0; + }; + $pkg.HashCombine = HashCombine; + HashCombineString = function HashCombineString$1(seed, text) { + var _i, _ref, _rune, c, seed, text; + seed = HashCombine(seed, ((text.length >>> 0))); + _ref = text; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + c = _rune[0]; + seed = HashCombine(seed, ((c >>> 0))); + _i += _rune[1]; + } + return seed; + }; + $pkg.HashCombineString = HashCombineString; + ParseGlobPattern = function ParseGlobPattern$1(text) { + var count, pattern, star, text, wildcard; + pattern = sliceType$7.nil; + while (true) { + star = strings.IndexByte(text, 42); + if (star < 0) { + pattern = $append(pattern, new GlobPart.ptr(text, 0)); + break; + } + count = 1; + while (true) { + if (!((star + count >> 0) < text.length && (text.charCodeAt((star + count >> 0)) === 42))) { break; } + count = count + (1) >> 0; + } + wildcard = 1; + if (count > 1 && ((star === 0) || (text.charCodeAt((star - 1 >> 0)) === 47) || (text.charCodeAt((star - 1 >> 0)) === 92)) && (((star + count >> 0) === text.length) || (text.charCodeAt((star + count >> 0)) === 47) || (text.charCodeAt((star + count >> 0)) === 92))) { + wildcard = 2; + } + pattern = $append(pattern, new GlobPart.ptr($substring(text, 0, star), wildcard)); + text = $substring(text, (star + count >> 0)); + } + return pattern; + }; + $pkg.ParseGlobPattern = ParseGlobPattern; + GlobPatternToString = function GlobPatternToString$1(pattern) { + var _1, _i, _ref, part, pattern, sb; + sb = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + _ref = pattern; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + part = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), GlobPart); + sb.WriteString(part.Prefix); + _1 = part.Wildcard; + if (_1 === (1)) { + sb.WriteByte(42); + } else if (_1 === (2)) { + sb.WriteString("**"); + } + _i++; + } + return sb.String(); + }; + $pkg.GlobPatternToString = GlobPatternToString; + NewF64 = function NewF64$1(a) { + var a; + return new F64.ptr((a)); + }; + $pkg.NewF64 = NewF64; + $ptrType(F64).prototype.Value = function Value() { + var a; + a = this; + return a.value; + }; + F64.prototype.Value = function(...$args) { return this.$val.Value(...$args); }; + $ptrType(F64).prototype.IsNaN = function IsNaN() { + var a; + a = this; + return math.IsNaN(a.value); + }; + F64.prototype.IsNaN = function(...$args) { return this.$val.IsNaN(...$args); }; + $ptrType(F64).prototype.Neg = function Neg() { + var a; + a = this; + return NewF64(-a.value); + }; + F64.prototype.Neg = function(...$args) { return this.$val.Neg(...$args); }; + $ptrType(F64).prototype.Abs = function Abs() { + var a; + a = this; + return NewF64(math.Abs(a.value)); + }; + F64.prototype.Abs = function(...$args) { return this.$val.Abs(...$args); }; + $ptrType(F64).prototype.Sin = function Sin() { + var a; + a = this; + return NewF64(math.Sin(a.value)); + }; + F64.prototype.Sin = function(...$args) { return this.$val.Sin(...$args); }; + $ptrType(F64).prototype.Cos = function Cos() { + var a; + a = this; + return NewF64(math.Cos(a.value)); + }; + F64.prototype.Cos = function(...$args) { return this.$val.Cos(...$args); }; + $ptrType(F64).prototype.Log2 = function Log2() { + var a; + a = this; + return NewF64(math.Log2(a.value)); + }; + F64.prototype.Log2 = function(...$args) { return this.$val.Log2(...$args); }; + $ptrType(F64).prototype.Round = function Round() { + var a; + a = this; + return NewF64(math.Round(a.value)); + }; + F64.prototype.Round = function(...$args) { return this.$val.Round(...$args); }; + $ptrType(F64).prototype.Floor = function Floor() { + var a; + a = this; + return NewF64(math.Floor(a.value)); + }; + F64.prototype.Floor = function(...$args) { return this.$val.Floor(...$args); }; + $ptrType(F64).prototype.Ceil = function Ceil() { + var a; + a = this; + return NewF64(math.Ceil(a.value)); + }; + F64.prototype.Ceil = function(...$args) { return this.$val.Ceil(...$args); }; + $ptrType(F64).prototype.Squared = function Squared() { + var a; + a = this; + return $clone(a, F64).Mul($clone(a, F64)); + }; + F64.prototype.Squared = function(...$args) { return this.$val.Squared(...$args); }; + $ptrType(F64).prototype.Cubed = function Cubed() { + var a; + a = this; + return $clone($clone(a, F64).Mul($clone(a, F64)), F64).Mul($clone(a, F64)); + }; + F64.prototype.Cubed = function(...$args) { return this.$val.Cubed(...$args); }; + $ptrType(F64).prototype.Sqrt = function Sqrt() { + var a; + a = this; + return NewF64(math.Sqrt(a.value)); + }; + F64.prototype.Sqrt = function(...$args) { return this.$val.Sqrt(...$args); }; + $ptrType(F64).prototype.Cbrt = function Cbrt() { + var a; + a = this; + return NewF64(math.Cbrt(a.value)); + }; + F64.prototype.Cbrt = function(...$args) { return this.$val.Cbrt(...$args); }; + $ptrType(F64).prototype.Add = function Add$1(b) { + var a, b; + a = this; + return NewF64(a.value + b.value); + }; + F64.prototype.Add = function(...$args) { return this.$val.Add(...$args); }; + $ptrType(F64).prototype.AddConst = function AddConst(b) { + var a, b; + a = this; + return NewF64(a.value + b); + }; + F64.prototype.AddConst = function(...$args) { return this.$val.AddConst(...$args); }; + $ptrType(F64).prototype.Sub = function Sub(b) { + var a, b; + a = this; + return NewF64(a.value - b.value); + }; + F64.prototype.Sub = function(...$args) { return this.$val.Sub(...$args); }; + $ptrType(F64).prototype.SubConst = function SubConst(b) { + var a, b; + a = this; + return NewF64(a.value - b); + }; + F64.prototype.SubConst = function(...$args) { return this.$val.SubConst(...$args); }; + $ptrType(F64).prototype.Mul = function Mul(b) { + var a, b; + a = this; + return NewF64(a.value * b.value); + }; + F64.prototype.Mul = function(...$args) { return this.$val.Mul(...$args); }; + $ptrType(F64).prototype.MulConst = function MulConst(b) { + var a, b; + a = this; + return NewF64(a.value * b); + }; + F64.prototype.MulConst = function(...$args) { return this.$val.MulConst(...$args); }; + $ptrType(F64).prototype.Div = function Div(b) { + var a, b; + a = this; + return NewF64(a.value / b.value); + }; + F64.prototype.Div = function(...$args) { return this.$val.Div(...$args); }; + $ptrType(F64).prototype.DivConst = function DivConst(b) { + var a, b; + a = this; + return NewF64(a.value / b); + }; + F64.prototype.DivConst = function(...$args) { return this.$val.DivConst(...$args); }; + $ptrType(F64).prototype.Pow = function Pow(b) { + var a, b; + a = this; + return NewF64(math.Pow(a.value, b.value)); + }; + F64.prototype.Pow = function(...$args) { return this.$val.Pow(...$args); }; + $ptrType(F64).prototype.PowConst = function PowConst(b) { + var a, b; + a = this; + return NewF64(math.Pow(a.value, b)); + }; + F64.prototype.PowConst = function(...$args) { return this.$val.PowConst(...$args); }; + $ptrType(F64).prototype.Atan2 = function Atan2(b) { + var a, b; + a = this; + return NewF64(math.Atan2(a.value, b.value)); + }; + F64.prototype.Atan2 = function(...$args) { return this.$val.Atan2(...$args); }; + $ptrType(F64).prototype.WithSignFrom = function WithSignFrom(b) { + var a, b; + a = this; + return NewF64(math.Copysign(a.value, b.value)); + }; + F64.prototype.WithSignFrom = function(...$args) { return this.$val.WithSignFrom(...$args); }; + Min2 = function Min2$1(a, b) { + var a, b; + return NewF64(math.Min(a.value, b.value)); + }; + $pkg.Min2 = Min2; + Max2 = function Max2$1(a, b) { + var a, b; + return NewF64(math.Max(a.value, b.value)); + }; + $pkg.Max2 = Max2; + Min3 = function Min3$1(a, b, c) { + var a, b, c; + return NewF64(math.Min(math.Min(a.value, b.value), c.value)); + }; + $pkg.Min3 = Min3; + Max3 = function Max3$1(a, b, c) { + var a, b, c; + return NewF64(math.Max(math.Max(a.value, b.value), c.value)); + }; + $pkg.Max3 = Max3; + Lerp = function Lerp$1(a, b, t) { + var a, b, t; + return $clone($clone($clone(b, F64).Sub($clone(a, F64)), F64).Mul($clone(t, F64)), F64).Add($clone(a, F64)); + }; + $pkg.Lerp = Lerp; + EncodeStringAsShortestDataURL = function EncodeStringAsShortestDataURL$1(mimeType, text) { + var {_r, _tuple, encoded, mimeType, ok, percentURL, text, url$1, $s, $r, $c} = $restore(this, {mimeType, text}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + encoded = base64.StdEncoding.EncodeToString((new sliceType$1($stringToBytes(text)))); + _r = fmt.Sprintf("data:%s;base64,%s", new sliceType$5([new $String(mimeType), new $String(encoded)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + url$1 = _r; + _tuple = EncodeStringAsPercentEscapedDataURL(mimeType, text); + percentURL = _tuple[0]; + ok = _tuple[1]; + if (ok && percentURL.length < url$1.length) { + $s = -1; return percentURL; + } + $s = -1; return url$1; + /* */ } return; } var $f = {$blk: EncodeStringAsShortestDataURL$1, $c: true, $r, _r, _tuple, encoded, mimeType, ok, percentURL, text, url$1, $s};return $f; + }; + $pkg.EncodeStringAsShortestDataURL = EncodeStringAsShortestDataURL; + EncodeStringAsPercentEscapedDataURL = function EncodeStringAsPercentEscapedDataURL$1(mimeType, text) { + var _tuple, c, c$1, hex, i, mimeType, n, runStart, sb, text, trailingStart, width; + hex = "0123456789ABCDEF"; + sb = new strings.Builder.ptr(ptrType$1.nil, sliceType$1.nil); + n = text.length; + i = 0; + runStart = 0; + sb.WriteString("data:"); + sb.WriteString(mimeType); + sb.WriteByte(44); + trailingStart = n; + while (true) { + if (!(trailingStart > 0)) { break; } + c = text.charCodeAt((trailingStart - 1 >> 0)); + if (c > 32 || (c === 9) || (c === 10) || (c === 13)) { + break; + } + trailingStart = trailingStart - (1) >> 0; + } + while (true) { + if (!(i < n)) { break; } + _tuple = utf8.DecodeRuneInString($substring(text, i)); + c$1 = _tuple[0]; + width = _tuple[1]; + if ((c$1 === 65533) && (width === 1)) { + return ["", false]; + } + if ((c$1 === 9) || (c$1 === 10) || (c$1 === 13) || (c$1 === 35) || i >= trailingStart || ((c$1 === 37) && (i + 2 >> 0) < n && isHex(text.charCodeAt((i + 1 >> 0))) && isHex(text.charCodeAt((i + 2 >> 0))))) { + if (runStart < i) { + sb.WriteString($substring(text, runStart, i)); + } + sb.WriteByte(37); + sb.WriteByte(hex.charCodeAt((c$1 >> 4 >> 0))); + sb.WriteByte(hex.charCodeAt((c$1 & 15))); + runStart = i + width >> 0; + } + i = i + (width) >> 0; + } + if (runStart < n) { + sb.WriteString($substring(text, runStart)); + } + return [sb.String(), true]; + }; + $pkg.EncodeStringAsPercentEscapedDataURL = EncodeStringAsPercentEscapedDataURL; + isHex = function isHex$1(c) { + var c; + return c >= 48 && c <= 57 || c >= 97 && c <= 102 || c >= 65 && c <= 70; + }; + EscapeClosingTag = function EscapeClosingTag$1(text, slashTag) { + var b, i, slashTag, text; + if (slashTag === "") { + return text; + } + i = strings.Index(text, "> 0))); + text = $substring(text, (i + 1 >> 0)); + if (text.length >= slashTag.length && strings.EqualFold($substring(text, 0, slashTag.length), slashTag)) { + b.WriteByte(92); + } + i = strings.Index(text, ">> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")))); + }; + $pkg.NewBitSet = NewBitSet; + $ptrType(BitSet).prototype.HasBit = function HasBit(bit) { + var _q, bit, bs, x, x$1, y; + bs = this; + return !((((((x = bs.entries, x$1 = (_q = bit / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$1])) & (((y = (((bit & 7) >>> 0)), y < 32 ? (1 << y) : 0) << 24 >>> 24))) >>> 0)) === 0)); + }; + BitSet.prototype.HasBit = function(...$args) { return this.$val.HasBit(...$args); }; + $ptrType(BitSet).prototype.SetBit = function SetBit(bit) { + var _index, _q, bit, bs, x, x$1, y; + bs = this; + _index = (_q = bit / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")); + (x$1 = bs.entries, ((_index < 0 || _index >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + _index] = (((x = bs.entries, ((_index < 0 || _index >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + _index])) | (((y = (((bit & 7) >>> 0)), y < 32 ? (1 << y) : 0) << 24 >>> 24))) >>> 0))); + }; + BitSet.prototype.SetBit = function(...$args) { return this.$val.SetBit(...$args); }; + $ptrType(BitSet).prototype.Equals = function Equals(other) { + var bs, other; + bs = this; + return bytes.Equal(bs.entries, other.entries); + }; + BitSet.prototype.Equals = function(...$args) { return this.$val.Equals(...$args); }; + $ptrType(BitSet).prototype.String = function String() { + var bs; + bs = this; + return ($bytesToString(bs.entries)); + }; + BitSet.prototype.String = function(...$args) { return this.$val.String(...$args); }; + TypoDetector.methods = [{prop: "MaybeCorrectTypo", name: "MaybeCorrectTypo", pkg: "", typ: $funcType([$String], [$String, $Bool], false)}]; + ptrType$2.methods = [{prop: "Begin", name: "Begin", pkg: "", typ: $funcType([$String], [], false)}, {prop: "End", name: "End", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Fork", name: "Fork", pkg: "", typ: $funcType([], [ptrType$2], false)}, {prop: "Join", name: "Join", pkg: "", typ: $funcType([ptrType$2], [], false)}, {prop: "Log", name: "Log", pkg: "", typ: $funcType([logger.Log], [], false)}]; + ptrType$8.methods = [{prop: "Enter", name: "Enter", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Leave", name: "Leave", pkg: "", typ: $funcType([$Int], [], false)}]; + ptrType$9.methods = [{prop: "AddString", name: "AddString", pkg: "", typ: $funcType([$String], [], false)}, {prop: "AddBytes", name: "AddBytes", pkg: "", typ: $funcType([sliceType$1], [], false)}, {prop: "LastByte", name: "LastByte", pkg: "", typ: $funcType([], [$Uint8], false)}, {prop: "Length", name: "Length", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "EnsureNewlineAtEnd", name: "EnsureNewlineAtEnd", pkg: "", typ: $funcType([], [], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "Contains", name: "Contains", pkg: "", typ: $funcType([$String, sliceType$1], [$Bool], false)}]; + F64.methods = [{prop: "Value", name: "Value", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "IsNaN", name: "IsNaN", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Neg", name: "Neg", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Abs", name: "Abs", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Sin", name: "Sin", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Cos", name: "Cos", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Log2", name: "Log2", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Floor", name: "Floor", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Ceil", name: "Ceil", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Squared", name: "Squared", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Cubed", name: "Cubed", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Sqrt", name: "Sqrt", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Cbrt", name: "Cbrt", pkg: "", typ: $funcType([], [F64], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([F64], [F64], false)}, {prop: "AddConst", name: "AddConst", pkg: "", typ: $funcType([$Float64], [F64], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([F64], [F64], false)}, {prop: "SubConst", name: "SubConst", pkg: "", typ: $funcType([$Float64], [F64], false)}, {prop: "Mul", name: "Mul", pkg: "", typ: $funcType([F64], [F64], false)}, {prop: "MulConst", name: "MulConst", pkg: "", typ: $funcType([$Float64], [F64], false)}, {prop: "Div", name: "Div", pkg: "", typ: $funcType([F64], [F64], false)}, {prop: "DivConst", name: "DivConst", pkg: "", typ: $funcType([$Float64], [F64], false)}, {prop: "Pow", name: "Pow", pkg: "", typ: $funcType([F64], [F64], false)}, {prop: "PowConst", name: "PowConst", pkg: "", typ: $funcType([$Float64], [F64], false)}, {prop: "Atan2", name: "Atan2", pkg: "", typ: $funcType([F64], [F64], false)}, {prop: "WithSignFrom", name: "WithSignFrom", pkg: "", typ: $funcType([F64], [F64], false)}]; + BitSet.methods = [{prop: "HasBit", name: "HasBit", pkg: "", typ: $funcType([$Uint], [$Bool], false)}, {prop: "SetBit", name: "SetBit", pkg: "", typ: $funcType([$Uint], [], false)}, {prop: "Equals", name: "Equals", pkg: "", typ: $funcType([BitSet], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + TypoDetector.init("github.com/evanw/esbuild/internal/helpers", [{prop: "oneCharTypos", name: "oneCharTypos", embedded: false, exported: false, typ: mapType, tag: ""}]); + Timer.init("github.com/evanw/esbuild/internal/helpers", [{prop: "data", name: "data", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "mutex", name: "mutex", embedded: false, exported: false, typ: sync.Mutex, tag: ""}]); + timerData.init("github.com/evanw/esbuild/internal/helpers", [{prop: "time", name: "time", embedded: false, exported: false, typ: time.Time, tag: ""}, {prop: "name", name: "name", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "isEnd", name: "isEnd", embedded: false, exported: false, typ: $Bool, tag: ""}]); + Serializer.init("github.com/evanw/esbuild/internal/helpers", [{prop: "flags", name: "flags", embedded: false, exported: false, typ: sliceType$6, tag: ""}]); + Joiner.init("github.com/evanw/esbuild/internal/helpers", [{prop: "strings", name: "strings", embedded: false, exported: false, typ: sliceType$8, tag: ""}, {prop: "bytes", name: "bytes", embedded: false, exported: false, typ: sliceType$9, tag: ""}, {prop: "length", name: "length", embedded: false, exported: false, typ: $Uint32, tag: ""}, {prop: "lastByte", name: "lastByte", embedded: false, exported: false, typ: $Uint8, tag: ""}]); + joinerString.init("github.com/evanw/esbuild/internal/helpers", [{prop: "data", name: "data", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + joinerBytes.init("github.com/evanw/esbuild/internal/helpers", [{prop: "data", name: "data", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "offset", name: "offset", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + GlobPart.init("", [{prop: "Prefix", name: "Prefix", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Wildcard", name: "Wildcard", embedded: false, exported: true, typ: GlobWildcard, tag: ""}]); + F64.init("github.com/evanw/esbuild/internal/helpers", [{prop: "value", name: "value", embedded: false, exported: false, typ: $Float64, tag: ""}]); + BitSet.init("github.com/evanw/esbuild/internal/helpers", [{prop: "entries", name: "entries", embedded: false, exported: false, typ: sliceType$1, tag: ""}]); + pair.init("github.com/evanw/esbuild/internal/helpers", [{prop: "timerData", name: "timerData", embedded: true, exported: false, typ: timerData, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = base64.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = fs.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = logger.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = url.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = debug.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sync.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = atomic.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = time.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + builtinTypesLower = $makeMap($String.keyFor, [{ k: ".css", v: "text/css; charset=utf-8" }, { k: ".htm", v: "text/html; charset=utf-8" }, { k: ".html", v: "text/html; charset=utf-8" }, { k: ".js", v: "text/javascript; charset=utf-8" }, { k: ".json", v: "application/json; charset=utf-8" }, { k: ".markdown", v: "text/markdown; charset=utf-8" }, { k: ".md", v: "text/markdown; charset=utf-8" }, { k: ".mjs", v: "text/javascript; charset=utf-8" }, { k: ".xhtml", v: "application/xhtml+xml; charset=utf-8" }, { k: ".xml", v: "text/xml; charset=utf-8" }, { k: ".avif", v: "image/avif" }, { k: ".gif", v: "image/gif" }, { k: ".jpeg", v: "image/jpeg" }, { k: ".jpg", v: "image/jpeg" }, { k: ".png", v: "image/png" }, { k: ".svg", v: "image/svg+xml" }, { k: ".webp", v: "image/webp" }, { k: ".eot", v: "application/vnd.ms-fontobject" }, { k: ".otf", v: "font/otf" }, { k: ".sfnt", v: "font/sfnt" }, { k: ".ttf", v: "font/ttf" }, { k: ".woff", v: "font/woff" }, { k: ".woff2", v: "font/woff2" }, { k: ".pdf", v: "application/pdf" }, { k: ".wasm", v: "application/wasm" }, { k: ".webmanifest", v: "application/manifest+json" }]); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/evanw/esbuild/internal/ast"] = (function() { + var $pkg = {}, $init, helpers, logger, sort, ImportKind, ImportRecordFlags, ImportRecord, AssertOrWithKeyword, ImportAssertOrWith, AssertOrWithEntry, GlobPattern, Index32, SymbolKind, Ref, LocRef, ImportItemStatus, SymbolFlags, Symbol, SlotNamespace, SlotCounts, NamespaceAlias, SymbolMap, CharFreq, NameMinifier, charAndCount, charAndCountArray, ptrType, ptrType$1, sliceType, sliceType$1, ptrType$2, ptrType$3, sliceType$2, sliceType$3, sliceType$4, ptrType$4, ptrType$5, ptrType$6, ptrType$7, FindAssertOrWithEntry, MakeIndex32, NewSymbolMap, FollowSymbols, FollowAllSymbols, MergeSymbols; + helpers = $packages["github.com/evanw/esbuild/internal/helpers"]; + logger = $packages["github.com/evanw/esbuild/internal/logger"]; + sort = $packages["sort"]; + ImportKind = $newType(1, $kindUint8, "ast.ImportKind", true, "github.com/evanw/esbuild/internal/ast", true, null); + ImportRecordFlags = $newType(2, $kindUint16, "ast.ImportRecordFlags", true, "github.com/evanw/esbuild/internal/ast", true, null); + ImportRecord = $newType(0, $kindStruct, "ast.ImportRecord", true, "github.com/evanw/esbuild/internal/ast", true, function(AssertOrWith_, GlobPattern_, Path_, Range_, ErrorHandlerLoc_, SourceIndex_, CopySourceIndex_, Flags_, Kind_) { + this.$val = this; + if (arguments.length === 0) { + this.AssertOrWith = ptrType$2.nil; + this.GlobPattern = ptrType$3.nil; + this.Path = new logger.Path.ptr("", "", "", new logger.ImportAttributes.ptr(""), 0); + this.Range = new logger.Range.ptr(new logger.Loc.ptr(0), 0); + this.ErrorHandlerLoc = new logger.Loc.ptr(0); + this.SourceIndex = new Index32.ptr(0); + this.CopySourceIndex = new Index32.ptr(0); + this.Flags = 0; + this.Kind = 0; + return; + } + this.AssertOrWith = AssertOrWith_; + this.GlobPattern = GlobPattern_; + this.Path = Path_; + this.Range = Range_; + this.ErrorHandlerLoc = ErrorHandlerLoc_; + this.SourceIndex = SourceIndex_; + this.CopySourceIndex = CopySourceIndex_; + this.Flags = Flags_; + this.Kind = Kind_; + }); + AssertOrWithKeyword = $newType(1, $kindUint8, "ast.AssertOrWithKeyword", true, "github.com/evanw/esbuild/internal/ast", true, null); + ImportAssertOrWith = $newType(0, $kindStruct, "ast.ImportAssertOrWith", true, "github.com/evanw/esbuild/internal/ast", true, function(Entries_, KeywordLoc_, InnerOpenBraceLoc_, InnerCloseBraceLoc_, OuterOpenBraceLoc_, OuterCloseBraceLoc_, Keyword_) { + this.$val = this; + if (arguments.length === 0) { + this.Entries = sliceType$2.nil; + this.KeywordLoc = new logger.Loc.ptr(0); + this.InnerOpenBraceLoc = new logger.Loc.ptr(0); + this.InnerCloseBraceLoc = new logger.Loc.ptr(0); + this.OuterOpenBraceLoc = new logger.Loc.ptr(0); + this.OuterCloseBraceLoc = new logger.Loc.ptr(0); + this.Keyword = 0; + return; + } + this.Entries = Entries_; + this.KeywordLoc = KeywordLoc_; + this.InnerOpenBraceLoc = InnerOpenBraceLoc_; + this.InnerCloseBraceLoc = InnerCloseBraceLoc_; + this.OuterOpenBraceLoc = OuterOpenBraceLoc_; + this.OuterCloseBraceLoc = OuterCloseBraceLoc_; + this.Keyword = Keyword_; + }); + AssertOrWithEntry = $newType(0, $kindStruct, "ast.AssertOrWithEntry", true, "github.com/evanw/esbuild/internal/ast", true, function(Key_, Value_, KeyLoc_, ValueLoc_, PreferQuotedKey_) { + this.$val = this; + if (arguments.length === 0) { + this.Key = sliceType$3.nil; + this.Value = sliceType$3.nil; + this.KeyLoc = new logger.Loc.ptr(0); + this.ValueLoc = new logger.Loc.ptr(0); + this.PreferQuotedKey = false; + return; + } + this.Key = Key_; + this.Value = Value_; + this.KeyLoc = KeyLoc_; + this.ValueLoc = ValueLoc_; + this.PreferQuotedKey = PreferQuotedKey_; + }); + GlobPattern = $newType(0, $kindStruct, "ast.GlobPattern", true, "github.com/evanw/esbuild/internal/ast", true, function(Parts_, ExportAlias_, Kind_) { + this.$val = this; + if (arguments.length === 0) { + this.Parts = sliceType$4.nil; + this.ExportAlias = ""; + this.Kind = 0; + return; + } + this.Parts = Parts_; + this.ExportAlias = ExportAlias_; + this.Kind = Kind_; + }); + Index32 = $newType(0, $kindStruct, "ast.Index32", true, "github.com/evanw/esbuild/internal/ast", true, function(flippedBits_) { + this.$val = this; + if (arguments.length === 0) { + this.flippedBits = 0; + return; + } + this.flippedBits = flippedBits_; + }); + SymbolKind = $newType(1, $kindUint8, "ast.SymbolKind", true, "github.com/evanw/esbuild/internal/ast", true, null); + Ref = $newType(0, $kindStruct, "ast.Ref", true, "github.com/evanw/esbuild/internal/ast", true, function(SourceIndex_, InnerIndex_) { + this.$val = this; + if (arguments.length === 0) { + this.SourceIndex = 0; + this.InnerIndex = 0; + return; + } + this.SourceIndex = SourceIndex_; + this.InnerIndex = InnerIndex_; + }); + LocRef = $newType(0, $kindStruct, "ast.LocRef", true, "github.com/evanw/esbuild/internal/ast", true, function(Loc_, Ref_) { + this.$val = this; + if (arguments.length === 0) { + this.Loc = new logger.Loc.ptr(0); + this.Ref = new Ref.ptr(0, 0); + return; + } + this.Loc = Loc_; + this.Ref = Ref_; + }); + ImportItemStatus = $newType(1, $kindUint8, "ast.ImportItemStatus", true, "github.com/evanw/esbuild/internal/ast", true, null); + SymbolFlags = $newType(2, $kindUint16, "ast.SymbolFlags", true, "github.com/evanw/esbuild/internal/ast", true, null); + Symbol = $newType(0, $kindStruct, "ast.Symbol", true, "github.com/evanw/esbuild/internal/ast", true, function(NamespaceAlias_, OriginalName_, Link_, UseCountEstimate_, ChunkIndex_, NestedScopeSlot_, Flags_, Kind_, ImportItemStatus_) { + this.$val = this; + if (arguments.length === 0) { + this.NamespaceAlias = ptrType$4.nil; + this.OriginalName = ""; + this.Link = new Ref.ptr(0, 0); + this.UseCountEstimate = 0; + this.ChunkIndex = new Index32.ptr(0); + this.NestedScopeSlot = new Index32.ptr(0); + this.Flags = 0; + this.Kind = 0; + this.ImportItemStatus = 0; + return; + } + this.NamespaceAlias = NamespaceAlias_; + this.OriginalName = OriginalName_; + this.Link = Link_; + this.UseCountEstimate = UseCountEstimate_; + this.ChunkIndex = ChunkIndex_; + this.NestedScopeSlot = NestedScopeSlot_; + this.Flags = Flags_; + this.Kind = Kind_; + this.ImportItemStatus = ImportItemStatus_; + }); + SlotNamespace = $newType(1, $kindUint8, "ast.SlotNamespace", true, "github.com/evanw/esbuild/internal/ast", true, null); + SlotCounts = $newType(16, $kindArray, "ast.SlotCounts", true, "github.com/evanw/esbuild/internal/ast", true, null); + NamespaceAlias = $newType(0, $kindStruct, "ast.NamespaceAlias", true, "github.com/evanw/esbuild/internal/ast", true, function(Alias_, NamespaceRef_) { + this.$val = this; + if (arguments.length === 0) { + this.Alias = ""; + this.NamespaceRef = new Ref.ptr(0, 0); + return; + } + this.Alias = Alias_; + this.NamespaceRef = NamespaceRef_; + }); + SymbolMap = $newType(0, $kindStruct, "ast.SymbolMap", true, "github.com/evanw/esbuild/internal/ast", true, function(SymbolsForSource_) { + this.$val = this; + if (arguments.length === 0) { + this.SymbolsForSource = sliceType$1.nil; + return; + } + this.SymbolsForSource = SymbolsForSource_; + }); + CharFreq = $newType(256, $kindArray, "ast.CharFreq", true, "github.com/evanw/esbuild/internal/ast", true, null); + NameMinifier = $newType(0, $kindStruct, "ast.NameMinifier", true, "github.com/evanw/esbuild/internal/ast", true, function(head_, tail_) { + this.$val = this; + if (arguments.length === 0) { + this.head = ""; + this.tail = ""; + return; + } + this.head = head_; + this.tail = tail_; + }); + charAndCount = $newType(0, $kindStruct, "ast.charAndCount", true, "github.com/evanw/esbuild/internal/ast", false, function(char$0_, count_, index_) { + this.$val = this; + if (arguments.length === 0) { + this.char$0 = ""; + this.count = 0; + this.index = 0; + return; + } + this.char$0 = char$0_; + this.count = count_; + this.index = index_; + }); + charAndCountArray = $newType(12, $kindSlice, "ast.charAndCountArray", true, "github.com/evanw/esbuild/internal/ast", false, null); + $pkg.ImportKind = ImportKind; + $pkg.ImportRecordFlags = ImportRecordFlags; + $pkg.ImportRecord = ImportRecord; + $pkg.AssertOrWithKeyword = AssertOrWithKeyword; + $pkg.ImportAssertOrWith = ImportAssertOrWith; + $pkg.AssertOrWithEntry = AssertOrWithEntry; + $pkg.GlobPattern = GlobPattern; + $pkg.Index32 = Index32; + $pkg.SymbolKind = SymbolKind; + $pkg.Ref = Ref; + $pkg.LocRef = LocRef; + $pkg.ImportItemStatus = ImportItemStatus; + $pkg.SymbolFlags = SymbolFlags; + $pkg.Symbol = Symbol; + $pkg.SlotNamespace = SlotNamespace; + $pkg.SlotCounts = SlotCounts; + $pkg.NamespaceAlias = NamespaceAlias; + $pkg.SymbolMap = SymbolMap; + $pkg.CharFreq = CharFreq; + $pkg.NameMinifier = NameMinifier; + $pkg.charAndCount = charAndCount; + $pkg.charAndCountArray = charAndCountArray; + $pkg.$finishSetup = function() { + ptrType = $ptrType(AssertOrWithEntry); + ptrType$1 = $ptrType($Uint32); + sliceType = $sliceType(Symbol); + sliceType$1 = $sliceType(sliceType); + ptrType$2 = $ptrType(ImportAssertOrWith); + ptrType$3 = $ptrType(GlobPattern); + sliceType$2 = $sliceType(AssertOrWithEntry); + sliceType$3 = $sliceType($Uint16); + sliceType$4 = $sliceType(helpers.GlobPart); + ptrType$4 = $ptrType(NamespaceAlias); + ptrType$5 = $ptrType(Symbol); + ptrType$6 = $ptrType(SlotCounts); + ptrType$7 = $ptrType(CharFreq); + ImportKind.prototype.StringForMetafile = function StringForMetafile() { + var _1, kind; + kind = this.$val; + _1 = kind; + if (_1 === (1)) { + return "import-statement"; + } else if (_1 === (2)) { + return "require-call"; + } else if (_1 === (3)) { + return "dynamic-import"; + } else if (_1 === (4)) { + return "require-resolve"; + } else if (_1 === (5)) { + return "import-rule"; + } else if (_1 === (6)) { + return "composes-from"; + } else if (_1 === (7)) { + return "url-token"; + } else if (_1 === (0)) { + return "entry-point"; + } else { + $panic(new $String("Internal error")); + } + }; + $ptrType(ImportKind).prototype.StringForMetafile = function(...$args) { return new ImportKind(this.$get()).StringForMetafile(...$args); }; + ImportKind.prototype.IsFromCSS = function IsFromCSS() { + var _1, kind; + kind = this.$val; + _1 = kind; + if ((_1 === (5)) || (_1 === (6)) || (_1 === (7))) { + return true; + } + return false; + }; + $ptrType(ImportKind).prototype.IsFromCSS = function(...$args) { return new ImportKind(this.$get()).IsFromCSS(...$args); }; + ImportKind.prototype.MustResolveToCSS = function MustResolveToCSS() { + var _1, kind; + kind = this.$val; + _1 = kind; + if ((_1 === (5)) || (_1 === (6))) { + return true; + } + return false; + }; + $ptrType(ImportKind).prototype.MustResolveToCSS = function(...$args) { return new ImportKind(this.$get()).MustResolveToCSS(...$args); }; + ImportRecordFlags.prototype.Has = function Has(flag) { + var flag, flags; + flags = this.$val; + return !(((((flags & flag) >>> 0)) === 0)); + }; + $ptrType(ImportRecordFlags).prototype.Has = function(...$args) { return new ImportRecordFlags(this.$get()).Has(...$args); }; + AssertOrWithKeyword.prototype.String = function String() { + var kw; + kw = this.$val; + if (kw === 0) { + return "assert"; + } + return "with"; + }; + $ptrType(AssertOrWithKeyword).prototype.String = function(...$args) { return new AssertOrWithKeyword(this.$get()).String(...$args); }; + FindAssertOrWithEntry = function FindAssertOrWithEntry$1(assertions, name) { + var _i, _ref, assertion, assertions, name; + _ref = assertions; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + assertion = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), AssertOrWithEntry); + if (helpers.UTF16EqualsString(assertion.Key, name)) { + return assertion; + } + _i++; + } + return ptrType.nil; + }; + $pkg.FindAssertOrWithEntry = FindAssertOrWithEntry; + MakeIndex32 = function MakeIndex32$1(index) { + var index; + return new Index32.ptr(~index >>> 0); + }; + $pkg.MakeIndex32 = MakeIndex32; + $ptrType(Index32).prototype.IsValid = function IsValid() { + var i; + i = this; + return !((i.flippedBits === 0)); + }; + Index32.prototype.IsValid = function(...$args) { return this.$val.IsValid(...$args); }; + $ptrType(Index32).prototype.GetIndex = function GetIndex() { + var i; + i = this; + return ~i.flippedBits >>> 0; + }; + Index32.prototype.GetIndex = function(...$args) { return this.$val.GetIndex(...$args); }; + SymbolKind.prototype.IsPrivate = function IsPrivate() { + var kind; + kind = this.$val; + return kind >= 8 && kind <= 17; + }; + $ptrType(SymbolKind).prototype.IsPrivate = function(...$args) { return new SymbolKind(this.$get()).IsPrivate(...$args); }; + SymbolKind.prototype.IsHoisted = function IsHoisted() { + var kind; + kind = this.$val; + return (kind === 1) || (kind === 2); + }; + $ptrType(SymbolKind).prototype.IsHoisted = function(...$args) { return new SymbolKind(this.$get()).IsHoisted(...$args); }; + SymbolKind.prototype.IsHoistedOrFunction = function IsHoistedOrFunction() { + var kind; + kind = this.$val; + return new SymbolKind(kind).IsHoisted() || (kind === 4); + }; + $ptrType(SymbolKind).prototype.IsHoistedOrFunction = function(...$args) { return new SymbolKind(this.$get()).IsHoistedOrFunction(...$args); }; + SymbolKind.prototype.IsFunction = function IsFunction() { + var kind; + kind = this.$val; + return (kind === 2) || (kind === 4); + }; + $ptrType(SymbolKind).prototype.IsFunction = function(...$args) { return new SymbolKind(this.$get()).IsFunction(...$args); }; + SymbolKind.prototype.IsUnboundOrInjected = function IsUnboundOrInjected() { + var kind; + kind = this.$val; + return (kind === 0) || (kind === 23); + }; + $ptrType(SymbolKind).prototype.IsUnboundOrInjected = function(...$args) { return new SymbolKind(this.$get()).IsUnboundOrInjected(...$args); }; + SymbolFlags.prototype.Has = function Has$1(flag) { + var flag, flags; + flags = this.$val; + return !(((((flags & flag) >>> 0)) === 0)); + }; + $ptrType(SymbolFlags).prototype.Has = function(...$args) { return new SymbolFlags(this.$get()).Has(...$args); }; + $ptrType(Symbol).prototype.MergeContentsWith = function MergeContentsWith(oldSymbol) { + var newSymbol, oldSymbol; + newSymbol = this; + newSymbol.UseCountEstimate = newSymbol.UseCountEstimate + (oldSymbol.UseCountEstimate) >>> 0; + if (new SymbolFlags(oldSymbol.Flags).Has(1) && !new SymbolFlags(newSymbol.Flags).Has(1)) { + newSymbol.OriginalName = oldSymbol.OriginalName; + newSymbol.Flags = (newSymbol.Flags | (1)) >>> 0; + } + if (new SymbolFlags(oldSymbol.Flags).Has(2)) { + newSymbol.Flags = (newSymbol.Flags | (2)) >>> 0; + } + }; + $ptrType(Symbol).prototype.SlotNamespace = function SlotNamespace$1() { + var s; + s = this; + if ((s.Kind === 0) || new SymbolFlags(s.Flags).Has(1)) { + return 4; + } + if (new SymbolKind(s.Kind).IsPrivate()) { + return 2; + } + if (s.Kind === 18) { + return 1; + } + if (s.Kind === 24) { + return 3; + } + return 0; + }; + $ptrType(SlotCounts).prototype.UnionMax = function UnionMax(b) { + var _i, _ref, a, ai, b, bi, i; + a = this.$val; + _ref = a; + _i = 0; + while (true) { + if (!(_i < 4)) { break; } + i = _i; + ai = $indexPtr((a), i, ptrType$1); + bi = ((i < 0 || i >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[i]); + if (ai.$get() < bi) { + ai.$set(bi); + } + _i++; + } + }; + NewSymbolMap = function NewSymbolMap$1(sourceCount) { + var sourceCount; + return new SymbolMap.ptr($makeSlice(sliceType$1, sourceCount)); + }; + $pkg.NewSymbolMap = NewSymbolMap; + $ptrType(SymbolMap).prototype.Get = function Get(ref) { + var ref, sm, x, x$1, x$2, x$3; + sm = this; + return (x = (x$1 = sm.SymbolsForSource, x$2 = ref.SourceIndex, ((x$2 < 0 || x$2 >= x$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : x$1.$array[x$1.$offset + x$2])), x$3 = ref.InnerIndex, ((x$3 < 0 || x$3 >= x.$length) ? ($throwRuntimeError("index out of range"), undefined) : x.$array[x.$offset + x$3])); + }; + SymbolMap.prototype.Get = function(...$args) { return this.$val.Get(...$args); }; + FollowSymbols = function FollowSymbols$1(symbols, ref) { + var link, ref, symbol, symbols; + symbol = $clone(symbols, SymbolMap).Get($clone(ref, Ref)); + if ($equal(symbol.Link, $pkg.InvalidRef, Ref)) { + return ref; + } + link = $clone(FollowSymbols($clone(symbols, SymbolMap), $clone(symbol.Link, Ref)), Ref); + if (!($equal(symbol.Link, link, Ref))) { + Ref.copy(symbol.Link, link); + } + return link; + }; + $pkg.FollowSymbols = FollowSymbols; + FollowAllSymbols = function FollowAllSymbols$1(symbols) { + var _i, _i$1, _ref, _ref$1, inner, sourceIndex, symbolIndex, symbols; + _ref = symbols.SymbolsForSource; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + sourceIndex = _i; + inner = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + _ref$1 = inner; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + symbolIndex = _i$1; + FollowSymbols($clone(symbols, SymbolMap), $clone(new Ref.ptr(((sourceIndex >>> 0)), ((symbolIndex >>> 0))), Ref)); + _i$1++; + } + _i++; + } + }; + $pkg.FollowAllSymbols = FollowAllSymbols; + MergeSymbols = function MergeSymbols$1(symbols, old, new$1) { + var new$1, newSymbol, old, oldSymbol, symbols; + if ($equal(old, new$1, Ref)) { + return new$1; + } + oldSymbol = $clone(symbols, SymbolMap).Get($clone(old, Ref)); + if (!($equal(oldSymbol.Link, $pkg.InvalidRef, Ref))) { + Ref.copy(oldSymbol.Link, MergeSymbols($clone(symbols, SymbolMap), $clone(oldSymbol.Link, Ref), $clone(new$1, Ref))); + return oldSymbol.Link; + } + newSymbol = $clone(symbols, SymbolMap).Get($clone(new$1, Ref)); + if (!($equal(newSymbol.Link, $pkg.InvalidRef, Ref))) { + Ref.copy(newSymbol.Link, MergeSymbols($clone(symbols, SymbolMap), $clone(old, Ref), $clone(newSymbol.Link, Ref))); + return newSymbol.Link; + } + Ref.copy(oldSymbol.Link, new$1); + newSymbol.MergeContentsWith(oldSymbol); + return new$1; + }; + $pkg.MergeSymbols = MergeSymbols; + $ptrType(CharFreq).prototype.Scan = function Scan(text, delta) { + var _index, _index$1, _index$2, _tmp, _tmp$1, c, delta, freq, i, n, text, x, x$1, x$2, x$3, x$4, x$5; + freq = this.$val; + if (delta === 0) { + return; + } + _tmp = 0; + _tmp$1 = text.length; + i = _tmp; + n = _tmp$1; + while (true) { + if (!(i < n)) { break; } + c = text.charCodeAt(i); + if (c >= 97 && c <= 122) { + _index = c - 97 << 24 >>> 24; + (x$1 = freq, ((_index < 0 || _index >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[_index] = ((x = freq, ((_index < 0 || _index >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[_index])) + (delta) >> 0))); + } else if (c >= 65 && c <= 90) { + _index$1 = c - 39 << 24 >>> 24; + (x$3 = freq, ((_index$1 < 0 || _index$1 >= x$3.length) ? ($throwRuntimeError("index out of range"), undefined) : x$3[_index$1] = ((x$2 = freq, ((_index$1 < 0 || _index$1 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[_index$1])) + (delta) >> 0))); + } else if (c >= 48 && c <= 57) { + _index$2 = c + 4 << 24 >>> 24; + (x$5 = freq, ((_index$2 < 0 || _index$2 >= x$5.length) ? ($throwRuntimeError("index out of range"), undefined) : x$5[_index$2] = ((x$4 = freq, ((_index$2 < 0 || _index$2 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[_index$2])) + (delta) >> 0))); + } else if ((c === 95)) { + freq[62] = (freq[62] + (delta) >> 0); + } else if ((c === 36)) { + freq[63] = (freq[63] + (delta) >> 0); + } + i = i + (1) >> 0; + } + }; + $ptrType(CharFreq).prototype.Include = function Include(other) { + var freq, i, other, x, x$1, x$2; + freq = this.$val; + i = 0; + while (true) { + if (!(i < 64)) { break; } + (x$2 = freq, ((i < 0 || i >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[i] = ((x = freq, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])) + ((x$1 = other, ((i < 0 || i >= x$1.length) ? ($throwRuntimeError("index out of range"), undefined) : x$1[i]))) >> 0))); + i = i + (1) >> 0; + } + }; + charAndCountArray.prototype.Len = function Len() { + var a; + a = this; + return a.$length; + }; + $ptrType(charAndCountArray).prototype.Len = function(...$args) { return this.$get().Len(...$args); }; + charAndCountArray.prototype.Swap = function Swap(i, j) { + var _tmp, _tmp$1, a, i, j; + a = this; + _tmp = $clone(((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]), charAndCount); + _tmp$1 = $clone(((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]), charAndCount); + charAndCount.copy(((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]), _tmp); + charAndCount.copy(((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]), _tmp$1); + }; + $ptrType(charAndCountArray).prototype.Swap = function(...$args) { return this.$get().Swap(...$args); }; + charAndCountArray.prototype.Less = function Less(i, j) { + var a, ai, aj, i, j; + a = this; + ai = $clone(((i < 0 || i >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + i]), charAndCount); + aj = $clone(((j < 0 || j >= a.$length) ? ($throwRuntimeError("index out of range"), undefined) : a.$array[a.$offset + j]), charAndCount); + return ai.count > aj.count || ((ai.count === aj.count) && ai.index < aj.index); + }; + $ptrType(charAndCountArray).prototype.Less = function(...$args) { return this.$get().Less(...$args); }; + $ptrType(NameMinifier).prototype.ShuffleByCharFreq = function ShuffleByCharFreq(freq) { + var {_i, _ref, array, freq, i, item, minifier, source, $s, $r, $c} = $restore(this, {freq}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + source = this; + array = $makeSlice(charAndCountArray, 64); + i = 0; + while (true) { + if (!(i < source.tail.length)) { break; } + charAndCount.copy(((i < 0 || i >= array.$length) ? ($throwRuntimeError("index out of range"), undefined) : array.$array[array.$offset + i]), new charAndCount.ptr($substring(source.tail, i, (i + 1 >> 0)), ((i < 0 || i >= freq.length) ? ($throwRuntimeError("index out of range"), undefined) : freq[i]), ((i << 24 >>> 24)))); + i = i + (1) >> 0; + } + $r = sort.Sort(array); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + minifier = new NameMinifier.ptr("", ""); + _ref = array; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + item = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), charAndCount); + if (item.char$0 < "0" || item.char$0 > "9") { + minifier.head = minifier.head + (item.char$0); + } + minifier.tail = minifier.tail + (item.char$0); + _i++; + } + $s = -1; return minifier; + /* */ } return; } var $f = {$blk: ShuffleByCharFreq, $c: true, $r, _i, _ref, array, freq, i, item, minifier, source, $s};return $f; + }; + NameMinifier.prototype.ShuffleByCharFreq = function(...$args) { return this.$val.ShuffleByCharFreq(...$args); }; + $ptrType(NameMinifier).prototype.NumberToMinifiedName = function NumberToMinifiedName(i) { + var _q, _q$1, _r, _r$1, i, j, j$1, minifier, n_head, n_tail, name; + minifier = this; + n_head = minifier.head.length; + n_tail = minifier.tail.length; + j = (_r = i % n_head, _r === _r ? _r : $throwRuntimeError("integer divide by zero")); + name = $substring(minifier.head, j, (j + 1 >> 0)); + i = (_q = i / n_head, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + while (true) { + if (!(i > 0)) { break; } + i = i - (1) >> 0; + j$1 = (_r$1 = i % n_tail, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")); + name = name + ($substring(minifier.tail, j$1, (j$1 + 1 >> 0))); + i = (_q$1 = i / n_tail, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")); + } + return name; + }; + NameMinifier.prototype.NumberToMinifiedName = function(...$args) { return this.$val.NumberToMinifiedName(...$args); }; + ImportKind.methods = [{prop: "StringForMetafile", name: "StringForMetafile", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsFromCSS", name: "IsFromCSS", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "MustResolveToCSS", name: "MustResolveToCSS", pkg: "", typ: $funcType([], [$Bool], false)}]; + ImportRecordFlags.methods = [{prop: "Has", name: "Has", pkg: "", typ: $funcType([ImportRecordFlags], [$Bool], false)}]; + AssertOrWithKeyword.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]; + Index32.methods = [{prop: "IsValid", name: "IsValid", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "GetIndex", name: "GetIndex", pkg: "", typ: $funcType([], [$Uint32], false)}]; + SymbolKind.methods = [{prop: "IsPrivate", name: "IsPrivate", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsHoisted", name: "IsHoisted", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsHoistedOrFunction", name: "IsHoistedOrFunction", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsFunction", name: "IsFunction", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsUnboundOrInjected", name: "IsUnboundOrInjected", pkg: "", typ: $funcType([], [$Bool], false)}]; + SymbolFlags.methods = [{prop: "Has", name: "Has", pkg: "", typ: $funcType([SymbolFlags], [$Bool], false)}]; + ptrType$5.methods = [{prop: "MergeContentsWith", name: "MergeContentsWith", pkg: "", typ: $funcType([ptrType$5], [], false)}, {prop: "SlotNamespace", name: "SlotNamespace", pkg: "", typ: $funcType([], [SlotNamespace], false)}]; + ptrType$6.methods = [{prop: "UnionMax", name: "UnionMax", pkg: "", typ: $funcType([SlotCounts], [], false)}]; + SymbolMap.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([Ref], [ptrType$5], false)}]; + ptrType$7.methods = [{prop: "Scan", name: "Scan", pkg: "", typ: $funcType([$String, $Int32], [], false)}, {prop: "Include", name: "Include", pkg: "", typ: $funcType([ptrType$7], [], false)}]; + NameMinifier.methods = [{prop: "ShuffleByCharFreq", name: "ShuffleByCharFreq", pkg: "", typ: $funcType([CharFreq], [NameMinifier], false)}, {prop: "NumberToMinifiedName", name: "NumberToMinifiedName", pkg: "", typ: $funcType([$Int], [$String], false)}]; + charAndCountArray.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}]; + ImportRecord.init("", [{prop: "AssertOrWith", name: "AssertOrWith", embedded: false, exported: true, typ: ptrType$2, tag: ""}, {prop: "GlobPattern", name: "GlobPattern", embedded: false, exported: true, typ: ptrType$3, tag: ""}, {prop: "Path", name: "Path", embedded: false, exported: true, typ: logger.Path, tag: ""}, {prop: "Range", name: "Range", embedded: false, exported: true, typ: logger.Range, tag: ""}, {prop: "ErrorHandlerLoc", name: "ErrorHandlerLoc", embedded: false, exported: true, typ: logger.Loc, tag: ""}, {prop: "SourceIndex", name: "SourceIndex", embedded: false, exported: true, typ: Index32, tag: ""}, {prop: "CopySourceIndex", name: "CopySourceIndex", embedded: false, exported: true, typ: Index32, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: ImportRecordFlags, tag: ""}, {prop: "Kind", name: "Kind", embedded: false, exported: true, typ: ImportKind, tag: ""}]); + ImportAssertOrWith.init("", [{prop: "Entries", name: "Entries", embedded: false, exported: true, typ: sliceType$2, tag: ""}, {prop: "KeywordLoc", name: "KeywordLoc", embedded: false, exported: true, typ: logger.Loc, tag: ""}, {prop: "InnerOpenBraceLoc", name: "InnerOpenBraceLoc", embedded: false, exported: true, typ: logger.Loc, tag: ""}, {prop: "InnerCloseBraceLoc", name: "InnerCloseBraceLoc", embedded: false, exported: true, typ: logger.Loc, tag: ""}, {prop: "OuterOpenBraceLoc", name: "OuterOpenBraceLoc", embedded: false, exported: true, typ: logger.Loc, tag: ""}, {prop: "OuterCloseBraceLoc", name: "OuterCloseBraceLoc", embedded: false, exported: true, typ: logger.Loc, tag: ""}, {prop: "Keyword", name: "Keyword", embedded: false, exported: true, typ: AssertOrWithKeyword, tag: ""}]); + AssertOrWithEntry.init("", [{prop: "Key", name: "Key", embedded: false, exported: true, typ: sliceType$3, tag: ""}, {prop: "Value", name: "Value", embedded: false, exported: true, typ: sliceType$3, tag: ""}, {prop: "KeyLoc", name: "KeyLoc", embedded: false, exported: true, typ: logger.Loc, tag: ""}, {prop: "ValueLoc", name: "ValueLoc", embedded: false, exported: true, typ: logger.Loc, tag: ""}, {prop: "PreferQuotedKey", name: "PreferQuotedKey", embedded: false, exported: true, typ: $Bool, tag: ""}]); + GlobPattern.init("", [{prop: "Parts", name: "Parts", embedded: false, exported: true, typ: sliceType$4, tag: ""}, {prop: "ExportAlias", name: "ExportAlias", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Kind", name: "Kind", embedded: false, exported: true, typ: ImportKind, tag: ""}]); + Index32.init("github.com/evanw/esbuild/internal/ast", [{prop: "flippedBits", name: "flippedBits", embedded: false, exported: false, typ: $Uint32, tag: ""}]); + Ref.init("", [{prop: "SourceIndex", name: "SourceIndex", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "InnerIndex", name: "InnerIndex", embedded: false, exported: true, typ: $Uint32, tag: ""}]); + LocRef.init("", [{prop: "Loc", name: "Loc", embedded: false, exported: true, typ: logger.Loc, tag: ""}, {prop: "Ref", name: "Ref", embedded: false, exported: true, typ: Ref, tag: ""}]); + Symbol.init("", [{prop: "NamespaceAlias", name: "NamespaceAlias", embedded: false, exported: true, typ: ptrType$4, tag: ""}, {prop: "OriginalName", name: "OriginalName", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Link", name: "Link", embedded: false, exported: true, typ: Ref, tag: ""}, {prop: "UseCountEstimate", name: "UseCountEstimate", embedded: false, exported: true, typ: $Uint32, tag: ""}, {prop: "ChunkIndex", name: "ChunkIndex", embedded: false, exported: true, typ: Index32, tag: ""}, {prop: "NestedScopeSlot", name: "NestedScopeSlot", embedded: false, exported: true, typ: Index32, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: SymbolFlags, tag: ""}, {prop: "Kind", name: "Kind", embedded: false, exported: true, typ: SymbolKind, tag: ""}, {prop: "ImportItemStatus", name: "ImportItemStatus", embedded: false, exported: true, typ: ImportItemStatus, tag: ""}]); + SlotCounts.init($Uint32, 4); + NamespaceAlias.init("", [{prop: "Alias", name: "Alias", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "NamespaceRef", name: "NamespaceRef", embedded: false, exported: true, typ: Ref, tag: ""}]); + SymbolMap.init("", [{prop: "SymbolsForSource", name: "SymbolsForSource", embedded: false, exported: true, typ: sliceType$1, tag: ""}]); + CharFreq.init($Int32, 64); + NameMinifier.init("github.com/evanw/esbuild/internal/ast", [{prop: "head", name: "head", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "tail", name: "tail", embedded: false, exported: false, typ: $String, tag: ""}]); + charAndCount.init("github.com/evanw/esbuild/internal/ast", [{prop: "char$0", name: "char", embedded: false, exported: false, typ: $String, tag: ""}, {prop: "count", name: "count", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "index", name: "index", embedded: false, exported: false, typ: $Uint8, tag: ""}]); + charAndCountArray.init(charAndCount); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = helpers.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = logger.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = sort.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.InvalidRef = new Ref.ptr(4294967295, 4294967295); + $pkg.DefaultNameMinifierJS = new NameMinifier.ptr("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$"); + $pkg.DefaultNameMinifierCSS = new NameMinifier.ptr("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["encoding/base32"] = (function() { + var $pkg = {}, $init, io, strconv, Encoding, CorruptInputError, arrayType, arrayType$1, sliceType, arrayType$2, ptrType, NewEncoding, stripNewlines; + io = $packages["io"]; + strconv = $packages["strconv"]; + Encoding = $newType(0, $kindStruct, "base32.Encoding", true, "encoding/base32", true, function(encode_, decodeMap_, padChar_) { + this.$val = this; + if (arguments.length === 0) { + this.encode = arrayType.zero(); + this.decodeMap = arrayType$1.zero(); + this.padChar = 0; + return; + } + this.encode = encode_; + this.decodeMap = decodeMap_; + this.padChar = padChar_; + }); + CorruptInputError = $newType(8, $kindInt64, "base32.CorruptInputError", true, "encoding/base32", true, null); + $pkg.Encoding = Encoding; + $pkg.CorruptInputError = CorruptInputError; + $pkg.$finishSetup = function() { + arrayType = $arrayType($Uint8, 32); + arrayType$1 = $arrayType($Uint8, 256); + sliceType = $sliceType($Uint8); + arrayType$2 = $arrayType($Uint8, 8); + ptrType = $ptrType(Encoding); + NewEncoding = function NewEncoding$1(encoder$1) { + var e, encoder$1, i, x, x$1; + if (!((encoder$1.length === 32))) { + $panic(new $String("encoding alphabet is not 32-bytes long")); + } + e = new Encoding.ptr(arrayType.zero(), arrayType$1.zero(), 0); + e.padChar = 61; + $copyString(new sliceType(e.encode), encoder$1); + $copyString(new sliceType(e.decodeMap), "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"); + i = 0; + while (true) { + if (!(i < encoder$1.length)) { break; } + (x = e.decodeMap, x$1 = encoder$1.charCodeAt(i), ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1] = ((i << 24 >>> 24)))); + i = i + (1) >> 0; + } + return e; + }; + $pkg.NewEncoding = NewEncoding; + $ptrType(Encoding).prototype.WithPadding = function WithPadding(padding) { + var enc, i, padding, x; + enc = this; + if ((padding === 13) || (padding === 10) || padding > 255) { + $panic(new $String("invalid padding")); + } + i = 0; + while (true) { + if (!(i < 32)) { break; } + if ((((x = enc.encode, ((i < 0 || i >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[i])) >> 0)) === padding) { + $panic(new $String("padding contained in alphabet")); + } + i = i + (1) >> 0; + } + enc.padChar = padding; + return enc; + }; + Encoding.prototype.WithPadding = function(...$args) { return this.$val.WithPadding(...$args); }; + $ptrType(Encoding).prototype.Encode = function Encode(dst, src) { + var _1, b, dst, enc, i, size, src, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + enc = this; + while (true) { + if (!(src.$length > 0)) { break; } + b = arrayType$2.zero(); + _1 = src.$length; + if (_1 === (4)) { + b[6] = ((b[6] | ((((((3 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 3]) << 3 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[5] = (((((3 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 3]) >>> 2 << 24 >>> 24)) & 31) >>> 0); + b[4] = ((3 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 3]) >>> 7 << 24 >>> 24); + b[4] = ((b[4] | ((((((2 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 2]) << 1 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[3] = (((((2 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 2]) >>> 4 << 24 >>> 24)) & 31) >>> 0); + b[3] = ((b[3] | ((((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) << 4 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[2] = (((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) >>> 1 << 24 >>> 24)) & 31) >>> 0); + b[1] = (((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) >>> 6 << 24 >>> 24)) & 31) >>> 0); + b[1] = ((b[1] | ((((((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) << 2 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[0] = ((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) >>> 3 << 24 >>> 24); + } else if (_1 === (3)) { + b[4] = ((b[4] | ((((((2 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 2]) << 1 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[3] = (((((2 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 2]) >>> 4 << 24 >>> 24)) & 31) >>> 0); + b[3] = ((b[3] | ((((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) << 4 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[2] = (((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) >>> 1 << 24 >>> 24)) & 31) >>> 0); + b[1] = (((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) >>> 6 << 24 >>> 24)) & 31) >>> 0); + b[1] = ((b[1] | ((((((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) << 2 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[0] = ((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) >>> 3 << 24 >>> 24); + } else if (_1 === (2)) { + b[3] = ((b[3] | ((((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) << 4 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[2] = (((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) >>> 1 << 24 >>> 24)) & 31) >>> 0); + b[1] = (((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) >>> 6 << 24 >>> 24)) & 31) >>> 0); + b[1] = ((b[1] | ((((((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) << 2 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[0] = ((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) >>> 3 << 24 >>> 24); + } else if (_1 === (1)) { + b[1] = ((b[1] | ((((((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) << 2 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[0] = ((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) >>> 3 << 24 >>> 24); + } else { + b[7] = (((4 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 4]) & 31) >>> 0); + b[6] = ((4 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 4]) >>> 5 << 24 >>> 24); + b[6] = ((b[6] | ((((((3 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 3]) << 3 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[5] = (((((3 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 3]) >>> 2 << 24 >>> 24)) & 31) >>> 0); + b[4] = ((3 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 3]) >>> 7 << 24 >>> 24); + b[4] = ((b[4] | ((((((2 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 2]) << 1 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[3] = (((((2 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 2]) >>> 4 << 24 >>> 24)) & 31) >>> 0); + b[3] = ((b[3] | ((((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) << 4 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[2] = (((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) >>> 1 << 24 >>> 24)) & 31) >>> 0); + b[1] = (((((1 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 1]) >>> 6 << 24 >>> 24)) & 31) >>> 0); + b[1] = ((b[1] | ((((((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) << 2 << 24 >>> 24)) & 31) >>> 0))) >>> 0); + b[0] = ((0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]) >>> 3 << 24 >>> 24); + } + size = dst.$length; + if (size >= 8) { + (0 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 0] = (x = enc.encode, x$1 = (b[0] & 31) >>> 0, ((x$1 < 0 || x$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[x$1]))); + (1 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 1] = (x$2 = enc.encode, x$3 = (b[1] & 31) >>> 0, ((x$3 < 0 || x$3 >= x$2.length) ? ($throwRuntimeError("index out of range"), undefined) : x$2[x$3]))); + (2 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 2] = (x$4 = enc.encode, x$5 = (b[2] & 31) >>> 0, ((x$5 < 0 || x$5 >= x$4.length) ? ($throwRuntimeError("index out of range"), undefined) : x$4[x$5]))); + (3 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 3] = (x$6 = enc.encode, x$7 = (b[3] & 31) >>> 0, ((x$7 < 0 || x$7 >= x$6.length) ? ($throwRuntimeError("index out of range"), undefined) : x$6[x$7]))); + (4 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 4] = (x$8 = enc.encode, x$9 = (b[4] & 31) >>> 0, ((x$9 < 0 || x$9 >= x$8.length) ? ($throwRuntimeError("index out of range"), undefined) : x$8[x$9]))); + (5 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 5] = (x$10 = enc.encode, x$11 = (b[5] & 31) >>> 0, ((x$11 < 0 || x$11 >= x$10.length) ? ($throwRuntimeError("index out of range"), undefined) : x$10[x$11]))); + (6 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 6] = (x$12 = enc.encode, x$13 = (b[6] & 31) >>> 0, ((x$13 < 0 || x$13 >= x$12.length) ? ($throwRuntimeError("index out of range"), undefined) : x$12[x$13]))); + (7 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 7] = (x$14 = enc.encode, x$15 = (b[7] & 31) >>> 0, ((x$15 < 0 || x$15 >= x$14.length) ? ($throwRuntimeError("index out of range"), undefined) : x$14[x$15]))); + } else { + i = 0; + while (true) { + if (!(i < size)) { break; } + ((i < 0 || i >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + i] = (x$16 = enc.encode, x$17 = (((i < 0 || i >= b.length) ? ($throwRuntimeError("index out of range"), undefined) : b[i]) & 31) >>> 0, ((x$17 < 0 || x$17 >= x$16.length) ? ($throwRuntimeError("index out of range"), undefined) : x$16[x$17]))); + i = i + (1) >> 0; + } + } + if (src.$length < 5) { + if (enc.padChar === -1) { + break; + } + (7 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 7] = ((enc.padChar << 24 >>> 24))); + if (src.$length < 4) { + (6 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 6] = ((enc.padChar << 24 >>> 24))); + (5 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 5] = ((enc.padChar << 24 >>> 24))); + if (src.$length < 3) { + (4 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 4] = ((enc.padChar << 24 >>> 24))); + if (src.$length < 2) { + (3 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 3] = ((enc.padChar << 24 >>> 24))); + (2 >= dst.$length ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + 2] = ((enc.padChar << 24 >>> 24))); + } + } + } + break; + } + src = $subslice(src, 5); + dst = $subslice(dst, 8); + } + }; + $ptrType(Encoding).prototype.EncodeToString = function EncodeToString(src) { + var buf, enc, src; + enc = this; + buf = $makeSlice(sliceType, enc.EncodedLen(src.$length)); + enc.Encode(buf, src); + return ($bytesToString(buf)); + }; + $ptrType(Encoding).prototype.EncodedLen = function EncodedLen(n) { + var _q, _q$1, enc, n; + enc = this; + if (enc.padChar === -1) { + return (_q = ((($imul(n, 8)) + 4 >> 0)) / 5, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + } + return $imul((_q$1 = ((n + 4 >> 0)) / 5, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 8); + }; + CorruptInputError.prototype.Error = function Error() { + var e; + e = this; + return "illegal base32 data at input byte " + strconv.FormatInt((new $Int64(e.$high, e.$low)), 10); + }; + $ptrType(CorruptInputError).prototype.Error = function(...$args) { return this.$get().Error(...$args); }; + $ptrType(Encoding).prototype.decode = function decode(dst, src) { + var _1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, dbuf, dlen, dst, dsti, enc, end, err, in$1, j, k, n, olen, src, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9; + n = 0; + end = false; + err = $ifaceNil; + enc = this; + $unused(enc.decodeMap); + dsti = 0; + olen = src.$length; + while (true) { + if (!(src.$length > 0 && !end)) { break; } + dbuf = arrayType$2.zero(); + dlen = 8; + j = 0; + while (true) { + if (!(j < 8)) { break; } + if (src.$length === 0) { + if (!((enc.padChar === -1))) { + _tmp = n; + _tmp$1 = false; + _tmp$2 = (new CorruptInputError(0, ((olen - src.$length >> 0) - j >> 0))); + n = _tmp; + end = _tmp$1; + err = _tmp$2; + return [n, end, err]; + } + _tmp$3 = j; + _tmp$4 = true; + dlen = _tmp$3; + end = _tmp$4; + break; + } + in$1 = (0 >= src.$length ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + 0]); + src = $subslice(src, 1); + if ((in$1 === ((enc.padChar << 24 >>> 24))) && j >= 2 && src.$length < 8) { + if ((src.$length + j >> 0) < 7) { + _tmp$5 = n; + _tmp$6 = false; + _tmp$7 = (new CorruptInputError(0, olen)); + n = _tmp$5; + end = _tmp$6; + err = _tmp$7; + return [n, end, err]; + } + k = 0; + while (true) { + if (!(k < (7 - j >> 0))) { break; } + if (src.$length > k && !((((k < 0 || k >= src.$length) ? ($throwRuntimeError("index out of range"), undefined) : src.$array[src.$offset + k]) === ((enc.padChar << 24 >>> 24))))) { + _tmp$8 = n; + _tmp$9 = false; + _tmp$10 = (new CorruptInputError(0, (((olen - src.$length >> 0) + k >> 0) - 1 >> 0))); + n = _tmp$8; + end = _tmp$9; + err = _tmp$10; + return [n, end, err]; + } + k = k + (1) >> 0; + } + _tmp$11 = j; + _tmp$12 = true; + dlen = _tmp$11; + end = _tmp$12; + if ((dlen === 1) || (dlen === 3) || (dlen === 6)) { + _tmp$13 = n; + _tmp$14 = false; + _tmp$15 = (new CorruptInputError(0, ((olen - src.$length >> 0) - 1 >> 0))); + n = _tmp$13; + end = _tmp$14; + err = _tmp$15; + return [n, end, err]; + } + break; + } + ((j < 0 || j >= dbuf.length) ? ($throwRuntimeError("index out of range"), undefined) : dbuf[j] = (x = enc.decodeMap, ((in$1 < 0 || in$1 >= x.length) ? ($throwRuntimeError("index out of range"), undefined) : x[in$1]))); + if (((j < 0 || j >= dbuf.length) ? ($throwRuntimeError("index out of range"), undefined) : dbuf[j]) === 255) { + _tmp$16 = n; + _tmp$17 = false; + _tmp$18 = (new CorruptInputError(0, ((olen - src.$length >> 0) - 1 >> 0))); + n = _tmp$16; + end = _tmp$17; + err = _tmp$18; + return [n, end, err]; + } + j = j + (1) >> 0; + } + _1 = dlen; + if (_1 === (8)) { + (x$1 = dsti + 4 >> 0, ((x$1 < 0 || x$1 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$1] = (((dbuf[6] << 5 << 24 >>> 24) | dbuf[7]) >>> 0))); + n = n + (1) >> 0; + (x$2 = dsti + 3 >> 0, ((x$2 < 0 || x$2 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$2] = (((((dbuf[4] << 7 << 24 >>> 24) | (dbuf[5] << 2 << 24 >>> 24)) >>> 0) | (dbuf[6] >>> 3 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + (x$3 = dsti + 2 >> 0, ((x$3 < 0 || x$3 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$3] = (((dbuf[3] << 4 << 24 >>> 24) | (dbuf[4] >>> 1 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + (x$4 = dsti + 1 >> 0, ((x$4 < 0 || x$4 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$4] = (((((dbuf[1] << 6 << 24 >>> 24) | (dbuf[2] << 1 << 24 >>> 24)) >>> 0) | (dbuf[3] >>> 4 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + (x$5 = dsti + 0 >> 0, ((x$5 < 0 || x$5 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$5] = (((dbuf[0] << 3 << 24 >>> 24) | (dbuf[1] >>> 2 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + } else if (_1 === (7)) { + (x$6 = dsti + 3 >> 0, ((x$6 < 0 || x$6 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$6] = (((((dbuf[4] << 7 << 24 >>> 24) | (dbuf[5] << 2 << 24 >>> 24)) >>> 0) | (dbuf[6] >>> 3 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + (x$7 = dsti + 2 >> 0, ((x$7 < 0 || x$7 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$7] = (((dbuf[3] << 4 << 24 >>> 24) | (dbuf[4] >>> 1 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + (x$8 = dsti + 1 >> 0, ((x$8 < 0 || x$8 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$8] = (((((dbuf[1] << 6 << 24 >>> 24) | (dbuf[2] << 1 << 24 >>> 24)) >>> 0) | (dbuf[3] >>> 4 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + (x$9 = dsti + 0 >> 0, ((x$9 < 0 || x$9 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$9] = (((dbuf[0] << 3 << 24 >>> 24) | (dbuf[1] >>> 2 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + } else if (_1 === (5)) { + (x$10 = dsti + 2 >> 0, ((x$10 < 0 || x$10 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$10] = (((dbuf[3] << 4 << 24 >>> 24) | (dbuf[4] >>> 1 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + (x$11 = dsti + 1 >> 0, ((x$11 < 0 || x$11 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$11] = (((((dbuf[1] << 6 << 24 >>> 24) | (dbuf[2] << 1 << 24 >>> 24)) >>> 0) | (dbuf[3] >>> 4 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + (x$12 = dsti + 0 >> 0, ((x$12 < 0 || x$12 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$12] = (((dbuf[0] << 3 << 24 >>> 24) | (dbuf[1] >>> 2 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + } else if (_1 === (4)) { + (x$13 = dsti + 1 >> 0, ((x$13 < 0 || x$13 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$13] = (((((dbuf[1] << 6 << 24 >>> 24) | (dbuf[2] << 1 << 24 >>> 24)) >>> 0) | (dbuf[3] >>> 4 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + (x$14 = dsti + 0 >> 0, ((x$14 < 0 || x$14 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$14] = (((dbuf[0] << 3 << 24 >>> 24) | (dbuf[1] >>> 2 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + } else if (_1 === (2)) { + (x$15 = dsti + 0 >> 0, ((x$15 < 0 || x$15 >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + x$15] = (((dbuf[0] << 3 << 24 >>> 24) | (dbuf[1] >>> 2 << 24 >>> 24)) >>> 0))); + n = n + (1) >> 0; + } + dsti = dsti + (5) >> 0; + } + _tmp$19 = n; + _tmp$20 = end; + _tmp$21 = $ifaceNil; + n = _tmp$19; + end = _tmp$20; + err = _tmp$21; + return [n, end, err]; + }; + $ptrType(Encoding).prototype.Decode = function Decode(dst, src) { + var _tuple, buf, dst, enc, err, l, n, src; + n = 0; + err = $ifaceNil; + enc = this; + buf = $makeSlice(sliceType, src.$length); + l = stripNewlines(buf, src); + _tuple = enc.decode(dst, $subslice(buf, 0, l)); + n = _tuple[0]; + err = _tuple[2]; + return [n, err]; + }; + $ptrType(Encoding).prototype.DecodeString = function DecodeString(s) { + var _tuple, buf, enc, err, l, n, s; + enc = this; + buf = (new sliceType($stringToBytes(s))); + l = stripNewlines(buf, buf); + _tuple = enc.decode(buf, $subslice(buf, 0, l)); + n = _tuple[0]; + err = _tuple[2]; + return [$subslice(buf, 0, n), err]; + }; + stripNewlines = function stripNewlines$1(dst, src) { + var _i, _ref, b, dst, offset, src; + offset = 0; + _ref = src; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + b = ((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]); + if ((b === 13) || (b === 10)) { + _i++; + continue; + } + ((offset < 0 || offset >= dst.$length) ? ($throwRuntimeError("index out of range"), undefined) : dst.$array[dst.$offset + offset] = b); + offset = offset + (1) >> 0; + _i++; + } + return offset; + }; + $ptrType(Encoding).prototype.DecodedLen = function DecodedLen(n) { + var _q, _q$1, enc, n; + enc = this; + if (enc.padChar === -1) { + return (_q = ($imul(n, 5)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")); + } + return $imul((_q$1 = n / 8, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), 5); + }; + Encoding.methods = [{prop: "WithPadding", name: "WithPadding", pkg: "", typ: $funcType([$Int32], [ptrType], false)}]; + ptrType.methods = [{prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}, {prop: "EncodeToString", name: "EncodeToString", pkg: "", typ: $funcType([sliceType], [$String], false)}, {prop: "EncodedLen", name: "EncodedLen", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "decode", name: "decode", pkg: "encoding/base32", typ: $funcType([sliceType, sliceType], [$Int, $Bool, $error], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType, sliceType], [$Int, $error], false)}, {prop: "DecodeString", name: "DecodeString", pkg: "", typ: $funcType([$String], [sliceType, $error], false)}, {prop: "DecodedLen", name: "DecodedLen", pkg: "", typ: $funcType([$Int], [$Int], false)}]; + CorruptInputError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]; + Encoding.init("encoding/base32", [{prop: "encode", name: "encode", embedded: false, exported: false, typ: arrayType, tag: ""}, {prop: "decodeMap", name: "decodeMap", embedded: false, exported: false, typ: arrayType$1, tag: ""}, {prop: "padChar", name: "padChar", embedded: false, exported: false, typ: $Int32, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strconv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $pkg.StdEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"); + $pkg.HexEncoding = NewEncoding("0123456789ABCDEFGHIJKLMNOPQRSTUV"); + /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f; + }; + $pkg.$init = $init; + return $pkg; +})(); +$packages["github.com/evanw/esbuild/internal/css_lexer"] = (function() { + var $pkg = {}, $init, logger, strings, utf8, T, TokenFlags, Token, lexer, Comment, TokenizeResult, Options, sliceType, sliceType$1, sliceType$2, sliceType$3, sliceType$4, ptrType, ptrType$1, sliceType$5, ptrType$2, tokenToString, Tokenize, containsAtPreserveOrAtLicense, WouldStartIdentifierWithoutEscapes, RangeOfIdentifier, IsNameStart, IsNameContinue, isNewline, isWhitespace, isHex, isNonPrintable, decodeEscapesInToken; + logger = $packages["github.com/evanw/esbuild/internal/logger"]; + strings = $packages["strings"]; + utf8 = $packages["unicode/utf8"]; + T = $newType(1, $kindUint8, "css_lexer.T", true, "github.com/evanw/esbuild/internal/css_lexer", true, null); + TokenFlags = $newType(1, $kindUint8, "css_lexer.TokenFlags", true, "github.com/evanw/esbuild/internal/css_lexer", true, null); + Token = $newType(0, $kindStruct, "css_lexer.Token", true, "github.com/evanw/esbuild/internal/css_lexer", true, function(Range_, UnitOffset_, Kind_, Flags_) { + this.$val = this; + if (arguments.length === 0) { + this.Range = new logger.Range.ptr(new logger.Loc.ptr(0), 0); + this.UnitOffset = 0; + this.Kind = 0; + this.Flags = 0; + return; + } + this.Range = Range_; + this.UnitOffset = UnitOffset_; + this.Kind = Kind_; + this.Flags = Flags_; + }); + lexer = $newType(0, $kindStruct, "css_lexer.lexer", true, "github.com/evanw/esbuild/internal/css_lexer", false, function(Options_, log_, source_, allComments_, legalCommentsBefore_, sourceMappingURL_, tracker_, approximateNewlineCount_, current_, oldSingleLineCommentEnd_, codePoint_, Token_) { + this.$val = this; + if (arguments.length === 0) { + this.Options = new Options.ptr(false); + this.log = new logger.Log.ptr($throwNilPointerError, $throwNilPointerError, $throwNilPointerError, $throwNilPointerError, 0, false); + this.source = new logger.Source.ptr("", "", "", new logger.Path.ptr("", "", "", new logger.ImportAttributes.ptr(""), 0), 0); + this.allComments = sliceType$1.nil; + this.legalCommentsBefore = sliceType$2.nil; + this.sourceMappingURL = new logger.Span.ptr("", new logger.Range.ptr(new logger.Loc.ptr(0), 0)); + this.tracker = new logger.LineColumnTracker.ptr("", "", 0, 0, 0, 0, false, false, false); + this.approximateNewlineCount = 0; + this.current = 0; + this.oldSingleLineCommentEnd = new logger.Loc.ptr(0); + this.codePoint = 0; + this.Token = new Token.ptr(new logger.Range.ptr(new logger.Loc.ptr(0), 0), 0, 0, 0); + return; + } + this.Options = Options_; + this.log = log_; + this.source = source_; + this.allComments = allComments_; + this.legalCommentsBefore = legalCommentsBefore_; + this.sourceMappingURL = sourceMappingURL_; + this.tracker = tracker_; + this.approximateNewlineCount = approximateNewlineCount_; + this.current = current_; + this.oldSingleLineCommentEnd = oldSingleLineCommentEnd_; + this.codePoint = codePoint_; + this.Token = Token_; + }); + Comment = $newType(0, $kindStruct, "css_lexer.Comment", true, "github.com/evanw/esbuild/internal/css_lexer", true, function(Text_, Loc_, TokenIndexAfter_) { + this.$val = this; + if (arguments.length === 0) { + this.Text = ""; + this.Loc = new logger.Loc.ptr(0); + this.TokenIndexAfter = 0; + return; + } + this.Text = Text_; + this.Loc = Loc_; + this.TokenIndexAfter = TokenIndexAfter_; + }); + TokenizeResult = $newType(0, $kindStruct, "css_lexer.TokenizeResult", true, "github.com/evanw/esbuild/internal/css_lexer", true, function(Tokens_, AllComments_, LegalComments_, SourceMapComment_, ApproximateLineCount_) { + this.$val = this; + if (arguments.length === 0) { + this.Tokens = sliceType$3.nil; + this.AllComments = sliceType$1.nil; + this.LegalComments = sliceType$2.nil; + this.SourceMapComment = new logger.Span.ptr("", new logger.Range.ptr(new logger.Loc.ptr(0), 0)); + this.ApproximateLineCount = 0; + return; + } + this.Tokens = Tokens_; + this.AllComments = AllComments_; + this.LegalComments = LegalComments_; + this.SourceMapComment = SourceMapComment_; + this.ApproximateLineCount = ApproximateLineCount_; + }); + Options = $newType(0, $kindStruct, "css_lexer.Options", true, "github.com/evanw/esbuild/internal/css_lexer", true, function(RecordAllComments_) { + this.$val = this; + if (arguments.length === 0) { + this.RecordAllComments = false; + return; + } + this.RecordAllComments = RecordAllComments_; + }); + $pkg.T = T; + $pkg.TokenFlags = TokenFlags; + $pkg.Token = Token; + $pkg.lexer = lexer; + $pkg.Comment = Comment; + $pkg.TokenizeResult = TokenizeResult; + $pkg.Options = Options; + $pkg.$finishSetup = function() { + sliceType = $sliceType($String); + sliceType$1 = $sliceType(logger.Range); + sliceType$2 = $sliceType(Comment); + sliceType$3 = $sliceType(Token); + sliceType$4 = $sliceType(logger.MsgData); + ptrType = $ptrType(logger.MsgLocation); + ptrType$1 = $ptrType(strings.Builder); + sliceType$5 = $sliceType($Uint8); + ptrType$2 = $ptrType(lexer); + T.prototype.String = function String() { + var t; + t = this.$val; + return ((t < 0 || t >= tokenToString.$length) ? ($throwRuntimeError("index out of range"), undefined) : tokenToString.$array[tokenToString.$offset + t]); + }; + $ptrType(T).prototype.String = function(...$args) { return new T(this.$get()).String(...$args); }; + T.prototype.IsNumeric = function IsNumeric() { + var t; + t = this.$val; + return (t === 29) || (t === 33) || (t === 25); + }; + $ptrType(T).prototype.IsNumeric = function(...$args) { return new T(this.$get()).IsNumeric(...$args); }; + $ptrType(Token).prototype.DecodedText = function DecodedText(contents) { + var _1, contents, end, raw, start, token; + token = this; + raw = $substring(contents, token.Range.Loc.Start, $clone(token.Range, logger.Range).End()); + _1 = token.Kind; + if ((_1 === (28)) || (_1 === (25))) { + return decodeEscapesInToken(raw); + } else if ((_1 === (1)) || (_1 === (27))) { + return decodeEscapesInToken($substring(raw, 1)); + } else if (_1 === (26)) { + return decodeEscapesInToken($substring(raw, 0, (raw.length - 1 >> 0))); + } else if (_1 === (35)) { + return decodeEscapesInToken($substring(raw, 1, (raw.length - 1 >> 0))); + } else if (_1 === (36)) { + start = 4; + end = raw.length; + if (raw.charCodeAt((end - 1 >> 0)) === 41) { + end = end - (1) >> 0; + } + while (true) { + if (!(start < end && isWhitespace(((raw.charCodeAt(start) >> 0))))) { break; } + start = start + (1) >> 0; + } + while (true) { + if (!(start < end && isWhitespace(((raw.charCodeAt((end - 1 >> 0)) >> 0))))) { break; } + end = end - (1) >> 0; + } + return decodeEscapesInToken($substring(raw, start, end)); + } + return raw; + }; + Token.prototype.DecodedText = function(...$args) { return this.$val.DecodedText(...$args); }; + Tokenize = function Tokenize$1(log, source, options) { + var {_i, _i$1, _ref, _ref$1, comment, comment$1, legalComments, lexer$1, log, options, source, tokens, $s, $r, $c} = $restore(this, {log, source, options}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + source = [source]; + lexer$1 = new lexer.ptr($clone(options, Options), $clone(log, logger.Log), $clone(source[0], logger.Source), sliceType$1.nil, sliceType$2.nil, new logger.Span.ptr("", new logger.Range.ptr(new logger.Loc.ptr(0), 0)), $clone(logger.MakeLineColumnTracker(source[0]), logger.LineColumnTracker), 0, 0, new logger.Loc.ptr(0), 0, new Token.ptr(new logger.Range.ptr(new logger.Loc.ptr(0), 0), 0, 0, 0)); + lexer$1.step(); + if (lexer$1.codePoint === 65279) { + lexer$1.step(); + } + $r = lexer$1.next(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tokens = sliceType$3.nil; + legalComments = sliceType$2.nil; + /* while (true) { */ case 2: + /* if (!(!((lexer$1.Token.Kind === 0)))) { break; } */ if(!(!((lexer$1.Token.Kind === 0)))) { $s = 3; continue; } + if (!(lexer$1.legalCommentsBefore === sliceType$2.nil)) { + _ref = lexer$1.legalCommentsBefore; + _i = 0; + while (true) { + if (!(_i < _ref.$length)) { break; } + comment = $clone(((_i < 0 || _i >= _ref.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref.$array[_ref.$offset + _i]), Comment); + comment.TokenIndexAfter = ((tokens.$length >>> 0)); + legalComments = $append(legalComments, comment); + _i++; + } + lexer$1.legalCommentsBefore = sliceType$2.nil; + } + tokens = $append(tokens, lexer$1.Token); + $r = lexer$1.next(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 2; continue; + case 3: + if (!(lexer$1.legalCommentsBefore === sliceType$2.nil)) { + _ref$1 = lexer$1.legalCommentsBefore; + _i$1 = 0; + while (true) { + if (!(_i$1 < _ref$1.$length)) { break; } + comment$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? ($throwRuntimeError("index out of range"), undefined) : _ref$1.$array[_ref$1.$offset + _i$1]), Comment); + comment$1.TokenIndexAfter = ((tokens.$length >>> 0)); + legalComments = $append(legalComments, comment$1); + _i$1++; + } + lexer$1.legalCommentsBefore = sliceType$2.nil; + } + $s = -1; return new TokenizeResult.ptr(tokens, lexer$1.allComments, legalComments, $clone(lexer$1.sourceMappingURL, logger.Span), ((lexer$1.approximateNewlineCount >> 0)) + 1 >> 0); + /* */ } return; } var $f = {$blk: Tokenize$1, $c: true, $r, _i, _i$1, _ref, _ref$1, comment, comment$1, legalComments, lexer$1, log, options, source, tokens, $s};return $f; + }; + $pkg.Tokenize = Tokenize; + $ptrType(lexer).prototype.step = function step() { + var _tuple, codePoint, lexer$1, width; + lexer$1 = this; + _tuple = utf8.DecodeRuneInString($substring(lexer$1.source.Contents, lexer$1.current)); + codePoint = _tuple[0]; + width = _tuple[1]; + if (width === 0) { + codePoint = -1; + } + if (codePoint === 10) { + lexer$1.approximateNewlineCount = lexer$1.approximateNewlineCount + (1) >> 0; + } + lexer$1.codePoint = codePoint; + lexer$1.Token.Range.Len = ((lexer$1.current >> 0)) - lexer$1.Token.Range.Loc.Start >> 0; + lexer$1.current = lexer$1.current + (width) >> 0; + }; + $ptrType(lexer).prototype.next = function next() { + var {_1, _2, _r, _r$1, _r$2, _r$3, contents, end, lexer$1, loc, startRange, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + lexer$1 = this; + /* while (true) { */ case 1: + Token.copy(lexer$1.Token, new Token.ptr($clone(new logger.Range.ptr($clone(new logger.Loc.ptr($clone(lexer$1.Token.Range, logger.Range).End()), logger.Loc), 0), logger.Range), 0, 0, 0)); + _1 = lexer$1.codePoint; + /* */ if (_1 === (-1)) { $s = 4; continue; } + /* */ if (_1 === (47)) { $s = 5; continue; } + /* */ if ((_1 === (32)) || (_1 === (9)) || (_1 === (10)) || (_1 === (13)) || (_1 === (12))) { $s = 6; continue; } + /* */ if ((_1 === (34)) || (_1 === (39))) { $s = 7; continue; } + /* */ if (_1 === (35)) { $s = 8; continue; } + /* */ if (_1 === (40)) { $s = 9; continue; } + /* */ if (_1 === (41)) { $s = 10; continue; } + /* */ if (_1 === (91)) { $s = 11; continue; } + /* */ if (_1 === (93)) { $s = 12; continue; } + /* */ if (_1 === (123)) { $s = 13; continue; } + /* */ if (_1 === (125)) { $s = 14; continue; } + /* */ if (_1 === (44)) { $s = 15; continue; } + /* */ if (_1 === (58)) { $s = 16; continue; } + /* */ if (_1 === (59)) { $s = 17; continue; } + /* */ if (_1 === (43)) { $s = 18; continue; } + /* */ if (_1 === (46)) { $s = 19; continue; } + /* */ if (_1 === (45)) { $s = 20; continue; } + /* */ if (_1 === (60)) { $s = 21; continue; } + /* */ if (_1 === (64)) { $s = 22; continue; } + /* */ if (_1 === (92)) { $s = 23; continue; } + /* */ if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55)) || (_1 === (56)) || (_1 === (57))) { $s = 24; continue; } + /* */ if (_1 === (62)) { $s = 25; continue; } + /* */ if (_1 === (126)) { $s = 26; continue; } + /* */ if (_1 === (38)) { $s = 27; continue; } + /* */ if (_1 === (42)) { $s = 28; continue; } + /* */ if (_1 === (124)) { $s = 29; continue; } + /* */ if (_1 === (33)) { $s = 30; continue; } + /* */ if (_1 === (61)) { $s = 31; continue; } + /* */ if (_1 === (94)) { $s = 32; continue; } + /* */ if (_1 === (36)) { $s = 33; continue; } + /* */ if (IsNameStart(lexer$1.codePoint)) { $s = 34; continue; } + /* */ $s = 35; continue; + /* if (_1 === (-1)) { */ case 4: + lexer$1.Token.Kind = 0; + $s = 36; continue; + /* } else if (_1 === (47)) { */ case 5: + lexer$1.step(); + _2 = lexer$1.codePoint; + /* */ if (_2 === (42)) { $s = 38; continue; } + /* */ if (_2 === (47)) { $s = 39; continue; } + /* */ $s = 40; continue; + /* if (_2 === (42)) { */ case 38: + lexer$1.step(); + $r = lexer$1.consumeToEndOfMultiLineComment($clone(lexer$1.Token.Range, logger.Range)); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* continue; */ $s = 1; continue; + $s = 40; continue; + /* } else if (_2 === (47)) { */ case 39: + loc = $clone(lexer$1.Token.Range.Loc, logger.Loc); + /* */ if (loc.Start >= lexer$1.oldSingleLineCommentEnd.Start) { $s = 42; continue; } + /* */ $s = 43; continue; + /* if (loc.Start >= lexer$1.oldSingleLineCommentEnd.Start) { */ case 42: + contents = lexer$1.source.Contents; + end = lexer$1.current; + while (true) { + if (!(end < contents.length && !isNewline(((contents.charCodeAt(end) >> 0))))) { break; } + end = end + (1) >> 0; + } + $r = $clone(lexer$1.log, logger.Log).AddID(38, 1, lexer$1.tracker, $clone(new logger.Range.ptr($clone(loc, logger.Loc), 2), logger.Range), "Comments in CSS use \"/* ... */\" instead of \"//\""); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + lexer$1.oldSingleLineCommentEnd.Start = ((end >> 0)); + lexer$1.Token.Flags = (lexer$1.Token.Flags | (2)) >>> 0; + /* } */ case 43: + /* } */ case 40: + case 37: + lexer$1.Token.Kind = 23; + $s = 36; continue; + /* } else if ((_1 === (32)) || (_1 === (9)) || (_1 === (10)) || (_1 === (13)) || (_1 === (12))) { */ case 6: + lexer$1.step(); + /* while (true) { */ case 45: + /* */ if (isWhitespace(lexer$1.codePoint)) { $s = 47; continue; } + /* */ if ((lexer$1.codePoint === 47) && lexer$1.current < lexer$1.source.Contents.length && (lexer$1.source.Contents.charCodeAt(lexer$1.current) === 42)) { $s = 48; continue; } + /* */ $s = 49; continue; + /* if (isWhitespace(lexer$1.codePoint)) { */ case 47: + lexer$1.step(); + $s = 50; continue; + /* } else if ((lexer$1.codePoint === 47) && lexer$1.current < lexer$1.source.Contents.length && (lexer$1.source.Contents.charCodeAt(lexer$1.current) === 42)) { */ case 48: + startRange = new logger.Range.ptr($clone(new logger.Loc.ptr($clone(lexer$1.Token.Range, logger.Range).End()), logger.Loc), 2); + lexer$1.step(); + lexer$1.step(); + $r = lexer$1.consumeToEndOfMultiLineComment($clone(startRange, logger.Range)); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = 50; continue; + /* } else { */ case 49: + /* break; */ $s = 46; continue; + /* } */ case 50: + $s = 45; continue; + case 46: + lexer$1.Token.Kind = 37; + $s = 36; continue; + /* } else if ((_1 === (34)) || (_1 === (39))) { */ case 7: + _r = lexer$1.consumeString(); /* */ $s = 52; case 52: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + lexer$1.Token.Kind = _r; + $s = 36; continue; + /* } else if (_1 === (35)) { */ case 8: + lexer$1.step(); + if (IsNameContinue(lexer$1.codePoint) || lexer$1.isValidEscape()) { + lexer$1.Token.Kind = 27; + if (lexer$1.wouldStartIdentifier()) { + lexer$1.Token.Flags = (lexer$1.Token.Flags | (1)) >>> 0; + } + lexer$1.consumeName(); + } else { + lexer$1.Token.Kind = 11; + } + $s = 36; continue; + /* } else if (_1 === (40)) { */ case 9: + lexer$1.step(); + lexer$1.Token.Kind = 32; + $s = 36; continue; + /* } else if (_1 === (41)) { */ case 10: + lexer$1.step(); + lexer$1.Token.Kind = 8; + $s = 36; continue; + /* } else if (_1 === (91)) { */ case 11: + lexer$1.step(); + lexer$1.Token.Kind = 31; + $s = 36; continue; + /* } else if (_1 === (93)) { */ case 12: + lexer$1.step(); + lexer$1.Token.Kind = 7; + $s = 36; continue; + /* } else if (_1 === (123)) { */ case 13: + lexer$1.step(); + lexer$1.Token.Kind = 30; + $s = 36; continue; + /* } else if (_1 === (125)) { */ case 14: + lexer$1.step(); + lexer$1.Token.Kind = 6; + $s = 36; continue; + /* } else if (_1 === (44)) { */ case 15: + lexer$1.step(); + lexer$1.Token.Kind = 10; + $s = 36; continue; + /* } else if (_1 === (58)) { */ case 16: + lexer$1.step(); + lexer$1.Token.Kind = 9; + $s = 36; continue; + /* } else if (_1 === (59)) { */ case 17: + lexer$1.step(); + lexer$1.Token.Kind = 34; + $s = 36; continue; + /* } else if (_1 === (43)) { */ case 18: + if (lexer$1.wouldStartNumber()) { + lexer$1.Token.Kind = lexer$1.consumeNumeric(); + } else { + lexer$1.step(); + lexer$1.Token.Kind = 22; + } + $s = 36; continue; + /* } else if (_1 === (46)) { */ case 19: + if (lexer$1.wouldStartNumber()) { + lexer$1.Token.Kind = lexer$1.consumeNumeric(); + } else { + lexer$1.step(); + lexer$1.Token.Kind = 17; + } + $s = 36; continue; + /* } else if (_1 === (45)) { */ case 20: + /* */ if (lexer$1.wouldStartNumber()) { $s = 53; continue; } + /* */ if ((lexer$1.current + 2 >> 0) <= lexer$1.source.Contents.length && $substring(lexer$1.source.Contents, lexer$1.current, (lexer$1.current + 2 >> 0)) === "->") { $s = 54; continue; } + /* */ if (lexer$1.wouldStartIdentifier()) { $s = 55; continue; } + /* */ $s = 56; continue; + /* if (lexer$1.wouldStartNumber()) { */ case 53: + lexer$1.Token.Kind = lexer$1.consumeNumeric(); + $s = 57; continue; + /* } else if ((lexer$1.current + 2 >> 0) <= lexer$1.source.Contents.length && $substring(lexer$1.source.Contents, lexer$1.current, (lexer$1.current + 2 >> 0)) === "->") { */ case 54: + lexer$1.step(); + lexer$1.step(); + lexer$1.step(); + lexer$1.Token.Kind = 4; + $s = 57; continue; + /* } else if (lexer$1.wouldStartIdentifier()) { */ case 55: + _r$1 = lexer$1.consumeIdentLike(); /* */ $s = 58; case 58: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; } + lexer$1.Token.Kind = _r$1; + $s = 57; continue; + /* } else { */ case 56: + lexer$1.step(); + lexer$1.Token.Kind = 21; + /* } */ case 57: + $s = 36; continue; + /* } else if (_1 === (60)) { */ case 21: + if ((lexer$1.current + 3 >> 0) <= lexer$1.source.Contents.length && $substring(lexer$1.source.Contents, lexer$1.current, (lexer$1.current + 3 >> 0)) === "!--") { + lexer$1.step(); + lexer$1.step(); + lexer$1.step(); + lexer$1.step(); + lexer$1.Token.Kind = 5; + } else { + lexer$1.step(); + lexer$1.Token.Kind = 11; + } + $s = 36; continue; + /* } else if (_1 === (64)) { */ case 22: + lexer$1.step(); + if (lexer$1.wouldStartIdentifier()) { + lexer$1.consumeName(); + lexer$1.Token.Kind = 1; + } else { + lexer$1.Token.Kind = 11; + } + $s = 36; continue; + /* } else if (_1 === (92)) { */ case 23: + /* */ if (lexer$1.isValidEscape()) { $s = 59; continue; } + /* */ $s = 60; continue; + /* if (lexer$1.isValidEscape()) { */ case 59: + _r$2 = lexer$1.consumeIdentLike(); /* */ $s = 62; case 62: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; } + lexer$1.Token.Kind = _r$2; + $s = 61; continue; + /* } else { */ case 60: + lexer$1.step(); + $r = $clone(lexer$1.log, logger.Log).AddError(lexer$1.tracker, $clone(lexer$1.Token.Range, logger.Range), "Invalid escape"); /* */ $s = 63; case 63: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + lexer$1.Token.Kind = 11; + /* } */ case 61: + $s = 36; continue; + /* } else if ((_1 === (48)) || (_1 === (49)) || (_1 === (50)) || (_1 === (51)) || (_1 === (52)) || (_1 === (53)) || (_1 === (54)) || (_1 === (55)) || (_1 === (56)) || (_1 === (57))) { */ case 24: + lexer$1.Token.Kind = lexer$1.consumeNumeric(); + $s = 36; continue; + /* } else if (_1 === (62)) { */ case 25: + lexer$1.step(); + lexer$1.Token.Kind = 20; + $s = 36; continue; + /* } else if (_1 === (126)) { */ case 26: + lexer$1.step(); + lexer$1.Token.Kind = 24; + $s = 36; continue; + /* } else if (_1 === (38)) { */ case 27: + lexer$1.step(); + lexer$1.Token.Kind = 12; + $s = 36; continue; + /* } else if (_1 === (42)) { */ case 28: + lexer$1.step(); + lexer$1.Token.Kind = 13; + $s = 36; continue; + /* } else if (_1 === (124)) { */ case 29: + lexer$1.step(); + lexer$1.Token.Kind = 14; + $s = 36; continue; + /* } else if (_1 === (33)) { */ case 30: + lexer$1.step(); + lexer$1.Token.Kind = 19; + $s = 36; continue; + /* } else if (_1 === (61)) { */ case 31: + lexer$1.step(); + lexer$1.Token.Kind = 18; + $s = 36; continue; + /* } else if (_1 === (94)) { */ case 32: + lexer$1.step(); + lexer$1.Token.Kind = 15; + $s = 36; continue; + /* } else if (_1 === (36)) { */ case 33: + lexer$1.step(); + lexer$1.Token.Kind = 16; + $s = 36; continue; + /* } else if (IsNameStart(lexer$1.codePoint)) { */ case 34: + _r$3 = lexer$1.consumeIdentLike(); /* */ $s = 64; case 64: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; } + lexer$1.Token.Kind = _r$3; + $s = 36; continue; + /* } else { */ case 35: + lexer$1.step(); + lexer$1.Token.Kind = 11; + /* } */ case 36: + case 3: + $s = -1; return; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: next, $c: true, $r, _1, _2, _r, _r$1, _r$2, _r$3, contents, end, lexer$1, loc, startRange, $s};return $f; + }; + $ptrType(lexer).prototype.consumeToEndOfMultiLineComment = function consumeToEndOfMultiLineComment(startRange) { + var {_1, _2, commentEnd, commentRange, endOfSourceMappingURL, isLegalComment, lexer$1, r, startOfSourceMappingURL, startRange, text, text$1, $s, $r, $c} = $restore(this, {startRange}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + lexer$1 = this; + startOfSourceMappingURL = 0; + isLegalComment = false; + _1 = lexer$1.codePoint; + if ((_1 === (35)) || (_1 === (64))) { + if (strings.HasPrefix($substring(lexer$1.source.Contents, lexer$1.current), " sourceMappingURL=")) { + startOfSourceMappingURL = lexer$1.current + 18 >> 0; + } + } else if (_1 === (33)) { + isLegalComment = true; + } + /* while (true) { */ case 1: + _2 = lexer$1.codePoint; + /* */ if (_2 === (42)) { $s = 4; continue; } + /* */ if (_2 === (-1)) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (_2 === (42)) { */ case 4: + endOfSourceMappingURL = lexer$1.current - 1 >> 0; + lexer$1.step(); + if (lexer$1.codePoint === 47) { + commentEnd = lexer$1.current; + lexer$1.step(); + if (!((startOfSourceMappingURL === 0))) { + r = new logger.Range.ptr($clone(new logger.Loc.ptr(((startOfSourceMappingURL >> 0))), logger.Loc), 0); + text = $substring(lexer$1.source.Contents, startOfSourceMappingURL, endOfSourceMappingURL); + while (true) { + if (!(((r.Len >> 0)) < text.length && !isWhitespace(((text.charCodeAt(r.Len) >> 0))))) { break; } + r.Len = r.Len + (1) >> 0; + } + logger.Span.copy(lexer$1.sourceMappingURL, new logger.Span.ptr($substring(text, 0, r.Len), $clone(r, logger.Range))); + } + commentRange = new logger.Range.ptr($clone(startRange.Loc, logger.Loc), ((commentEnd >> 0)) - startRange.Loc.Start >> 0); + if (lexer$1.Options.RecordAllComments) { + lexer$1.allComments = $append(lexer$1.allComments, commentRange); + } + text$1 = $substring(lexer$1.source.Contents, startRange.Loc.Start, commentEnd); + if (isLegalComment || containsAtPreserveOrAtLicense(text$1)) { + text$1 = lexer$1.source.CommentTextWithoutIndent($clone(commentRange, logger.Range)); + lexer$1.legalCommentsBefore = $append(lexer$1.legalCommentsBefore, new Comment.ptr(text$1, $clone(startRange.Loc, logger.Loc), 0)); + } + $s = -1; return; + } + $s = 7; continue; + /* } else if (_2 === (-1)) { */ case 5: + $r = $clone(lexer$1.log, logger.Log).AddErrorWithNotes(lexer$1.tracker, $clone(new logger.Range.ptr($clone(new logger.Loc.ptr($clone(lexer$1.Token.Range, logger.Range).End()), logger.Loc), 0), logger.Range), "Expected \"*/\" to terminate multi-line comment", new sliceType$4([$clone(lexer$1.tracker.MsgData($clone(startRange, logger.Range), "The multi-line comment starts here:"), logger.MsgData)])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return; + /* } else { */ case 6: + lexer$1.step(); + /* } */ case 7: + case 3: + $s = 1; continue; + case 2: + $s = -1; return; + /* */ } return; } var $f = {$blk: consumeToEndOfMultiLineComment, $c: true, $r, _1, _2, commentEnd, commentRange, endOfSourceMappingURL, isLegalComment, lexer$1, r, startOfSourceMappingURL, startRange, text, text$1, $s};return $f; + }; + containsAtPreserveOrAtLicense = function containsAtPreserveOrAtLicense$1(text) { + var _i, _ref, _rune, c, i, text; + _ref = text; + _i = 0; + while (true) { + if (!(_i < _ref.length)) { break; } + _rune = $decodeRune(_ref, _i); + i = _i; + c = _rune[0]; + if ((c === 64) && (strings.HasPrefix($substring(text, (i + 1 >> 0)), "preserve") || strings.HasPrefix($substring(text, (i + 1 >> 0)), "license"))) { + return true; + } + _i += _rune[1]; + } + return false; + }; + $ptrType(lexer).prototype.isValidEscape = function isValidEscape() { + var _tuple, c, lexer$1; + lexer$1 = this; + if (!((lexer$1.codePoint === 92))) { + return false; + } + _tuple = utf8.DecodeRuneInString($substring(lexer$1.source.Contents, lexer$1.current)); + c = _tuple[0]; + return !isNewline(c); + }; + $ptrType(lexer).prototype.wouldStartIdentifier = function wouldStartIdentifier() { + var _tuple, _tuple$1, c, c2, lexer$1, width; + lexer$1 = this; + if (IsNameStart(lexer$1.codePoint)) { + return true; + } + if (lexer$1.codePoint === 45) { + _tuple = utf8.DecodeRuneInString($substring(lexer$1.source.Contents, lexer$1.current)); + c = _tuple[0]; + width = _tuple[1]; + if ((c === 65533) && width <= 1) { + return false; + } + if (IsNameStart(c) || (c === 45)) { + return true; + } + if (c === 92) { + _tuple$1 = utf8.DecodeRuneInString($substring(lexer$1.source.Contents, (lexer$1.current + width >> 0))); + c2 = _tuple$1[0]; + return !isNewline(c2); + } + return false; + } + return lexer$1.isValidEscape(); + }; + WouldStartIdentifierWithoutEscapes = function WouldStartIdentifierWithoutEscapes$1(text) { + var _tuple, _tuple$1, c, c2, text, width, width2; + _tuple = utf8.DecodeRuneInString(text); + c = _tuple[0]; + width = _tuple[1]; + if ((c === 65533) && width <= 1) { + return false; + } + if (IsNameStart(c)) { + return true; + } + if (c === 45) { + _tuple$1 = utf8.DecodeRuneInString($substring(text, width)); + c2 = _tuple$1[0]; + width2 = _tuple$1[1]; + if ((c2 === 65533) && width2 <= 1) { + return false; + } + if (IsNameStart(c2) || (c2 === 45)) { + return true; + } + } + return false; + }; + $pkg.WouldStartIdentifierWithoutEscapes = WouldStartIdentifierWithoutEscapes; + RangeOfIdentifier = function RangeOfIdentifier$1(source, loc) { + var _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, c, i, j, loc, n, ok, ok$1, source, text, width; + text = $substring(source.Contents, loc.Start); + if (text.length === 0) { + return new logger.Range.ptr($clone(loc, logger.Loc), 0); + } + i = 0; + n = text.length; + while (true) { + _tuple = utf8.DecodeRuneInString($substring(text, i)); + c = _tuple[0]; + width = _tuple[1]; + if (IsNameContinue(c)) { + i = i + (width) >> 0; + continue; + } + if ((c === 92) && (i + 1 >> 0) < n && !isNewline(((text.charCodeAt((i + 1 >> 0)) >> 0)))) { + i = i + (width) >> 0; + _tuple$1 = utf8.DecodeRuneInString($substring(text, i)); + c = _tuple$1[0]; + width = _tuple$1[1]; + _tuple$2 = isHex(c); + ok = _tuple$2[1]; + if (ok) { + i = i + (width) >> 0; + _tuple$3 = utf8.DecodeRuneInString($substring(text, i)); + c = _tuple$3[0]; + width = _tuple$3[1]; + j = 0; + while (true) { + if (!(j < 5)) { break; } + _tuple$4 = isHex(c); + ok$1 = _tuple$4[1]; + if (!ok$1) { + break; + } + i = i + (width) >> 0; + _tuple$5 = utf8.DecodeRuneInString($substring(text, i)); + c = _tuple$5[0]; + width = _tuple$5[1]; + j = j + (1) >> 0; + } + if (isWhitespace(c)) { + i = i + (width) >> 0; + } + } + continue; + } + break; + } + if (i > 0 && isWhitespace(((text.charCodeAt((i - 1 >> 0)) >> 0)))) { + i = i - (1) >> 0; + } + return new logger.Range.ptr($clone(loc, logger.Loc), ((i >> 0))); + }; + $pkg.RangeOfIdentifier = RangeOfIdentifier; + $ptrType(lexer).prototype.wouldStartNumber = function wouldStartNumber() { + var c, c$1, contents, contents$1, lexer$1, n; + lexer$1 = this; + if (lexer$1.codePoint >= 48 && lexer$1.codePoint <= 57) { + return true; + } else if (lexer$1.codePoint === 46) { + contents = lexer$1.source.Contents; + if (lexer$1.current < contents.length) { + c = contents.charCodeAt(lexer$1.current); + return c >= 48 && c <= 57; + } + } else if ((lexer$1.codePoint === 43) || (lexer$1.codePoint === 45)) { + contents$1 = lexer$1.source.Contents; + n = contents$1.length; + if (lexer$1.current < n) { + c$1 = contents$1.charCodeAt(lexer$1.current); + if (c$1 >= 48 && c$1 <= 57) { + return true; + } + if ((c$1 === 46) && (lexer$1.current + 1 >> 0) < n) { + c$1 = contents$1.charCodeAt((lexer$1.current + 1 >> 0)); + return c$1 >= 48 && c$1 <= 57; + } + } + } + return false; + }; + $ptrType(lexer).prototype.consumeName = function consumeName() { + var contents, i, lexer$1, n, raw, sb; + lexer$1 = this; + contents = lexer$1.source.Contents; + if (IsNameContinue(lexer$1.codePoint)) { + n = contents.length; + i = lexer$1.current; + while (true) { + if (!(i < n && IsNameContinue(((contents.charCodeAt(i) >> 0))))) { break; } + i = i + (1) >> 0; + } + lexer$1.current = i; + lexer$1.step(); + } + raw = $substring(contents, lexer$1.Token.Range.Loc.Start, $clone(lexer$1.Token.Range, logger.Range).End()); + if (!lexer$1.isValidEscape()) { + return raw; + } + sb = new strings.Builder.ptr(ptrType$1.nil, sliceType$5.nil); + sb.WriteString(raw); + sb.WriteRune(lexer$1.consumeEscape()); + while (true) { + if (IsNameContinue(lexer$1.codePoint)) { + sb.WriteRune(lexer$1.codePoint); + lexer$1.step(); + } else if (lexer$1.isValidEscape()) { + sb.WriteRune(lexer$1.consumeEscape()); + } else { + break; + } + } + return sb.String(); + }; + $ptrType(lexer).prototype.consumeEscape = function consumeEscape() { + var _tuple, _tuple$1, c, hex, i, lexer$1, next$1, ok, ok$1; + lexer$1 = this; + lexer$1.step(); + c = lexer$1.codePoint; + _tuple = isHex(c); + hex = _tuple[0]; + ok = _tuple[1]; + if (ok) { + lexer$1.step(); + i = 0; + while (true) { + if (!(i < 5)) { break; } + _tuple$1 = isHex(lexer$1.codePoint); + next$1 = _tuple$1[0]; + ok$1 = _tuple$1[1]; + if (ok$1) { + lexer$1.step(); + hex = ($imul(hex, 16)) + next$1 >> 0; + } else { + break; + } + i = i + (1) >> 0; + } + if (isWhitespace(lexer$1.codePoint)) { + lexer$1.step(); + } + if ((hex === 0) || (hex >= 55296 && hex <= 57343) || hex > 1114111) { + return 65533; + } + return ((hex >> 0)); + } + if (c === -1) { + return 65533; + } + lexer$1.step(); + return c; + }; + $ptrType(lexer).prototype.consumeIdentLike = function consumeIdentLike() { + var {$24r, _r, _tmp, _tmp$1, _tmp$2, approximateNewlineCount, codePoint, current, l, lexer$1, matchingLoc, name, r, tokenRangeLen, u, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + lexer$1 = this; + name = lexer$1.consumeName(); + /* */ if (lexer$1.codePoint === 40) { $s = 1; continue; } + /* */ $s = 2; continue; + /* if (lexer$1.codePoint === 40) { */ case 1: + matchingLoc = new logger.Loc.ptr($clone(lexer$1.Token.Range, logger.Range).End()); + lexer$1.step(); + /* */ if (name.length === 3) { $s = 3; continue; } + /* */ $s = 4; continue; + /* if (name.length === 3) { */ case 3: + _tmp = name.charCodeAt(0); + _tmp$1 = name.charCodeAt(1); + _tmp$2 = name.charCodeAt(2); + u = _tmp; + r = _tmp$1; + l = _tmp$2; + /* */ if (((u === 117) || (u === 85)) && ((r === 114) || (r === 82)) && ((l === 108) || (l === 76))) { $s = 5; continue; } + /* */ $s = 6; continue; + /* if (((u === 117) || (u === 85)) && ((r === 114) || (r === 82)) && ((l === 108) || (l === 76))) { */ case 5: + approximateNewlineCount = lexer$1.approximateNewlineCount; + codePoint = lexer$1.codePoint; + tokenRangeLen = lexer$1.Token.Range.Len; + current = lexer$1.current; + while (true) { + if (!(isWhitespace(lexer$1.codePoint))) { break; } + lexer$1.step(); + } + /* */ if (!((lexer$1.codePoint === 34)) && !((lexer$1.codePoint === 39))) { $s = 7; continue; } + /* */ $s = 8; continue; + /* if (!((lexer$1.codePoint === 34)) && !((lexer$1.codePoint === 39))) { */ case 7: + _r = lexer$1.consumeURL($clone(matchingLoc, logger.Loc)); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; } + $24r = _r; + $s = 10; case 10: return $24r; + /* } */ case 8: + lexer$1.approximateNewlineCount = approximateNewlineCount; + lexer$1.codePoint = codePoint; + lexer$1.Token.Range.Len = tokenRangeLen; + lexer$1.current = current; + /* } */ case 6: + /* } */ case 4: + $s = -1; return 26; + /* } */ case 2: + $s = -1; return 28; + /* */ } return; } var $f = {$blk: consumeIdentLike, $c: true, $r, $24r, _r, _tmp, _tmp$1, _tmp$2, approximateNewlineCount, codePoint, current, l, lexer$1, matchingLoc, name, r, tokenRangeLen, u, $s};return $f; + }; + $ptrType(lexer).prototype.consumeURL = function consumeURL(matchingLoc) { + var {_1, _2, lexer$1, loc, loc$1, matchingLoc, r, r$1, r$2, $s, $r, $c} = $restore(this, {matchingLoc}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + lexer$1 = this; + /* while (true) { */ case 1: + _1 = lexer$1.codePoint; + /* */ if (_1 === (41)) { $s = 4; continue; } + /* */ if (_1 === (-1)) { $s = 5; continue; } + /* */ if ((_1 === (32)) || (_1 === (9)) || (_1 === (10)) || (_1 === (13)) || (_1 === (12))) { $s = 6; continue; } + /* */ if ((_1 === (34)) || (_1 === (39)) || (_1 === (40))) { $s = 7; continue; } + /* */ if (_1 === (92)) { $s = 8; continue; } + /* */ $s = 9; continue; + /* if (_1 === (41)) { */ case 4: + lexer$1.step(); + $s = -1; return 36; + /* } else if (_1 === (-1)) { */ case 5: + loc = new logger.Loc.ptr($clone(lexer$1.Token.Range, logger.Range).End()); + $r = $clone(lexer$1.log, logger.Log).AddIDWithNotes(33, 1, lexer$1.tracker, $clone(new logger.Range.ptr($clone(loc, logger.Loc), 0), logger.Range), "Expected \")\" to end URL token", new sliceType$4([$clone(lexer$1.tracker.MsgData($clone(new logger.Range.ptr($clone(matchingLoc, logger.Loc), 1), logger.Range), "The unbalanced \"(\" is here:"), logger.MsgData)])); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return 36; + /* } else if ((_1 === (32)) || (_1 === (9)) || (_1 === (10)) || (_1 === (13)) || (_1 === (12))) { */ case 6: + lexer$1.step(); + while (true) { + if (!(isWhitespace(lexer$1.codePoint))) { break; } + lexer$1.step(); + } + /* */ if (!((lexer$1.codePoint === 41))) { $s = 12; continue; } + /* */ $s = 13; continue; + /* if (!((lexer$1.codePoint === 41))) { */ case 12: + loc$1 = new logger.Loc.ptr($clone(lexer$1.Token.Range, logger.Range).End()); + $r = $clone(lexer$1.log, logger.Log).AddIDWithNotes(33, 1, lexer$1.tracker, $clone(new logger.Range.ptr($clone(loc$1, logger.Loc), 0), logger.Range), "Expected \")\" to end URL token", new sliceType$4([$clone(lexer$1.tracker.MsgData($clone(new logger.Range.ptr($clone(matchingLoc, logger.Loc), 1), logger.Range), "The unbalanced \"(\" is here:"), logger.MsgData)])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + if (lexer$1.codePoint === -1) { + $s = -1; return 36; + } + /* break validURL; */ $s = 2; continue s; + /* } */ case 13: + lexer$1.step(); + $s = -1; return 36; + /* } else if ((_1 === (34)) || (_1 === (39)) || (_1 === (40))) { */ case 7: + r = new logger.Range.ptr($clone(new logger.Loc.ptr($clone(lexer$1.Token.Range, logger.Range).End()), logger.Loc), 1); + $r = $clone(lexer$1.log, logger.Log).AddIDWithNotes(33, 1, lexer$1.tracker, $clone(r, logger.Range), "Expected \")\" to end URL token", new sliceType$4([$clone(lexer$1.tracker.MsgData($clone(new logger.Range.ptr($clone(matchingLoc, logger.Loc), 1), logger.Range), "The unbalanced \"(\" is here:"), logger.MsgData)])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break validURL; */ $s = 2; continue s; + $s = 10; continue; + /* } else if (_1 === (92)) { */ case 8: + /* */ if (!lexer$1.isValidEscape()) { $s = 16; continue; } + /* */ $s = 17; continue; + /* if (!lexer$1.isValidEscape()) { */ case 16: + r$1 = new logger.Range.ptr($clone(new logger.Loc.ptr($clone(lexer$1.Token.Range, logger.Range).End()), logger.Loc), 1); + $r = $clone(lexer$1.log, logger.Log).AddID(33, 1, lexer$1.tracker, $clone(r$1, logger.Range), "Invalid escape"); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break validURL; */ $s = 2; continue s; + /* } */ case 17: + lexer$1.consumeEscape(); + $s = 10; continue; + /* } else { */ case 9: + /* */ if (isNonPrintable(lexer$1.codePoint)) { $s = 19; continue; } + /* */ $s = 20; continue; + /* if (isNonPrintable(lexer$1.codePoint)) { */ case 19: + r$2 = new logger.Range.ptr($clone(new logger.Loc.ptr($clone(lexer$1.Token.Range, logger.Range).End()), logger.Loc), 1); + $r = $clone(lexer$1.log, logger.Log).AddID(33, 1, lexer$1.tracker, $clone(r$2, logger.Range), "Unexpected non-printable character in URL token"); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* break validURL; */ $s = 2; continue s; + /* } */ case 20: + lexer$1.step(); + /* } */ case 10: + case 3: + $s = 1; continue; + case 2: + while (true) { + _2 = lexer$1.codePoint; + if ((_2 === (41)) || (_2 === (-1))) { + lexer$1.step(); + $s = -1; return 3; + } else if (_2 === (92)) { + if (lexer$1.isValidEscape()) { + lexer$1.consumeEscape(); + } + } + lexer$1.step(); + } + $s = -1; return 0; + /* */ } return; } var $f = {$blk: consumeURL, $c: true, $r, _1, _2, lexer$1, loc, loc$1, matchingLoc, r, r$1, r$2, $s};return $f; + }; + $ptrType(lexer).prototype.consumeString = function consumeString() { + var {_1, lexer$1, quote, $s, $r, $c} = $restore(this, {}); + /* */ $s = $s || 0; s: while (true) { switch ($s) { case 0: + lexer$1 = this; + quote = lexer$1.codePoint; + lexer$1.step(); + /* while (true) { */ case 1: + _1 = lexer$1.codePoint; + /* */ if (_1 === (92)) { $s = 4; continue; } + /* */ if ((_1 === (-1)) || (_1 === (10)) || (_1 === (13)) || (_1 === (12))) { $s = 5; continue; } + /* */ if (_1 === (quote)) { $s = 6; continue; } + /* */ $s = 7; continue; + /* if (_1 === (92)) { */ case 4: + lexer$1.step(); + if (lexer$1.codePoint === 13) { + lexer$1.step(); + if (lexer$1.codePoint === 10) { + lexer$1.step(); + } + /* continue; */ $s = 1; continue; + } + $s = 7; continue; + /* } else if ((_1 === (-1)) || (_1 === (10)) || (_1 === (13)) || (_1 === (12))) { */ case 5: + $r = $clone(lexer$1.log, logger.Log).AddID(33, 1, lexer$1.tracker, $clone(new logger.Range.ptr($clone(new logger.Loc.ptr($clone(lexer$1.Token.Range, logger.Range).End()), logger.Loc), 0), logger.Range), "Unterminated string token"); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $s = -1; return 2; + /* } else if (_1 === (quote)) { */ case 6: + lexer$1.step(); + $s = -1; return 35; + /* } */ case 7: + case 3: + lexer$1.step(); + $s = 1; continue; + case 2: + $s = -1; return 0; + /* */ } return; } var $f = {$blk: consumeString, $c: true, $r, _1, lexer$1, quote, $s};return $f; + }; + $ptrType(lexer).prototype.consumeNumeric = function consumeNumeric() { + var c, contents, lexer$1; + lexer$1 = this; + if ((lexer$1.codePoint === 43) || (lexer$1.codePoint === 45)) { + lexer$1.step(); + } + while (true) { + if (!(lexer$1.codePoint >= 48 && lexer$1.codePoint <= 57)) { break; } + lexer$1.step(); + } + if (lexer$1.codePoint === 46) { + lexer$1.step(); + while (true) { + if (!(lexer$1.codePoint >= 48 && lexer$1.codePoint <= 57)) { break; } + lexer$1.step(); + } + } + if ((lexer$1.codePoint === 101) || (lexer$1.codePoint === 69)) { + contents = lexer$1.source.Contents; + if (lexer$1.current < contents.length) { + c = contents.charCodeAt(lexer$1.current); + if (((c === 43) || (c === 45)) && (lexer$1.current + 1 >> 0) < contents.length) { + c = contents.charCodeAt((lexer$1.current + 1 >> 0)); + } + if (c >= 48 && c <= 57) { + lexer$1.step(); + if ((lexer$1.codePoint === 43) || (lexer$1.codePoint === 45)) { + lexer$1.step(); + } + while (true) { + if (!(lexer$1.codePoint >= 48 && lexer$1.codePoint <= 57)) { break; } + lexer$1.step(); + } + } + } + } + if (lexer$1.wouldStartIdentifier()) { + lexer$1.Token.UnitOffset = ((lexer$1.Token.Range.Len << 16 >>> 16)); + lexer$1.consumeName(); + return 25; + } + if (lexer$1.codePoint === 37) { + lexer$1.step(); + return 33; + } + return 29; + }; + IsNameStart = function IsNameStart$1(c) { + var c; + return (c >= 97 && c <= 122) || (c >= 65 && c <= 90) || (c === 95) || c >= 128 || (c === 0); + }; + $pkg.IsNameStart = IsNameStart; + IsNameContinue = function IsNameContinue$1(c) { + var c; + return IsNameStart(c) || (c >= 48 && c <= 57) || (c === 45); + }; + $pkg.IsNameContinue = IsNameContinue; + isNewline = function isNewline$1(c) { + var _1, c; + _1 = c; + if ((_1 === (10)) || (_1 === (13)) || (_1 === (12))) { + return true; + } + return false; + }; + isWhitespace = function isWhitespace$1(c) { + var _1, c; + _1 = c; + if ((_1 === (32)) || (_1 === (9)) || (_1 === (10)) || (_1 === (13)) || (_1 === (12))) { + return true; + } + return false; + }; + isHex = function isHex$1(c) { + var c; + if (c >= 48 && c <= 57) { + return [(((c - 48 >> 0) >> 0)), true]; + } + if (c >= 97 && c <= 102) { + return [(((c + -87 >> 0) >> 0)), true]; + } + if (c >= 65 && c <= 70) { + return [(((c + -55 >> 0) >> 0)), true]; + } + return [0, false]; + }; + isNonPrintable = function isNonPrintable$1(c) { + var c; + return c <= 8 || (c === 11) || (c >= 14 && c <= 31) || (c === 127); + }; + decodeEscapesInToken = function decodeEscapesInToken$1(inner) { + var _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, c, c$1, hex, i, i$1, inner, next$1, ok, ok$1, sb, width; + i = 0; + while (true) { + if (!(i < inner.length)) { break; } + c = inner.charCodeAt(i); + if ((c === 92) || (c === 0)) { + break; + } + i = i + (1) >> 0; + } + if (i === inner.length) { + return inner; + } + sb = new strings.Builder.ptr(ptrType$1.nil, sliceType$5.nil); + sb.WriteString($substring(inner, 0, i)); + inner = $substring(inner, i); + while (true) { + if (!(inner.length > 0)) { break; } + _tuple = utf8.DecodeRuneInString(inner); + c$1 = _tuple[0]; + width = _tuple[1]; + inner = $substring(inner, width); + if (!((c$1 === 92))) { + if (c$1 === 0) { + c$1 = 65533; + } + sb.WriteRune(c$1); + continue; + } + if (inner.length === 0) { + sb.WriteRune(65533); + continue; + } + _tuple$1 = utf8.DecodeRuneInString(inner); + c$1 = _tuple$1[0]; + width = _tuple$1[1]; + inner = $substring(inner, width); + _tuple$2 = isHex(c$1); + hex = _tuple$2[0]; + ok = _tuple$2[1]; + if (!ok) { + if ((c$1 === 10) || (c$1 === 12)) { + continue; + } + if (c$1 === 13) { + _tuple$3 = utf8.DecodeRuneInString(inner); + c$1 = _tuple$3[0]; + width = _tuple$3[1]; + if (c$1 === 10) { + inner = $substring(inner, width); + } + continue; + } + sb.WriteRune(c$1); + continue; + } + i$1 = 0; + while (true) { + if (!(i$1 < 5 && inner.length > 0)) { break; } + _tuple$4 = utf8.DecodeRuneInString(inner); + c$1 = _tuple$4[0]; + width = _tuple$4[1]; + _tuple$5 = isHex(c$1); + next$1 = _tuple$5[0]; + ok$1 = _tuple$5[1]; + if (ok$1) { + inner = $substring(inner, width); + hex = ($imul(hex, 16)) + next$1 >> 0; + } else { + break; + } + i$1 = i$1 + (1) >> 0; + } + if (inner.length > 0) { + _tuple$6 = utf8.DecodeRuneInString(inner); + c$1 = _tuple$6[0]; + width = _tuple$6[1]; + if (isWhitespace(c$1)) { + inner = $substring(inner, width); + } + } + if ((hex === 0) || (hex >= 55296 && hex <= 57343) || hex > 1114111) { + sb.WriteRune(65533); + continue; + } + sb.WriteRune(((hex >> 0))); + } + return sb.String(); + }; + T.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsNumeric", name: "IsNumeric", pkg: "", typ: $funcType([], [$Bool], false)}]; + Token.methods = [{prop: "DecodedText", name: "DecodedText", pkg: "", typ: $funcType([$String], [$String], false)}]; + ptrType$2.methods = [{prop: "step", name: "step", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([], [], false)}, {prop: "next", name: "next", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([], [], false)}, {prop: "consumeToEndOfMultiLineComment", name: "consumeToEndOfMultiLineComment", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([logger.Range], [], false)}, {prop: "isValidEscape", name: "isValidEscape", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([], [$Bool], false)}, {prop: "wouldStartIdentifier", name: "wouldStartIdentifier", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([], [$Bool], false)}, {prop: "wouldStartNumber", name: "wouldStartNumber", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([], [$Bool], false)}, {prop: "consumeName", name: "consumeName", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([], [$String], false)}, {prop: "consumeEscape", name: "consumeEscape", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([], [$Int32], false)}, {prop: "consumeIdentLike", name: "consumeIdentLike", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([], [T], false)}, {prop: "consumeURL", name: "consumeURL", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([logger.Loc], [T], false)}, {prop: "consumeString", name: "consumeString", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([], [T], false)}, {prop: "consumeNumeric", name: "consumeNumeric", pkg: "github.com/evanw/esbuild/internal/css_lexer", typ: $funcType([], [T], false)}]; + Token.init("", [{prop: "Range", name: "Range", embedded: false, exported: true, typ: logger.Range, tag: ""}, {prop: "UnitOffset", name: "UnitOffset", embedded: false, exported: true, typ: $Uint16, tag: ""}, {prop: "Kind", name: "Kind", embedded: false, exported: true, typ: T, tag: ""}, {prop: "Flags", name: "Flags", embedded: false, exported: true, typ: TokenFlags, tag: ""}]); + lexer.init("github.com/evanw/esbuild/internal/css_lexer", [{prop: "Options", name: "Options", embedded: true, exported: true, typ: Options, tag: ""}, {prop: "log", name: "log", embedded: false, exported: false, typ: logger.Log, tag: ""}, {prop: "source", name: "source", embedded: false, exported: false, typ: logger.Source, tag: ""}, {prop: "allComments", name: "allComments", embedded: false, exported: false, typ: sliceType$1, tag: ""}, {prop: "legalCommentsBefore", name: "legalCommentsBefore", embedded: false, exported: false, typ: sliceType$2, tag: ""}, {prop: "sourceMappingURL", name: "sourceMappingURL", embedded: false, exported: false, typ: logger.Span, tag: ""}, {prop: "tracker", name: "tracker", embedded: false, exported: false, typ: logger.LineColumnTracker, tag: ""}, {prop: "approximateNewlineCount", name: "approximateNewlineCount", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "current", name: "current", embedded: false, exported: false, typ: $Int, tag: ""}, {prop: "oldSingleLineCommentEnd", name: "oldSingleLineCommentEnd", embedded: false, exported: false, typ: logger.Loc, tag: ""}, {prop: "codePoint", name: "codePoint", embedded: false, exported: false, typ: $Int32, tag: ""}, {prop: "Token", name: "Token", embedded: false, exported: true, typ: Token, tag: ""}]); + Comment.init("", [{prop: "Text", name: "Text", embedded: false, exported: true, typ: $String, tag: ""}, {prop: "Loc", name: "Loc", embedded: false, exported: true, typ: logger.Loc, tag: ""}, {prop: "TokenIndexAfter", name: "TokenIndexAfter", embedded: false, exported: true, typ: $Uint32, tag: ""}]); + TokenizeResult.init("", [{prop: "Tokens", name: "Tokens", embedded: false, exported: true, typ: sliceType$3, tag: ""}, {prop: "AllComments", name: "AllComments", embedded: false, exported: true, typ: sliceType$1, tag: ""}, {prop: "LegalComments", name: "LegalComments", embedded: false, exported: true, typ: sliceType$2, tag: ""}, {prop: "SourceMapComment", name: "SourceMapComment", embedded: false, exported: true, typ: logger.Span, tag: ""}, {prop: "ApproximateLineCount", name: "ApproximateLineCount", embedded: false, exported: true, typ: $Int32, tag: ""}]); + Options.init("", [{prop: "RecordAllComments", name: "RecordAllComments", embedded: false, exported: true, typ: $Bool, tag: ""}]); + }; + $init = function() { + $pkg.$init = function() {}; + /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0: + $r = logger.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = strings.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + tokenToString = new sliceType(["end of file", "@-keyword", "bad string token", "bad URL token", "\"-->\"", "\"\" as the start of a legacy HTML single-line comment"); /* */ $s = 59; case 59: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + singleLineHTMLCloseComment: + while (true) { + _13 = lexer.codePoint; + if ((_13 === (13)) || (_13 === (10)) || (_13 === (8232)) || (_13 === (8233))) { + break singleLineHTMLCloseComment; + } else if (_13 === (-1)) { + break singleLineHTMLCloseComment; + } + lexer.step(); + } + /* continue; */ $s = 1; continue; + /* } */ case 58: + lexer.Token = 39; + $s = 56; continue; + /* } else { */ case 55: + lexer.Token = 38; + /* */ if ((lexer.json === 0) && !((lexer.codePoint === 46)) && (lexer.codePoint < 48 || lexer.codePoint > 57)) { $s = 60; continue; } + /* */ $s = 61; continue; + /* if ((lexer.json === 0) && !((lexer.codePoint === 46)) && (lexer.codePoint < 48 || lexer.codePoint > 57)) { */ case 60: + $r = lexer.Unexpected(); /* */ $s = 62; case 62: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 61: + /* } */ case 56: + case 52: + $s = 37; continue; + /* } else if (_1 === (42)) { */ case 26: + lexer.step(); + _14 = lexer.codePoint; + if (_14 === (61)) { + lexer.step(); + lexer.Token = 55; + } else if (_14 === (42)) { + lexer.step(); + _15 = lexer.codePoint; + if (_15 === (61)) { + lexer.step(); + lexer.Token = 54; + } else { + lexer.Token = 13; + } + } else { + lexer.Token = 12; + } + $s = 37; continue; + /* } else if (_1 === (47)) { */ case 27: + lexer.step(); + if (lexer.forGlobalName) { + lexer.Token = 50; + /* break; */ $s = 3; continue; + } + _16 = lexer.codePoint; + /* */ if (_16 === (61)) { $s = 64; continue; } + /* */ if (_16 === (47)) { $s = 65; continue; } + /* */ if (_16 === (42)) { $s = 66; continue; } + /* */ $s = 67; continue; + /* if (_16 === (61)) { */ case 64: + lexer.step(); + lexer.Token = 67; + $s = 68; continue; + /* } else if (_16 === (47)) { */ case 65: + singleLineComment: + while (true) { + lexer.step(); + _17 = lexer.codePoint; + if ((_17 === (13)) || (_17 === (10)) || (_17 === (8232)) || (_17 === (8233))) { + break singleLineComment; + } else if (_17 === (-1)) { + break singleLineComment; + } + } + /* */ if (lexer.json === 0) { $s = 69; continue; } + /* */ $s = 70; continue; + /* if (lexer.json === 0) { */ case 69: + $r = lexer.addRangeError($clone(lexer.Range(), logger.Range), "JSON does not support comments"); /* */ $s = 71; case 71: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 70: + lexer.scanCommentText(); + /* continue; */ $s = 1; continue; + $s = 68; continue; + /* } else if (_16 === (42)) { */ case 66: + lexer.step(); + startRange = $clone(lexer.Range(), logger.Range); + /* while (true) { */ case 72: + _18 = lexer.codePoint; + /* */ if (_18 === (42)) { $s = 75; continue; } + /* */ if ((_18 === (13)) || (_18 === (10)) || (_18 === (8232)) || (_18 === (8233))) { $s = 76; continue; } + /* */ if (_18 === (-1)) { $s = 77; continue; } + /* */ $s = 78; continue; + /* if (_18 === (42)) { */ case 75: + lexer.step(); + if (lexer.codePoint === 47) { + lexer.step(); + /* break multiLineComment; */ $s = 73; continue s; + } + $s = 79; continue; + /* } else if ((_18 === (13)) || (_18 === (10)) || (_18 === (8232)) || (_18 === (8233))) { */ case 76: + lexer.step(); + lexer.HasNewlineBefore = true; + $s = 79; continue; + /* } else if (_18 === (-1)) { */ case 77: + lexer.start = lexer.end; + $r = lexer.AddRangeErrorWithNotes($clone(new logger.Range.ptr($clone(lexer.Loc(), logger.Loc), 0), logger.Range), "Expected \"*/\" to terminate multi-line comment", new sliceType$4([$clone(lexer.tracker.MsgData($clone(startRange, logger.Range), "The multi-line comment starts here:"), logger.MsgData)])); /* */ $s = 80; case 80: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + $panic((x = new LexerPanic.ptr(), new x.constructor.elem(x))); + $s = 79; continue; + /* } else { */ case 78: + lexer.step(); + /* } */ case 79: + case 74: + $s = 72; continue; + case 73: + /* */ if (lexer.json === 0) { $s = 81; continue; } + /* */ $s = 82; continue; + /* if (lexer.json === 0) { */ case 81: + $r = lexer.addRangeError($clone(lexer.Range(), logger.Range), "JSON does not support comments"); /* */ $s = 83; case 83: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; } + /* } */ case 82: + lexer.scanCommentText(); + /* continue; */ $s = 1; continue; + $s = 68; continue; + /* } else { */ case 67: + lexer.Token = 50; + /* } */ case 68: + case 63: + $s = 37; continue; + /* } else if (_1 === (61)) { */ case 28: + lexer.step(); + _19 = lexer.codePoint; + if (_19 === (62)) { + lexer.step(); + lexer.Token = 27; + } else if (_19 === (61)) { + lexer.step(); + _20 = lexer.codePoint; + if (_20 === (61)) { + lexer.step(); + lexer.Token = 26; + } else { + lexer.Token = 25; + } + } else { + lexer.Token = 59; + } + $s = 37; continue; + /* } else if (_1 === (60)) { */ case 29: + lexer.step(); + _21 = lexer.codePoint; + /* */ if (_21 === (61)) { $s = 85; continue; } + /* */ if (_21 === (60)) { $s = 86; continue; } + /* */ if (_21 === (33)) { $s = 87; continue; } + /* */ $s = 88; continue; + /* if (_21 === (61)) { */ case 85: + lexer.step(); + lexer.Token = 36; + $s = 89; continue; + /* } else if (_21 === (60)) { */ case 86: + lexer.step(); + _22 = lexer.codePoint; + if (_22 === (61)) { + lexer.step(); + lexer.Token = 62; + } else { + lexer.Token = 37; + } + $s = 89; continue; + /* } else if (_21 === (33)) { */ case 87: + /* */ if (strings.HasPrefix($substring(lexer.source.Contents, lexer.start), "